1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
U
G=®d­ã@s´dZddlZddlZddlZddlmZddlmZmZm    Z    ddl
m Z ddl m Z mZddlmZddlmZdd    lmZeed
dƒeed dƒeed dƒd œZGdd„deƒZdS)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)Z
md5_digestZ sha256_digestZblake2_256_digestc@sJeZdZdZejddgZejdgZdd„Zdd„Zd    d
„Z    d d „Z
d S)Úuploadzupload binary package to PyPI)ÚsignÚszsign files to upload using gpg)z    identity=ÚizGPG identity used to sign filesrcCs,t |¡d|_d|_d|_d|_d|_dS)NÚrF)r    Úinitialize_optionsÚusernameÚpasswordÚ show_responserÚidentity)Úself©rú[D:\z\workplace\VsCode\pyvenv\venv\Lib\site-packages\setuptools/_distutils/command/upload.pyr)s 
zupload.initialize_optionscCsrt |¡|jr|jstdƒ‚| ¡}|ikrV|d|_|d|_|d|_|d|_    |jsn|j
jrn|j
j|_dS)Nz.Must use --sign for --identity to have meaningrrÚ
repositoryÚrealm) r    Úfinalize_optionsrrrÚ _read_pypircrrrrÚ distribution)rÚconfigrrrr1s
 ÿ
 
 
 
zupload.finalize_optionscCs:|jjsd}t|ƒ‚|jjD]\}}}| |||¡qdS)NzHMust create and upload files in one command (e.g. setup.py sdist upload))r Ú
dist_filesrÚ upload_file)rÚmsgÚcommandÚ    pyversionÚfilenamerrrÚrunCs
z
upload.runc"Csêt|jƒ\}}}}}}    |s"|s"|    r0td|jƒ‚|dkrDtd|ƒ‚|jr|ddd|g}
|jrnd|jg|
dd…<t|
|jd    t|d
ƒ} z |      ¡} W5|  ¡X|j
j } d d |   ¡|   ¡tj |¡| f||d |  ¡|  ¡|  ¡|  ¡|  ¡|  ¡|  ¡|  ¡|  ¡|  ¡|  ¡|  ¡|  ¡dœ}d|d<t ¡D]D\}}|dkrDq.z|| ƒ  ¡||<Wnt!k
rnYnXq.|jr²t|dd
ƒ"} tj |¡d|      ¡f|d<W5QRX|j"d|j# $d¡}dt%|ƒ &d¡}d}d| $d¡}|d}t' (¡}| ¡D]”\}}d|}t)|t*ƒs&|g}|D]j}t+|ƒt,krV|d|d7}|d}nt-|ƒ $d¡}| .|¡| .| $d¡¡| .d¡| .|¡q*q| .|¡| /¡}d||jf}| 0|t1j2¡d |t-t3|ƒƒ|d!œ}t4|j||d"}zt5|ƒ}| 6¡}|j7}Wnft8k
r:} z| j9}| j7}W5d} ~ XYn8t:k
rp} z| 0t-| ƒt1j;¡‚W5d} ~ XYnX|d#krÄ| 0d$||ft1j2¡|j<ræ| =|¡}!d% >d&|!d&f¡}| 0|t1j2¡n"d'||f}| 0|t1j;¡t?|ƒ‚dS)(NzIncompatible url %s)ÚhttpÚhttpszunsupported schema Zgpgz --detach-signz-az --local-useré)Údry_runÚrbZ file_uploadÚ1z1.0)z:actionZprotocol_versionÚnameÚversionÚcontentZfiletyper&Úmetadata_versionÚsummaryZ    home_pageÚauthorÚ author_emailÚlicenseÚ descriptionÚkeywordsÚplatformÚ classifiersÚ download_urlÚprovidesÚrequiresÚ    obsoletesrÚcommentz.ascZ gpg_signatureú:ÚasciizBasic z3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s
--s--
z+
Content-Disposition: form-data; name="%s"z; filename="%s"rézutf-8s
 
zSubmitting %s to %sz multipart/form-data; boundary=%s)z Content-typezContent-lengthÚ Authorization)ÚdataÚheaderséÈzServer response (%s): %sÚ
zK---------------------------------------------------------------------------zUpload failed (%s): %s)@rrÚAssertionErrorrrr
r,ÚopenÚcloseÚreadr Ú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Ú
ValueErrorrrÚencoderÚdecodeÚioÚBytesIOÚ
isinstanceÚlistÚtypeÚtupleÚstrÚwriteÚgetvalueÚannouncer ÚINFOÚlenrrÚgetcoder$rÚcodeÚOSErrorÚERRORrÚ_read_pypi_responseÚjoinr)"rr%r&r'ZschemaÚnetlocÚurlÚparamsÚqueryÚ    fragmentsZgpg_argsÚfr1ÚmetarDZ digest_nameÚ digest_consÚ    user_passÚauthÚboundaryZ sep_boundaryZ end_boundaryÚbodyÚkeyÚvalueÚtitler$rEÚrequestÚresultÚstatusÚreasonÚeÚtextrrrr#KsÐÿ   ÿ
 
ã 
 
ÿ 
 
 
 
 
ýÿ
 
ÿ
 zupload.upload_fileN) Ú__name__Ú
__module__Ú __qualname__r7r    Ú user_optionsÚboolean_optionsrrr(r#rrrrrsý r)Ú__doc__rOreÚhashlibÚbase64rÚurllib.requestrrrÚ urllib.parserÚdistutils.errorsrrÚdistutils.corer    Údistutils.spawnr
Ú    distutilsr Úgetattrr_rrrrrÚ<module>s     
 
 
ý