Uname: Linux web3.us.cloudlogin.co 5.10.226-xeon-hst #2 SMP Fri Sep 13 12:28:44 UTC 2024 x86_64
Software: Apache
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.210.96.117
Your Ip: 3.142.135.53
User: edustar (269686) | Group: tty (888)
Safe Mode: OFF
Disable Function:
NONE

name : index.cpython-312.pyc
�


f=Q����ddlZddlZddlZddlZddlZddlZ	ddlmZddl
mZddlm
Z
mZmZmZmZmZddlmZmZej,e�ZdZdZGd	�d
e�Zy#e$r	ddl	mZY�MwxYw)�N)�Thread�)�DistlibException)�HTTPBasicAuthHandler�Request�HTTPPasswordMgr�urlparse�build_opener�string_types)�zip_dir�ServerProxyzhttps://pypi.org/pypi�pypic��eZdZdZdZdd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zdd�Zdd�Z
dd
�Z		dd�Zd�Z	dd�Z	dd�Zdd�Zd�Zd�Zdd�Zy)�PackageIndexzc
    This class represents a package index compatible with PyPI, the Python
    Package Index.
    s.----------ThIs_Is_tHe_distlib_index_bouNdaRY_$Nc���|xst|_|j�t|j�\}}}}}}|s|s|s|dvrt	d|jz��d|_d|_d|_d|_ttjd�5}dD]+}		tj|	dg||��}
|
dk(r	|	|_n�-ddd�y#t$rY�BwxYw#1swYyxYw)	z�
        Initialise an instance.

        :param url: The URL of the index. If not specified, the URL for PyPI is
                    used.
        )�http�httpszinvalid repository: %sN�w)�gpg�gpg2z	--version��stdout�stderrr)�
DEFAULT_INDEX�url�read_configurationr	r�password_handler�ssl_verifierr�gpg_home�open�os�devnull�
subprocess�
check_call�OSError)�selfr�scheme�netloc�path�params�query�frag�sink�s�rcs           �D/usr/local/python-3.12/lib/python3.12/site-packages/distlib/index.py�__init__zPackageIndex.__init__%s����'�-������!�4<�T�X�X�4F�1����f�e�T��U�d�f�4E�&E�"�#;�d�h�h�#F�G�G� $��� ��������
�
�"�*�*�c�
"�	�d�%�
���#�.�.��;�/?��6:�<�B��Q�w�#$�����	
�	�	�������	�	�s0�C�&C�C�	C�C�C�C�C&c��ddlm}|�S)zs
        Get the distutils command for interacting with PyPI configurations.
        :return: the command.
        r)�_get_pypirc_command)�utilr3)r&�cmds  r0r3z PackageIndex._get_pypirc_commandBs��
	5��u��c���ddlm}||�}|jd�|_|jd�|_|jdd�|_|jd|j�|_y)	z�
        Read the PyPI access configuration as supported by distutils. This populates
        ``username``, ``password``, ``realm`` and ``url`` attributes from the
        configuration.
        r)�_load_pypirc�username�password�realmr�
repositoryN)r4r8�getr9r:r;r)r&r8�cfgs   r0rzPackageIndex.read_configurationJsY��	'��4� �����
�+��
����
�+��
��W�W�W�f�-��
��7�7�<����2��r6c�@�|j�ddlm}||�y)z�
        Save the PyPI access configuration. You must have set ``username`` and
        ``password`` attributes before calling this method.
        r)�
_store_pypircN)�check_credentialsr4r@)r&r@s  r0�save_configurationzPackageIndex.save_configurationWs��
	
��� �'��d�r6c��|j�|j�td��t�}t	|j
�\}}}}}}|j
|j||j|j�t|�|_	y)zp
        Check that ``username`` and ``password`` have been set, and raise an
        exception if not.
        Nz!username and password must be set)
r9r:rrr	r�add_passwordr;rr)r&�pm�_r(s    r0rAzPackageIndex.check_credentials`sq��
�=�=� �D�M�M�$9�"�#F�G�G�
�
�� (���� 2���6�1�a��A�
����
�
�F�D�M�M�4�=�=�I� 4�R� 8��r6c�:�|j�|j�|j�}d|d<|j|j	�g�}|j|�d|d<|j|j	�g�}|j|�S)aq
        Register a distribution on PyPI, using the provided metadata.

        :param metadata: A :class:`Metadata` instance defining at least a name
                         and version number for the distribution to be
                         registered.
        :return: The HTTP response received from PyPI upon submission of the
                request.
        �verify�:action�submit)rA�validate�todict�encode_request�items�send_request)r&�metadata�d�requests    r0�registerzPackageIndex.registerls���	
��� ������O�O�����)���%�%�a�g�g�i��4�����'�"���)���%�%�a�g�g�i��4��� � ��)�)r6c���	|j�}|snK|jd�j�}|j|�tj|�d|����^|j
�y)ar
        Thread runner for reading lines of from a subprocess into a buffer.

        :param name: The logical name of the stream (used for logging only).
        :param stream: The stream to read from. This will typically a pipe
                       connected to the output stream of a subprocess.
        :param outbuf: The list to append the read lines to.
        �utf-8z: N)�readline�decode�rstrip�append�logger�debug�close)r&�name�stream�outbufr.s     r0�_readerzPackageIndex._reader�s]������!�A�������!�(�(�*�A��M�M�!���L�L�T�1�-�.�
�	���r6c	��|jdddg}|�|j}|r|jd|g�|�|jgd��tj�}t
jj|t
jj|�dz�}|jddd	|d
||g�tjddj|��||fS)
a�
        Return a suitable command for signing a file.

        :param filename: The pathname to the file to be signed.
        :param signer: The identifier of the signer of the file.
        :param sign_password: The passphrase for the signer's
                              private key used for signing.
        :param keystore: The path to a directory which contains the keys
                         used in verification. If not specified, the
                         instance's ``gpg_home`` attribute is used instead.
        :return: The signing command as a list suitable to be
                 passed to :class:`subprocess.Popen`.
        �--status-fd�2�--no-tty�	--homedir)z--batchz--passphrase-fd�0z.ascz
--detach-signz--armorz--local-userz--output�invoking: %s� )rr�extend�tempfile�mkdtempr!r)�join�basenamerZr[)r&�filename�signer�
sign_password�keystorer5�td�sfs        r0�get_sign_commandzPackageIndex.get_sign_command�s����x�x���Z�8�����}�}�H���J�J��X�.�/��$��J�J�:�;�
�
�
�
��
�W�W�\�\�"�b�g�g�.�.�x�8�6�A�
B���
�
�O�Y���J��H�6�	7����^�S�X�X�c�]�3��B�w�r6c�^�tjtjd�}|�tj|d<g}g}tj|fi|��}t|jd|j
|f��}|j
�t|jd|j|f��}|j
�|�5|jj|�|jj�|j�|j�|j�|j||fS)a�
        Run a command in a child process , passing it any input data specified.

        :param cmd: The command to run.
        :param input_data: If specified, this must be a byte string containing
                           data to be sent to the child process.
        :return: A tuple consisting of the subprocess' exit code, a list of
                 lines read from the subprocess' ``stdout``, and a list of
                 lines read from the subprocess' ``stderr``.
        r�stdinr)�target�argsr)r#�PIPE�Popenrr`r�startrrv�writer\�waitrl�
returncode)	r&r5�
input_data�kwargsrr�p�t1�t2s	         r0�run_commandzPackageIndex.run_command�s���!�o�o� �o�o�
���!�(�o�o�F�7�O��������S�+�F�+���4�<�<�x����6�.J�
K��
���
�
�4�<�<�x����6�.J�
K��
���
��!�
�G�G�M�M�*�%�
�G�G�M�M�O�	����
���	�
���	��|�|�V�V�+�+r6c��|j||||�\}}|j||jd��\}}}	|dk7rtd|z��|S)aR
        Sign a file.

        :param filename: The pathname to the file to be signed.
        :param signer: The identifier of the signer of the file.
        :param sign_password: The passphrase for the signer's
                              private key used for signing.
        :param keystore: The path to a directory which contains the keys
                         used in signing. If not specified, the instance's
                         ``gpg_home`` attribute is used instead.
        :return: The absolute pathname of the file where the signature is
                 stored.
        rUrz&sign command failed with error code %s)rtr��encoder)
r&rnrorprqr5�sig_filer/rrs
          r0�	sign_filezPackageIndex.sign_file�so���-�-�h��
�.6�8�
��X�!�-�-�c�.;�.B�.B�7�.K�M���F�F�
��7�"�$-�/1�$2�3�
3��r6c	�$�|j�tjj|�st	d|z��|j�|j
�}d}	|r6|jstjd�n|j||||�}	t|d�5}
|
j�}ddd�tj�j�}tj |�j�}
|j#dd||||
d��dtjj%|�|fg}|	r�t|	d�5}
|
j�}ddd�|j'd	tjj%|	�f�t)j*tjj-|	��|j/|j1�|�}|j3|�S#1swY��FxYw#1swY��xYw)
a�
        Upload a release file to the index.

        :param metadata: A :class:`Metadata` instance defining at least a name
                         and version number for the file to be uploaded.
        :param filename: The pathname of the file to be uploaded.
        :param signer: The identifier of the signer of the file.
        :param sign_password: The passphrase for the signer's
                              private key used for signing.
        :param filetype: The type of the file being uploaded. This is the
                        distutils command which produced that file, e.g.
                        ``sdist`` or ``bdist_wheel``.
        :param pyversion: The version of Python which the release relates
                          to. For code compatible with any Python, this would
                          be ``source``, otherwise it would be e.g. ``3.2``.
        :param keystore: The path to a directory which contains the keys
                         used in signing. If not specified, the instance's
                         ``gpg_home`` attribute is used instead.
        :return: The HTTP response received from PyPI upon submission of the
                request.
        z
not found: %sNz)no signing program available - not signed�rb�file_upload�1)rI�protocol_version�filetype�	pyversion�
md5_digest�
sha256_digest�content�
gpg_signature)rAr!r)�existsrrKrLrrZ�warningr�r �read�hashlib�md5�	hexdigest�sha256�updatermrY�shutil�rmtree�dirnamerMrNrO)r&rPrnrorpr�r�rqrQr��f�	file_datar�r��files�sig_datarRs                 r0�upload_filezPackageIndex.upload_file�s���.	
��� ��w�w�~�~�h�'�"�?�X�#=�>�>������O�O�������8�8����J�K��>�>�(�F�M�*2�4��
�(�D�
!�	!�Q�����I�	!��[�[��+�5�5�7�
����y�1�;�;�=�
�	���$� #� �"�$�*�

�	��R�W�W�-�-�h�7��C�D����h��%�
$���6�6�8��
$��L�L�/�2�7�7�+;�+;�H�+E�!�#�
$��M�M�"�'�'�/�/�(�3�4��%�%�a�g�g�i��7��� � ��)�)�)	!�	!��
$�
$�s�$G9�H�9H�Hc��|j�tjj|�st	d|z��tjj|d�}tjj
|�st	d|z��|j�|j|j}}t|�j�}dd|fd|fg}d||fg}|j||�}	|j|	�S)a2
        Upload documentation to the index.

        :param metadata: A :class:`Metadata` instance defining at least a name
                         and version number for the documentation to be
                         uploaded.
        :param doc_dir: The pathname of the directory which contains the
                        documentation. This should be the directory that
                        contains the ``index.html`` for the documentation.
        :return: The HTTP response received from PyPI upon submission of the
                request.
        znot a directory: %rz
index.htmlz
not found: %r)rI�
doc_uploadr]�versionr�)rAr!r)�isdirrrlr�rKr]r�r�getvaluerMrO)
r&rP�doc_dir�fnr]r��zip_data�fieldsr�rRs
          r0�upload_documentationz!PackageIndex.upload_documentation!s���	
��� ��w�w�}�}�W�%�"�#8�7�#B�C�C�
�W�W�\�\�'�<�
0���w�w�~�~�b�!�"�?�R�#7�8�8����� �
�
�x�'7�'7�g���7�#�,�,�.��+��4�.�9�g�"6�8���T�8�,�-���%�%�f�e�4��� � ��)�)r6c���|jdddg}|�|j}|r|jd|g�|jd||g�tj	ddj|��|S)a|
        Return a suitable command for verifying a file.

        :param signature_filename: The pathname to the file containing the
                                   signature.
        :param data_filename: The pathname to the file containing the
                              signed data.
        :param keystore: The path to a directory which contains the keys
                         used in verification. If not specified, the
                         instance's ``gpg_home`` attribute is used instead.
        :return: The verifying command as a list suitable to be
                 passed to :class:`subprocess.Popen`.
        rbrcrdrez--verifyrgrh)rrrirZr[rl)r&�signature_filename�
data_filenamerqr5s     r0�get_verify_commandzPackageIndex.get_verify_command=sh���x�x���Z�8�����}�}�H���J�J��X�.�/��
�
�J� 2�M�B�C����^�S�X�X�c�]�3��
r6c��|jstd��|j|||�}|j|�\}}}|dvrtd|z��|dk(S)a6
        Verify a signature for a file.

        :param signature_filename: The pathname to the file containing the
                                   signature.
        :param data_filename: The pathname to the file containing the
                              signed data.
        :param keystore: The path to a directory which contains the keys
                         used in verification. If not specified, the
                         instance's ``gpg_home`` attribute is used instead.
        :return: True if the signature was verified, else False.
        z0verification unavailable because gpg unavailable)rrz(verify command failed with error code %sr)rrr�r�)r&r�r�rqr5r/rrs        r0�verify_signaturezPackageIndex.verify_signatureUso���x�x�"�$1�2�
2��%�%�&8�-�&.�0��!�-�-�c�2���F�F�
�V��"�#M�PR�#R�S�S��Q�w�r6c	�n�|�d}tjd�nKt|ttf�r|\}}nd}tt|��}tjd|z�t|d�5}|jt|��}	|j�}	d}
d}d}d}
d	|	vrt|	d
�}|r
||
|
|�	|j|
�}|snD|t|�z
}|j|�|r|j|�|
dz
}
|r
||
|
|��X	|j!�	ddd�dk\r|krt#d||fz��|rB|j%�}||k7rt#�d
|�d|�d|����tjd|�yy#|j!�wxYw#1swY�}xYw)a
        This is a convenience method for downloading a file from an URL.
        Normally, this will be a file from the index, though currently
        no check is made for this (i.e. a file can be downloaded from
        anywhere).

        The method is just like the :func:`urlretrieve` function in the
        standard library, except that it allows digest computation to be
        done during download and checking that the downloaded data
        matched any expected value.

        :param url: The URL of the file to be downloaded (assumed to be
                    available via an HTTP GET request).
        :param destfile: The pathname where the downloaded file is to be
                         saved.
        :param digest: If specified, this must be a (hasher, value)
                       tuple, where hasher is the algorithm used (e.g.
                       ``'md5'``) and ``value`` is the expected value.
        :param reporthook: The same as for :func:`urlretrieve` in the
                           standard library.
        NzNo digest specifiedr�zDigest specified: %s�wbi ���rzcontent-lengthzContent-Lengthrz1retrieval incomplete: got only %d out of %d bytesz digest mismatch for z: expected z, got zDigest verified: %s)rZr[�
isinstance�list�tuple�getattrr�r rOr�info�intr��lenr|r�r\rr�)r&r�destfile�digest�
reporthook�digester�hasher�dfp�sfp�headers�	blocksize�sizer��blocknum�block�actuals                r0�
download_filezPackageIndex.download_filems���,�>��H��L�L�.�/��&�4��-�0�!'������/�w�w��/�1�H��L�L�/�&�8�9��(�D�
!�	�S��#�#�G�C�L�1�C�
��(�(�*�� �	�������#�w�.��w�'7�8�9�D���x��D�9���H�H�Y�/�E� ���C��J�&�D��I�I�e�$�� ����.���M�H�!�"�8�Y��=����	�	��5	�:�1�9����"�C���,�� �
 ���'�'�)�F����&�7=�x�7=�v�(G�H�H�
�L�L�.��7�
���	�	���5	�	�s%�2F+�BF�F+�F(�(F+�+F4c���g}|jr|j|j�|jr|j|j�t|�}|j	|�S)z�
        Send a standard library :class:`Request` to PyPI and return its
        response.

        :param req: The request to send.
        :return: The HTTP response from PyPI (a standard library HTTPResponse).
        )rrYrr
r )r&�req�handlers�openers    r0rOzPackageIndex.send_request�sX����� � ��O�O�D�1�1�2�����O�O�D�-�-�.��x�(���{�{�3��r6c
��g}|j}|D]^\}}t|ttf�s|g}|D];}|j	d|zd|zjd�d|jd�f��=�`|D]4\}}	}
|j	d|zd|�d|	�d�jd�d|
f��6|j	d|zdzdf�dj
|�}d	|z}|tt|��d
�}
t|j||
�S)a&
        Encode fields and files for posting to an HTTP server.

        :param fields: The fields to send as a list of (fieldname, value)
                       tuples.
        :param files: The files to send as a list of (fieldname, filename,
                      file_bytes) tuple.
        s--z)Content-Disposition: form-data; name="%s"rUr6z&Content-Disposition: form-data; name="z
"; filename="�"s
smultipart/form-data; boundary=)zContent-typezContent-length)�boundaryr�r�r�rir�rl�strr�rr)r&r�r��partsr��k�values�v�keyrn�value�body�ctr�s              r0rMzPackageIndex.encode_request�s.�����=�=���
	(�I�A�v��f�t�U�m�4� ����
(������H�$�@�����w����H�H�W�%�'�(�
(�	
	(�%*�	� �C��5��L�L��� ��x�!�"(�&��/����
�	�	���e�h�&��.��4�5��|�|�E�"��
.��
9���!�#�d�)�n�
���t�x�x��w�/�/r6c���t|t�rd|i}t|jd��}	|j	||xsd�|d��S#|d��wxYw)Nr]g@)�timeout�andr\)r�rr
r�search)r&�terms�operator�	rpc_proxys    r0r�zPackageIndex.search�s[���e�\�*��U�O�E�����#�6�	�	!��#�#�E�8�+<�u�=��I�g�� ���I�g�� �s�A�A)N)NN�sdist�sourceN)NN)�__name__�
__module__�__qualname__�__doc__r�r1r3rrBrArSr`rtr�r�r�r�r�r�r�rOrMr��r6r0rrs����
A�H��:�3��
9�*�(�$�8!,�F�.JN�CG�7*�r*�:%)��2#'��0K8�Z � )0�V!r6r)r��loggingr!r�r#rj�	threadingr�ImportError�dummy_threading�r�compatrrrr	r
rr4rr
�	getLoggerr�rZr�
DEFAULT_REALM�objectrr�r6r0�<module>r�sq����	�
���'� ��;�;�&�	��	�	�8�	$��'�
��
�_!�6�_!���'�&�'�s�A � A.�-A.
© 2025 GrazzMean