ó
F—š]c           @   sÓ   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 d  d l m	 Z
 d  d l m Z d  d l m Z d  d l m Z m Z d  d l m Z d  d	 l m Z d
 e
 j	 f d „  ƒ  YZ	 d S(   iÿÿÿÿN(   t   standard_b64encode(   t   log(   t   upload(   t   spawn(   t   DistutilsError(   t   urlopent   Request(   t	   HTTPError(   t   urlparseR   c           B   s;   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   sa   
    Override default upload behavior to obtain password
    in a variety of different ways.
    c         C   s/   z t  j j |  ƒ Wd  |  j d t j ƒ Xd  S(   Nsj   WARNING: Uploading via this command is deprecated, use twine to upload instead (https://pypi.org/p/twine/)(   t   origR   t   runt   announceR   t   WARN(   t   self(    (    s8   lib/python2.7/site-packages/setuptools/command/upload.pyR
      s
    c         C   sP   t  j j |  ƒ |  j p" t j ƒ  |  _ |  j pF |  j ƒ  pF |  j ƒ  |  _ d  S(   N(	   R	   R   t   finalize_optionst   usernamet   getpasst   getusert   passwordt   _load_password_from_keyringt   _prompt_for_password(   R   (    (    s8   lib/python2.7/site-packages/setuptools/command/upload.pyR   "   s    		c          C   s^  t  |  j ƒ \ } } } } } }	 | s3 | s3 |	 rI t d |  j ƒ ‚ n  | dC k rh t d | ƒ ‚ n  |  j r» d d d | g }
 |  j r¥ d |  j g |
 d	 d	 +n  t |
 d
 |  j ƒn  t | d ƒ  } | j ƒ  } Wd  QX|  j	 j
 } i d d 6d d 6| j ƒ  d 6| j ƒ  d 6t j j | ƒ | f d 6| d 6| d 6t j | ƒ j ƒ  d 6t | j ƒ  ƒ d 6| j ƒ  d 6| j ƒ  d 6| j ƒ  d 6| j ƒ  d 6| j ƒ  d 6| j ƒ  d 6| j ƒ  d 6| j ƒ  d 6| j ƒ  d 6| j ƒ  d  6| j ƒ  d! 6| j  ƒ  d" 6| j! ƒ  d# 6} d$ | d% <|  j r[t j j | ƒ d& t | d& d ƒ j ƒ  f | d' <n  |  j" d( |  j# j$ d) ƒ } d* t% | ƒ j& d) ƒ } d+ } d, | j$ d) ƒ } | d- } t' j( ƒ  } xÓ | j) ƒ  D]Å \ } } d. | } t* | t+ ƒ sþ| g } n  x‘ | D]‰ } t, | ƒ t- k r<| d/ | d0 7} | d1 } n t | ƒ j$ d2 ƒ } | j. | ƒ | j. | j$ d2 ƒ ƒ | j. d3 ƒ | j. | ƒ qWqÍW| j. | ƒ | j/ ƒ  } d4 | |  j f } |  j0 | t1 j2 ƒ i d5 | d6 6t t3 | ƒ ƒ d7 6| d8 6} t4 |  j d9 | d: | ƒ} y% t5 | ƒ } | j6 ƒ  } | j7 } WnS t8 k
 rg} | j9 } | j7 } n/ t: k
 r•} |  j0 t | ƒ t1 j; ƒ ‚  n X| d; k r+|  j0 d< | | f t1 j2 ƒ |  j< rZt= |  d= d> „  ƒ | ƒ } | d  k	 r(d? j? d@ dA | d@ dA f ƒ } |  j0 | t1 j2 ƒ q(qZn/ dB | | f } |  j0 | t1 j; ƒ t@ | ƒ ‚ d  S(D   Ns   Incompatible url %st   httpt   httpss   unsupported schema t   gpgs   --detach-signs   -as   --local-useri   t   dry_runt   rbt   file_uploads   :actiont   1t   protocol_versiont   namet   versiont   contentt   filetypet	   pyversiont
   md5_digestt   metadata_versiont   summaryt	   home_paget   authort   author_emailt   licenset   descriptiont   keywordst   platformt   classifierst   download_urlt   providest   requirest	   obsoletest    t   comments   .asct   gpg_signaturet   :t   asciis   Basic s3   --------------GHSKFJDLGDS7543FJKLFHRE75642756743254s   
--s   --
s+   
Content-Disposition: form-data; name="%s"s   ; filename="%s"i    i   s   utf-8s   

s   Submitting %s to %ss    multipart/form-data; boundary=%ss   Content-types   Content-lengtht   Authorizationt   datat   headersiÈ   s   Server response (%s): %st   _read_pypi_responsec         S   s   d  S(   N(   t   None(   t   x(    (    s8   lib/python2.7/site-packages/setuptools/command/upload.pyt   <lambda>ª   R1   s   
t   -iK   s   Upload failed (%s): %s(   R   R   (A   R   t
   repositoryt   AssertionErrort   signt   identityR   R   t   opent   readt   distributiont   metadatat   get_namet   get_versiont   ost   patht   basenamet   hashlibt   md5t	   hexdigestt   strt   get_metadata_versiont   get_descriptiont   get_urlt   get_contactt   get_contact_emailt   get_licencet   get_long_descriptiont   get_keywordst   get_platformst   get_classifierst   get_download_urlt   get_providest   get_requirest   get_obsoletesR   R   t   encodeR    t   decodet   iot   BytesIOt   itemst
   isinstancet   listt   typet   tuplet   writet   getvalueR   R   t   INFOt   lenR   R   t   getcodet   msgR   t   codet   OSErrort   ERRORt   show_responset   getattrR:   t   joinR   (    R   t   commandR!   t   filenamet   schemat   netloct   urlt   paramst   queryt	   fragmentst   gpg_argst   fR   t   metaR7   t	   user_passt   autht   boundaryt   sep_boundaryt   end_boundaryt   bodyt   keyt   valuet   titleRk   R8   t   requestt   resultt   statust   reasont   et   text(    (    s8   lib/python2.7/site-packages/setuptools/command/upload.pyt   upload_file0   s¸    !			
	#


		
		 c         C   s>   y& t  d ƒ } | j |  j |  j ƒ SWn t k
 r9 n Xd S(   sM   
        Attempt to load password from keyring. Suppress Exceptions.
        t   keyringN(   t
   __import__t   get_passwordR>   R   t	   Exception(   R   R   (    (    s8   lib/python2.7/site-packages/setuptools/command/upload.pyR   ³   s
    c         C   s,   y t  j  ƒ  SWn t t f k
 r' n Xd S(   sH   
        Prompt for a password on the tty. Suppress Exceptions.
        N(   R   R   t   KeyboardInterrupt(   R   (    (    s8   lib/python2.7/site-packages/setuptools/command/upload.pyR   ½   s    (   t   __name__t
   __module__t   __doc__R
   R   RŒ   R   R   (    (    (    s8   lib/python2.7/site-packages/setuptools/command/upload.pyR      s   	
		ƒ	
(   R_   RH   RK   R   t   base64R    t	   distutilsR   t   distutils.commandR   R	   t   distutils.spawnR   t   distutils.errorsR   t*   setuptools.extern.six.moves.urllib.requestR   R   t(   setuptools.extern.six.moves.urllib.errorR   t(   setuptools.extern.six.moves.urllib.parseR   (    (    (    s8   lib/python2.7/site-packages/setuptools/command/upload.pyt   <module>   s   