
    ` Ie:&                        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rd7dZ	dZ
ddlZn
d7dZ	d	Z
ddlZer	eefZeefZnefZefZ e ee      eegz         Zer0ddl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%m&Z' ddl(Z)ddl*Z+ddl,Z,n-ddl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-m'Z' ddl)Z)ddl+Z+ddl.Z,d Z/d Z0d Z1d Z2d Z3d8dZ4d8dZ5d Z6d Z7d Z8d Z9d Z:d Z;erd Z<ne=Z<er+ej|                  Z?e@Z@ddlAZAeAj                  ZCddlDmEZF ddlGmHZH n'ej~                  Z?d Z@ej                  ZCddlDmFZF ddlImHZH d  ZJerCd! ZKd" ZLd# ZMd$ ZN ej                  d%      ZP ej                  d&      ZQ ej                  d'      ZRnBd( ZKd) ZLd* ZMd+ ZN ej                  d,      ZP ej                  d-      ZQ ej                  d.      ZRereSZTeUZVneTZTeVZVer"ddlWZWddlXZXd/ ZYej                  d0k(  rd1 Z[n
d2 Z[nd3 ZYd4 Z[d5 Z\e]d6k(  ryy# e$ r Y w xY w# e$ r ddl"Z!Y w xY w# e$ r ddl$Z$Y w xY w# e$ r Y w xY w)9z
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3c                 ,    t        j                  |       S N)builtin_modinputprompts    :/usr/lib/python3/dist-packages/spyder_kernels/py3compat.pyr	   r	   !   s      ((    builtinsc                 ,    t        j                  |       S r   )r   	raw_inputr
   s    r   r	   r	   (   s    $$V,,r   __builtin__)maxint)	DictMixin)maxsize)MutableMappingc                 j    t         rt        |       t        t        fv S t        |       t        t        fv 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.)PY2typestrunicodebytesobjs    r   is_type_text_stringr   h   s/     CyS'N** CyS%L((r   c                 N    t         rt        | t              S t        | t              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))r   
isinstance
basestringr   r   s    r   is_text_stringr"   r   s#     #z** #s##r   c                 N    t         rt        | t              S t        | t              S )zEReturn True if `obj` is a binary string, False if it is anything else)r   r    r   r   r   s    r   is_binary_stringr$   |   s!    
#s## #u%%r   c                 2    t        |       xs 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   s    r   	is_stringr&      s     #7"23"77r   c                 N    t         rt        | t              S t        | t              S )zReturn True if `obj` is unicode)r   r    r   r   r   s    r   
is_unicoder(      s!    
#w'' #s##r   c                     t         r|t        |       S t        | |      S |t        |       S t        | t              r| S t        | |      S )z&Convert `obj` to (unicode) text string)r   r   r   r    r   encodings     r   to_text_stringr,      sO    
3<3)) s8OS!JsH%%r   c                 r    t         r|t        |       S | j                  |      S t        | |d      S |      S )zCConvert `obj` to binary string (bytes in Python 3, str in Python 2)zutf-8)r   r   encoder   r*   s     r   to_binary_stringr/      s?    
s8O::h'' SX%5'DD8DDr   c                 >    t         r| j                  S | j                  S )zReturn function code object)r   	func_code__code__funcs    r   get_func_coder5          
~~ }}r   c                 >    t         r| j                  S | j                  S )zReturn function name)r   	func_name__name__r3   s    r   get_func_namer:      r6   r   c                 >    t         r| j                  S | j                  S )z'Return function default argument values)r   func_defaults__defaults__r3   s    r   get_func_defaultsr>      s    
!!!    r   c                 >    t         r| j                  S | j                  S )zReturn method function object)r   im_func__func__r   s    r   get_meth_funcrB          
{{ ||r   c                 >    t         r| j                  S | j                  S )zReturn method class instance)r   im_self__self__r   s    r   get_meth_class_instrG      rC   r   c                 R    t         r| j                  S | j                  j                  S )zReturn method class)r   im_classrF   	__class__r   s    r   get_meth_classrK      s!    
|| ||%%%r   c                     |j                  dd      }|j                  dt        j                        }|j                  dd      }|j                  | D cg c]  }t	        |       c}      }t        ||||       y c c}w )Nend
filesep )rO   rM   rP   )getsysstdoutjoinr   print)objectsoptionsrM   rO   rP   r   strings          r   _printrZ      sf    kk%&{{63::.kk%%w73s878f4Sc2 8s   A=)izip_longest)	lru_cachec                     | |kD  | |k  z
  S r    )abs     r   cmpra   	  s    A!a%  r   )zip_longestc                 ~    t        t        | j                         j                               j	                               S )zDConvert QByteArray object to str in a way compatible with Python 2/3)r   r   toHexdatadecode)qbas    r   qbytearray_to_strrh     s*    uSYY[%%'(//122r   c                 8    t         | j                  di |      S Nr^   )iterkeysdkws     r   iterkeysrp     s    FAFFLRL!!r   c                 8    t         | j                  di |      S rj   )rk   valuesrm   s     r   
itervaluesrs     s    HAHHNrN##r   c                 8    t         | j                  di |      S rj   )rk   itemsrm   s     r   	iteritemsrv         GAGGMbM""r   c                 8    t         | j                  di |      S rj   )rk   listsrm   s     r   	iterlistsrz      rw   r   rl   rr   ru   c                 &     | j                   di |S rj   )rp   rm   s     r   rp   rp   )  s    qzzBr   c                 &     | j                   di |S rj   )rs   rm   s     r   rs   rs   ,  s    q||!b!!r   c                 &     | j                   di |S rj   )rv   rm   s     r   rv   rv   /      q{{ R  r   c                 &     | j                   di |S rj   )rz   rm   s     r   rz   rz   2  r~   r   viewkeys
viewvalues	viewitemsc                 T    t        j                  t        j                  dz   |       duS )'Check if string can be a variable name.z\ZN)rematchtokenizeNamerY   s    r   isidentifierr   H  s!    xx-v6dBBr   ntc                 J    t        | t              r| j                  dd      S | S )zTry encoding with utf8.utf8replace)r    r   r.   us    r   r.   r.   M  s"    !W%xx	22Hr   c                 l    t        | t              r#| j                  t        j                               S | S )z'Try encoding with file system encoding.)r    r   r.   rS   getfilesystemencodingr   s    r   r.   r.   S  s)    !W%xx 9 9 ;<<Hr   c                 $     | j                          S )r   )r   r   s    r   r   r   Y  s    "v""$$r   c                     | S )z&Encoding is not a problem in python 3.r^   r   s    r   r.   r.   ]  s    r   c                     t        | ||       y r   )exec)codeglobalslocalss      r   compat_execr   b  s    wr   __main__) r   )^__doc__
__future__r   operatorosrS   versionr   PY3r	   builtin_mod_namer   r   r   r   r   
TEXT_TYPESintlong	INT_TYPEStuplelistfloatcomplexNUMERIC_TYPESConfigParserconfigparser_winregwinregImportErrorr   r   	CStringIOioStringIOcPicklepickleUserDictr   r   thread_threadreprreprlibQueuecollections.abcqueuer   r"   r$   r&   r(   r,   r/   r5   r:   r>   rB   rG   rK   rZ   rV   getcwdugetcwdra   rY   lower	str_lower	itertoolsr[   rb   backports.functools_lru_cacher\   	functoolsrh   rp   rs   rv   rz   methodcallerr   r   r   RuntimeErrorTimeoutErrorIOErrorFileNotFoundErrorr   r   r   namer.   r   r9   r^   r   r   <module>r      s  
 &  	 
	kk!n	kk!n)!"-$% wJdI JId9o(889 "'  &  5  .)$&8
$&$
E !& 3 F ZZF
CI57 YYF!		I%#3 "$## %x$$V,H&&&x0J%%%g.I "!! %x$$Z0H&&&|4J%%%k2I
 LL)C 
ww$		%
 
 z E	  
      sH   ?H! 
H- H= /I !H*)H*-	H:9H:=	I
	I
II