U Qab@sddlZddlZddlZddlZddlmZddlmZddlm Z ddl m Z ddl mZddlmZmZddlmZdd lmZGd d d e j Z dS) N)standard_b64encode)log)upload)spawn)DistutilsError)urlopenRequest) HTTPError)urlparsec@s8eZdZdZddZddZddZdd Zd d Zd S) rza Override default upload behavior to obtain password in a variety of different ways. c Cs&ztj|W5|dtjXdS)NzjWARNING: Uploading via this command is deprecated, use twine to upload instead (https://pypi.org/p/twine/))announcerZWARNorigrrunselfr=/usr/lib/python3.8/site-packages/setuptools/command/upload.pyr s z upload.runcCs8tj||jpt|_|jp0|p0||_dSN) r rfinalize_optionsusernamegetpassZgetuserpassword_load_password_from_keyring_prompt_for_passwordrrrrr"s zupload.finalize_optionsc Cst|j\}}}}}} |s"|s"| r0td|j|dkrDtd||jr|ddd|g} |jrnd|jg| dd<t| |jd t|d } | } W5QRX|j j } d d | | t j|| f||t| t| | | | | | | | | | | | | | !d }d|d<|jrdt j|dt|dd f|d<|j"d|j#$d}dt%|&d}d}d|$d}|d}t'(}|)D]\}}d|}t*|t+s|g}|D]j}t,|t-kr|d|d7}|d}nt|$d}|.||.|$d|.d|.|qܐq|.||/}d||jf}|0|t1j2d|tt3||d }t4|j||d!}zt5|}|6}|j7}Wnft8k r}z|j9}|j7}W5d}~XYn8t:k r"}z|0t|t1j;W5d}~XYnX|d"kr|0d#||ft1j2|j<rt=|d$d%d&|}|dk rd'>d(|d(f}|0|t1j2n"d)||f}|0|t1j;t?|dS)*NzIncompatible url %s)ZhttpZhttpszunsupported schema Zgpgz --detach-signz-az --local-user)dry_runrbZ file_upload1)z:actionZprotocol_versionnameversioncontentZfiletype pyversionZ md5_digestZmetadata_versionZsummaryZ home_pageZauthorZ author_emaillicense descriptionkeywordsplatformZ classifiersZ download_urlZprovidesZrequiresZ obsoletesZcommentz.ascZ gpg_signature:asciizBasic z3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s --s-- z+ Content-Disposition: form-data; name="%s"z; filename="%s"rzutf-8s zSubmitting %s to %sz multipart/form-data; boundary=%s)z Content-typezContent-lengthZ Authorization)dataheaderszServer response (%s): %sZ_read_pypi_responsecSsdSrr)xrrrz$upload.upload_file.. zK---------------------------------------------------------------------------zUpload failed (%s): %s)@r repositoryAssertionErrorZsignZidentityrropenreadZ distributionZmetadataZget_nameZ get_versionospathbasenamehashlibZmd5Z hexdigeststrZget_metadata_versionZget_descriptionZget_urlZ get_contactZget_contact_emailZ get_licenceZget_long_descriptionZ get_keywordsZ get_platformsZget_classifiersZget_download_urlZ get_providesZ get_requiresZ get_obsoletesrrencoderdecodeioBytesIOitems isinstancelisttypetuplewritegetvaluer rINFOlenrrZgetcodemsgr codeOSErrorZERRORZ show_responsegetattrjoinr) rZcommandr filenameZschemaZnetlocZurlZparamsZqueryZ fragmentsZgpg_argsfrmetar)Z user_passZauthboundaryZ sep_boundaryZ end_boundaryZbodykeyvaluetitlerFr*ZrequestresultZstatusreasonetextrrr upload_file0s      !          zupload.upload_filecCs4ztd}||j|jWStk r.YnXdS)zM Attempt to load password from keyring. Suppress Exceptions. keyringN) __import__Z get_passwordr0r Exception)rrWrrrrs z"upload._load_password_from_keyringc Cs(z tWSttfk r"YnXdS)zH Prompt for a password on the tty. Suppress Exceptions. N)rrYKeyboardInterruptrrrrrs zupload._prompt_for_passwordN) __name__ __module__ __qualname____doc__r rrVrrrrrrrs  r)r;r4r7rbase64rZ distutilsrZdistutils.commandrr Zdistutils.spawnrZdistutils.errorsrZ*setuptools.extern.six.moves.urllib.requestrrZ(setuptools.extern.six.moves.urllib.errorr Z(setuptools.extern.six.moves.urllib.parser rrrrs