Ë
    
_ßdC  ã                   óÎ   — d 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m	Z	m
Z
 ddlmZ ddlmZmZ ddlmZ dd	lmZ  eed
d«       eedd«       eedd«      dœZ G d„ de«      Zy)zm
distutils.command.upload

Implements the Distutils 'upload' subcommand (upload package to a package
index).
é    N)Ústandard_b64encode)ÚurlopenÚRequestÚ	HTTPError)Úurlparseé   )ÚDistutilsErrorÚDistutilsOptionError)ÚPyPIRCCommand)ÚspawnÚmd5Úsha256Úblake2b)Ú
md5_digestÚsha256_digestÚblake2_256_digestc                   ój   — e Zd ZdZej
                  ddgz   Zej                  dgz   Zd„ Zd„ Zd„ Z	d„ Z
y	)
Úuploadzupload binary package to PyPI)ÚsignÚszsign files to upload using gpg)z	identity=ÚizGPG identity used to sign filesr   c                 ót   — t        j                  | «       d| _        d| _        d| _        d| _        d | _        y )NÚ r   F)r   Úinitialize_optionsÚusernameÚpasswordÚshow_responser   Úidentity)Úselfs    úF/usr/lib/python3/dist-packages/setuptools/_distutils/command/upload.pyr   zupload.initialize_options'   s4   € Ü×(Ñ(¨Ô.ØˆŒØˆŒØˆÔØˆŒ	Øˆ�ó    c                 ól  — t        j                  | «       | j                  r| j                  st	        d«      ‚| j                  «       }|i k7  r(|d   | _        |d   | _        |d   | _        |d   | _	        | j                  s3| j                  j                  r| j                  j                  | _        y y y )Nz.Must use --sign for --identity to have meaningr   r   Ú
repositoryÚrealm)r   Úfinalize_optionsr   r   r
   Ú_read_pypircr   r   r#   r$   Údistribution)r   Úconfigs     r    r%   zupload.finalize_options/   sž   € Ü×&Ñ& tÔ,Ø�=Š= §¢Ü&Ð'WÓXÐXØ×"Ñ"Ó$ˆØ�RŠ<Ø" :Ñ.ˆDŒMØ" :Ñ.ˆDŒMØ$ \Ñ2ˆDŒOØ ™ˆDŒJð �}Š} ×!2Ñ!2×!;Ò!;Ø ×-Ñ-×6Ñ6ˆD�Mð "<ˆ}r!   c                 ó®   — | j                   j                  sd}t        |«      ‚| j                   j                  D ]  \  }}}| j                  |||«       Œ y )NzHMust create and upload files in one command (e.g. setup.py sdist upload))r'   Ú
dist_filesr
   Úupload_file)r   ÚmsgÚcommandÚ	pyversionÚfilenames        r    Úrunz
upload.run?   s\   € Ø× Ñ ×+Ò+ð/ð ô ' sÓ+Ð+Ø,0×,=Ñ,=×,HÑ,Hò 	;Ñ(ˆG�Y Ø×Ñ˜W i°Õ:ñ	;r!   c                 óÖ  — t        | j                  «      \  }}}}}}	|s|s|	rt        d| j                  z  «      ‚|dvrt        d|z   «      ‚| j                  r:ddd|g}
| j                  rd| j                  g|
dd t        |
| j                  ¬	«       t        |d
«      }	 |j                  «       }|j                  «        | j                  j                  }i dd“dd“d|j                  «       “d|j                  «       “dt        j                  j!                  |«      |f“d|“d|“dd“d|j#                  «       “d|j%                  «       “d|j'                  «       “d|j)                  «       “d|j+                  «       “d|j-                  «       “d|j/                  «       “d|j1                  «       “d|j3                  «       “|j5                  «       |j7                  «       |j9                  «       |j;                  «       dœ¥}d |d!<   t<        j?                  «       D ]"  \  }}|€Œ		  ||«      jA                  «       ||<   Œ$ | j                  rMt        |d"z   d
«      5 }t        j                  j!                  |«      d"z   |j                  «       f|d#<   d d d «       | jD                  d$z   | jF                  z   jI                  d%«      }d&tK        |«      jM                  d%«      z   }d'}d(|jI                  d%«      z   }|d)z   }tO        jP                  «       }|j?                  «       D ]³  \  }}d*|z  }tS        |tT        «      s|g}|D ]‘  }tW        |«      tX        u r|d+|d,   z  z  }|d-   }nt[        |«      jI                  d.«      }|j]                  |«       |j]                  |jI                  d.«      «       |j]                  d/«       |j]                  |«       Œ“ Œµ |j]                  |«       |j_                  «       }d0ja                  || j                  «      }| jc                  |td        jf                  «       d1|z  t[        ti        |«      «      |d2œ}tk        | j                  ||¬3«      }	 tm        |«      }|jo                  «       }|jp                  }|d4k(  rƒ| jc                  d5ja                  ||«      td        jf                  «       | jz                  rF| j}                  «      }!d6j                  d7|!d7f«      }| jc                  |td        jf                  «       y y d8ja                  ||«      }| jc                  |td        jx                  «       t�        |«      ‚# |j                  «        w xY w# tB        $ r Y �ŒYw xY w# 1 sw Y   �ŒéxY w# tr        $ r#} | jt                  }| jp                  }Y d } ~ �Œd } ~ wtv        $ r/} | jc                  t[        | «      td        jx                  «       ‚ d } ~ ww xY w)9NzIncompatible url %s)ÚhttpÚhttpszunsupported schema Úgpgz--detach-signz-az--local-userr   )Údry_runÚrbz:actionÚfile_uploadÚprotocol_versionÚ1ÚnameÚversionÚcontentÚfiletyper.   Úmetadata_versionz1.0ÚsummaryÚ	home_pageÚauthorÚauthor_emailÚlicenseÚdescriptionÚkeywordsÚplatformÚclassifiers)Údownload_urlÚprovidesÚrequiresÚ	obsoletesr   Úcommentz.ascÚgpg_signatureú:ÚasciizBasic z3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s   
--s   --
z+
Content-Disposition: form-data; name="%s"z; filename="%s"r   é   zutf-8s   

zSubmitting {} to {}z multipart/form-data; boundary=%s)zContent-typezContent-lengthÚAuthorization)ÚdataÚheaderséÈ   zServer response ({}): {}ú
zK---------------------------------------------------------------------------zUpload failed ({}): {})Ar   r#   ÚAssertionErrorr   r   r   r5   ÚopenÚreadÚcloser'   ÚmetadataÚget_nameÚget_versionÚosÚpathÚbasenameÚget_descriptionÚget_urlÚget_contactÚget_contact_emailÚget_licenceÚget_long_descriptionÚget_keywordsÚget_platformsÚget_classifiersÚget_download_urlÚget_providesÚget_requiresÚget_obsoletesÚ_FILE_CONTENT_DIGESTSÚitemsÚ	hexdigestÚ
ValueErrorr   r   Úencoder   ÚdecodeÚioÚBytesIOÚ
isinstanceÚlistÚtypeÚtupleÚstrÚwriteÚgetvalueÚformatÚannounceÚloggingÚINFOÚlenr   r   Úgetcoder,   r   ÚcodeÚOSErrorÚERRORr   Ú_read_pypi_responseÚjoinr	   )"r   r-   r.   r/   ÚschemaÚnetlocÚurlÚparamsÚqueryÚ	fragmentsÚgpg_argsÚfr<   ÚmetarR   Údigest_nameÚdigest_consÚ	user_passÚauthÚboundaryÚsep_boundaryÚend_boundaryÚbodyÚkeyÚvalueÚtitler,   rS   ÚrequestÚresultÚstatusÚreasonÚeÚtexts"                                     r    r+   zupload.upload_fileI   s½  € ä8@ÀÇÁÓ8QÑ5ˆ�˜˜V U¨IÙ‘U™iÜ Ð!6¸¿¹Ñ!HÓIÐIàÐ*Ñ*Ü Ð!6¸Ñ!?Ó@Ð@ð �9Š9Ø˜°°hÐ?ˆHØ�}Š}Ø!/°·±Ð ?�˜˜1�Ü�( D§L¡LÕ1ô �˜4Ó ˆð	Ø—f‘f“hˆGà�G‰GŒIà× Ñ ×)Ñ)ˆð
à�}ð
ð  ð
ð
 �D—M‘M“Oð
ð �t×'Ñ'Ó)ð
ð œŸ™×(Ñ(¨Ó2°GÐ<ð
ð ˜ð
ð ˜ð
ð  ð
ð �t×+Ñ+Ó-ð
ð ˜Ÿ™›ð
ð �d×&Ñ&Ó(ð
ð  ˜D×2Ñ2Ó4ð!
ð" �t×'Ñ'Ó)ð#
ð$ ˜4×4Ñ4Ó6ð%
ð& ˜×)Ñ)Ó+ð'
ð( ˜×*Ñ*Ó,ð)
ð* ˜4×/Ñ/Ó1ð+
ð, !×1Ñ1Ó3à×)Ñ)Ó+Ø×)Ñ)Ó+Ø×+Ñ+Ó-ò5
ˆð: ˆˆY‰ô )>×(CÑ(CÓ(Eò 	Ñ$ˆK˜ØÐ"ØðÙ$/°Ó$8×$BÑ$BÓ$D��[Ò!ð		ð �9Š9Ü�h Ñ'¨Ó.ð X°!Ü)+¯©×)9Ñ)9¸(Ó)CÀfÑ)LÈaÏfÉfËhÐ(W��_Ñ%÷Xð —]‘] SÑ(¨4¯=©=Ñ8×@Ñ@ÀÓIˆ	ð Ô,¨YÓ7×>Ñ>¸wÓGÑGˆð IˆØ  8§?¡?°7Ó#;Ñ;ˆØ# iÑ/ˆÜ�z‰z‹|ˆØŸ*™*›,ò 	"‰JˆC�ØCÀcÑIˆEä˜e¤TÔ*Ø˜�Øò 	"�Ü˜“;¤%Ñ'ØÐ.°°q±Ñ9Ñ9�EØ! !™H‘Eä ›J×-Ñ-¨gÓ6�EØ—
‘
˜<Ô(Ø—
‘
˜5Ÿ<™<¨Ó0Ô1Ø—
‘
˜;Ô'Ø—
‘
˜5Õ!ñ	"ð	"ð 	�
‰
�<Ô Ø�}‰}‹ˆà#×*Ñ*¨8°T·_±_ÓEˆØ�‰�cœ7Ÿ<™<Ô(ð ?ÀÑIÜ!¤# d£)›nØ!ñ
ˆô ˜$Ÿ/™/°¸gÔFˆð		Ü˜WÓ%ˆFØ—^‘^Ó%ˆFØ—Z‘ZˆFð �SŠ=Ø�M‰MØ*×1Ñ1°&¸&ÓAÄ7Ç<Á<ôð ×!Ò!Ø×/Ñ/°Ó7�Ø—i‘i ¨4°Ð :Ó;�Ø—‘˜c¤7§<¡<Õ0ð "ð
 +×1Ñ1°&¸&ÓAˆCØ�M‰M˜#œwŸ}™}Ô-Ü  Ó%Ð%øð_ �G‰G�IûôP ò âðú÷
Xñ Xûô` ò 	Ø—V‘VˆFØ—U‘UŽFûÜò 	Ø�M‰Mœ#˜a›&¤'§-¡-Ô0Øûð	úsN   Â U È&U)É6U9Ñ('V ÕU&Õ)	U6Õ5U6Õ9VÖ	W(ÖV-Ö-W(Ö9*W#×#W(N)Ú__name__Ú
__module__Ú__qualname__rD   r   Úuser_optionsÚboolean_optionsr   r%   r0   r+   © r!   r    r   r      sK   „ Ø1€Kà ×-Ñ-Ø7Ø=ð1ñ €Lð
 $×3Ñ3°v°hÑ>€Oòò7ò ;óE&r!   r   )Ú__doc__r]   rs   Úhashlibr~   Úbase64r   Úurllib.requestr   r   r   Úurllib.parser   Úerrorsr	   r
   Úcorer   r   Úgetattrrm   r   r¦   r!   r    ú<module>r¯      si   ðñó 
Û 	Û Û Ý %ß 6Ñ 6Ý !ß 9Ý  Ý ñ ˜' 5¨$Ó/Ù˜W h°Ó5Ù  ¨)°TÓ:ñÐ ôq&ˆ]õ q&r!   