3 \�@s<dZddlZddlmZddlmZdZGdd�de�ZdS)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@sheZdZdZdZdZdZdZdddefdgZdgZ d d �Z d d �Z dd�Z dd�Z dd�Zdd�ZdS)� PyPIRCCommandz;Base command that knows how to handle the .pypirc file zhttps://upload.pypi.org/legacy/�pypiNz repository=�rzurl of repository [default: %s]� show-response�&display full response text from servercCstjjtjjd�d�S)zReturns rc file path.�~z.pypirc)�os�path�join� expanduser)�self�r�(/usr/lib64/python3.6/distutils/config.py� _get_rc_file&szPyPIRCCommand._get_rc_filec CsH|j�}tjtj|tjtjBd�d��}|jt||f�WdQRXdS)zCreates a default .pypirc file.i��wN)rr �fdopen�open�O_CREAT�O_WRONLY�write�DEFAULT_PYPIRC)r�username�password�rc�frrr� _store_pypirc*s zPyPIRCCommand._store_pypircc Cs�|j�}tjj|��r�|jd|�|jp.|j}|jp:|j}t �}|j |�|j �}d|k�rR|j dd�}dd�|j d�D�}|gkr�d|kr�dg}niSx�|D]�}d|i} |j |d �| d <xHd |jfd |jfdfD].\} } |j|| �r�|j || �| | <q�| | | <q�W|dk�r.||jdfk�r.|j| d <| S| d|k�sH| d |kr�| Sq�WnRd|k�r�d}|j|d ��r||j |d �}n|j}|j |d �|j |d �|||jd�SiS)zReads the .pypirc file.zUsing PyPI login from %sZ distutilsz index-serverscSs g|]}|j�dkr|j��qS)�)�strip)�.0�serverrrr� >sz.PyPIRCCommand._read_pypirc..� rr!r� repository�realmrNz server-login)rrr$r!r%)rN)rr r �existsZannouncer$�DEFAULT_REPOSITORYr%� DEFAULT_REALMr�read�sections�get�splitZ has_option) rrr$r%�configr*Z index_serversZ_serversr!Zcurrent�key�defaultrrr� _read_pypirc0sX                zPyPIRCCommand._read_pypirccCs8ddl}|jdd�}|j|�djdd�}|j�j|�S)z%Read and decode a PyPI HTTP response.rNz content-typez text/plain��charset�ascii)�cgiZ getheaderZ parse_headerr+r)�decode)rZresponser4Z content_type�encodingrrr�_read_pypi_responseqs z!PyPIRCCommand._read_pypi_responsecCsd|_d|_d|_dS)zInitialize options.Nr)r$r%Z show_response)rrrr�initialize_optionsxsz PyPIRCCommand.initialize_optionscCs(|jdkr|j|_|jdkr$|j|_dS)zFinalizes options.N)r$r'r%r()rrrr�finalize_options~s  zPyPIRCCommand.finalize_options)rNr)�__name__� __module__� __qualname__�__doc__r'r(r$r%Z user_optionsZboolean_optionsrrr0r7r8r9rrrrrs"Ar)r=r Z configparserrZ distutils.cmdrrrrrrr�s