3
]ð]ÿ
  ã               @   sx  d Z ddlZejd dkZer°ddlZddljZddlZddlm	Z	m
Z
 ddlmZ dd„ ZejZeZdd	„ Zd
d„ Zdd„ Zdd„ Zd!dd„Zd"dd„Zdd„ ZeZeZeZnÄddlZddlZddlm Z mZ ddl!mZ yddl"mZ W n" e#k
�r   ddlmZ Y nX e de$fi ƒZ	ej%Zdd	„ Zdd„ Zdd„ Zdd„ Zd#dd„Zd$dd„Ze&d ƒ e'Ze(Ze'Zee)fZdS )%z<Utility functions and definitions for python3 compatibility.é    Né   )ÚABCÚabstractmethod)ÚBytesIOc             C   s   t t| ƒƒS )N)Úpropertyr   )Úfunc© r   ú1/tmp/pip-build-20mum3z4/pymongo/bson/py3compat.pyÚabstractproperty   s    r
   c             C   s   t j| ƒd S )Nr   )ÚcodecsÚlatin_1_encode)Úsr   r   r	   Úb#   s    r   c             C   s
   t j| ƒS )N)ÚbytesÚfromhex)Úhr   r   r	   Úbytes_from_hex+   s    r   c             C   s   t | jƒ ƒS )N)ÚiterÚitems)Údr   r   r	   Ú	iteritems.   s    r   c             C   s   t | jƒ ƒS )N)r   Úvalues)r   r   r   r	   Ú
itervalues1   s    r   c             C   s   | t |ƒƒj|ƒ‚d S )N)ÚstrÚwith_traceback)ÚexctypeÚvalueÚtracer   r   r	   Úreraise4   s    r   c             C   s   | j |ƒ‚d S )N)r   )Úexc_instancer   r   r   r	   Úreraise_instance7   s    r    c             C   s   | S )Nr   )r   r   r   r	   Ú_unicode:   s    r!   )ÚABCMetar
   )Úimap)ÚStringIOr   c             C   s   | S )Nr   )r   r   r   r	   r   O   s    c             C   s
   | j dƒS )NÚhex)Údecode)r   r   r   r	   r   S   s    c             C   s   | j ƒ S )N)r   )r   r   r   r	   r   V   s    c             C   s   | j ƒ S )N)r   )r   r   r   r	   r   Y   s    c             C   s   t | t|ƒ|ƒ d S )N)Ú_reraiser   )r   r   r   r   r   r	   r   \   s    c             C   s   t | d |ƒ d S )N)r'   )r   r   r   r   r	   r    _   s    z=def _reraise(exc, value, trace):
    raise exc, value, trace
)N)N)N)N)*Ú__doc__ÚsysÚversion_infoÚPY3r   Úcollections.abcÚabcÚ_threadÚthreadr   r   Úior   r$   r
   ÚmaxsizeÚMAXSIZEÚmapr#   r   r   r   r   r   r    r!   r   Ú	text_typeZstring_typeÚintÚinteger_typesÚcollectionsr"   Ú	itertoolsÚ	cStringIOÚImportErrorÚobjectZmaxintÚexecÚunicodeÚ
basestringÚlongr   r   r   r	   Ú<module>   sV   




