
][\                 @   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)ConfigParser)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://pypi.python.org/pypi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   &/usr/lib/python3.4/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 QXd 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   sY  |  j    } t j j |  rU|  j d |  |  j p> |  j } |  j pP |  j } t	   } | j
 |  | j   } d | k r| j d d  } d d   | j d  D } | g  k r d | k r d g } q i  Sn  xu| D] } i | d 6}	 | j | d	  |	 d	 <xd d
 |  j f d |  j f d f D]A \ }
 } | j | |
  rc| j | |
  |	 |
 <q,| |	 |
 <q,W| d k r| |  j d f k r|  j |	 d
 <|	 S|	 d | k s|	 d
 | k r |	 Sq WqUd | k rUd } | j | d
  r| j | d
  } n	 |  j } i | j | d	  d	 6| j | d  d 6| d
 6| d 6|  j d 6Sn  i  S)zReads the .pypirc file.zUsing PyPI login from %sZ	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   existsZannouncer$   DEFAULT_REPOSITORYr%   DEFAULT_REALMr   readsectionsgetsplitZ
has_option)r   r   r$   r%   Zconfigr*   Zindex_serversZ_serversr!   Zcurrentkeydefaultr   r   r   _read_pypirc0   sX    				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)cgiZ	getheaderZparse_headerr+   r)   decode)r   Zresponser3   Zcontent_typeencodingr   r   r   _read_pypi_responseq   s    z!PyPIRCCommand._read_pypi_responsec             C   s   d |  _  d |  _ d |  _ d S)zInitialize options.Nr   )r$   r%   Zshow_response)r   r   r   r   initialize_optionsx   s    		z PyPIRCCommand.initialize_optionsc             C   s@   |  j  d k r |  j |  _  n  |  j d k r< |  j |  _ n  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%   Zuser_optionsZboolean_optionsr   r   r/   r6   r7   r8   r   r   r   r   r      s"    		Ar   )r<   r
   Zconfigparserr   Zdistutils.cmdr   r   r   r   r   r   r   <module>   s
   
