U
    b\                     @   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 ee	jdkZee	jdkZee	jdkZe	 Zd	Zd
ZedddZdd Zdd Zd dlmZ d dlmZ dd Zd dlmZ  d dlm!Z" d(ddZ!dd Z#e$dZ%ee&e'e(ee%fZ)dd Z*d d! Z+d"d# Z,d$d% Z-d&d' Z.dS ))    )absolute_importdivisionprint_functionunicode_literals)chain)methodcallerN)mkdtempZwin32darwinZlinuxTF)returnc                 C   s(   t | tr| S t | tr |  S t| S )z/Environment names and values need to be string.)
isinstancestrbytesdecodevalue r   2lib/python3.8/site-packages/conda/common/compat.pyencode_for_env_var   s
    

r   c                 C   s   t rdd |  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items)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>,   s     z#encode_arguments.<locals>.<setcomp>)ENCODE_ARGS)Z	argumentsr   r   r   encode_arguments*   s    r    )Iterable)StringIOc                 C   s   t | t ot | tS N)r   r   r!   )objr   r   r   
isiterable3   s    r%   )OrderedDict)openrc              	   C   sB   d|kr t | t|||||dS t | t|||p2d|||dS d S )Nb)	bufferingerrorsnewlineclosefdutf-8)r+   encodingr,   r-   r.   )io_openr   )filemoder+   r0   r,   r-   r.   r   r   r   r'   @   s        r'   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 r#   r   )clsname
this_basesdbasesmetar   r   __new__Q   s    z-six_with_metaclass.<locals>.metaclass.__new__c                    s    | S r#   )__prepare__)r4   r5   r6   r8   r   r   r<   T   s    z1six_with_metaclass.<locals>.metaclass.__prepare__N)__name__
__module____qualname__r;   classmethodr<   r   r8   r   r   	metaclassO   s   rA   Ztemporary_classr   )typer;   r   )r:   r9   rA   r   r8   r   six_with_metaclassJ   s    rC   c                 C   s*   z|  dW S  tk
r$   |  Y S X d S Nr/   )encodeAttributeErrorr   r   r   r   ensure_binary^   s    rG   c                 C   s   z|  dW S  tk
r$   |  Y S  tk
r   zddlm} W nF tk
r   zddlm} W n  tk
r   ddlm} Y nX Y nX || dpd}| j |dd Y S  t	k
r   |  Y S X d S )Nr/   r   )detectr0   replace)r,   )
r   rF   UnicodeDecodeErrorZchardetrH   ImportErrorZrequests.packages.chardetZ%pip._vendor.requests.packages.chardetgetUnicodeEncodeError)r   rH   r0   r   r   r   ensure_text_typeg   s     rN   c                 C   s*   z|  dW S  tk
r$   |  Y S X d S )NZunicode_escape)r   rF   r   r   r   r   ensure_unicode   s    rO   c                 C   s@   z|  tW S  tk
r$   |  Y S  tk
r:   |  Y S X d S r#   )rE   FILESYSTEM_ENCODINGrF   rM   r   r   r   r   ensure_fs_path_encoding   s    rQ   c                 C   s@   z|  dW S  tk
r$   |  Y S  tk
r:   |  Y S X d S rD   )rE   rF   rM   r   r   r   r   ensure_utf8_encoding   s    rR   )r(   r)   NNNT)/Z
__future__r   r   r   r   	itertoolsr   operatorr   sysZtempfiler   boolplatformZon_winZon_macZon_linuxgetfilesystemencodingrP   r   r   r   r   r   r    Zcollections.abcr!   ior"   r%   collectionsr&   Zodictr'   r1   rC   rB   ZNoneTypeintfloatcomplexZprimitive_typesrG   rN   rO   rQ   rR   r   r   r   r   <module>	   s6   	

			