
    +hV                    >    d Z ddlmZ ddlmZmZ dd	ZddZddZdS )zrSetstate and getstate functions for objects with __slots__, allowing
compatibility with default pickling protocol
    )annotations)AnyMappingselfr   statereturnNonec                \    |                                 D ]\  }}t          | ||           d S N)itemssetattr)r   r   slotvalues       Q/var/www/html/e360mart/e360mart_env/lib/python3.11/site-packages/bson/_helpers.py_setstate_slotsr      s<    {{}} # #edE""""# #    namestrprefixc                F    |                      d          rd|z   }nd}|| z   S )N___ )
startswith)r   r   s     r   _mangle_namer      s0    t vD=r   Mapping[Any, Any]c                    | j         j        }i }| j        D ]5}t          ||          }t	          | |          rt          | |          ||<   6|S r   )	__class____name__	__slots__r   hasattrgetattr)r   r   retr   mangled_names        r   _getstate_slotsr%   $   s]    ^$F
C < <#D&114&& 	< 'l ; ;CJr   N)r   r   r   r   r   r	   )r   r   r   r   r   r   )r   r   r   r   )	__doc__
__future__r   typingr   r   r   r   r%    r   r   <module>r*      s     # " " " " "        # # # #
        r   