
cV]c           @  sX  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 oj e j d d k 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 e rd d l Z d d l Z y d d l Z Wn e k
 r n Xd d l m Z y d d l Z Wn e k
 r=d d l Z n Xy d d l  Z! Wn e k
 rmd d l! Z! n Xd d	 l" m# Z$ d d l% Z& d d l' Z( n d d l Z d d l Z y d d l Z Wn e k
 rn Xd d
 l m Z d d l Z d d l! Z! e rd d l) m$ Z$ n d d l* m$ Z$ d d l& Z& d d l( Z( e r\d d l+ Z+ d   Z, n	 d   Z, d   Z- d   Z. d   Z/ d   Z0 d d  Z2 d d  Z3 d   Z4 d   Z5 d   Z6 d   Z7 d   Z8 d   Z9 e re: Z; e j< Z= e> Z> d d l? Z? e? j@ ZA d d lB mC ZD n1 e; Z; e j= Z= d   Z> e	 j@ ZA d d lB mD ZD d   ZE d S(   s   
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
i(   t   print_functionNi    i   i   i   (   t   maxint(   t	   DictMixin(   t   maxsize(   t   MutableMappingc         C  s   t  j |   d S(   s   Make unicode objecti    (   t   codecst   unicode_escape_decode(   t   obj(    (    s-   lib/python2.7/site-packages/qtpy/py3compat.pyt   u\   s    c         C  s   |  S(   s   Return string as it is(    (   R   (    (    s-   lib/python2.7/site-packages/qtpy/py3compat.pyR   a   s    c         C  s$   t  r t |  t  St |  t  Sd S(   s   Return 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(   t   PY2t
   isinstancet
   basestringt   str(   R   (    (    s-   lib/python2.7/site-packages/qtpy/py3compat.pyt   is_text_stringf   s    c         C  s$   t  r t |  t  St |  t  Sd S(   sE   Return True if `obj` is a binary string, False if it is anything elseN(   R	   R
   R   t   bytes(   R   (    (    s-   lib/python2.7/site-packages/qtpy/py3compat.pyt   is_binary_stringq   s    c         C  s   t  |   p t |   S(   s   Return 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-   lib/python2.7/site-packages/qtpy/py3compat.pyt	   is_string{   s    c         C  s$   t  r t |  t  St |  t  Sd S(   s   Return True if `obj` is unicodeN(   R	   R
   t   unicodeR   (   R   (    (    s-   lib/python2.7/site-packages/qtpy/py3compat.pyt
   is_unicode   s    c         C  sf   t  r, | d k r t |   St |  |  Sn6 | d k rB t |   St |  t  rU |  St |  |  Sd S(   s&   Convert `obj` to (unicode) text stringN(   R	   t   NoneR   R   R
   (   R   t   encoding(    (    s-   lib/python2.7/site-packages/qtpy/py3compat.pyt   to_text_string   s    

c         C  sO   t  r, | d k r t |   S|  j |  Sn t |  | d k rD d n |  Sd S(   sC   Convert `obj` to binary string (bytes in Python 3, str in Python 2)s   utf-8N(   R	   R   R   t   encodeR   (   R   R   (    (    s-   lib/python2.7/site-packages/qtpy/py3compat.pyt   to_binary_string   s
    
c         C  s   t  r |  j S|  j Sd S(   s   Return function code objectN(   R	   t	   func_codet   __code__(   t   func(    (    s-   lib/python2.7/site-packages/qtpy/py3compat.pyt   get_func_code   s    c         C  s   t  r |  j S|  j Sd S(   s   Return function nameN(   R	   t	   func_namet   __name__(   R   (    (    s-   lib/python2.7/site-packages/qtpy/py3compat.pyt   get_func_name   s    c         C  s   t  r |  j S|  j Sd S(   s'   Return function default argument valuesN(   R	   t   func_defaultst   __defaults__(   R   (    (    s-   lib/python2.7/site-packages/qtpy/py3compat.pyt   get_func_defaults   s    c         C  s   t  r |  j S|  j Sd S(   s   Return method function objectN(   R	   t   im_funct   __func__(   R   (    (    s-   lib/python2.7/site-packages/qtpy/py3compat.pyt   get_meth_func   s    c         C  s   t  r |  j S|  j Sd S(   s   Return method class instanceN(   R	   t   im_selft   __self__(   R   (    (    s-   lib/python2.7/site-packages/qtpy/py3compat.pyt   get_meth_class_inst   s    c         C  s   t  r |  j S|  j j Sd S(   s   Return method classN(   R	   t   im_classR&   t	   __class__(   R   (    (    s-   lib/python2.7/site-packages/qtpy/py3compat.pyt   get_meth_class   s    (   t   izip_longestc         C  s   |  | k |  | k  S(   N(    (   t   at   b(    (    s-   lib/python2.7/site-packages/qtpy/py3compat.pyt   cmp   s    (   t   zip_longestc         C  s"   t  t |  j   j    j    S(   sD   Convert QByteArray object to str in a way compatible with Python 2/3(   R   R   t   toHext   datat   decode(   t   qba(    (    s-   lib/python2.7/site-packages/qtpy/py3compat.pyt   qbytearray_to_str  s    (F   t   __doc__t
   __future__R    t   syst   ost   version_infoR	   t   PY3t   PY33R   R   t
   TEXT_TYPESt   intt   longt	   INT_TYPESt   tuplet   listt   floatt   complext   NUMERIC_TYPESt   __builtin__t   builtinst   ConfigParsert   configparsert   _winregt   winregt   ImportErrorR   R   t	   CStringIOt   iot   StringIOt   cPicklet   picklet   UserDictR   R   t   threadt   _threadt   reprt   reprlibt   collections.abct   collectionsR   R   R   R   R   R   R   R   R   R   R   R!   R$   R'   R*   t	   raw_inputt   inputt   getcwdut   getcwdR.   t   stringt   lowert	   str_lowert	   itertoolsR+   R/   R4   (    (    (    s-   lib/python2.7/site-packages/qtpy/py3compat.pyt   <module>   s   					
		
	
	
		
	
						