B
    W\                 @   s  d Z ddlmZ ddlZddlZejd dkZejd dkZerRe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'nld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 ddlZddl Z dd	l(m#Z# ddl%Z%ddl'Z'erddl)Z)d
d Z*ndd Z*dd Z+dd Z,dd Z-dd Z.d,ddZ/d-ddZ0dd Z1dd Z2dd Z3dd  Z4d!d" Z5d#d$ Z6erJe7Z8ej9Z:e;Z;ddl<Z<e<j=Z>dd%l?m@ZA n$e8Z8ej:Z:d&d' Z;ej=Z>dd(l?mAZA d)d* ZBeCd+krdS ).z
spyderlib.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 | d S )zMake unicode objectr   )codecsunicode_escape_decode)obj r   -lib/python3.7/site-packages/qtpy/py3compat.pyuX   s    r   c             C   s   | S )zReturn string as it isr   )r   r   r   r   r   ]   s    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)PY2
isinstanceZ
basestringstr)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   bytes)r   r   r   r   is_binary_stringm   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_stringw   s    r   c             C   s   t rt| tS t| tS dS )zReturn True if `obj` is unicodeN)r   r   unicoder   )r   r   r   r   
is_unicode}   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    r0   __main__)N)N)D__doc__Z
__future__r   sysos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reprlibcollectionsr	   r   r   r   r   r   r   r   r   r    r"   r$   r&   r(   Z	raw_inputinputZgetcwdugetcwdr,   stringlowerZ	str_lower	itertoolsr)   r-   r0   r   r   r   r   r   <module>   s   











