ó ’,bc@sÞdZddlZddlZddlZddlmZmZmZddlm Z ddl Z ddl Z ddl mZddlmZmZddlmZddlmZdd lmZd efd „ƒYZdS( s`distutils.command.upload Implements the Distutils 'upload' subcommand (upload package to PyPI).iÿÿÿÿN(turlopentRequestt HTTPError(tstandard_b64encode(tmd5(tDistutilsErrortDistutilsOptionError(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"Cs†tj|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:j6dBdC|jƒdBdCfƒ} |j,| t-j.ƒnWnVt7j8k r}!|j,t/|!ƒt-j9ƒ‚n%t:k r&}!|!j;}|!j4}nX|dDkrS|j,dE||ft-j.ƒn/dF||f} |j,| t-j9ƒt<| ƒ‚dS(HNsIncompatible url %sthttpthttpssunsupported schema tgpgs --detach-signs-as --local-useritdry_runtrbt file_uploads:actiont1tprotcol_versiontnametversiontcontenttfiletypeR t md5_digests1.0tmetadata_versiontsummaryt home_pagetauthort author_emailtlicenset descriptiontkeywordstplatformt classifierst download_urltprovidestrequirest obsoletesRt 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_obsoletesR8tdistRRRtStringIOtitemst isinstancetlistttupletwritetgetvaluetannounceR tINFOtstrtlenRRtgetcodetmsgRtjointsocketterrortERRORRtcodeR("RRR R!tschematnetlocturltparamstqueryt fragmentstgpg_argstfR-tmetaRERARaR,tidtauthtboundaryt sep_boundaryt end_boundarytbodytkeytvaluetfnRFtrequesttresulttstatustreasonRnte((s./usr/lib/python2.7/distutils/command/upload.pyR>sÆ$                                              &    (R R ssign files to upload using gpg(s identity=R sGPG identity used to sign files( t__name__t __module__R6Rt user_optionstboolean_optionsRRR"R(((s./usr/lib/python2.7/distutils/command/upload.pyR s    (t__doc__RPRpR8turllib2RRRtbase64RRHt cStringIORbthashlibRtdistutils.errorsRRtdistutils.coreRtdistutils.spawnRt distutilsR R (((s./usr/lib/python2.7/distutils/command/upload.pyts