o
    3ŠØfÀ-  ã                   @   sb   	 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	T d dl
mZ G dd„ deƒZdS )é    N)Úwarn)ÚPyPIRCCommand)Ú*)Úlogc                   @   sŒ   e Zd ZdZejddg Zejg d¢ Zddd„ fgZdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zddd„ZdS )Úregisterz7register the distribution with the Python package index)úlist-classifiersNz list the valid Trove classifiers)ÚstrictNzBWill stop the registering if the meta-data are not fully compliant)Úverifyr   r   Úcheckc                 C   s   dS )NT© ©Úselfr   r   úl/home/ych/rk3568/buildroot/output/rockchip_rk3568_recovery/host/lib/python3.10/distutils/command/register.pyÚ<lambda>   s    zregister.<lambda>c                 C   s   t  | ¡ d| _d| _d S )Nr   )r   Úinitialize_optionsÚlist_classifiersr   r   r   r   r   r      s   

zregister.initialize_optionsc                 C   s*   t  | ¡ d| jfddœ}|| jjd< d S )Nr   )r   é   )r   Úrestructuredtextr
   )r   Úfinalize_optionsr   ÚdistributionZcommand_options)r   Zcheck_optionsr   r   r   r   $   s
   
ÿzregister.finalize_optionsc                 C   sX   |   ¡  |  ¡  |  ¡ D ]}|  |¡ q| jr|  ¡  d S | jr&|  ¡  d S |  ¡  d S ©N)	r   Ú_set_configZget_sub_commandsZrun_commandÚdry_runÚverify_metadatar   ÚclassifiersÚsend_metadata)r   Zcmd_namer   r   r   Úrun+   s   zregister.runc                 C   s:   	 t dtƒ | j d¡}| ¡  | j|_d|_| ¡  d S )Nzddistutils.command.register.check_metadata is deprecated,               use the check command insteadr
   r   )r   ÚPendingDeprecationWarningr   Zget_command_objZensure_finalizedr   r   r   )r   r
   r   r   r   Úcheck_metadata:   s   ÿzregister.check_metadatac                 C   s~   	 |   ¡ }|i kr"|d | _|d | _|d | _|d | _d| _d S | jd| jfvr1td| j ƒ‚| jdkr:| j| _d| _d S )	NÚusernameÚpasswordÚ
repositoryÚrealmTZpypiz%s not found in .pypircF)Z_read_pypircr   r    r!   r"   Ú
has_configZDEFAULT_REPOSITORYÚ
ValueError)r   Zconfigr   r   r   r   D   s   






zregister._set_configc                 C   s,   	 | j d }tj |¡}t |  |¡¡ d S )Nz?:action=list_classifiers)r!   ÚurllibÚrequestÚurlopenr   ÚinfoÚ_read_pypi_response)r   ÚurlÚresponser   r   r   r   U   s   
zregister.classifiersc                 C   s(   	 |   |  d¡¡\}}t d||¡ d S )Nr	   úServer response (%s): %s)Úpost_to_serverÚbuild_post_datar   r(   )r   ÚcodeÚresultr   r   r   r   \   s   zregister.verify_metadatac           
      C   s  	 | j rd}| j}| j}nd}d }}d ¡ }||vr6|  dtj¡ tƒ }|s*d}n||vr2tdƒ ||vs|dkr¿|sBtdƒ}|r<|sKt	 	d¡}|rDt
j ¡ }t
j | j¡d	 }| | j|||¡ |  |  d
¡|¡\}}|  d||f tj¡ |dkr»| j r…|| j_d S |  dtj¡ |  d|  ¡  tj¡ d}| ¡ dvr­tdƒ}|s§d}| ¡ dvsŸ| ¡ dkr½|  ||¡ d S d S d S |dkr]ddi}	d |	d<  |	d< |	d< d |	d< |	d sætdƒ|	d< |	d rÜ|	d |	d kr,|	d sþt	 	d¡|	d< |	d ró|	d st	 	d¡|	d< |	d r|	d |	d kr$d|	d< d |	d< tdƒ |	d |	d ksï|	d s<tdƒ|	d< |	d r1|  |	¡\}}|dkrQt d||¡ d S t d¡ t d¡ d S |d krŠdd!i}	d|	d< |	d sztd"ƒ|	d< |	d ro|  |	¡\}}t d||¡ d S d S )#NÚ1ÚxÚ z1 2 3 4zâWe need to know who you are, so please choose either:
 1. use your existing login,
 2. register as a new user,
 3. have the server generate a new password for you (and email it to you), or
 4. quit
Your selection [default 1]: z&Please choose one of the four options!z
Username: z
Password: r   Úsubmitr,   éÈ   zAI can store your PyPI login so future submissions will be faster.z (the login will be stored in %s)ÚXZynzSave your login (y/N)?ÚnÚyÚ2ú:actionÚuserÚnamer    ZemailZconfirmz
 Confirm: z!Password and confirm don't match!z
   EMail: z"You will receive an email shortly.z7Follow the instructions in it to complete registration.Ú3Zpassword_resetzYour email address: )r#   r   r    ÚsplitÚannouncer   ÚINFOÚinputÚprintÚgetpassr%   r&   ZHTTPPasswordMgrÚparseÚurlparser!   Zadd_passwordr"   r-   r.   r   Z_get_rc_fileÚlowerZ_store_pypircr(   )
r   Úchoicer   r    ÚchoicesÚauthÚhostr/   r0   Údatar   r   r   r   c   s¶   úôÿ
ÿ
ÿÿÿÿÿýð
ÿÿ

ÿø
	
ÿ




ÿúzregister.send_metadatac                 C   sÒ   | j j}i d|“dd“d| ¡ “d| ¡ “d| ¡ “d| ¡ “d| ¡ “d	| ¡ “d
| ¡ “d| 	¡ “d| 
¡ “d| ¡ “d| ¡ “d| ¡ “d| ¡ “d| ¡ “d| ¡ “}|d sc|d sc|d rgd|d< |S )Nr:   Zmetadata_versionz1.0r<   ÚversionZsummaryZ	home_pageZauthorZauthor_emailÚlicenseÚdescriptionÚkeywordsÚplatformr   Zdownload_urlZprovidesZrequiresZ	obsoletesz1.1)r   ZmetadataÚget_nameZget_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_obsoletes)r   ÚactionÚmetarK   r   r   r   r.   Ý   sN   ÿþýüûúùø	÷
öõôóòðïîzregister.build_post_dataNc              
   C   sð  	 d|v r|   d|d | jf tj¡ d}d| }|d }t ¡ }| ¡ D ]?\}}t|ƒtg ƒtdƒfvr8|g}|D ])}t|ƒ}| 	|¡ | 	d| ¡ | 	d¡ | 	|¡ |rc|d	 d
krc| 	d¡ q:q%| 	|¡ | 	d¡ | 
¡  d¡}d| tt|ƒƒdœ}	tj | j||	¡}
tj tjj|d¡}d}z| |
¡}W n; tjjyÀ } z| jr°|j ¡ }|j|jf}W Y d }~n(d }~w tjjyÙ } zdt|ƒf}W Y d }~nd }~ww | jrâ|  |¡}d}| jröd d|df¡}|   |tj¡ |S )Nr<   zRegistering %s to %sz3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254z
--z--r   z*
Content-Disposition: form-data; name="%s"z

éÿÿÿÿúÚ
zutf-8z/multipart/form-data; boundary=%s; charset=utf-8)zContent-typezContent-length)Zpassword_mgrr3   iô  )r5   ZOKzK---------------------------------------------------------------------------)r?   r!   r   r@   ÚioÚStringIOÚitemsÚtypeÚstrÚwriteÚgetvalueÚencodeÚlenr%   r&   ZRequestZbuild_openerZHTTPBasicAuthHandlerÚopenÚerrorÚ	HTTPErrorZshow_responseÚfpÚreadr/   ÚmsgÚURLErrorr)   Újoin)r   rK   rI   ÚboundaryZsep_boundaryZend_boundaryÚbodyÚkeyÚvalueZheadersZreqÚopenerr0   Úere   r   r   r   r-   ù   sj   ÿþ



€ù


þÿ
€€ÿ
zregister.post_to_serverr   )Ú__name__Ú
__module__Ú__qualname__rN   r   Zuser_optionsZboolean_optionsZsub_commandsr   r   r   r   r   r   r   r   r.   r-   r   r   r   r   r      s$    ý
zr   )rC   rW   Úurllib.parser%   Zurllib.requestÚwarningsr   Zdistutils.corer   Zdistutils.errorsZ	distutilsr   r   r   r   r   r   Ú<module>   s    