o
    Ëý°j­  ã                   @   s´   d 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 dd	lmZ eed
dƒeeddƒeeddƒdœZG dd„ deƒZdS )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)ÚlogÚmd5Úsha256Úblake2b)Ú
md5_digestÚsha256_digestÚblake2_256_digestc                   @   sJ   e Zd ZdZejddg Zejdg Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
dS )Úuploadzupload binary package to PyPI)ÚsignÚszsign files to upload using gpg)z	identity=ÚizGPG identity used to sign filesr   c                 C   s,   t  | ¡ d| _d| _d| _d| _d | _d S )NÚ r   F)r	   Úinitialize_optionsÚusernameÚpasswordÚshow_responser   Úidentity)Úself© r   ú—/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/setuptools/_distutils/command/upload.pyr   )   s   

zupload.initialize_optionsc                 C   sz   t  | ¡ | jr| jstdƒ‚|  ¡ }|i kr+|d | _|d | _|d | _|d | _	| js9| j
jr;| j
j| _d S d S d S )Nz.Must use --sign for --identity to have meaningr   r   Ú
repositoryÚrealm)r	   Úfinalize_optionsr   r   r   Ú_read_pypircr   r   r   r    Údistribution)r   Úconfigr   r   r   r!   1   s   
ÿ



ÿzupload.finalize_optionsc                 C   s:   | j js
d}t|ƒ‚| j jD ]\}}}|  |||¡ qd S )NzHMust create and upload files in one command (e.g. setup.py sdist upload))r#   Ú
dist_filesr   Úupload_file)r   ÚmsgÚcommandÚ	pyversionÚfilenamer   r   r   ÚrunC   s   ÿz
upload.runc           "   
   C   s>  t | jƒ\}}}}}}	|s|s|	rtd| j ƒ‚|dvr"td| ƒ‚| jr>ddd|g}
| jr7d| jg|
dd…< t|
| jd	� t|d
ƒ}z
| ¡ }W | 	¡  n| 	¡  w | j
j}i dd“dd“d| ¡ “d| ¡ “dtj |¡|f“d|“d|“dd“d| ¡ “d| ¡ “d| ¡ “d| ¡ “d| ¡ “d| ¡ “d| ¡ “d| ¡ “d| ¡ “| ¡ | ¡ | ¡ | ¡ dœ¥}d |d!< t ¡ D ]\}}|d u rÈq¿z
||ƒ  ¡ ||< W q¿ t!yÛ   Y q¿w | j�rt|d" d
ƒ�}tj |¡d" | ¡ f|d#< W d   ƒ n	1 �sw   Y  | j"d$ | j#  $d%¡}d&t%|ƒ &d%¡ }d'}d(| $d%¡ }|d) }t' (¡ }| ¡ D ]J\}}d*| }t)|t*ƒ�s@|g}|D ]5}t+|ƒt,u �rX|d+|d,  7 }|d- }nt-|ƒ $d.¡}| .|¡ | .| $d.¡¡ | .d/¡ | .|¡ �qB�q/| .|¡ | /¡ }d0|| jf }|  0|t1j2¡ d1| t-t3|ƒƒ|d2œ}t4| j||d3�}zt5|ƒ}| 6¡ }|j7}W n/ t8�yË }  z| j9}| j7}W Y d } ~ nd } ~ w t:�yá }  z
|  0t-| ƒt1j;¡ ‚ d } ~ ww |d4k�r|  0d5||f t1j2¡ | j<�r|  =|¡}!d6 >d7|!d7f¡}|  0|t1j2¡ d S d S d8||f }|  0|t1j;¡ t?|ƒ‚)9NzIncompatible url %s)ÚhttpÚhttpszunsupported schema Úgpgz--detach-signz-az--local-useré   )Ú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 %s to %sz multipart/form-data; boundary=%s)zContent-typezContent-lengthÚAuthorization)ÚdataÚheaderséÈ   zServer response (%s): %sÚ
zK---------------------------------------------------------------------------zUpload failed (%s): %s)@r   r   ÚAssertionErrorr   r   r
   r0   Ú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Úannouncer   ÚINFOÚlenr   r   Úgetcoder'   r   ÚcodeÚOSErrorÚERRORr   Ú_read_pypi_responseÚjoinr   )"r   r(   r)   r*   ÚschemaÚnetlocÚurlÚparamsÚqueryÚ	fragmentsÚgpg_argsÚfr7   ÚmetarM   Údigest_nameÚdigest_consÚ	user_passÚauthÚboundaryÚsep_boundaryÚend_boundaryÚbodyÚkeyÚvalueÚtitler'   rN   ÚrequestÚresultÚstatusÚreasonÚeÚtextr   r   r   r&   K   s  ÿÿ

þýúù
öõôñðïîíìëêéèã þ
ÿÿ


÷


ýÿ
€€þ
ÿ
ýzupload.upload_fileN)Ú__name__Ú
__module__Ú__qualname__r?   r	   Úuser_optionsÚboolean_optionsr   r!   r+   r&   r   r   r   r   r      s    ýr   )Ú__doc__rX   rn   ÚhashlibÚbase64r   Úurllib.requestr   r   r   Úurllib.parser   Údistutils.errorsr   r   Údistutils.corer	   Údistutils.spawnr
   Ú	distutilsr   Úgetattrrh   r   r   r   r   r   Ú<module>   s     


ý