o
     zqfI                     @   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 ddl	m
Z
mZmZ ddlmZ ddlmZ dd	lmZmZ dd
lmZ eeddeeddeedddZG dd deZdd ZdS )zm
distutils.command.upload

Implements the Distutils 'upload' subcommand (upload package to a package
index).
    N)standard_b64encode)urlparse)	HTTPErrorRequesturlopen   )always_iterable)PyPIRCCommand)DistutilsErrorDistutilsOptionError)spawnmd5sha256blake2b)
md5_digestsha256_digestblake2_256_digestc                   @   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   c/root/parts/websockify/install/lib/python3.10/site-packages/setuptools/_distutils/command/upload.pyr   (   s   

zupload.initialize_optionsc                 C   sz   t |  | jr| jstd|  }|i kr+|d | _|d | _|d | _|d | _	| js9| j
jr;| j
j| _d S d S d S )Nz.Must use --sign for --identity to have meaningr   r   
repositoryrealm)r	   finalize_optionsr   r   r   _read_pypircr   r   r    r!   distribution)r   configr   r   r   r"   0   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$   
dist_filesr   upload_file)r   msgcommand	pyversionfilenamer   r   r   run@   s   z
upload.runc           #   
   C   s<  t | j\}}}}}}	|s|s|	rtd| j |dvr"td| | jr>ddd|g}
| jr7d| jg|
dd< t|
| jd	 t|d
}z
| }W |	  n|	  w | j
j}i ddddd| d| dtj||fd|d|ddd| d| d| d| d| d| d| d| d| | | | | d}d |d!< t D ]\}}|d u rqz
||  ||< W q t!y   Y qw | jrt|d" d
}tj|d" | f|d#< W d    n	1 sw   Y  | j"d$ | j# $d%}d&t%|&d% }d'}d(|$d% }|d) }t'( }| D ]C\}}d*| }t)|D ]5}t*|t+u rQ|d+|d,  7 }|d- }nt,|$d.}|-| |-|$d. |-d/ |-| q;q/|-| |. }d0| d1| j }| /|t0j1 d2| t,t2||d3}t3| j||d4}zt4|}|5 }|j6} W n/ t7y }! z|!j8}|!j6} W Y d }!~!nd }!~!w t9y }! z
| /t,|!t0j:  d }!~!ww |d5kr| /d6| d7|  t0j1 | j;r	| <|}"d8=d9|"d9f}| /|t0j1 d S d S d:| d7|  }| /|t0j: t>|);NzIncompatible url %s)httphttpszunsupported schema gpgz--detach-signz-az--local-userr   )dry_runrbz:actionfile_uploadprotocol_version1nameversioncontentfiletyper*   metadata_versionz1.0summary	home_pageauthorauthor_emaillicensedescriptionkeywordsplatformclassifiers)download_urlprovidesrequires	obsoletesr   commentz.ascgpg_signature:asciizBasic z3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s   
--s   --
z+
Content-Disposition: form-data; name="%s"z; filename="%s"r      zutf-8s   

zSubmitting z to z multipart/form-data; boundary=%s)zContent-typezContent-lengthAuthorization)dataheaders   zServer response (z): 
zK---------------------------------------------------------------------------zUpload failed ()?r   r    AssertionErrorr   r   r   r0   openreadcloser$   metadataget_nameget_versionospathbasenameget_descriptionget_urlget_contactget_contact_emailget_licenceget_long_descriptionget_keywordsget_platformsget_classifiersget_download_urlget_providesget_requiresget_obsoletes_FILE_CONTENT_DIGESTSitems	hexdigest
ValueErrorr   r   encoder   decodeioBytesIOmake_iterabletypetuplestrwritegetvalueannounceloggingINFOlenr   r   getcoder(   r   codeOSErrorERRORr   _read_pypi_responsejoinr
   )#r   r)   r*   r+   schemanetlocurlparamsquery	fragmentsgpg_argsfr7   metarM   digest_namedigest_cons	user_passauthboundarysep_boundaryend_boundarybodykeyvaluestitlevaluer(   rN   requestresultstatusreasonetextr   r   r   r'   J   s   

	









zupload.upload_fileN)__name__
__module____qualname__r?   r	   user_optionsboolean_optionsr   r"   r,   r'   r   r   r   r   r      s    
r   c                 C   s    | d u rd gS t | tttfdS )N)	base_type)r   bytesrs   rr   )r   r   r   r   rp      s   rp   )__doc__hashlibrn   rw   rX   base64r   urllib.parser   urllib.requestr   r   r   
_itertoolsr   corer	   errorsr
   r   r   getattrrh   r   rp   r   r   r   r   <module>   s&    


 0