§
    ZQdÀ-  ã                   ór   — 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	 ddl
T ddlmZ  G d„ de	¦  «        ZdS )	zhdistutils.command.register

Implements the Distutils 'register' command (register with the repository).
é    N)Úwarn)ÚPyPIRCCommand)Ú*)Úlogc                   óŒ   — e Zd ZdZej        ddgz   Zej        g d¢z   Zdd„ fgZd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Z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                 ó   — dS )NT© ©Úselfs    ú1/usr/lib/python3.11/distutils/command/register.pyú<lambda>zregister.<lambda>   s   € ¨4€ ó    c                 óJ   — t          j        | ¦  «         d| _        d| _        d S )Nr   )r   Úinitialize_optionsÚlist_classifiersr
   r   s    r   r   zregister.initialize_options   s&   € ÝÔ(¨Ñ.Ô.Ð.Ø !ˆÔØˆŒˆˆr   c                 ód   — t          j        | ¦  «         d| j        fddœ}|| j        j        d<   d S )Nr   )r   é   )r
   Úrestructuredtextr   )r   Úfinalize_optionsr
   ÚdistributionÚcommand_options)r   Úcheck_optionss     r   r   zregister.finalize_options$   sB   € ÝÔ& tÑ,Ô,Ð,à$.°´Ð#<Ø-<ð>ð >ˆà5BˆÔÔ)¨'Ñ2Ð2Ð2r   c                 óJ  — |                       ¦   «          |                      ¦   «          |                      ¦   «         D ]}|                      |¦  «         Œ| j        r|                      ¦   «          d S | j        r|                      ¦   «          d S |                      ¦   «          d S ©N)	r   Ú_set_configÚget_sub_commandsÚrun_commandÚdry_runÚverify_metadatar   ÚclassifiersÚsend_metadata)r   Úcmd_names     r   Úrunzregister.run+   s·   € Ø×ÒÑÔÐØ×ÒÑÔÐð ×-Ò-Ñ/Ô/ð 	'ð 	'ˆHØ×Ò˜XÑ&Ô&Ð&Ð&àŒ<ð 	!Ø× Ò Ñ"Ô"Ð"Ð"Ð"ØÔ"ð 	!Ø×ÒÑÔÐÐÐà×ÒÑ Ô Ð Ð Ð r   c                 óÚ   — t          dt          ¦  «         | j                             d¦  «        }|                     ¦   «          | j        |_        d|_        |                     ¦   «          dS )zDeprecated API.zddistutils.command.register.check_metadata is deprecated,               use the check command insteadr   r   N)r   ÚPendingDeprecationWarningr   Úget_command_objÚensure_finalizedr
   r   r(   )r   r   s     r   Úcheck_metadatazregister.check_metadata:   si   € åð -Ý.Gñ	Iô 	Ið 	IàÔ!×1Ò1°'Ñ:Ô:ˆØ×ÒÑ Ô Ð Ø”{ˆŒØ!"ˆÔØ�	Š	‰Œˆˆˆr   c                 ó>  — |                       ¦   «         }|i k    r=|d         | _        |d         | _        |d         | _        |d         | _        d| _        d	S | j        d| j        fvrt          d| j        z  ¦  «        ‚| j        dk    r| j        | _        d| _        d	S )
z: Reads the configuration file and set attributes.
        ÚusernameÚpasswordÚ
repositoryÚrealmTÚpypiz%s not found in .pypircFN)Ú_read_pypircr/   r0   r1   r2   Ú
has_configÚDEFAULT_REPOSITORYÚ
ValueError)r   Úconfigs     r   r    zregister._set_configD   s¥   € ð ×"Ò"Ñ$Ô$ˆØ�RŠ<ˆ<Ø" :Ô.ˆDŒMØ" :Ô.ˆDŒMØ$ \Ô2ˆDŒOØ œˆDŒJØ"ˆDŒOˆOˆOàŒ v¨tÔ/FÐ&GÐGÐGÝ Ð!:¸T¼_Ñ!LÑMÔMÐMØŒ &Ò(Ð(Ø"&Ô"9�”Ø#ˆDŒOˆOˆOr   c                 ó¦   — | j         dz   }t          j                             |¦  «        }t	          j        |                      |¦  «        ¦  «         dS )z8 Fetch the list of classifiers from the server.
        z?:action=list_classifiersN)r1   ÚurllibÚrequestÚurlopenr   ÚinfoÚ_read_pypi_response)r   ÚurlÚresponses      r   r%   zregister.classifiersU   sJ   € ð ŒoÐ9Ñ9ˆÝ”>×)Ò)¨#Ñ.Ô.ˆÝŒ�×)Ò)¨(Ñ3Ô3Ñ4Ô4Ð4Ð4Ð4r   c                 óˆ   — |                       |                      d¦  «        ¦  «        \  }}t          j        d||¦  «         dS )zF Send the metadata to the package index server to be checked.
        r   úServer response (%s): %sN)Úpost_to_serverÚbuild_post_datar   r=   )r   ÚcodeÚresults      r   r$   zregister.verify_metadata\   sD   € ð ×,Ò,¨T×-AÒ-AÀ(Ñ-KÔ-KÑLÔL‰ˆˆvÝŒÐ+¨T°6Ñ:Ô:Ð:Ð:Ð:r   c                 ó$  — | j         rd}| j        }| j        }nd}dx}}d                     ¦   «         }||vrJ|                      dt
          j        ¦  «         t          ¦   «         }|sd}n||vrt          d¦  «         ||v°J|dk    �rÇ|st          d¦  «        }|¯|st          j	        d¦  «        }|¯t          j                             ¦   «         }t          j                             | j        ¦  «        d	         }|                     | j        |||¦  «         |                      |                      d
¦  «        |¦  «        \  }}|                      d|›d|›�t
          j        ¦  «         |dk    rÛ| j         r|| j        _        dS |                      dt
          j        ¦  «         |                      d|                      ¦   «         z  t
          j        ¦  «         d}|                     ¦   «         dvr)t          d¦  «        }|sd}|                     ¦   «         dv°)|                     ¦   «         dk    r|                      ||¦  «         dS dS dS |dk    �rYddi}	dx|	d<   x|	d<   |	d<   d|	d<   |	d         st          d¦  «        |	d<   |	d         ¯|	d         |	d         k    r‹|	d         st          j	        d¦  «        |	d<   |	d         ¯|	d         st          j	        d¦  «        |	d<   |	d         ¯|	d         |	d         k    rd|	d<   d|	d<   t          d¦  «         |	d         |	d         k    °‹|	d         st          d¦  «        |	d<   |	d         ¯|                      |	¦  «        \  }}|dk    rt          j        d ||¦  «         dS t          j        d!¦  «         t          j        d"¦  «         dS |d#k    r[dd$i}	d|	d<   |	d         st          d%¦  «        |	d<   |	d         ¯|                      |	¦  «        \  }}t          j        d ||¦  «         dS dS )&a_   Send the metadata to the package index server.

            Well, do the following:
            1. figure who the user is, and then
            2. send the data as a Basic auth'ed POST.

            First we try to read the username/password from $HOME/.pypirc,
            which is a ConfigParser-formatted file with a section
            [distutils] containing username and password entries (both
            in clear text). Eg:

                [distutils]
                index-servers =
                    pypi

                [pypi]
                username: fred
                password: sekrit

            Otherwise, to figure who the user is, we offer the user three
            choices:

             1. use existing login,
             2. register as a new user, or
             3. set the password to a random string and email the user.

        Ú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   ÚsubmitzServer response (z): éÈ   zAI can store your PyPI login so future submissions will be faster.z (the login will be stored in %s)ÚXÚynzSave your login (y/N)?ÚnÚyÚ2ú:actionÚuserÚnamer0   ÚemailNÚconfirmz
 Confirm: z!Password and confirm don't match!z
   EMail: rB   z"You will receive an email shortly.z7Follow the instructions in it to complete registration.Ú3Úpassword_resetzYour email address: )r5   r/   r0   ÚsplitÚannouncer   ÚINFOÚinputÚprintÚgetpassr:   r;   ÚHTTPPasswordMgrÚparseÚurlparser1   Úadd_passwordr2   rC   rD   r   Ú_get_rc_fileÚlowerÚ_store_pypircr=   )
r   Úchoicer/   r0   ÚchoicesÚauthÚhostrE   rF   Údatas
             r   r&   zregister.send_metadatac   sí  € ð< Œ?ð 	%ØˆFØ”}ˆHØ”}ˆHˆHàˆFØ"$Ð$ˆH�xð —/’/Ñ#Ô#ˆØ˜GÐ#Ð#Ø�MŠMð  õ "%¤ñ+ô +ð +õ ‘W”WˆFØð @Ø��Ø˜wÐ&Ð&ÝÐ>Ñ?Ô?Ð?ð ˜GÐ#Ð#ð �SŠ=‰=àð /Ý  Ñ.Ô.�ð ð /àð 9Ý"œ?¨<Ñ8Ô8�ð ð 9õ ”>×1Ò1Ñ3Ô3ˆDÝ”<×(Ò(¨¬Ñ9Ô9¸!Ô<ˆDØ×Ò˜dœj¨$°¸(ÑCÔCÐCà×.Ò.¨t×/CÒ/CÀHÑ/MÔ/MØñô ‰LˆD�&à�MŠMˆM¸¸¸¸f¸fÐEÝœ(ñ$ô $ð $ð �sŠ{ˆ{Ø”?ð ?ð 2:�DÔ%Ô.Ð.Ð.à—M’Mð $AÝCFÄ8ñMô Mð Mà—M’MÐ"DØ"&×"3Ò"3Ñ"5Ô"5ñ#6Ý7:´xñAô Að Aà �FØ Ÿ,š,™.œ.°Ð4Ð4Ý!&Ð'?Ñ!@Ô!@˜Ø%ð )Ø%(˜Fð !Ÿ,š,™.œ.°Ð4Ð4ð —|’|‘~”~¨Ò,Ð,Ø×*Ò*¨8°XÑ>Ô>Ð>Ð>Ð>ð! ˆ{ð -Ð,ð �sŠ]‰]Ø˜vÐ&ˆDØ>@Ð@ˆD�‰LÐ@˜4 
Ñ+¨d°7©mØ"ˆD�‰OØ˜6”lð 3Ý$ \Ñ2Ô2��V‘ð ˜6”lð 3à�zÔ" d¨9¤oÒ5Ð5Ø˜zÔ*ð EÝ'.¤°|Ñ'DÔ'D�D˜Ñ$ð ˜zÔ*ð Eà˜yœ/ð DÝ&-¤o°lÑ&CÔ&C�D˜‘Oð ˜yœ/ð Dà˜
Ô# t¨I¤Ò6Ð6Ø')�D˜Ñ$Ø&*�D˜‘OÝÐ=Ñ>Ô>Ð>ð �zÔ" d¨9¤oÒ5Ð5ð ˜7”mð 4Ý % lÑ 3Ô 3��W‘ð ˜7”mð 4à×.Ò.¨tÑ4Ô4‰LˆD�&Ø�sŠ{ˆ{Ý”Ð3°T¸6ÑBÔBÐBÐBÐBå”Ð=Ñ>Ô>Ð>Ý”ð 3ñ 5ô 5ð 5ð 5ð 5à�sŠ]ˆ]ØÐ/Ð0ˆDØˆD�‰MØ˜7”mð >Ý %Ð&<Ñ =Ô =��W‘ð ˜7”mð >à×.Ò.¨tÑ4Ô4‰LˆD�&ÝŒHÐ/°°vÑ>Ô>Ð>Ð>Ð>ð ˆ]r   c                 óÞ  — | j         j        }i d|“dd“d|                     ¦   «         “d|                     ¦   «         “d|                     ¦   «         “d|                     ¦   «         “d|                     ¦   «         “d	|                     ¦   «         “d
|                     ¦   «         “d| 	                    ¦   «         “d| 
                    ¦   «         “d|                     ¦   «         “d|                     ¦   «         “d|                     ¦   «         “d|                     ¦   «         “d|                     ¦   «         “d|                     ¦   «         “}|d         s|d         s|d         rd|d<   |S )NrR   Úmetadata_versionz1.0rT   ÚversionÚsummaryÚ	home_pageÚauthorÚauthor_emailÚlicenseÚdescriptionÚkeywordsÚplatformr%   Údownload_urlÚprovidesÚrequiresÚ	obsoletesz1.1)r   ÚmetadataÚget_nameÚget_versionÚ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)r   ÚactionÚmetarj   s       r   rD   zregister.build_post_dataÝ   sÁ  € ð Ô Ô)ˆð
Ø�vð
à ð
ð �D—M’M‘O”Oð
ð �t×'Ò'Ñ)Ô)ð	
ð
 �t×+Ò+Ñ-Ô-ð
ð ˜Ÿš™œð
ð �d×&Ò&Ñ(Ô(ð
ð ˜D×2Ò2Ñ4Ô4ð
ð �t×'Ò'Ñ)Ô)ð
ð ˜4×4Ò4Ñ6Ô6ð
ð ˜×)Ò)Ñ+Ô+ð
ð ˜×*Ò*Ñ,Ô,ð
ð ˜4×/Ò/Ñ1Ô1ð
ð ˜D×1Ò1Ñ3Ô3ð
ð  ˜×)Ò)Ñ+Ô+ð!
ð" ˜×)Ò)Ñ+Ô+ð#
ð$ ˜×+Ò+Ñ-Ô-ð%
ˆð( �
Ôð 	-˜t JÔ/ð 	-°4¸Ô3Dð 	-Ø',ˆDÐ#Ñ$Øˆr   Nc                 óî  — d|v r1|                       d|d         ›d| j        ›�t          j        ¦  «         d}d|z   }|dz   }t	          j        ¦   «         }|                     ¦   «         D ]Ã\  }}t          |¦  «        t          g ¦  «        t          d¦  «        fvr|g}|D ]‹}t          |¦  «        }| 	                    |¦  «         | 	                    d|z  ¦  «         | 	                    d	¦  «         | 	                    |¦  «         |r!|d
         dk    r| 	                    d¦  «         ŒŒŒÄ| 	                    |¦  «         | 	                    d¦  «         | 
                    ¦   «                              d¦  «        }d|z  t          t          |¦  «        ¦  «        dœ}	t          j                             | j        ||	¦  «        }
t          j                             t          j                             |¬¦  «        ¦  «        }d}	 |                     |
¦  «        }| j        r|                      |¦  «        }d}n|# t          j        j        $ r8}| j        r|j                             ¦   «         }|j        |j        f}Y d}~n5d}~wt          j        j        $ r}dt          |¦  «        f}Y d}~nd}~ww xY w| j        r8d                     d|df¦  «        }|                       |t          j        ¦  «         |S )zC Post a query to the server, and return a string response.
        rT   zRegistering z to z3--------------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)Úpassword_mgrrJ   )rL   ÚOKNiô  zK---------------------------------------------------------------------------)rZ   r1   r   r[   ÚioÚStringIOÚitemsÚtypeÚstrÚwriteÚgetvalueÚencodeÚlenr:   r;   ÚRequestÚbuild_openerÚHTTPBasicAuthHandlerÚopenÚshow_responser>   ÚerrorÚ	HTTPErrorÚfpÚreadrE   ÚmsgÚURLErrorÚjoin)r   rj   rh   ÚboundaryÚsep_boundaryÚend_boundaryÚbodyÚkeyÚvalueÚheadersÚreqÚopenerrF   Úer¤   s                  r   rC   zregister.post_to_serverù   s  € ð �Tˆ>ˆ>Ø�MŠMˆM°D¸´L°L°LØ48´O°OðEå47´Hñ>ô >ð >ð IˆØ Ñ(ˆØ# dÑ*ˆÝŒ{‰}Œ}ˆØŸ*š*™,œ,ð 	%ð 	%‰JˆC�å�E‰{Œ{¥4¨¡8¤8­T°2©Z¬ZÐ"8Ð8Ð8Ø˜�Øð %ð %�Ý˜E™
œ
�Ø—
’
˜<Ñ(Ô(Ð(Ø—
’
ÐHÈÑLÑMÔMÐMØ—
’
˜6Ñ"Ô"Ð"Ø—
’
˜5Ñ!Ô!Ð!Øð %˜U 2œY¨$Ò.Ð.Ø—J’J˜tÑ$Ô$Ð$øð%ð 	�
Š
�<Ñ Ô Ð Ø�
Š
�4ÑÔÐØ�}Š}‰Œ×%Ò% gÑ.Ô.ˆð NÈhÑVÝ!¥# d¡)¤)™nœnð
ð 
ˆõ Œn×$Ò$ T¤_°d¸GÑDÔDˆõ ”×,Ò,ÝŒN×/Ò/¸TÐ/ÑBÔBñ
ô 
ˆð ˆð	Ø—[’[ Ñ%Ô%ˆFð Ô!ð 8Ø×/Ò/°Ñ7Ô7�ØˆFˆFøõ Œ|Ô%ð 	#ð 	#ð 	#ØÔ!ð #Ø”t—y’y‘{”{�Ø”V˜QœU�]ˆFˆFˆFˆFˆFˆFøøøøÝŒ|Ô$ð 	!ð 	!ð 	!Ø�#˜a™&œ&�[ˆFˆFˆFˆFˆFˆFøøøøð	!øøøð Ôð 	)Ø—)’)˜X t¨XÐ6Ñ7Ô7ˆCØ�MŠM˜#�sœxÑ(Ô(Ð(Øˆs$   ÈH: È:J3É.JÊJ3ÊJ.Ê.J3r   )Ú__name__Ú
__module__Ú__qualname__rs   r   Úuser_optionsÚboolean_optionsÚsub_commandsr   r   r(   r-   r    r%   r$   r&   rD   rC   r   r   r   r   r      s	  € € € € € àL€KØ Ô-ð	-ð	Oð1
ñ 
€Lð $Ô3ð 70ð 70ð 70ñ 0€Oð Ð/Ð/Ð0Ð1€Lðð ð ð
Cð Cð Cð!ð !ð !ðð ð ð$ð $ð $ð"5ð 5ð 5ð;ð ;ð ;ðx?ð x?ð x?ðtð ð ð87ð 7ð 7ð 7ð 7ð 7r   r   )Ú__doc__r^   r’   Úurllib.parser:   Úurllib.requestÚwarningsr   Údistutils.corer   Údistutils.errorsÚ	distutilsr   r   r   r   r   ú<module>r¾      s»   ððð ð €€€Ø 	€	€	€	Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð à (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð ð_ð _ð _ð _ð _ˆ}ñ _ô _ð _ð _ð _r   