\ddZddlZddlZddlZddlmZddlmZddlm Z m Z ddl m Z ddl mZmZddlmZdd lmZdd lmZeed deed deed ddZGddeZdS)zm distutils.command.upload Implements the Distutils 'upload' subcommand (upload package to a package index). N)standard_b64encode) HTTPError)urlopenRequest)urlparse)DistutilsErrorDistutilsOptionError) PyPIRCCommand)spawn)logmd5sha256blake2b) md5_digest sha256_digestblake2_256_digestcXeZdZdZejddgzZejdgzZdZdZdZ dZ d S) uploadzupload binary package to PyPI)signszsign files to upload using gpg)z identity=izGPG identity used to sign filesrcttj|d|_d|_d|_d|_d|_dS)NrF)r initialize_optionsusernamepassword show_responseridentity)selfs )..\python\lib\distutils\command\upload.pyrzupload.initialize_options*s;(...    cTtj||jr|jst d|}|ikr4|d|_|d|_|d|_|d|_ |js|j jr|j j|_dSdSdS)Nz.Must use --sign for --identity to have meaningrr repositoryrealm) r finalize_optionsrrr _read_pypircrrr#r$ distribution)rconfigs r r%zupload.finalize_options2s&t,,, =  &@ ""$$ R<<":.DM":.DM$\2DODJ} 7!2!; 7 -6DMMM 7 7 7 7r!c|jjsd}t||jjD]\}}}||||dS)NzHMust create and upload files in one command (e.g. setup.py sdist upload))r' dist_filesr upload_file)rmsgcommand pyversionfilenames r runz upload.runDsf + ,2C&s++ +,0,=,H ; ; (GY   Wi : : : : ; ;r!c t|j\}}}}}} |s|s| rtd|jz|dvrtd|z|jr1ddd|g} |jrd|jg| dd<t | |j t|d } | } | n#| wxYw|j j } id d d dd| d| dtj|| fd|d|ddd| d| d| d| d| d| d| d| d| | | | | d}d |d!<t<D]9\}}| ||  ||<*#tB$rY6wxYw|jrdt|d"zd 5} tj|d"z| f|d#<dddn #1swxYwY|j"d$z|j#z$d%}d&tK|&d%z}d'}d(|$d%z}|d)z}tOj(}|D]\}}d*|z}tS|tTs|g}|D]}tW|tXur|d+|d,zz }|d-}n"t[|$d.}|.||.|$d.|.d/|.||.||/}d0|d1|j}|0|tbj2d2|zt[tg||d3}ti|j||4} tk|}|6}|j7}n`#tp$r} | j9}| j7}Yd} ~ nCd} ~ wtt$r3} |0t[| tbj;d} ~ wwxYw|d5kr~|0d6|d7|tbj2|j<rO|=|}!d8>d9|!d9f}|0|tbj2dSdSd:|d7|}|0|tbj;t|);NzIncompatible url %s)httphttpszunsupported schema gpgz --detach-signz-az --local-user)dry_runrbz:action file_uploadprotocol_version1nameversioncontentfiletyper.metadata_versionz1.0summary home_pageauthor author_emaillicense descriptionkeywordsplatform classifiers) download_urlprovidesrequires obsoletesrcommentz.asc gpg_signature:asciizBasic z3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s --s-- z+ Content-Disposition: form-data; name="%s"z; filename="%s"rzutf-8s z Submitting z to z multipart/form-data; boundary=%s)z Content-typezContent-length Authorization)dataheaderszServer response (z):  zK---------------------------------------------------------------------------zUpload failed ()@rr#AssertionErrorrrr r6openreadcloser'metadataget_name get_versionospathbasenameget_descriptionget_url get_contactget_contact_email get_licenceget_long_description get_keywords get_platformsget_classifiersget_download_url get_provides get_requires get_obsoletes_FILE_CONTENT_DIGESTSitems hexdigest ValueErrorrrencoderdecodeioBytesIO isinstancelisttypetuplestrwritegetvalueannouncer INFOlenrrgetcoder,rcodeOSErrorERRORr_read_pypi_responsejoinr)"rr-r.r/schemanetlocurlparamsquery fragmentsgpg_argsfr=metarS digest_name digest_cons user_passauthboundary sep_boundary end_boundarybodykeyvaluetitler,rTrequestresultstatusreasonetexts" r r+zupload.upload_fileLsF T_ % % 6VUI  JU Ji J !6!HII I * * * !6!?@@ @ 9 (h?H} @!/ ?1 (, ( ( ( ( $   ffhhG GGIIIIAGGIIII ) }  DMMOO  t'')) ((227;    t++--!" #$ d&&((%& D2244'( t'')))* 44466+, ))++-. **,,/0 4//1112!1133))++))++++--;@Y)>(C(C(E(E   $K" $/K$8$8$B$B$D$D[!!     9 3h'.. 3!)+)9)9()C)Cf)L)*)3_% 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ]S(4=8@@II ,Y77>>wGGGI 8??7#;#;; #i/ z||**,, " "JCCcIEeT**  " ";;%''.q99E!!HEEJJ--g66E <((( 5<<00111 ;''' 5!!!! " <   }}'/xxA c38$$$?I!#d))nn!   $/")+++ W%%F^^%%FZFF   VFUFFFFFF    MM#a&&#) , , ,   S== MMMG( $ $ $! -//77ii4 :;; c38,,,,, - - /5ffff=C MM#sy ) ) ) %% %sTCC6 J J$#J$:LL L *T<< VU V&.VVN) __name__ __module__ __qualname__rEr user_optionsboolean_optionsrr%r0r+r!r rrs1K - +=1  L $3vh>O777$;;;K&K&K&K&K&r!r)__doc__r^rthashlibbase64r urllib.errorrurllib.requestrr urllib.parserdistutils.errorsrr distutils.corer distutils.spawnr distutilsr getattrrnrrr!r rsH %%%%%%""""""++++++++!!!!!!AAAAAAAA((((((!!!!!! ''5$//WWh55 )T::y&y&y&y&y&]y&y&y&y&y&r!