B
    j]\                 @   s  d Z ddlmZ ddlZddlZddlZejd dkZejd dkZerZe	e
fZeefZne	fZefZeeeeeg Zer:ddlZddlZyddlZW n ek
r   Y nX ddlmZ yddlZW n ek
r   ddlZY nX yddl Z!W n ek
r   ddl!Z!Y nX ddl"m#Z$ ddl%Z&ddl'Z(ddl)Z)ntddlZddlZyddlZW n ek
rl   Y nX ddlmZ ddlZddl!Z!dd	l*m$Z$ ddl&Z&ddl(Z(ddl+Z)d
d Z,dd Z-dd Z.dd Z/dd Z0d=ddZ1d>ddZ2dd Z3dd Z4dd Z5dd Z6d d! Z7d"d# Z8erJe9Z:ej;Z<e=Z=ddl>Z>e>j?Z@dd$lAmBZC n$e:Z:ej<Z<d%d& Z=e	j?Z@dd'lAmCZC d(d) ZDerd*d+ ZEd,d- ZFd.d/ ZGd0d1 ZHeId2ZJeId3ZKeId4ZLn>d5d+ ZEd6d- ZFd7d/ ZGd8d1 ZHeId9ZJeId:ZKeId;ZLeMd<krdS )?z
spyder.py3compat
----------------

Transitional module providing compatibility functions intended to help
migrating from Python 2 to Python 3.

This module should be fully compatible with:
    * Python >=v2.6
    * Python 3
    )print_functionN23)maxint)	DictMixin)maxsize)MutableMappingc             C   s(   t rt| ttgkS t| ttgkS dS )zReturn True if `obj` is type text string, False if it is anything else,
    like an instance of a class that extends the basestring class.N)PY2typestrunicodebytes)obj r   7lib/python3.7/site-packages/spyder_kernels/py3compat.pyis_type_text_stringX   s    r   c             C   s   t rt| tS t| tS dS )zReturn True if `obj` is a text string, False if it is anything else,
    like binary data (Python 3) or QString (Python 2, PyQt API #1)N)r	   
isinstanceZ
basestringr   )r   r   r   r   is_text_stringb   s    
r   c             C   s   t rt| tS t| tS dS )zEReturn True if `obj` is a binary string, False if it is anything elseN)r	   r   r   r   )r   r   r   r   is_binary_stringl   s    
r   c             C   s   t | pt| S )zReturn True if `obj` is a text or binary Python string object,
    False if it is anything else, like a QString (Python 2, PyQt API #1))r   r   )r   r   r   r   	is_stringu   s    r   c             C   s   t rt| tS t| tS dS )zReturn True if `obj` is unicodeN)r	   r   r   r   )r   r   r   r   
is_unicodez   s    
r   c             C   sL   t r |dkrt| S t| |S n(|dkr0t| S t| tr>| S t| |S dS )z&Convert `obj` to (unicode) text stringN)r	   r   r   r   )r   encodingr   r   r   to_text_string   s    
r   c             C   s:   t r |dkrt| S | |S nt| |dkr0dn|S dS )zCConvert `obj` to binary string (bytes in Python 3, str in Python 2)Nzutf-8)r	   r   encoder   )r   r   r   r   r   to_binary_string   s
    r   c             C   s   t r
| jS | jS dS )zReturn function code objectN)r	   Z	func_code__code__)funcr   r   r   get_func_code   s    r   c             C   s   t r
| jS | jS dS )zReturn function nameN)r	   Z	func_name__name__)r   r   r   r   get_func_name   s    r   c             C   s   t r
| jS | jS dS )z'Return function default argument valuesN)r	   Zfunc_defaults__defaults__)r   r   r   r   get_func_defaults   s    r!   c             C   s   t r
| jS | jS dS )zReturn method function objectN)r	   Zim_func__func__)r   r   r   r   get_meth_func   s    r#   c             C   s   t r
| jS | jS dS )zReturn method class instanceN)r	   Zim_self__self__)r   r   r   r   get_meth_class_inst   s    r%   c             C   s   t r
| jS | jjS dS )zReturn method classN)r	   Zim_classr$   	__class__)r   r   r   r   get_meth_class   s    r'   )izip_longestc             C   s   | |k| |k  S )Nr   )abr   r   r   cmp   s    r+   )zip_longestc             C   s   t t|    S )zDConvert QByteArray object to str in a way compatible with Python 2/3)r   r   ZtoHexdatadecode)Zqbar   r   r   qbytearray_to_str   s    r/   c             K   s   t | jf |S )N)iterkeys)dkwr   r   r   iterkeys   s    r4   c             K   s   t | jf |S )N)r0   values)r2   r3   r   r   r   
itervalues   s    r6   c             K   s   t | jf |S )N)r0   items)r2   r3   r   r   r   	iteritems  s    r8   c             K   s   t | jf |S )N)r0   Zlists)r2   r3   r   r   r   	iterlists  s    r9   r1   r5   r7   c             K   s   | j f |S )N)r4   )r2   r3   r   r   r   r4     s    c             K   s   | j f |S )N)r6   )r2   r3   r   r   r   r6     s    c             K   s   | j f |S )N)r8   )r2   r3   r   r   r   r8     s    c             K   s   | j f |S )N)r9   )r2   r3   r   r   r   r9     s    viewkeys
viewvalues	viewitems__main__)N)N)N__doc__Z
__future__r   operatorossysversionr	   ZPY3r   r   Z
TEXT_TYPESintZlongZ	INT_TYPEStuplelistfloatcomplexZNUMERIC_TYPESZ__builtin__builtinsZConfigParserZconfigparser_winregwinregImportErrorr   r   Z	CStringIOioStringIOZcPicklepickleUserDictr   r   Zthread_threadreprreprlibZQueuecollectionsZqueuer   r   r   r   r   r   r   r   r   r!   r#   r%   r'   Z	raw_inputinputZgetcwdugetcwdr+   stringlowerZ	str_lower	itertoolsr(   r,   r/   r4   r6   r8   r9   methodcallerr:   r;   r<   r   r   r   r   r   <module>   s   



		

				





