a
    ñ»jj  ã                   @   sL   d Z ddlZddlZddlmZ ddlmZ dZG dd„ deƒZ	d	d
„ Z
dS )z�distutils.pypirc

Provides the PyPIRCCommand class, the base class for the command classes
that uses .pypirc in the distutils.command package.
é    N)ÚRawConfigParseré   )ÚCommandzE[distutils]
index-servers =
    pypi

[pypi]
username:%s
password:%s
c                   @   sl   e Zd ZdZdZdZdZdZddde› d�fd	gZd
gZ	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚPyPIRCCommandz6Base command that knows how to handle the .pypirc filezhttps://upload.pypi.org/legacy/ÚpypiNzrepository=Úrzurl of repository [default: ú])úshow-responseNz&display full response text from serverr	   c                 C   s   t j t j d¡d¡S )zReturns rc file path.ú~z.pypirc)ÚosÚpathÚjoinÚ
expanduser©Úself© r   úBE:\soccer\ml_env\Lib\site-packages\setuptools/_distutils/config.pyÚ_get_rc_file'   s    zPyPIRCCommand._get_rc_filec                 C   sd   |   ¡ }t |tjtjB d¡}tj|ddd��"}| t||f ¡ W d  ƒ n1 sV0    Y  dS )zCreates a default .pypirc file.i€  Úwúutf-8©ÚencodingN)r   r   ÚopenÚO_CREATÚO_WRONLYÚfdopenÚwriteÚDEFAULT_PYPIRC)r   ÚusernameÚpasswordÚrcÚrawÚfr   r   r   Ú_store_pypirc+   s    zPyPIRCCommand._store_pypircc                 C   s¢  |   ¡ }tj |¡�rž|  d|› �¡ | jp0| j}tƒ }|j|dd� | 	¡ }d|v �rL| 
dd¡}dd„ | d¡D ƒ}|g kr”d	|v r�d	g}ni S |D ]°}d
|i}| 
|d¡|d< d| jfd| jfdfD ].\}	}
| ||	¡rð| 
||	¡||	< qÊ|
||	< qÊ|d	k�r&|| jd	fv �r&| j|d< |  S |d
 |k�s@|d |kr˜|  S q˜nRd|v �ržd}| |d¡�rv| 
|d¡}n| j}| 
|d¡| 
|d¡||| jdœS i S )zReads the .pypirc file.zUsing PyPI login from r   r   Ú	distutilszindex-serversc                 S   s    g | ]}|  ¡ d kr|  ¡ ‘qS )Ú )Ústrip)Ú.0Úserverr   r   r   Ú
<listcomp>?   s   þz.PyPIRCCommand._read_pypirc.<locals>.<listcomp>Ú
r   r(   r   Ú
repositoryÚrealm)r   Nzserver-loginr   )r   r   r+   r(   r,   )r   r   r   ÚexistsÚannouncer+   ÚDEFAULT_REPOSITORYr   ÚreadÚsectionsÚgetÚsplitÚDEFAULT_REALMÚ
has_option)r   r    r+   Úconfigr1   Úindex_serversÚ_serversr(   ÚcurrentÚkeyÚdefaultr   r   r   Ú_read_pypirc2   sb    
þý
þ

ÿ
þ


ûzPyPIRCCommand._read_pypircc                 C   s   |  dd¡}| ¡  t|ƒ¡S )z%Read and decode a PyPI HTTP response.úcontent-typez
text/plain)Ú	getheaderr0   ÚdecodeÚ_extract_encoding)r   ÚresponseÚcontent_typer   r   r   Ú_read_pypi_response{   s    z!PyPIRCCommand._read_pypi_responsec                 C   s   d| _ d| _d| _dS )zInitialize options.NF)r+   r,   Úshow_responser   r   r   r   Úinitialize_options€   s    z PyPIRCCommand.initialize_optionsc                 C   s(   | j du r| j| _ | jdu r$| j| _dS )zFinalizes options.N)r+   r/   r,   r4   r   r   r   r   Úfinalize_options†   s    

zPyPIRCCommand.finalize_options)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r/   r4   r+   r,   Úuser_optionsÚboolean_optionsr   r#   r<   rC   rE   rF   r   r   r   r   r      s   þIr   c                 C   s$   t j ¡ }| |d< |d j dd¡S )z{
    >>> _extract_encoding('text/plain')
    'ascii'
    >>> _extract_encoding('text/html; charset="utf8"')
    'utf8'
    r=   ÚcharsetÚascii)ÚemailÚmessageÚEmailMessageÚparamsr2   )rB   Úmsgr   r   r   r@   Ž   s    
r@   )rJ   Úemail.messagerO   r   Úconfigparserr   Úcmdr   r   r   r@   r   r   r   r   Ú<module>   s   v