U âQab›ã@sšddlZddlZddlZddlZddlmZddlmZddlm Z ddl m Z ddl mZddlmZmZddlmZdd lmZGd d „d e j ƒZ dS) éN)Ústandard_b64encode)Úlog)Úupload)Úspawn)ÚDistutilsError)ÚurlopenÚRequest)Ú HTTPError)Úurlparsec@s8eZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd S) rza Override default upload behavior to obtain password in a variety of different ways. c Cs&ztj |¡W5| dtj¡XdS)NzjWARNING: Uploading via this command is deprecated, use twine to upload instead (https://pypi.org/p/twine/))ÚannouncerZWARNÚorigrÚrun©Úself©rú=/usr/lib/python3.8/site-packages/setuptools/command/upload.pyr s ýz upload.runcCs8tj |¡|jpt ¡|_|jp0| ¡p0| ¡|_dS©N) r rÚfinalize_optionsÚusernameÚgetpassZgetuserÚpasswordÚ_load_password_from_keyringÚ_prompt_for_passwordrrrrr"s þÿýzupload.finalize_optionsc Cs°t|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<|j�rdt 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-k�r|d|d7}|d}nt|ƒ $d¡}| .|¡| .| $d¡¡| .d¡| .|¡�qÜ�q¶| .|¡| /¡}d||jf}| 0|t1j2¡d|tt3|ƒƒ|d œ}t4|j||d!�}zt5|ƒ}| 6¡}|j7}Wnft8k �rì}z|j9}|j7}W5d}~XYn8t:k �r"}z| 0t|ƒt1j;¡‚W5d}~XYnX|d"k�rŠ| 0d#||ft1j2¡|j<�r¬t=|d$d%d&„ƒ|ƒ}|dk �r¬d' >d(|d(f¡}| 0|t1j2¡n"d)||f}| 0|t1j;¡t?|ƒ‚dS)*NzIncompatible url %s)ZhttpZhttpszunsupported schema Zgpgz --detach-signz-az --local-useré)Údry_runÚrbZ file_uploadÚ1)z:actionZprotocol_versionÚnameÚversionÚcontentZfiletypeÚ pyversionZ md5_digestZmetadata_versionZsummaryZ home_pageZauthorZ author_emailÚlicenseÚ descriptionÚkeywordsÚplatformZ classifiersZ download_urlZprovidesZrequiresZ obsoletesÚZcommentz.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-lengthZ Authorization)ÚdataÚheaderséÈzServer response (%s): %sZ_read_pypi_responsecSsdSrr)ÚxrrrÚªóz$upload.upload_file..Ú zK---------------------------------------------------------------------------zUpload failed (%s): %s)@r Ú repositoryÚAssertionErrorZsignZidentityrrÚopenÚreadZ distributionZmetadataZget_nameZ get_versionÚosÚpathÚbasenameÚhashlibZmd5Z hexdigestÚstrZget_metadata_versionZget_descriptionZget_urlZ get_contactZget_contact_emailZ get_licenceZget_long_descriptionZ get_keywordsZ get_platformsZget_classifiersZget_download_urlZ get_providesZ get_requiresZ get_obsoletesrrÚencoderÚdecodeÚioÚBytesIOÚitemsÚ isinstanceÚlistÚtypeÚtupleÚwriteÚgetvaluer rÚINFOÚlenrrZgetcodeÚmsgr ÚcodeÚOSErrorZERRORZ show_responseÚgetattrÚjoinr) rZcommandr ÚfilenameZschemaZnetlocZurlZparamsZqueryZ fragmentsZgpg_argsÚfrÚmetar)Z user_passZauthÚboundaryZ sep_boundaryZ end_boundaryZbodyÚkeyÚvalueÚtitlerFr*ZrequestÚresultZstatusÚreasonÚeÚtextrrrÚ upload_file0sÈÿ   ÿ   â!ÿ      ýÿ  ÿÿÿ  zupload.upload_filecCs4ztdƒ}| |j|j¡WStk r.YnXdS)zM Attempt to load password from keyring. Suppress Exceptions. ÚkeyringN)Ú __import__Z get_passwordr0rÚ Exception)rrWrrrr³s z"upload._load_password_from_keyringc Cs(z t ¡WSttfk r"YnXdS)zH Prompt for a password on the tty. Suppress Exceptions. N)rrYÚKeyboardInterruptrrrrr½s zupload._prompt_for_passwordN) Ú__name__Ú __module__Ú __qualname__Ú__doc__r rrVrrrrrrrs  r)r;r4r7rÚbase64rZ distutilsrZdistutils.commandrr Zdistutils.spawnrZdistutils.errorsrZ*setuptools.extern.six.moves.urllib.requestrrZ(setuptools.extern.six.moves.urllib.errorr Z(setuptools.extern.six.moves.urllib.parser rrrrÚs