3 \@s8ddlZddlmZddlmZdZGdddeZdS)N)RawConfigParser)CommandzE[distutils] index-servers = pypi [pypi] username:%s password:%s c@sdeZdZdZdZdZdZdddefdgZdgZd d Z d d Z d dZ ddZ ddZ ddZdS) PyPIRCCommandzhttps://upload.pypi.org/legacy/pypiNz repository=rzurl of repository [default: %s] show-response&display full response text from servercCstjjtjjddS)N~z.pypirc)ospathjoin expanduser)selfr(/usr/lib64/python3.6/distutils/config.py _get_rc_file&szPyPIRCCommand._get_rc_filec CsH|j}tjtj|tjtjBdd}|jt||fWdQRXdS)Niw)rr fdopenopenO_CREATO_WRONLYwriteDEFAULT_PYPIRC)rusernamepasswordrcfrrr _store_pypirc*s zPyPIRCCommand._store_pypircc Cs|j}tjj|r|jd||jp.|j}|jp:|j}t }|j ||j }d|krR|j dd}dd|j dD}|gkrd|krdg}niSx|D]}d|i} |j |d | d <xHd |jfd |jfdfD].\} } |j|| r|j || | | <q| | | <qW|dkr.||jdfkr.|j| d <| S| d|ksH| d |kr| SqWnRd |krd }|j|d r||j |d }n|j}|j |d |j |d |||jdSiS)NzUsing PyPI login from %sZ distutilsz index-serverscSs g|]}|jdkr|jqS))strip).0serverrrr >sz.PyPIRCCommand._read_pypirc.. rr!r repositoryrealmrz server-login)rrr$r!r%)rN)rr r existsZannouncer$DEFAULT_REPOSITORYr% DEFAULT_REALMrreadsectionsgetsplitZ has_option) rrr$r%configr*Z index_serversZ_serversr!Zcurrentkeydefaultrrr _read_pypirc0sX                zPyPIRCCommand._read_pypirccCs8ddl}|jdd}|j|djdd}|jj|S)Nrz content-typez text/plaincharsetascii)cgiZ getheaderZ parse_headerr+r)decode)rZresponser4Z content_typeencodingrrr_read_pypi_responseqs z!PyPIRCCommand._read_pypi_responsecCsd|_d|_d|_dS)Nr)r$r%Z show_response)rrrrinitialize_optionsxsz PyPIRCCommand.initialize_optionscCs(|jdkr|j|_|jdkr$|j|_dS)N)r$r'r%r()rrrrfinalize_options~s  zPyPIRCCommand.finalize_options)rNr)__name__ __module__ __qualname__r'r(r$r%Z user_optionsZboolean_optionsrrr0r7r8r9rrrrrs Ar)r Z configparserrZ distutils.cmdrrrrrrrs