ó
Ý²k^c           @` së  d  d l  m Z m Z m Z m Z d  d l m Z d  d l m Z d  d l	 Z	 d  d l
 m Z d  d l Z e e	 j d k ƒ Z e e	 j d k ƒ Z e e	 j d k ƒ Z e	 j d  d	 k Z e	 j d  d
 k Z e	 j ƒ  Z e Z e Z d „  Z d „  Z d „  Z e r>e f Z  e! f Z" e# f Z$ e Z% e& Z' e( Z( e) Z) nR e rd  d l* m+ Z+ e, f Z  e! e- f Z" e# e+ f Z$ e. Z% e Z' e/ Z( e0 Z) n  e rd  d l1 m2 Z2 m3 Z3 d  d l4 m5 Z5 d  d l m6 Z6 e	 j d d k rød  d l7 m8 Z8 e8 Z8 qLe9 Z8 nK e rLd  d l: m2 Z2 m3 Z3 d  d l4 m5 Z5 d  d l m; Z< m= Z6 e9 Z8 n  e2 Z2 e3 Z3 e5 Z5 e< Z< e6 Z6 e rËd „  Z> d „  Z? d „  Z@ e d ƒ ZA e d ƒ ZB e d ƒ ZC d  d l1 mD ZD d „  ZE nQ e rd „  Z> d „  Z? d  „  Z@ e d! ƒ ZA e d" ƒ ZB e d# ƒ ZC d$ „  ZE n  d  d% l: mF ZG eG ZG d  d& l4 mH ZI d' d( d d d e d) „ ZH eK d5 ƒ d, „ ZL d- „  ZM e# d ƒ ZN eO e e  e" eP eQ e eN f ƒ ƒ ZR d. „  ZS d/ „  ZT d0 „  ZU d1 „  ZV d2 „  ZW d3 „  ZX d4 „  ZY d S(6   i    (   t   absolute_importt   divisiont   print_functiont   unicode_literals(   t   chain(   t   methodcallerN(   t   mkdtempu   win32u   darwinu   linuxi   i   c         C` s   t  |  t ƒ r |  St j d d k r/ t } n t } t  |  t | f ƒ ru y t |  d d ƒSWqu |  j d ƒ SXn  t |  ƒ S(   Ni    i   t   encodingu   utf-8(   t
   isinstancet   strt   syst   version_infot   unicodet   bytest   encode(   t   valuet   _unicode(    (    s2   lib/python2.7/site-packages/conda/common/compat.pyt   encode_for_env_var   s    	c         C` s#   t  r d „  t |  ƒ Dƒ }  n  |  S(   Nc         S` s+   i  |  ]! \ } } t  | ƒ t  | ƒ “ q S(    (   R   (   t   .0t   kt   v(    (    s2   lib/python2.7/site-packages/conda/common/compat.pys
   <dictcomp>/   s   	 (   t   ENCODE_ENVIRONMENTt	   iteritems(   t   env(    (    s2   lib/python2.7/site-packages/conda/common/compat.pyt   encode_environment-   s    c         C` s   t  r d „  |  Dƒ }  n  |  S(   Nc         S` s   h  |  ] } t  | ƒ ’ q S(    (   R   (   R   t   arg(    (    s2   lib/python2.7/site-packages/conda/common/compat.pys	   <setcomp>5   s   	 (   t   ENCODE_ARGS(   t	   arguments(    (    s2   lib/python2.7/site-packages/conda/common/compat.pyt   encode_arguments3   s    (   t	   ClassType(   t   Mappingt   Sequence(   t   StringIO(   t   zip_longesti   i   (   t   JSONDecodeError(   t   izipt   izip_longestc         K` s   t  |  j |   ƒ S(   N(   t   itert   keys(   t   dt   kw(    (    s2   lib/python2.7/site-packages/conda/common/compat.pyt   iterkeys|   s    c         K` s   t  |  j |   ƒ S(   N(   R%   t   values(   R'   R(   (    (    s2   lib/python2.7/site-packages/conda/common/compat.pyt
   itervalues   s    c         K` s   t  |  j |   ƒ S(   N(   R%   t   items(   R'   R(   (    (    s2   lib/python2.7/site-packages/conda/common/compat.pyR   ‚   s    u   keysu   valuesu   items(   t   Iterablec         C` s   t  |  t ƒ o t  |  t ƒ S(   N(   R   t   string_typesR-   (   t   obj(    (    s2   lib/python2.7/site-packages/conda/common/compat.pyt
   isiterableŠ   s    c         K` s   |  j  |   S(   N(   R)   (   R'   R(   (    (    s2   lib/python2.7/site-packages/conda/common/compat.pyR)   Ž   s    c         K` s   |  j  |   S(   N(   R+   (   R'   R(   (    (    s2   lib/python2.7/site-packages/conda/common/compat.pyR+   ‘   s    c         K` s   |  j  |   S(   N(   R   (   R'   R(   (    (    s2   lib/python2.7/site-packages/conda/common/compat.pyR   ”   s    u   viewkeysu
   viewvaluesu	   viewitemsc         C` s/   t  |  d ƒ o. t |  t ƒ o. t |  ƒ t k	 S(   Nu   __iter__(   t   hasattrR   R.   t   type(   R/   (    (    s2   lib/python2.7/site-packages/conda/common/compat.pyR0   ›   s    (   t   OrderedDict(   t   openu   riÿÿÿÿc         C` sr   d | k r7 t  |  t | ƒ d | d | d | d | ƒSt  |  t | ƒ d | d | pX d d | d | d | ƒSd  S(   Nu   bt	   bufferingt   errorst   newlinet   closefdR   u   utf-8(   t   io_openR	   (   t   filet   modeR5   R   R6   R7   R8   (    (    s2   lib/python2.7/site-packages/conda/common/compat.pyR4   «   s    u   __dict__u   __weakref__c         ` s   ‡  ‡ f d †  } | S(   uú   Class decorator to set metaclass.

    Works with both Python 2 and Python 3 and it does not add
    an extra class in the lookup order like ``six.with_metaclass`` does
    (that is -- it copies the original class instead of using inheritance).

    c         ` s>   t  ‡ f d †  t t |  ƒ ƒ Dƒ ƒ } ˆ  |  j |  j | ƒ S(   Nc         3` s-   |  ]# \ } } | ˆ  k r | | f Vq d  S(   N(    (   R   t   keyR   (   t
   skip_attrs(    s2   lib/python2.7/site-packages/conda/common/compat.pys	   <genexpr>¿   s    	(   t   dictR   t   varst   __name__t	   __bases__(   t   Classt   attrs(   t   TypeR=   (    s2   lib/python2.7/site-packages/conda/common/compat.pyt   _clone_with_metaclass¾   s    ((    (   RD   R=   RE   (    (   RD   R=   s2   lib/python2.7/site-packages/conda/common/compat.pyt   with_metaclassµ   s    	c         ` s;   d t  f ‡  ‡ f d †  ƒ  Y} t  j | t d ƒ d i  ƒ S(   u%   Create a base class with a metaclass.t	   metaclassc           ` s2   e  Z ‡  ‡ f d  †  Z e ‡  ‡ f d †  ƒ Z RS(   c         ` s   ˆ | ˆ  | ƒ S(   N(    (   t   clst   namet
   this_basesR'   (   t   basest   meta(    s2   lib/python2.7/site-packages/conda/common/compat.pyt   __new__Í   s    c         ` s   ˆ j  | ˆ  ƒ S(   N(   t   __prepare__(   RH   RI   RJ   (   RK   RL   (    s2   lib/python2.7/site-packages/conda/common/compat.pyRN   Ð   s    (   R@   t
   __module__RM   t   classmethodRN   (    (   RK   RL   (    s2   lib/python2.7/site-packages/conda/common/compat.pyRG   Ë   s   u   temporary_class(    (   R2   RM   R	   (   RL   RK   RG   (    (   RK   RL   s2   lib/python2.7/site-packages/conda/common/compat.pyt   six_with_metaclassÆ   s    c         C` s‡   t  s  t |  t ƒ s  |  j r$ |  Sd d l m } d d l m } | ƒ  } y | | ƒ } Wn t k
 r| | d ƒ } n X| |  ƒ S(   Ni    (   t	   getwriter(   t   getpreferredencodingu   UTF-8(	   t   PY2R   R:   R   t   codecsRR   t   localeRS   t   LookupError(   t   streamRR   RS   R   t   writer_class(    (    s2   lib/python2.7/site-packages/conda/common/compat.pyt   _init_stream_encodingÚ   s     	c           C` s(   t  t j ƒ t _ t  t j ƒ t _ d  S(   N(   RZ   R
   t   stdoutt   stderr(    (    (    s2   lib/python2.7/site-packages/conda/common/compat.pyt   init_std_stream_encodingì   s    c         C` s*   y |  j  d ƒ SWn t k
 r% |  SXd  S(   Nu   utf-8(   R   t   AttributeError(   R   (    (    s2   lib/python2.7/site-packages/conda/common/compat.pyt   ensure_binaryñ   s    c         C` sÖ   y |  j  d ƒ SWn¾ t k
 r% |  St k
 rÀ y d d l m } WnI t k
 r‘ y d d l m } Wq’ t k
 r d d l m } q’ Xn X| |  ƒ j d ƒ pª d } |  j  | d d ƒSt	 k
 rÑ |  SXd  S(   Nu   utf-8i    (   t   detectu   encodingR6   u   replace(
   t   decodeR^   t   UnicodeDecodeErrort   chardetR`   t   ImportErrort   requests.packages.chardett%   pip._vendor.requests.packages.chardett   gett   UnicodeEncodeError(   R   R`   R   (    (    s2   lib/python2.7/site-packages/conda/common/compat.pyt   ensure_text_typeú   s     c         C` s*   y |  j  d ƒ SWn t k
 r% |  SXd  S(   Nu   unicode_escape(   Ra   R^   (   R   (    (    s2   lib/python2.7/site-packages/conda/common/compat.pyt   ensure_unicode  s    c         C` s;   y |  j  t ƒ SWn# t k
 r% |  St k
 r6 |  SXd  S(   N(   R   t   FILESYSTEM_ENCODINGR^   Rh   (   R   (    (    s2   lib/python2.7/site-packages/conda/common/compat.pyt   ensure_fs_path_encoding  s    c         C` s;   y |  j  d ƒ SWn# t k
 r% |  St k
 r6 |  SXd  S(   Nu   utf-8(   R   R^   Rh   (   R   (    (    s2   lib/python2.7/site-packages/conda/common/compat.pyt   ensure_utf8_encoding$  s    (   u   __dict__u   __weakref__(Z   t
   __future__R    R   R   R   t	   itertoolsR   t   operatorR   R
   t   tempfileR   t   warningst	   _warningst   boolt   platformt   on_wint   on_mact   on_linuxR   RT   t   PY3t   getfilesystemencodingRk   t   TrueR   t   FalseR   R   R   R   R	   R.   t   intt   integer_typesR2   t   class_typest	   text_typeR   t   binary_typet   inputt   ranget   typesR   t
   basestringt   longR   t	   raw_inputt   xranget   collections.abcR   R   t   ioR    R!   t   jsonR"   t
   ValueErrort   collectionsR#   t   zipR$   R)   R+   R   t   viewkeyst
   viewvaluest	   viewitemsR-   R0   R3   t   odictR4   R9   t   Nonet   setRF   RQ   t   NoneTypet   tuplet   floatt   complext   primitive_typesRZ   R]   R_   Ri   Rj   Rl   Rm   (    (    (    s2   lib/python2.7/site-packages/conda/common/compat.pyt   <module>	   s¦   "			
															

	$									