ó
OyTLc           @   s  d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l	 m
 Z
 d d l m Z y d d l m Z Wn! e k
 r½ d d l m Z n Xe j d k Z y e Wn e k
 rî e Z n Xd „  Z d e f d	 „  ƒ  YZ d S(
   ss   upload_docs

Implements a Distutils 'upload_docs' subcommand (upload documentation to
PyPI's packages.python.org).
iÿÿÿÿN(   t   log(   t   DistutilsOptionError(   t   uploadt   3c         C   s$   t  |  t ƒ s |  j d ƒ S|  Sd S(   s^   Return bytes by either encoding the argument as ASCII or simply return
    the argument as-is.t   asciiN(   t
   isinstancet   bytest   encode(   t   str_or_bytes(    (    sB   /usr/lib/python2.7/dist-packages/setuptools/command/upload_docs.pyt   b    s    t   upload_docsc           B   sc   e  Z d  Z d d d e j f d d g Z e j Z d „  Z d	 „  Z	 d
 „  Z
 d „  Z d „  Z RS(   s   Upload documentation to PyPIs   repository=t   rs   url of repository [default: %s]s   show-responses&   display full response text from servers   upload-dir=s   directory to uploadc         C   s   t  j |  ƒ d  |  _ d  S(   N(   R   t   initialize_optionst   Nonet
   upload_dir(   t   self(    (    sB   /usr/lib/python2.7/dist-packages/setuptools/command/upload_docs.pyR   6   s    c         C   s~   t  j |  ƒ |  j d  k rY |  j d ƒ } t j j | j d ƒ |  _ |  j	 |  j ƒ n  |  j
 d ƒ |  j d |  j ƒ d  S(   Nt   buildt   docsR   s   Using upload directory %s(   R   t   finalize_optionsR   R   t   get_finalized_commandt   ost   patht   joint
   build_baset   mkpatht   ensure_dirnamet   announce(   R   R   (    (    sB   /usr/lib/python2.7/dist-packages/setuptools/command/upload_docs.pyR   :   s    c         C   s  |  j  j j ƒ  } t j ƒ  } t j j | d | ƒ } t j	 | d ƒ } x¼ t j
 |  j ƒ D]¨ \ } } } | |  j k r— | r— t d |  j ƒ ‚ n  xj | D]b } t j j | | ƒ } | t |  j ƒ j t j j ƒ }	 t j j |	 | ƒ }
 | j | |
 ƒ qž Wq\ W| j ƒ  | S(   Ns   %s.zipt   ws'   no files found in upload directory '%s'(   t   distributiont   metadatat   get_namet   tempfilet   mkdtempR   R   R   t   zipfilet   ZipFilet   walkR   R   t   lent   lstript   sept   writet   close(   R   t   namet   tmp_dirt   tmp_filet   zip_filet   roott   dirst   filest   fullt   relativet   dest(    (    sB   /usr/lib/python2.7/dist-packages/setuptools/command/upload_docs.pyt   create_zipfileC   s     ""
c         C   s   |  j  ƒ  } |  j | ƒ d  S(   N(   R3   t   upload_file(   R   R,   (    (    sB   /usr/lib/python2.7/dist-packages/setuptools/command/upload_docs.pyt   runU   s    c         C   s}  t  | d ƒ j ƒ  } |  j j } i d d 6| j ƒ  d 6t j j | ƒ | f d 6} |  j d |  j	 } t
 r• t j | j d ƒ ƒ } t d ƒ } n t j | ƒ } d } | | j ƒ  7} t d	 ƒ } t d
 ƒ | }	 |	 t d ƒ }
 g  } x| j ƒ  D]	\ } } t | ƒ t g  ƒ k r)| g } n  xÖ | D]Î } t | ƒ t k rit d | d ƒ } | d } n t d ƒ } | j |	 ƒ | j t d | ƒ ƒ | j | ƒ | j t d ƒ ƒ | j t | ƒ ƒ | r0| d t d ƒ k r0| j t d ƒ ƒ q0q0Wqù W| j |
 ƒ | j t d ƒ ƒ t d ƒ j | ƒ } |  j d |  j t j ƒ t j |  j ƒ \ } } } } } } | rŽ| rŽ| s”t ‚ | d k r²t j | ƒ } n. | d k rÐt j | ƒ } n t d | ƒ ‚ d } t j } yu | j  ƒ  | j! d | ƒ | j" d d | ƒ | j" d t# t$ | ƒ ƒ ƒ | j" d | ƒ | j% ƒ  | j& | ƒ Wn0 t' j( k
 r–} |  j t# | ƒ t j) ƒ d  SX| j* ƒ  } | j+ d k rØ|  j d | j+ | j, f t j ƒ nz | j+ d  k r/| j- d! ƒ } | d  k rd" | j ƒ  } n  |  j d# | t j ƒ n# |  j d$ | j+ | j, f t j) ƒ |  j/ ryd% d& G| j ƒ  Gd% d& GHn  d  S('   Nt   rbt
   doc_uploads   :actionR)   t   contentt   :t   utf8s   Basic s3   --------------GHSKFJDLGDS7543FJKLFHRE75642756743254s   
--s   --s   ;filename="%s"i    i   t    s*   
Content-Disposition: form-data; name="%s"s   

iÿÿÿÿs   s   
s   Submitting documentation to %st   httpt   httpss   unsupported schema t   POSTs   Content-types    multipart/form-data; boundary=%ss   Content-lengtht   AuthorizationiÈ   s   Server response (%s): %si-  t   Locations   http://packages.python.org/%s/s   Upload successful. Visit %ss   Upload failed (%s): %st   -iK   (0   t   opent   readR   R   R   R   R   t   basenamet   usernamet   passwordt   _IS_PYTHON3t   base64t   encodebytesR   R   t   encodestringt   stripR	   t   itemst   typet   tuplet   appendR   R   t
   repositoryR    t   INFOt   urlparset   AssertionErrort   httplibt   HTTPConnectiont   HTTPSConnectiont   connectt
   putrequestt	   putheadert   strR$   t
   endheaderst   sendt   sockett   errort   ERRORt   getresponset   statust   reasont	   getheaderR   t   show_response(   R   t   filenameR8   t   metat   datat   credentialst   encoded_credst   autht   boundaryt   sep_boundaryt   end_boundaryt   bodyt   keyt   valuest   valuet   fnt   schemat   netloct   urlt   paramst   queryt	   fragmentst   connt   loglevelt   eR   t   location(    (    sB   /usr/lib/python2.7/dist-packages/setuptools/command/upload_docs.pyR4   Y   s    
$	
	

	N(   s   show-responseNs&   display full response text from server(   s   upload-dir=Ns   directory to upload(   t   __name__t
   __module__t   descriptionR   t   DEFAULT_REPOSITORYR   t   user_optionst   boolean_optionsR   R   R3   R5   R4   (    (    (    sB   /usr/lib/python2.7/dist-packages/setuptools/command/upload_docs.pyR
   )   s    							(   t   __doc__R   R]   R!   RT   RH   RR   R   t   syst	   distutilsR    t   distutils.errorsR   t   distutils.command.uploadR   t   ImportErrort   setuptools.command.uploadt   versionRG   R   t	   NameErrorRZ   R	   R
   (    (    (    sB   /usr/lib/python2.7/dist-packages/setuptools/command/upload_docs.pyt   <module>   s*   
		