a
    VŸ$c1  ã                   @   s¦   d dl mZmZmZmZmZ d dlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZ erld dlZedƒe_nd dlZedƒe_G dd„ deƒZi ZG dd„ deƒZdS )é    )ÚdivisionÚabsolute_importÚwith_statementÚprint_functionÚunicode_literals)ÚPY2Ú
basestringÚbchrÚbordÚchrÚopenÚpystrÚrangeÚroundÚstrÚtobytesÚunicodeNc                   @   s,   e Zd ZdZdZg Zdd„ ZdZdd„ ZdS )ÚObjectzI
    Our own base class. Contains methods to simplify serialization.
    r   c                 C   s4   t | ƒ ¡ }| jD ]}||v r||= q| j|d< |S )NÚ__version__)ÚvarsÚcopyÚnosaver   )ÚselfÚrvÚf© r   úrenpy/object.pyÚ__getstate__.   s    

zObject.__getstate__Nc                 C   s>   |  dd¡}| j |¡ || jkr,|  |¡ | jr:|  ¡  d S )Nr   r   )ÚpopÚ__dict__Úupdater   Úafter_upgradeÚafter_setstate)r   Únew_dictÚversionr   r   r   Ú__setstate__<   s    

zObject.__setstate__)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r"   r%   r   r   r   r   r   %   s   r   c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚSentinelz”
    This is used to represent a sentinel object. There will be exactly one
    sentinel object with a name existing in the system at any time.
    c                 C   s*   t  |d ¡}|d u r&t | ¡}|t |< |S ©N)Ú	sentinelsÚgetÚobjectÚ__new__)ÚclsÚnamer   r   r   r   r/   U   s
    
zSentinel.__new__c                 C   s
   || _ d S r+   )r1   )r   r1   r   r   r   Ú__init__^   s    zSentinel.__init__c                 C   s   t | jffS r+   )r*   r1   )r   r   r   r   Ú
__reduce__a   s    zSentinel.__reduce__N)r&   r'   r(   r)   r/   r2   r3   r   r   r   r   r*   O   s   	r*   )Ú
__future__r   r   r   r   r   Úrenpy.compatr   r   r	   r
   r   r   r   r   r   r   r   r   Ú__builtin__ÚtypeÚNoneTypeÚbuiltinsr.   r   r,   r*   r   r   r   r   Ú<module>   s   8
'