a
    Wa                     @   s   d Z ddlZejd dkZertdd Zdd Zdd	 Zdd
lmZ	 e
fZeZeZeZddlZejZdedfddZnbdd Zdd Zejdk rdd Z	ndd
lmZ	 e
efZeZeZeZddlZejZddlmZ eZdS )z+module which helps with porting to Python 3    N   c                 C   s<   | }t | tr| d}nt | ts8tdt| | f |S )Nutf8z!Expected byte or string for %s:%s)
isinstancestrencodebytes
ValueErrortypeZbytesorstringtmp r   ./usr/lib/python3/dist-packages/samba/compat.py	get_bytes'   s    

r   c                 C   s<   | }t | tr| d}nt | ts8tdt| | f |S )Nr   z!Expected byte of string for %s:%s)r   r   decoder   r   r	   r
   r   r   r   
get_string5   s    

r   c                 C   s   | |k| |k  S )a  
        Replacement for built-in function cmp that was removed in Python 3

        Compare the two objects x and y and return an integer according to
        the outcome. The return value is negative if x < y, zero if x == y
        and strictly positive if x > y.
        r   )xyr   r   r   cmp_fn=   s    	r   )
cmp_to_keyFc                 C   s   ddl m} || ||d dS )Nr   ConfigParser)Zinterpolation)Zconfigparserr   )defaultsZ	dict_typeZallow_no_valuer   r   r   r   r   S   s    r   c                 C   s<   | }t | tr| d}nt | ts8tdt| | f |S )Nr   zExpected string for %s:%s)r   unicoder   r   r   r	   r
   r   r   r   r   ]   s    

c                 C   s0   | }t | ts,t | ts,tdt| | f |S )Nz!Expected str or unicode for %s:%s)r   r   r   r   r	   r
   r   r   r   r   k   s    )      c                    s   G  fdddt }|S )z,Convert a cmp= function into a key= functionc                       sj   e Zd ZdgZdd Z fddZ fddZ fdd	Z fd
dZ fddZ	 fddZ
dd ZdS )zcmp_to_key_fn.<locals>.Kobjc                 W   s
   || _ d S )Nr   )selfr   argsr   r   r   __init__y   s    z!cmp_to_key_fn.<locals>.K.__init__c                    s    | j |j dk S Nr   r   r   othermycmpr   r   __lt__|   s    zcmp_to_key_fn.<locals>.K.__lt__c                    s    | j |j dkS r    r   r!   r#   r   r   __gt__   s    zcmp_to_key_fn.<locals>.K.__gt__c                    s    | j |j dkS r    r   r!   r#   r   r   __eq__   s    zcmp_to_key_fn.<locals>.K.__eq__c                    s    | j |j dkS r    r   r!   r#   r   r   __le__   s    zcmp_to_key_fn.<locals>.K.__le__c                    s    | j |j dkS r    r   r!   r#   r   r   __ge__   s    zcmp_to_key_fn.<locals>.K.__ge__c                    s    | j |j dkS r    r   r!   r#   r   r   __ne__   s    zcmp_to_key_fn.<locals>.K.__ne__c                 S   s   t dd S )Nzhash not implemented)	TypeError)r   r   r   r   __hash__   s    z!cmp_to_key_fn.<locals>.K.__hash__N)__name__
__module____qualname__	__slots__r   r%   r&   r'   r(   r)   r*   r,   r   r#   r   r   Kv   s   r1   )object)r$   r1   r   r#   r   cmp_to_key_fns   s    r3   r   )__doc__sysversion_infoZPY3r   r   r   	functoolsr   r3   intZinteger_typesr   Zstring_typesZ	text_typer   Zbinary_typeioStringIOdictr   ZlongZ
basestringr   Z	cStringIOZcmpr   r   r   r   <module>   s6   


