Ñò
6»‚Uc           @   s   d  Z  d d k l Z d d k l Z d d k l Z d d k l Z d d k	 Z	 d d k
 Z
 d d k Z d d k Z d d k Z d d k Z d d k l Z l Z l Z l Z l Z d d k l Z e o d	 n d
 Z d d „ Z d e f d „  ƒ  YZ d S(   sp   upload_docs

Implements a Distutils 'upload_docs' subcommand (upload documentation to
PyPI's pythonhosted.org).
iÿÿÿÿ(   t   standard_b64encode(   t   log(   t   DistutilsOptionError(   t   uploadN(   t   httplibt   urlparset   unicodet	   iteritemst   PY3(   t   iter_entry_pointst   surrogateescapet   stricts   utf-8c         C   s%   t  |  t ƒ o |  i | t ƒ S|  S(   N(   t
   isinstanceR   t   encodet   errors(   t   st   encoding(    (    sB   /usr/lib/python2.6/site-packages/setuptools/command/upload_docs.pyt   b   s    t   upload_docsc           B   s{   e  Z d  Z d d d e i f d d g Z e i Z d „  Z d	 e f g 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   s3   |  i  d  j o x t d d ƒ D] } t SWn d  S(   Ns   distutils.commandst   build_sphinx(   t
   upload_dirt   NoneR	   t   True(   t   selft   ep(    (    sB   /usr/lib/python2.6/site-packages/setuptools/command/upload_docs.pyt
   has_sphinx.   s     R   c         C   s#   t  i |  ƒ d  |  _ d  |  _ d  S(   N(   R   t   initialize_optionsR   R   t
   target_dir(   R   (    (    sB   /usr/lib/python2.6/site-packages/setuptools/command/upload_docs.pyR   5   s    	c         C   s¨   t  i |  ƒ |  i d  j oZ |  i ƒ  o |  i d ƒ } | i |  _ q |  i d ƒ } t i	 i
 | i d ƒ |  _ n |  i d ƒ |  i |  _ |  i d |  i ƒ d  S(   NR   t   buildt   docsR   s   Using upload directory %s(   R   t   finalize_optionsR   R   R   t   get_finalized_commandt   builder_target_dirR   t   ost   patht   joint
   build_baset   ensure_dirnamet   announce(   R   R   R   (    (    sB   /usr/lib/python2.6/site-packages/setuptools/command/upload_docs.pyR   :   s    c   
   	   C   sú   t  i | d ƒ } zÖ |  i |  i ƒ x¿ t i |  i ƒ D]« \ } } } | |  i j o | o t d |  i ƒ ‚ n xj | D]b } t i i | | ƒ } | t	 |  i ƒ i
 t i i ƒ } t i i | | ƒ }	 | i | |	 ƒ q} Wq8 WWd  | i ƒ  Xd  S(   Nt   ws'   no files found in upload directory '%s'(   t   zipfilet   ZipFilet   mkpathR   R"   t   walkR   R#   R$   t   lent   lstript   sept   writet   close(
   R   t   filenamet   zip_filet   roott   dirst   filest   namet   fullt   relativet   dest(    (    sB   /usr/lib/python2.6/site-packages/setuptools/command/upload_docs.pyt   create_zipfileH   s       "c         C   sŽ   x! |  i  ƒ  D] } |  i | ƒ q Wt i ƒ  } |  i i i ƒ  } t i i	 | d | ƒ } z |  i
 | ƒ |  i | ƒ Wd  t i | ƒ Xd  S(   Ns   %s.zip(   t   get_sub_commandst   run_commandt   tempfilet   mkdtempt   distributiont   metadatat   get_nameR"   R#   R$   R;   t   upload_filet   shutilt   rmtree(   R   t   cmd_namet   tmp_dirR7   R3   (    (    sB   /usr/lib/python2.6/site-packages/setuptools/command/upload_docs.pyt   runY   s     c      
   C   sm  t  | d ƒ } | i ƒ  } | i ƒ  |  i i } h d d 6| i ƒ  d 6t i i | ƒ | f d 6} t	 |  i
 d |  i ƒ } t | ƒ } t o | i d ƒ } n d | } d	 } t	 d
 ƒ t	 | ƒ }	 |	 t	 d ƒ }
 g  } xt | ƒ D]ø \ } } d | } t | t ƒ p | g } n xÂ | D]º } t | ƒ t j o  | d | d 7} | d } n t	 | ƒ } | i |	 ƒ | i t	 | ƒ ƒ | i t	 d ƒ ƒ | i | ƒ | o. | d t	 d ƒ j o | i t	 d ƒ ƒ q'q'Wqí W| i |
 ƒ | i t	 d ƒ ƒ t	 d ƒ i | ƒ } |  i d |  i t i ƒ t |  i ƒ \ } } } } } } | o | o | p t ‚ | d j o t i | ƒ } n1 | d j o t i | ƒ } n t d | ƒ ‚ d } y{ | i ƒ  | i  d | ƒ d | } | i! d | ƒ | i! d t" t# | ƒ ƒ ƒ | i! d | ƒ | i$ ƒ  | i% | ƒ Wn2 t& i' j
 o# } |  i t" | ƒ t i( ƒ d  SX| i) ƒ  } | i* d j o' |  i d | i* | i+ f t i ƒ n | i* d  j oK | i, d! ƒ } | d  j o d" | i ƒ  } n |  i d# | t i ƒ n$ |  i d$ | i* | i+ f t i( ƒ |  i. o  d% d& | i ƒ  d% d& f GHn d  S('   Nt   rbt
   doc_uploads   :actionR7   t   contentt   :t   asciis   Basic s3   --------------GHSKFJDLGDS7543FJKLFHRE75642756743254s   
--s   --s*   
Content-Disposition: form-data; name="%s"s   ; filename="%s"i    i   s   

iÿÿÿÿs   s   
t    s   Submitting documentation to %st   httpt   httpss   unsupported schema t   POSTs    multipart/form-data; boundary=%ss   Content-types   Content-lengtht   AuthorizationiÈ   s   Server response (%s): %si-  t   Locations   https://pythonhosted.org/%s/s   Upload successful. Visit %ss   Upload failed (%s): %st   -iK   (/   t   opent   readR1   R@   RA   RB   R"   R#   t   basenameR   t   usernamet   passwordR    R   t   decodeR   R   t   listt   typet   tuplet   appendR$   R'   t
   repositoryR   t   INFOR   t   AssertionErrorR   t   HTTPConnectiont   HTTPSConnectiont   connectt
   putrequestt	   putheadert   strR-   t
   endheaderst   sendt   sockett   errort   ERRORt   getresponset   statust   reasont	   getheaderR   t   show_response(   R   R2   t   fRK   t   metat   datat   credentialst   autht   boundaryt   sep_boundaryt   end_boundaryt   bodyt   keyt   valuest   titlet   valuet   schemat   netloct   urlt   paramst   queryt	   fragmentst   connt   content_typet   eR   t   location(    (    sB   /usr/lib/python2.6/site-packages/setuptools/command/upload_docs.pyRC   g   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   t   sub_commandsR   R   R;   RH   RC   (    (    (    sB   /usr/lib/python2.6/site-packages/setuptools/command/upload_docs.pyR   "   s    							(   t   __doc__t   base64R    t	   distutilsR   t   distutils.errorsR   t   distutils.command.uploadR   R"   Rj   R)   R>   t   sysRD   t   setuptools.compatR   R   R   R   R   t   pkg_resourcesR	   R   R   R   (    (    (    sB   /usr/lib/python2.6/site-packages/setuptools/command/upload_docs.pyt   <module>   s   (