
(h                 @   sR   d  Z  d d l Z d d l m Z d d l m Z d Z Gd d   d e  Z d S)zdistutils.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               @   s   e  Z d  Z d Z d Z d Z d Z d Z d d d e 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)PyPIRCCommandz;Base command that knows how to handle the .pypirc file
    zhttps://upload.pypi.org/legacy/pypiNzrepository=rzurl of repository [default: %s]show-response&display full response text from serverc             C   s   t  j j t  j j d  d  S)zReturns rc file path.~z.pypirc)ospathjoin
expanduser)self r   B/tmp/pip-build-kmztzv_d/setuptools/setuptools/_distutils/config.py_get_rc_file&   s    zPyPIRCCommand._get_rc_filec             C   s\   |  j    } t j t j | t j t j Bd  d   } | j t | | f  Wd QRXd S)zCreates a default .pypirc file.i  wN)r   r
   fdopenopenO_CREATO_WRONLYwriteDEFAULT_PYPIRC)r   usernamepasswordrcfr   r   r   _store_pypirc*   s    .zPyPIRCCommand._store_pypircc          
   C   s;  |  j    } t j j |  r7|  j d |  |  j p> |  j } t   } | j |  | j	   } d | k r| j
 d d  } d d   | j d  D } | g  k r d | k r d g } n i  Sxo| D] } d | i } | j
 | d	  | d	 <xd d
 |  j f d |  j f d f D]A \ }	 }
 | j | |	  rM| j
 | |	  | |	 <q|
 | |	 <qW| d k r| |  j d f k r|  j | d
 <| S| d | k s| d
 | k r | Sq Wn d | k r7d } | j | d
  r| j
 | d
  } n	 |  j } d	 | j
 | d	  d | j
 | d  d
 | d | d |  j i Si  S)zReads the .pypirc file.zUsing PyPI login from %s	distutilszindex-serversc             S   s.   g  |  ]$ } | j    d  k r | j     q S) )strip).0serverr   r   r   
<listcomp>=   s   	 z.PyPIRCCommand._read_pypirc.<locals>.<listcomp>
r   r"   r   
repositoryrealmr   Nzserver-login)zpasswordN)r   r
   r   existsannouncer%   DEFAULT_REPOSITORYr   readsectionsgetsplitDEFAULT_REALM
has_option)r   r   r%   configr+   index_servers_serversr"   currentkeydefaultr   r   r   _read_pypirc0   sV    				zPyPIRCCommand._read_pypircc             C   sP   d d l  } | j d d  } | j |  d j d d  } | j   j |  S)z%Read and decode a PyPI HTTP response.r   Nzcontent-typez
text/plain   charsetascii)cgi	getheaderparse_headerr,   r*   decode)r   responser:   content_typeencodingr   r   r   _read_pypi_responsep   s    z!PyPIRCCommand._read_pypi_responsec             C   s   d |  _  d |  _ d |  _ d S)zInitialize options.Nr   )r%   r&   show_response)r   r   r   r   initialize_optionsw   s    		z PyPIRCCommand.initialize_optionsc             C   s:   |  j  d k r |  j |  _  |  j d k r6 |  j |  _ d S)zFinalizes options.N)r%   r)   r&   r.   )r   r   r   r   finalize_options}   s    zPyPIRCCommand.finalize_options)r   Nr   )__name__
__module____qualname____doc__r)   r.   r%   r&   user_optionsboolean_optionsr   r   r6   rA   rC   rD   r   r   r   r   r      s"    		@r   )rH   r
   configparserr   distutils.cmdr   r   r   r   r   r   r   <module>   s
   
