U
    Û~fhV  ã                   @  sX   d Z ddlmZ ddlmZmZ ddddœdd„Zd	d	d	d
œdd„Zdddœdd„ZdS )zrSetstate and getstate functions for objects with __slots__, allowing
compatibility with default pickling protocol
é    )Úannotations)ÚAnyÚMappingr   ÚNone)ÚselfÚstateÚreturnc                 C  s"   |  ¡ D ]\}}t| ||ƒ qd S ©N)ÚitemsÚsetattr)r   r   ZslotÚvalue© r   ú1/tmp/pip-unpacked-wheel-36gvocj8/bson/_helpers.pyÚ_setstate_slots   s    r   Ústr)ÚnameÚprefixr   c                 C  s    |   d¡rd| }nd}||  S )NÚ__Ú_Ú )Ú
startswith)r   r   r   r   r   Ú_mangle_name   s    

r   zMapping[Any, Any])r   r   c                 C  s>   | j j}i }| jD ]&}t||ƒ}t| |ƒrt| |ƒ||< q|S r	   )Ú	__class__Ú__name__Ú	__slots__r   ÚhasattrÚgetattr)r   r   Úretr   Zmangled_namer   r   r   Ú_getstate_slots$   s    


r   N)	Ú__doc__Ú
__future__r   Útypingr   r   r   r   r   r   r   r   r   Ú<module>   s
   