<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    Re                 @   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   /builddir/build/BUILDROOT/alt-python37-setuptools-58.3.0-4.el8.x86_64/opt/alt/python37/lib/python3.7/site-packages/setuptools/_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   _read_pypircr   r   r   r   distribution)r   configr   r   r   r   1   s    




zupload.finalize_optionsc             C   s>   | j jsd}t|x$| j jD ]\}}}| ||| qW 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"|	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 d |	  X | j
j}dd| | tj||f||d| | | | | | | | | | | | | d}d|d< xPt D ]D\}}|d krFq0y||  ||< W n t!k
rp   Y nX q0W | jrt|d d
"}tj|d | f|d< W d Q R X | j"d | j# $d}dt%|&d }d}d|$d }|d }t'( }x| D ]\}}d| }t)|t*s,|g}xr|D ]j}t+|t,kr^|d|d  7 }|d }nt-|$d}|.| |.|$d |.d |.| q2W q
W |.| |/ }d|| jf }| 0|t1j2 d | t-t3||d!}t4| j||d"}yt5|}|6 }|j7}W nf t8k
rF }  z| j9}| j7}W d d } ~ X Y n8 t:k
r| }  z| 0t-| t1j;  W d d } ~ X Y nX |d#kr| 0d$||f t1j2 | j<r| =|}!d%>d&|!d&f}| 0|t1j2 n"d'||f }| 0|t1j; t?|d S )(NzIncompatible url %s)http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&   metadata_versionsummaryZ	home_pageauthorauthor_emaillicensedescriptionkeywordsplatformclassifiersdownload_urlprovidesrequires	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 %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
   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announcer   INFOlenr   r   getcoder$   r   codeOSErrorERRORr   _read_pypi_responsejoinr   )"r   r%   r&   r'   Zschemanetlocurlparamsquery	fragmentsZgpg_argsfr1   metarD   Zdigest_namedigest_cons	user_passauthboundaryZsep_boundaryZend_boundarybodykeyvaluetitler$   rE   requestresultstatusreasonetextr   r   r   r#   K   s    












zupload.upload_fileN)__name__
__module____qualname__r7   r	   user_optionsboolean_optionsr   r   r(   r#   r   r   r   r   r      s   r   )__doc__rO   re   hashlibbase64r   urllib.requestr   r   r   urllib.parser   distutils.errorsr   r   distutils.corer	   distutils.spawnr
   	distutilsr   getattrr_   r   r   r   r   r   <module>   s   

