ó û^‚Rc@sØdZddlZddlZddlZddlmZmZmZddlm Z ddl Z ddl Z ddl mZddlmZddlmZddlmZdd lmZd efd „ƒYZdS( s`distutils.command.upload Implements the Distutils 'upload' subcommand (upload package to PyPI).iÿÿÿÿN(turlopentRequestt HTTPError(tstandard_b64encode(tmd5(tDistutilsOptionError(t PyPIRCCommand(tspawn(tlogtuploadcBsUeZdZejd d gZejdgZd„Zd„Zd „Zd „Z RS( supload binary package to PyPItsigntsssign files to upload using gpgs identity=tisGPG identity used to sign filescCs>tj|ƒd|_d|_d|_t|_d|_dS(Nti( Rtinitialize_optionstusernametpasswordt show_responsetFalseR tNonetidentity(tself((s./usr/lib/python2.7/distutils/command/upload.pyRs      cCsªtj|ƒ|jr/|j r/tdƒ‚n|jƒ}|ikr~|d|_|d|_|d|_|d|_ n|j r¦|j jr¦|j j|_ndS(Ns.Must use --sign for --identity to have meaningRRt repositorytrealm( Rtfinalize_optionsRR Rt _read_pypircRRRRt distribution(Rtconfig((s./usr/lib/python2.7/distutils/command/upload.pyR&s       cCsR|jjstdƒ‚nx0|jjD]"\}}}|j|||ƒq(WdS(Ns'No dist file created in earlier command(Rt dist_filesRt upload_file(Rtcommandt pyversiontfilename((s./usr/lib/python2.7/distutils/command/upload.pytrun8s c"Cstj|jƒ\}}}}}} |s6|s6| rLtd|jƒ‚n|dGkrktd|ƒ‚n|jr¾ddd|g} |jr¨d|jg| d d +nt| d |jƒnt|d ƒ} z| jƒ} Wd| j ƒX|j j } id d 6dd6| j ƒd6| j ƒd6tjj|ƒ| fd6|d6|d6t| ƒjƒd6dd6| jƒd6| jƒd6| jƒd6| jƒd6| jƒd6| jƒd6| jƒd6| jƒd6| jƒd 6| jƒd!6| jƒd"6| jƒd#6| jƒd$6}d%}|d&krRt j!ƒ\}}}|rwd'||f}qwn%|d(krwd)t j d*d+ƒ}n||d,<|jr½tjj|ƒd-t|d-ƒjƒf|d.6|d?6}t1|jd@|dA|ƒ}yjt2|ƒ}|j3ƒ}|j4}|j5rÚd:j6dBdCt7jƒdBdCfƒ} |j,| t-j.ƒnWnTt8j9k r }!|j,t/|!ƒt-j:ƒdSt;k r1}!|!j<}|!j4}nX|dDkr^|j,dE||ft-j.ƒn|j,dF||ft-j:ƒdS(HNsIncompatible url %sthttpthttpssunsupported schema tgpgs --detach-signs-as --local-useritdry_runtrbt file_uploads:actiont1tprotcol_versiontnametversiontcontenttfiletypeRt md5_digests1.0tmetadata_versiontsummaryt home_pagetauthort author_emailtlicenset descriptiontkeywordstplatformt classifierst download_urltprovidestrequirest obsoletesR t bdist_rpmsbuilt for %s %st bdist_dumbs built for %stterseitcomments.asct gpg_signaturesBasic t:s3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s --s--s;filename="%s"is* Content-Disposition: form-data; name="%s"s iÿÿÿÿs s sSubmitting %s to %ss multipart/form-data; boundary=%ss Content-typesContent-lengtht Authorizationtdatatheaderst-iKiÈsServer response (%s): %ssUpload failed (%s): %s(R"R#(=turlparseRtAssertionErrorR RRR%topentreadtcloseRtmetadatatget_namet get_versiontostpathtbasenameRt hexdigesttget_descriptiontget_urlt get_contacttget_contact_emailt get_licencetget_long_descriptiont get_keywordst get_platformstget_classifierstget_download_urlt get_providest get_requirest get_obsoletesR7tdistRRRtStringIOtitemst isinstancetlistttupletwritetgetvaluetannounceRtINFOtstrtlenRRtgetcodetmsgRtjointrtsocketterrortERRORRtcode("RRRR tschematnetlocturltparamstqueryt fragmentstgpg_argstfR,tmetaRDR@R`R+tidtauthtboundaryt sep_boundaryt end_boundarytbodytkeytvaluetfnREtrequesttresulttstatustreasonRmte((s./usr/lib/python2.7/distutils/command/upload.pyR>sÆ$                                               &    (ssignR ssign files to upload using gpg(s identity=R sGPG identity used to sign files( t__name__t __module__R5Rt user_optionstboolean_optionsRRR!R(((s./usr/lib/python2.7/distutils/command/upload.pyR s    (t__doc__RORpR7turllib2RRRtbase64RRGt cStringIORathashlibRtdistutils.errorsRtdistutils.coreRtdistutils.spawnRt distutilsRR (((s./usr/lib/python2.7/distutils/command/upload.pyts