U
    @f
                     @   sz  d Z ddlZejd dkZerddlZddlm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nddlZddlZddlm Z mZ ddl!mZ z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	   2/tmp/pip-unpacked-wheel-gs_301nf/bson/py3compat.pyabstractproperty   s    r   c                 C   s   t | d S )Nr   )codecslatin_1_encodesr	   r	   r
   b#   s    r   c                 C   s
   t | S r   )bytesfromhexhr	   r	   r
   bytes_from_hex+   s    r   c                 C   s   t |  S r   )iteritemsdr	   r	   r
   	iteritems.   s    r   c                 C   s   t |  S r   )r   valuesr   r	   r	   r
   
itervalues1   s    r   c                 C   s   | t ||d S r   )strwith_tracebackexctypevaluetracer	   r	   r
   reraise4   s    r#   c                 C   s   |  |d S r   )r   Zexc_instancer"   r	   r	   r
   reraise_instance7   s    r%   c                 C   s   | S r   r	   r   r	   r	   r
   _unicode:   s    r&   )ABCMetar   )imap)StringIOr   c                 C   s   | S r   r	   r   r	   r	   r
   r   O   s    c                 C   s
   |  dS )Nhex)decoder   r	   r	   r
   r   S   s    c                 C   s   |   S r   )r   r   r	   r	   r
   r   V   s    c                 C   s   |   S r   )r   r   r	   r	   r
   r   Y   s    c                 C   s   t | t|| d S r   )_reraiser   r   r	   r	   r
   r#   \   s    c                 C   s   t | d | d S 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>   sT   



