ó
l‚z]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	 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' e/ Z( n  e rìd  d l0 m1 Z1 m2 Z2 d  d l3 m4 Z4 d  d l m5 Z5 e	 j d d k rãd  d l6 m7 Z7 e7 Z7 q7e8 Z7 nK e r7d  d l9 m1 Z1 m2 Z2 d  d l3 m4 Z4 d  d l m: Z; m< Z5 e8 Z7 n  e1 Z1 e2 Z2 e4 Z4 e; Z; e5 Z5 e r¶d „  Z= d „  Z> d „  Z? e d ƒ Z@ e d ƒ ZA e d ƒ ZB d  d l0 mC ZC d „  ZD nQ e rd „  Z= d „  Z> d „  Z? e d  ƒ Z@ e d! ƒ ZA e d" ƒ ZB d# „  ZD n  d  d$ l9 mE ZF eF ZF d  d% l3 mG ZH d& d' d d d e d( „ ZG eJ d4 ƒ d+ „ ZK d, „  ZL e" d ƒ ZM eN e e e! eO eP e eM f ƒ ƒ ZQ d- „  ZR d. „  ZS d/ „  ZT d0 „  ZU d1 „  ZV d2 „  ZW d3 „  ZX d S(5   i    (   t   absolute_importt   divisiont   print_functiont   unicode_literals(   t   chain(   t   methodcallerN(   t   mkdtempu   win32u   darwini   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>4   s   	 (   t   ENCODE_ARGS(   t	   arguments(    (    s2   lib/python2.7/site-packages/conda/common/compat.pyt   encode_arguments2   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__(Y   t
   __future__R    R   R   R   t	   itertoolsR   t   operatorR   R
   t   tempfileR   t   warningst	   _warningst   boolt   platformt   on_wint   on_macR   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¤   "			
															

	$									