§
    ZQdÅ  ã                   óô   — d 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	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e¦  «        ZdS )zm
distutils.command.upload

Implements the Distutils 'upload' subcommand (upload package to a package
index).
é    N)Ústandard_b64encode)Ú	HTTPError)ÚurlopenÚRequest)Úurlparse)ÚDistutilsErrorÚDistutilsOptionError)ÚPyPIRCCommand)Úspawn)ÚlogÚmd5Úsha256Úblake2b)Ú
md5_digestÚsha256_digestÚblake2_256_digestc                   óX   — 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
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                 ót   — t          j        | ¦  «         d| _        d| _        d| _        d| _        d | _        d S )NÚ r   F)r
   Úinitialize_optionsÚusernameÚpasswordÚshow_responser   Úidentity)Úselfs    ú//usr/lib/python3.11/distutils/command/upload.pyr   zupload.initialize_options*   s;   € ÝÔ(¨Ñ.Ô.Ð.ØˆŒØˆŒØˆÔØˆŒ	ØˆŒˆˆó    c                 óT  — t          j        | ¦  «         | j        r| j        st	          d¦  «        ‚|                      ¦   «         }|i k    r4|d         | _        |d         | _        |d         | _        |d         | _	        | j        s| 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   Úconfigs     r    r%   zupload.finalize_options2   sÄ   € ÝÔ& tÑ,Ô,Ð,ØŒ=ð 	 ¤ð 	Ý&Ø@ñô ð ð ×"Ò"Ñ$Ô$ˆØ�RŠ<ˆ<Ø" :Ô.ˆDŒMØ" :Ô.ˆDŒMØ$ \Ô2ˆDŒOØ œˆDŒJð Œ}ð 	7 Ô!2Ô!;ð 	7Ø Ô-Ô6ˆDŒMˆMˆMð	7ð 	7ð 	7ð 	7r!   c                 ó”   — | j         j        sd}t          |¦  «        ‚| j         j        D ]\  }}}|                      |||¦  «         Œ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Úfilenames        r    Úrunz
upload.runD   sf   € ØÔ Ô+ð 	,ð2ˆCå& sÑ+Ô+Ð+Ø,0Ô,=Ô,Hð 	;ð 	;Ñ(ˆG�Y Ø×Ò˜W i°Ñ:Ô:Ð:Ð:ð	;ð 	;r!   c                 ó®  — t          | j        ¦  «        \  }}}}}}	|s|s|	rt          d| j        z  ¦  «        ‚|dvrt          d|z   ¦  «        ‚| j        r1ddd|g}
| j        rd| j        g|
dd…<   t          |
| j        ¬	¦  «         t          |d
¦  «        }	 |                     ¦   «         }| 	                    ¦   «          n# | 	                    ¦   «          w xY 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 ]9\  }}|€Œ	  ||¦  «                              ¦   «         ||<   Œ*# tB          $ r Y Œ6w xY w| j        rdt          |d"z   d
¦  «        5 }t          j                             |¦  «        d"z   |                     ¦   «         f|d#<   d d d ¦  «         n# 1 swxY w Y   | j"        d$z   | j#        z    $                    d%¦  «        }d&tK          |¦  «         &                    d%¦  «        z   }d'}d(| $                    d%¦  «        z   }|d)z   }tO          j(        ¦   «         }|                     ¦   «         D ]Ý\  }}d*|z  }tS          |tT          ¦  «        s|g}|D ]¸}tW          |¦  «        tX          u r|d+|d,         z  z  }|d-         }n"t[          |¦  «         $                    d.¦  «        }| .                    |¦  «         | .                    | $                    d.¦  «        ¦  «         | .                    d/¦  «         | .                    |¦  «         Œ¹ŒÞ| .                    |¦  «         | /                    ¦   «         }d0|›d1| j        ›�}|  0                    |tb          j2        ¦  «         d2|z  t[          tg          |¦  «        ¦  «        |d3œ}ti          | j        ||¬4¦  «        }	 tk          |¦  «        }| 6                    ¦   «         }|j7        }n`# tp          $ r} | j9        }| j7        }Y d } ~ nCd } ~ wtt          $ r3} |  0                    t[          | ¦  «        tb          j;        ¦  «         ‚ d } ~ ww xY w|d5k    r~|  0                    d6|›d7|›�tb          j2        ¦  «         | j<        rO|  =                    |¦  «        }!d8 >                    d9|!d9f¦  «        }|  0                    |tb          j2        ¦  «         d S d S d:|›d7|›�}|  0                    |tb          j;        ¦  «         t          |¦  «        ‚);Nz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 z to z multipart/form-data; boundary=%s)zContent-typezContent-lengthÚAuthorization)ÚdataÚheaderséÈ   zServer response (z): ú
zK---------------------------------------------------------------------------zUpload failed ()@r   r#   ÚAssertionErrorr   r   r   r6   Ú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Úfr=   ÚmetarS   Údigest_nameÚdigest_consÚ	user_passÚauthÚboundaryÚsep_boundaryÚend_boundaryÚbodyÚkeyÚvalueÚtitler,   rT   ÚrequestÚresultÚstatusÚreasonÚeÚtexts"                                     r    r+   zupload.upload_fileL   sF  € õ �T”_Ñ%Ô%ñ 	6ˆ�˜˜V U¨Iàð 	J�Uð 	J˜ið 	JÝ Ð!6¸¼Ñ!HÑIÔIÐIàÐ*Ð*Ð*Ý Ð!6¸Ñ!?Ñ@Ô@Ð@ð Œ9ð 	(Ø˜°°hÐ?ˆHØŒ}ð @Ø!/°´Ð ?�˜˜1˜‘Ý�(Øœ,ð(ñ (ô (ð (õ
 �˜$ÑÔˆð	Ø—f’f‘h”hˆGà�GŠG‰IŒIˆIˆIøˆA�GŠG‰IŒIˆIˆIøøøàÔ Ô)ˆðà�}ðð  ðð �D—M’M‘O”Oðð �t×'Ò'Ñ)Ô)ðð �œ×(Ò(¨Ñ2Ô2°7Ð;ðð ˜ðð ˜ðð  ðð  �t×+Ò+Ñ-Ô-ð!ð" ˜Ÿš™œð#ð$ �d×&Ò&Ñ(Ô(ð%ð& ˜D×2Ò2Ñ4Ô4ð'ð( �t×'Ò'Ñ)Ô)ð)ð* ˜4×4Ò4Ñ6Ô6ð+ð, ˜×)Ò)Ñ+Ô+ð-ð. ˜×*Ò*Ñ,Ô,ð/ð0 ˜4×/Ò/Ñ1Ô1ð1ð2 !×1Ò1Ñ3Ô3à×)Ò)Ñ+Ô+Ø×)Ò)Ñ+Ô+Ø×+Ò+Ñ-Ô-ð;ð ð ˆð@ ˆˆY‰õ )>×(CÒ(CÑ(EÔ(Eð 	ð 	Ñ$ˆK˜ØÐ"ØðØ$/ K°Ñ$8Ô$8×$BÒ$BÑ$DÔ$D��[Ñ!Ð!øÝð ð ð à�ðøøøð Œ9ð 	3Ý�h Ñ'¨Ñ.Ô.ð 3°!Ý)+¬×)9Ò)9¸(Ñ)CÔ)CÀfÑ)LØ)*¯ª©¬ð)3��_Ñ%ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3ð
 ”] SÑ(¨4¬=Ñ8×@Ò@ÀÑIÔIˆ	ð Õ,¨YÑ7Ô7×>Ò>¸wÑGÔGÑGˆð IˆØ  8§?¢?°7Ñ#;Ô#;Ñ;ˆØ# iÑ/ˆÝŒz‰|Œ|ˆØŸ*š*™,œ,ð 	"ð 	"‰JˆC�ØCÀcÑIˆEå˜e¥TÑ*Ô*ð  Ø˜�Øð 	"ð 	"�Ý˜‘;”;¥%Ð'Ð'ØÐ.°°q´Ñ9Ñ9�EØ! !œH�E�Eå ™JœJ×-Ò-¨gÑ6Ô6�EØ—
’
˜<Ñ(Ô(Ð(Ø—
’
˜5Ÿ<š<¨Ñ0Ô0Ñ1Ô1Ð1Ø—
’
˜;Ñ'Ô'Ð'Ø—
’
˜5Ñ!Ô!Ð!Ð!ð	"ð 	�
Š
�<Ñ Ô Ð Ø�}Š}‰Œˆˆà'/ x x°´°ÐAˆØ�Š�c�3œ8Ñ$Ô$Ð$ð ?ÀÑIÝ!¥# d¡)¤)™nœnØ!ð
ð 
ˆõ ˜$œ/°Ø")ð+ñ +ô +ˆð		Ý˜WÑ%Ô%ˆFØ—^’^Ñ%Ô%ˆFØ”ZˆFˆFøÝð 	ð 	ð 	Ø”VˆFØ”UˆFˆFˆFˆFˆFˆFøøøøÝð 	ð 	ð 	Ø�MŠM�#˜a™&œ&¥#¤)Ñ,Ô,Ð,Øøøøøð	øøøð �SŠ=ˆ=Ø�MŠMˆM¸¸¸ÀÀÐGÝœ(ñ$ô $ð $àÔ!ð -Ø×/Ò/°Ñ7Ô7�Ø—i’i ¨4°Ð :Ñ;Ô;�Ø—’˜c¥3¤8Ñ,Ô,Ð,Ð,Ð,ð-ð -ð ð /5¨f¨f°f°fÐ=ˆCØ�MŠM˜#�sœyÑ)Ô)Ð)Ý  Ñ%Ô%Ð%sT   ÂC ÃCÉ6 JÊ
J$Ê#J$Ë:LÌLÌLÔ*T< Ô<
VÕUÕVÕ&.VÖVN)Ú__name__Ú
__module__Ú__qualname__rE   r
   Úuser_optionsÚboolean_optionsr   r%   r0   r+   © r!   r    r   r      s…   € € € € € à1€Kà Ô-ð	+à=ð1
ñ 
€Lð $Ô3°v°hÑ>€Oðð ð ð7ð 7ð 7ð$;ð ;ð ;ðK&ð K&ð K&ð K&ð K&r!   r   )Ú__doc__r^   rt   ÚhashlibÚbase64r   Úurllib.errorr   Úurllib.requestr   r   Úurllib.parser   Údistutils.errorsr   r	   Údistutils.corer
   Údistutils.spawnr   Ú	distutilsr   Úgetattrrn   r   r¥   r!   r    ú<module>r±      sH  ððð ð 
€	€	€	Ø 	€	€	€	Ø €€€Ø %Ð %Ð %Ð %Ð %Ð %Ø "Ð "Ð "Ð "Ð "Ð "Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø !Ð !Ð !Ð !Ð !Ð !Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ (Ð (Ð (Ð (Ð (Ð (Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð ð �'˜' 5¨$Ñ/Ô/Ø�W˜W h°Ñ5Ô5Ø ˜ ¨)°TÑ:Ô:ðð Ð ðy&ð y&ð y&ð y&ð y&ˆ]ñ y&ô y&ð y&ð y&ð y&r!   