o
    ^+)h5                     @   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)Z
md5_digestZsha256_digestZ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   cC:\Users\User\Downloads\Proyecto_IoT\venv\Lib\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   Z_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   Z
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 ]J\}}d*| }t)|t*s@|g}|D ]5}t+|t,u rX|d+|d,  7 }|d- }nt-|$d.}|.| |.|$d. |.d/ |.| qBq/|.| |/ }d00|| j}| 1|t2j3 d1| t-t4||d2}t5| j||d3}zt6|}|7 }|j8}W n/ t9y }  z| j:}| j8}W Y d } ~ nd } ~ w t;y }  z
| 1t-| t2j<  d } ~ ww |d4kr| 1d50||t2j3 | j=r| >|}!d6?d7|!d7f}| 1|t2j3 d S d S d80||}| 1|t2j< t@|)9NzIncompatible url %s)httphttpszunsupported schema Zgpgz--detach-signz-az--local-user   )dry_runrbz:actionZfile_uploadZprotocol_version1nameversioncontentZfiletyper$   metadata_versionz1.0summaryZ	home_pageauthorZauthor_emaillicensedescriptionkeywordsplatformZclassifiers)Zdownload_urlZprovidesrequiresZ	obsoletesr   commentz.ascZgpg_signature:asciizBasic z3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s   
--s   --
z+
Content-Disposition: form-data; name="%s"z; filename="%s"r      zutf-8s   

zSubmitting {} to {}z multipart/form-data; boundary=%s)zContent-typezContent-lengthAuthorization)dataheaders   zServer response ({}): {}
zK---------------------------------------------------------------------------zUpload failed ({}): {})Ar   r   AssertionErrorr   r   r
   r*   openreadcloser   metadataget_nameget_versionospathbasename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_obsoletes_FILE_CONTENT_DIGESTSitems	hexdigest
ValueErrorr   r   encoder   decodeioBytesIO
isinstancelisttypetuplestrwritegetvalueformatZannouncer   INFOlenr   r   getcoder"   r   codeOSErrorERRORr   Z_read_pypi_responsejoinr   )"r   r#   r$   r%   Zschemanetlocurlparamsquery	fragmentsZgpg_argsfr/   metar=   Zdigest_namedigest_cons	user_passauthboundaryZsep_boundaryZend_boundarybodykeyvaluetitler"   r>   requestresultstatusreasonetextr   r   r   r!   J   s   

	









zupload.upload_fileN)__name__
__module____qualname__r4   r	   Zuser_optionsZboolean_optionsr   r   r&   r!   r   r   r   r   r      s    
r   )__doc__rH   rR   hashlibbase64r   urllib.requestr   r   r   urllib.parser   Zdistutils.errorsr   r   Zdistutils.corer	   Zdistutils.spawnr
   	distutilsr   getattrrL   r   r   r   r   r   <module>   s     


