o
    #h                     @   s   d 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 eed
deeddeeddd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)log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   x/var/www/html/construction_image-detection-poc/venv/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!   1   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   runC   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 ]J\}}d*| }t)|t*s@|g}|D ]5}t+|t,u rX|d+|d,  7 }|d- }nt-|$d.}|.| |.|$d. |.d/ |.| qBq/|.| |/ }d0|| jf }| 0|t1j2 d1| t-t3||d2}t4| j||d3}zt5|}|6 }|j7}W n/ t8y }  z| j9}| j7}W Y d } ~ nd } ~ w t:y }  z
| 0t-| t1j;  d } ~ ww |d4kr| 0d5||f t1j2 | j<r| =|}!d6>d7|!d7f}| 0|t1j2 d S d S d8||f }| 0|t1j; t?|)9NzIncompatible url %s)httphttpszunsupported schema gpgz--detach-signz-az--local-user   )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 %s to %sz multipart/form-data; boundary=%s)zContent-typezContent-lengthAuthorization)dataheaders   zServer response (%s): %s
zK---------------------------------------------------------------------------zUpload failed (%s): %s)@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
isinstancelisttypetuplestrwritegetvalueannouncer   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valuetitler'   rN   requestresultstatusreasonetextr   r   r   r&   K   s  


 









zupload.upload_fileN)__name__
__module____qualname__r?   r	   user_optionsboolean_optionsr   r!   r+   r&   r   r   r   r   r      s    r   )__doc__rX   rn   hashlibbase64r   urllib.requestr   r   r   urllib.parser   distutils.errorsr   r   distutils.corer	   distutils.spawnr
   	distutilsr   getattrrh   r   r   r   r   r   <module>   s     


