o
    EeC                     @   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 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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   e/var/www/bmteknikk.ddns.net/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!   /   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 ]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 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 {} 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_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format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fr6   metarL   digest_namedigest_cons	user_passauthboundarysep_boundaryend_boundarybodykeyvaluetitler'   rM   requestresultstatusreasonetextr   r   r   r&   I   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__rW   rm   hashlibrx   base64r   urllib.requestr   r   r   urllib.parser   errorsr   r	   corer
   r   getattrrg   r   r   r   r   r   <module>   s     


