<!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>
U
    Qab                     @   s   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
 d dlmZ d dlmZ d dlmZmZ d dlmZ d d	lmZ G d
d de
j	Z	dS )    N)standard_b64encode)log)upload)spawn)DistutilsError)urlopenRequest)	HTTPError)urlparsec                   @   s8   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d ZdS )r   za
    Override default upload behavior to obtain password
    in a variety of different ways.
    c              
   C   s&   ztj|  W 5 |  dtj X d S )NzjWARNING: Uploading via this command is deprecated, use twine to upload instead (https://pypi.org/p/twine/))announcer   ZWARNorigr   runself r   =/usr/lib/python3.8/site-packages/setuptools/command/upload.pyr      s    z
upload.runc                 C   s8   t j|  | jpt | _| jp0|  p0|  | _d S N)	r   r   finalize_optionsusernamegetpassZgetuserpassword_load_password_from_keyring_prompt_for_passwordr   r   r   r   r   "   s    zupload.finalize_optionsc                  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
}| }W 5 Q R X | j	j
}dd| | tj||f||t| t| | | | | | | | | | | | |  |! d}d|d< | jrdtj|d t|d d
 f|d< | j"d | j# $d}dt%|&d }d}d|$d }|d }t'( }|) D ]\}}d| }t*|t+s|g}|D ]j}t,|t-kr|d|d  7 }|d }nt|$d}|.| |.|$d |.d |.| qܐq|.| |/ }d|| jf }| 0|t1j2 d| tt3||d }t4| j||d!}zt5|}|6 }|j7}W nf t8k
r } z|j9}|j7}W 5 d }~X Y n8 t:k
r" } z| 0t|t1j;  W 5 d }~X Y nX |d"kr| 0d#||f t1j2 | j<rt=| d$d%d& |}|d k	rd'>d(|d(f}| 0|t1j2 n"d)||f }| 0|t1j; t?|d S )*NzIncompatible url %s)ZhttpZhttpszunsupported schema Zgpgz--detach-signz-az--local-user   )dry_runrbZfile_upload1)z:actionZprotocol_versionnameversioncontentZfiletype	pyversionZ
md5_digestZmetadata_versionZsummaryZ	home_pageZauthorZauthor_emaillicensedescriptionkeywordsplatformZclassifiersZdownload_urlZprovidesZrequiresZ	obsoletes Z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-lengthZAuthorization)dataheaders   zServer response (%s): %sZ_read_pypi_responsec                 S   s   d S r   r   )xr   r   r   <lambda>       z$upload.upload_file.<locals>.<lambda>
zK---------------------------------------------------------------------------zUpload failed (%s): %s)@r
   
repositoryAssertionErrorZsignZidentityr   r   openreadZdistributionZmetadataZget_nameZget_versionospathbasenamehashlibZmd5Z	hexdigeststrZget_metadata_versionZ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_obsoletesr   r   encoder   decodeioBytesIOitems
isinstancelisttypetuplewritegetvaluer   r   INFOlenr   r   Zgetcodemsgr	   codeOSErrorZERRORZshow_responsegetattrjoinr   ) r   Zcommandr    filenameZschemaZnetlocZurlZparamsZqueryZ	fragmentsZgpg_argsfr   metar)   Z	user_passZauthboundaryZsep_boundaryZend_boundaryZbodykeyvaluetitlerF   r*   ZrequestresultZstatusreasonetextr   r   r   upload_file0   s    
!







zupload.upload_filec                 C   s4   zt d}|| j| jW S  tk
r.   Y nX dS )zM
        Attempt to load password from keyring. Suppress Exceptions.
        keyringN)
__import__Zget_passwordr0   r   	Exception)r   rW   r   r   r   r      s
    z"upload._load_password_from_keyringc              	   C   s(   z
t   W S  ttfk
r"   Y nX dS )zH
        Prompt for a password on the tty. Suppress Exceptions.
        N)r   rY   KeyboardInterruptr   r   r   r   r      s    
zupload._prompt_for_passwordN)	__name__
__module____qualname____doc__r   r   rV   r   r   r   r   r   r   r      s   
 
r   )r;   r4   r7   r   base64r   Z	distutilsr   Zdistutils.commandr   r   Zdistutils.spawnr   Zdistutils.errorsr   Z*setuptools.extern.six.moves.urllib.requestr   r   Z(setuptools.extern.six.moves.urllib.errorr	   Z(setuptools.extern.six.moves.urllib.parser
   r   r   r   r   <module>   s   