B
    '\j#                 @   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	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	 Zd	Zd
Zdd Zdd Zdd ZerefZefZefZeZeZ e!Z!e"Z"n6erd dl#m$Z$ e%fZee&fZee$fZe'ZeZ e(Z!e)Z"erLd dl*m+Z+m,Z, d dl-m.Z. d dlm/Z/ e	jd dkrFd dl0m1Z1 e1Z1ne2Z1n6erd dl3m+Z+m,Z, d dl-m.Z. d dlm4Z5m6Z/ e2Z1e+Z+e,Z,e.Z.e5Z5e/Z/erdd Z7dd Z8dd Z9edZ:ed Z;ed!Z<d d"l3m=Z= d#d$ Z>n>er d%d Z7d&d Z8d'd Z9ed(Z:ed)Z;ed*Z<d+d$ Z>d d,l3m?Z@ e@Z@d d-l-mAZB dEd0d1ZAeCd2fd3d4ZDd5d6 ZEedZFeGeeeeHeIe
eFfZJd7d8 ZKd9d: ZLd;d< ZMd=d> ZNd?d@ ZOdAdB ZPdCdD ZQdS )F    )absolute_importdivisionprint_functionunicode_literals)chain)methodcallerNwin32darwin      TFc             C   sZ   t | tr| S tjd dkr"t}nt}t | t|frRyt| ddS    | dS t| S )Nr   r
   zutf-8)encoding)
isinstancestrsysversion_infounicodebytesencode)valueZ_unicode r   2lib/python3.7/site-packages/conda/common/compat.pyencode_for_env_var   s    

r   c             C   s   t rdd t| D } | S )Nc             S   s   i | ]\}}t |t |qS r   )r   ).0kvr   r   r   
<dictcomp>,   s    z&encode_environment.<locals>.<dictcomp>)ENCODE_ENVIRONMENT	iteritems)envr   r   r   encode_environment*   s    r   c             C   s   t rdd | D } | S )Nc             S   s   h | ]}t |qS r   )r   )r   argr   r   r   	<setcomp>2   s    z#encode_arguments.<locals>.<setcomp>)ENCODE_ARGS)Z	argumentsr   r   r   encode_arguments0   s    r#   )	ClassType)MappingSequence)StringIO)zip_longest      )JSONDecodeError)izipizip_longestc             K   s   t | jf |S )N)iterkeys)dkwr   r   r   iterkeysy   s    r2   c             K   s   t | jf |S )N)r.   values)r0   r1   r   r   r   
itervalues|   s    r4   c             K   s   t | jf |S )N)r.   items)r0   r1   r   r   r   r      s    r   r/   r3   r5   )Iterablec             C   s   t | t ot | tS )N)r   string_typesr6   )objr   r   r   
isiterable   s    r9   c             K   s   | j f |S )N)r2   )r0   r1   r   r   r   r2      s    c             K   s   | j f |S )N)r4   )r0   r1   r   r   r   r4      s    c             K   s   | j f |S )N)r   )r0   r1   r   r   r   r      s    viewkeys
viewvalues	viewitemsc             C   s"   t | do t| t o t| tk	S )N__iter__)hasattrr   r7   type)r8   r   r   r   r9      s    
)OrderedDict)openrc          	   C   sB   d|kr t | t|||||dS t | t|||p2d|||dS d S )Nb)	bufferingerrorsnewlineclosefdzutf-8)rE   r   rF   rG   rH   )io_openr   )filemoderE   r   rF   rG   rH   r   r   r   rA      s    
rA   )__dict____weakref__c                s    fdd}|S )zClass 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dtt| D } | j| j|S )Nc             3   s"   | ]\}}| kr||fV  qd S )Nr   )r   keyr   )
skip_attrsr   r   	<genexpr>   s    z@with_metaclass.<locals>._clone_with_metaclass.<locals>.<genexpr>)dictr   vars__name__	__bases__)ZClassZattrs)TyperO   r   r   _clone_with_metaclass   s    z-with_metaclass.<locals>._clone_with_metaclassr   )rU   rO   rV   r   )rU   rO   r   with_metaclass   s    	rW   c                s*   G  fdddt }t |tddi S )z%Create a base class with a metaclass.c                   s,   e Zd Z fddZe fddZdS )z%six_with_metaclass.<locals>.metaclassc                s   | |S )Nr   )clsname
this_basesr0   )basesmetar   r   __new__   s    z-six_with_metaclass.<locals>.metaclass.__new__c                s    | S )N)__prepare__)rX   rY   rZ   )r[   r\   r   r   r^      s    z1six_with_metaclass.<locals>.metaclass.__prepare__N)rS   
__module____qualname__r]   classmethodr^   r   )r[   r\   r   r   	metaclass   s   rb   Ztemporary_classr   )r?   r]   r   )r\   r[   rb   r   )r[   r\   r   six_with_metaclass   s    rc   c             C   sh   t rt| tr| jr| S ddlm} ddlm} | }y||}W n tk
r^   |d}Y nX || S )Nr   )	getwriter)getpreferredencodingzUTF-8)	PY2r   rJ   r   codecsrd   Zlocalere   LookupError)streamrd   re   r   Zwriter_classr   r   r   _init_stream_encoding   s    rj   c               C   s   t tjt_t tjt_d S )N)rj   r   stdoutstderrr   r   r   r   init_std_stream_encoding   s    rm   c             C   s$   y
|  dS  tk
r   | S X d S )Nzutf-8)r   AttributeError)r   r   r   r   ensure_binary   s    
ro   c             C   s   y
|  dS  tk
r   | S  tk
r   yddlm} W nF tk
r   yddlm} W n  tk
r|   ddlm} Y nX Y nX || dpd}| j |ddS  t	k
r   | S X d S )Nzutf-8r   )detectr   replace)rF   )
decodern   UnicodeDecodeErrorZchardetrp   ImportErrorZrequests.packages.chardetZ%pip._vendor.requests.packages.chardetgetUnicodeEncodeError)r   rp   r   r   r   r   ensure_text_type   s     
rw   c             C   s$   y
|  dS  tk
r   | S X d S )NZunicode_escape)rr   rn   )r   r   r   r   ensure_unicode  s    
rx   c             C   s6   y
|  tS  tk
r   | S  tk
r0   | S X d S )N)r   FILESYSTEM_ENCODINGrn   rv   )r   r   r   r   ensure_fs_path_encoding  s    
rz   c             C   s6   y
|  dS  tk
r   | S  tk
r0   | S X d S )Nzutf-8)r   rn   rv   )r   r   r   r   ensure_utf8_encoding!  s    
r{   )rB   rC   NNNT)RZ
__future__r   r   r   r   	itertoolsr   operatorr   r   boolplatformZon_winZon_macr   rf   ZPY3getfilesystemencodingry   r   r"   r   r   r#   r   r7   intZinteger_typesr?   Zclass_typesZ	text_typer   Zbinary_typeinputrangetypesr$   Z
basestringZlongr   Z	raw_inputZxrangeZcollections.abcr%   r&   ior'   r(   Zjsonr+   
ValueErrorcollectionsr,   zipr-   r2   r4   r   r:   r;   r<   r6   r9   r@   ZodictrA   rI   setrW   rc   ZNoneTypetuplefloatcomplexZprimitive_typesrj   rm   ro   rw   rx   rz   r{   r   r   r   r   <module>	   s   




			