U
    ð¤ùd2  ã                   @   sT   d Z ddlmZmZ eeddœdd„Zeeedœdd	„Zeeeef d
œdd„ZdS )zrSetstate and getstate functions for objects with __slots__, allowing
compatibility with default pickling protocol
é    )ÚAnyÚMappingN)ÚselfÚstateÚreturnc                 C   s"   |  ¡ D ]\}}t| ||ƒ qd S ©N)ÚitemsÚsetattr)r   r   ZslotÚvalue© r   ú1/tmp/pip-unpacked-wheel-oblwsawz/bson/_helpers.pyÚ_setstate_slots   s    r   )ÚnameÚprefixr   c                 C   s    |   d¡rd| }nd}||  S )NÚ__Ú_Ú )Ú
startswith)r   r   r   r   r   Ú_mangle_name   s    

r   )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   )Ú__doc__Útypingr   r   r   Ústrr   r   r   r   r   r   Ú<module>   s   