ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     U
    &.e                     @   s   d Z ddlZddlZddlZddlZddlmZ ddlmZm	Z	m
Z
 ddlmZ ddlmZmZ ddlmZ ddlmZ dd	lmZ G d
d deZdS )zm
distutils.command.upload

Implements the Distutils 'upload' subcommand (upload package to a package
index).
    N)standard_b64encode)urlopenRequest	HTTPError)urlparse)DistutilsErrorDistutilsOptionError)PyPIRCCommand)spawn)logc                   @   sJ   e Zd ZdZejddg Zejdg Zdd Zdd Zd	d
 Z	dd Z
dS )uploadzupload binary package to PyPI)signszsign files to upload using gpg)z	identity=izGPG identity used to sign filesr   c                 C   s,   t |  d| _d| _d| _d| _d | _d S )N r   F)r	   initialize_optionsusernamepasswordshow_responser   identity)self r   0/usr/lib64/python3.8/distutils/command/upload.pyr       s    
zupload.initialize_optionsc                 C   sr   t |  | jr| jstd|  }|i krV|d | _|d | _|d | _|d | _	| jsn| j
jrn| j
j| _d S )Nz.Must use --sign for --identity to have meaningr   r   
repositoryrealm)r	   finalize_optionsr   r   r   Z_read_pypircr   r   r   r   distribution)r   Zconfigr   r   r   r   (   s    




zupload.finalize_optionsc                 C   s:   | j jsd}t|| j jD ]\}}}| ||| qd S )NzHMust create and upload files in one command (e.g. setup.py sdist upload))r   Z
dist_filesr   upload_file)r   msgcommand	pyversionfilenamer   r   r   run:   s
    z
upload.runc           "      C   s  t | j\}}}}}}	|s"|s"|	r0td| j |dkrDtd| | jr|ddd|g}
| jrnd| jg|
dd< t|
| jd	 t|d
}z|	 }W 5 |  X | j
j}dd| | tj||f||t| d| | | | | | | | | | | | |  d}zt!| }W nP t"k
r } z0d| }| #|t$j% ddl&m'} | s| W 5 d }~X Y n
X ||d< d|d< | jrt|d d
"}tj|d |	 f|d< W 5 Q R X | j(d | j) *d}dt+|,d }d}d|*d }|d }t-. }|/ D ]\}}d| }t0|t1sP|g}|D ]j}t2|t3kr|d|d  7 }|d }nt4|*d }|5| |5|*d  |5d! |5| qTq.|5| |6 }d"|| jf }| #|t$j% d#| t4t7||d$}t8| j||d%}zt9|}|: }|j;} W nf t<k
rd } z|j=}|j;} W 5 d }~X Y n8 t>k
r } z| #t4|t$j?  W 5 d }~X Y nX |d&kr| #d'|| f t$j% | j@r| A|}!d(Bd)|!d)f}| #|t$j% n"d*|| f }| #|t$j? tC|d S )+NzIncompatible url %s)ZhttpZhttpszunsupported schema Zgpgz--detach-signz-az--local-user   )dry_runrbZfile_upload1z1.0)z:actionZprotocol_versionnameversioncontentZfiletyper    Zsha256_digestZmetadata_versionZsummaryZ	home_pageZauthorZauthor_emaillicensedescriptionkeywordsplatformZclassifiersZdownload_urlZprovidesZrequiresZ	obsoletesz#calculating md5 checksum failed: %sr   )get_fips_modeZ
md5_digestr   Zcommentz.ascZgpg_signature:asciizBasic z3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s   
--s   --
z+
Content-Disposition: form-data; name="%s"z; filename="%s"   zutf-8s   

zSubmitting %s to %sz multipart/form-data; boundary=%s)zContent-typezContent-lengthZAuthorization)dataheaders   zServer response (%s): %s
zK---------------------------------------------------------------------------zUpload failed (%s): %s)Dr   r   AssertionErrorr   r   r
   r$   openclosereadr   ZmetadataZget_nameZget_versionospathbasenamehashlibZsha256Z	hexdigestZget_descriptionZget_urlZget_contactZget_contact_emailZget_licenceZget_long_descriptionZget_keywordsZget_platformsZget_classifiersZget_download_urlZget_providesZget_requiresZget_obsoletesZmd5
ValueErrorZannouncer   INFOZ_hashlibr.   r   r   encoder   decodeioBytesIOitems
isinstancelisttypetuplestrwritegetvaluelenr   r   Zgetcoder   r   codeOSErrorZERRORr   Z_read_pypi_responsejoinr   )"r   r   r    r!   ZschemaZnetlocZurlZparamsZqueryZ	fragmentsZgpg_argsfr)   metar2   Zdigester   r.   Z	user_passZauthboundaryZsep_boundaryZend_boundaryZbodykeyvaluetitler3   ZrequestresultZstatusreasontextr   r   r   r   B   s    

!







zupload.upload_fileN)__name__
__module____qualname__r+   r	   Zuser_optionsZboolean_optionsr   r   r"   r   r   r   r   r   r      s   r   )__doc__r:   rB   r-   r=   base64r   Zurllib.requestr   r   r   Zurllib.parser   Zdistutils.errorsr   r   Zdistutils.corer	   Zdistutils.spawnr
   Z	distutilsr   r   r   r   r   r   <module>   s   