Viewing File: /opt/hc_python/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/base.cpython-312.pyc

�

T�*jLc���ddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZm
Z
mZmZddlmZmZmZmZmZddlmZddlmZmZddlmZmZddlmZdd	l m!Z!dd
l"m#Z#m$Z$ddl%m&Z&m'Z'm(Z(ddl)m*Z*dd
l+m,Z,ddl-m.Z.m/Z/ddl0m1Z1ddl2m3Z3ee4ejjfZ6ejne8�Z9Gd�de�Z:						d!d�Z;Gd�de�Z<Gd�de�Z=Gd�d�Z>Gd�de�Z?Gd�de?�Z@Gd�d e?�ZAy)"�)�annotationsN)�
Collection�	Container�Iterable�Iterator)�IO�Any�
NamedTuple�Protocol�Union)�Requirement)�InvalidSpecifier�SpecifierSet)�NormalizedName�canonicalize_name)�Version)�NoneMetadataError)�
site_packages�	user_site)�DIRECT_URL_METADATA_NAME�	DirectUrl�DirectUrlValidationError)�stdlib_pkgs)�egg_link_path_from_sys_path)�is_local�normalize_path)�url_to_path�)�msg_to_jsonc�B�eZdZedd��Zedd��Zedd��Zy)�BaseEntryPointc��t���N��NotImplementedError��selfs �J/opt/hc_python/lib/python3.12/site-packages/pip/_internal/metadata/base.py�namezBaseEntryPoint.name-���!�#�#�c��t��r#r$r&s r(�valuezBaseEntryPoint.value1r*r+c��t��r#r$r&s r(�groupzBaseEntryPoint.group5r*r+N��return�str)�__name__�
__module__�__qualname__�propertyr)r-r/�r+r(r!r!,s<��
�$��$��$��$��$��$r+r!c��|r-|ddk(r%|r|ddk(r|dz
}n|dd}|dd}|r	|ddk(r�%ttjg|�|����S)a�Convert a legacy installed-files.txt path into modern RECORD path.

    The legacy format stores paths relative to the info directory, while the
    modern format stores paths relative to the package root, e.g. the
    site-packages directory.

    :param entry: Path parts of the installed-files.txt entry.
    :param info: Path parts of the egg-info directory relative to package root.
    :returns: The converted entry.

    For best compatibility with symlinks, this does not use ``abspath()`` or
    ``Path.resolve()``, but tries to work with path parts:

    1. While ``entry`` starts with ``..``, remove the equal amounts of parts
       from ``info``; if ``info`` is empty, start appending ``..`` instead.
    2. Join the two directly.
    r�..���)r9Nr�r2�pathlib�Path)�entry�infos  r(�_convert_installed_files_pathr@:sm��*�E�!�H��$��t�B�x�4�'��G�O�D����9�D��a�b�	���E�!�H��$��w�|�|�*�T�*�E�*�+�+r+c�,�eZdZUded<ded<ded<y)�
RequiresEntryr2�requirement�extra�markerN)r3r4r5�__annotations__r7r+r(rBrBXs�����J��Kr+rBc��eZdZed.d��Ze								d/d��Zed0d��Zd1d�Zd1d�Ze	d2d��Z
e	d2d��Ze	d2d��Ze	d2d	��Z
e	d3d
��Ze	d3d��Ze	d3d��Ze	d3d
��Ze	d4d��Ze	d5d��Ze	d1d��Ze	d1d��Ze	d6d��Ze	d1d��Ze	d3d��Ze	d3d��Ze	d3d��Ze	d3d��Ze	d3d��Zd7d�Zd8d�Zd9d�Zd:d�Z d;d�Z!e"jFd;d��Z$e	d<d��Z%e	d2d ��Z&e	d1d!��Z'e	d=d"��Z(d>d?d#�Z)d@d$�Z*dAd%�Z+dBd&�Z,dBd'�Z-dBd(�Z.dCd)�Z/d@d*�Z0d@d+�Z1dDd,�Z2y-)E�BaseDistributionc��t��)z�Load the distribution from a metadata directory.

        :param directory: Path to a metadata directory, e.g. ``.dist-info``.
        r$)�cls�	directorys  r(�from_directoryzBaseDistribution.from_directory_�
��"�#�#r+c��t��)a�Load the distribution from the contents of a METADATA file.

        This is used to implement PEP 658 by generating a "shallow" dist object that can
        be used for resolution without downloading or building the actual dist yet.

        :param metadata_contents: The contents of a METADATA file.
        :param filename: File name for the dist with this metadata.
        :param project_name: Name of the project this dist represents.
        r$)rJ�metadata_contents�filename�project_names    r(�from_metadata_file_contentsz,BaseDistribution.from_metadata_file_contentsgs
�� "�#�#r+c��t��)aLoad the distribution from a given wheel.

        :param wheel: A concrete wheel definition.
        :param name: File name of the wheel.

        :raises InvalidWheel: Whenever loading of the wheel causes a
            :py:exc:`zipfile.BadZipFile` exception to be thrown.
        :raises UnsupportedWheel: If the wheel is a valid zip, but malformed
            internally.
        r$)rJ�wheelr)s   r(�
from_wheelzBaseDistribution.from_wheely�
��"�#�#r+c�T�|j�d|j�d|j�d�S)N� z (�))�raw_name�raw_version�locationr&s r(�__repr__zBaseDistribution.__repr__�s*���-�-���$�"2�"2�!3�2�d�m�m�_�A�F�Fr+c�8�|j�d|j��S)NrX)rZr[r&s r(�__str__zBaseDistribution.__str__�s���-�-���$�"2�"2�!3�4�4r+c��t��)a�Where the distribution is loaded from.

        A string value is not necessarily a filesystem path, since distributions
        can be loaded from other sources, e.g. arbitrary zip archives. ``None``
        means the distribution is created in-memory.

        Do not canonicalize this value with e.g. ``pathlib.Path.resolve()``. If
        this is a symbolic link, we want to preserve the relative path between
        it and files in the distribution.
        r$r&s r(r\zBaseDistribution.location�rVr+c��|j}|r&|j�rt|j�Syt	|j
�}|r|jSy)z�The project location for editable distributions.

        This is the directory where pyproject.toml or setup.py is located.
        None if the distribution is not installed in editable mode.
        N)�
direct_url�is_local_editabler�urlrrZr\)r'rb�
egg_link_paths   r(�editable_project_locationz*BaseDistribution.editable_project_location�sR���_�_�
���+�+�-�"�:�>�>�2�2��8��
�
�F�M���}�}�$�r+c��t��)a�The distribution's "installed" location.

        This should generally be a ``site-packages`` directory. This is
        usually ``dist.location``, except for legacy develop-installed packages,
        where ``dist.location`` is the source code location, and this is where
        the ``.egg-link`` file is.

        The returned location is normalized (in particular, with symlinks removed).
        r$r&s r(�installed_locationz#BaseDistribution.installed_location�s
��"�#�#r+c��t��)a/Location of the .[egg|dist]-info directory or file.

        Similarly to ``location``, a string value is not necessarily a
        filesystem path. ``None`` means the distribution is created in-memory.

        For a modern .dist-info installation on disk, this should be something
        like ``{location}/{raw_name}-{version}.dist-info``.

        Do not canonicalize this value with e.g. ``pathlib.Path.resolve()``. If
        this is a symbolic link, we want to preserve the relative path between
        it and other files in the distribution.
        r$r&s r(�
info_locationzBaseDistribution.info_location�s
��"�#�#r+c�f�|j}|sytj|�j�S)aWhether this distribution is installed with legacy distutils format.

        A distribution installed with "raw" distutils not patched by setuptools
        uses one single file at ``info_location`` to store metadata. We need to
        treat this specially on uninstallation.
        F)rjr<r=�is_file�r'rjs  r(�installed_by_distutilsz'BaseDistribution.installed_by_distutils�s-���*�*�
����|�|�M�*�2�2�4�4r+c�d�|j}|sytj|�jdk(S)z�Whether this distribution is installed as an egg.

        This usually indicates the distribution was installed by (older versions
        of) easy_install.
        Fz.egg)r\r<r=�suffix�r'r\s  r(�installed_as_eggz!BaseDistribution.installed_as_egg�s/���=�=�����|�|�H�%�,�,��6�6r+c��|j}|sy|jd�sytj|�j	�S)a�Whether this distribution is installed with the ``.egg-info`` format.

        This usually indicates the distribution was installed with setuptools
        with an old pip version or with ``single-version-externally-managed``.

        Note that this ensure the metadata store is a directory. distutils can
        also installs an ``.egg-info``, but as a file, not a directory. This
        property is *False* for that case. Also see ``installed_by_distutils``.
        Fz	.egg-info�rj�endswithr<r=�is_dirrms  r(�"installed_with_setuptools_egg_infoz3BaseDistribution.installed_with_setuptools_egg_info�s>���*�*�
����%�%�k�2���|�|�M�*�1�1�3�3r+c��|j}|sy|jd�sytj|�j	�S)aaWhether this distribution is installed with the "modern format".

        This indicates a "modern" installation, e.g. storing metadata in the
        ``.dist-info`` directory. This applies to installations made by
        setuptools (but through pip, not directly), or anything using the
        standardized build backend interface (PEP 517).
        Fz
.dist-infortrms  r(�installed_with_dist_infoz)BaseDistribution.installed_with_dist_info�s>���*�*�
����%�%�l�3���|�|�M�*�1�1�3�3r+c��t��r#r$r&s r(�canonical_namezBaseDistribution.canonical_namer*r+c��t��r#r$r&s r(�versionzBaseDistribution.versionr*r+c��t��r#r$r&s r(r[zBaseDistribution.raw_versionr*r+c�:�|jjdd�S)z�Convert a project name to its setuptools-compatible filename.

        This is a copy of ``pkg_resources.to_filename()`` for compatibility.
        �-�_)rZ�replacer&s r(�setuptools_filenamez$BaseDistribution.setuptools_filenames���}�}�$�$�S�#�.�.r+c��	|jt�}	tj|�S#t$rYywxYw#t
tjtf$r0}tjdt|j|�Yd}~yd}~wwxYw)z�Obtain a DirectUrl from this distribution.

        Returns None if the distribution has no `direct_url.json` metadata,
        or if `direct_url.json` is invalid.
        NzError parsing %s for %s: %s)�	read_textr�FileNotFoundErrorr�	from_json�UnicodeDecodeError�json�JSONDecodeErrorr�logger�warningr{)r'�content�es   r(rbzBaseDistribution.direct_urls���	��n�n�%=�>�G�
	��&�&�w�/�/��!�	��	��

�� � �$�
�	�

�N�N�-�(��#�#��	
���	�s!�-�<�	9�9�B
�&B�B
c��	|jd�}|j	�D]}|j�}|s�|cSy#tttf$rYywxYw)N�	INSTALLER�)r��OSError�
ValueErrorr�
splitlines�strip)r'�installer_text�line�cleaned_lines    r(�	installerzBaseDistribution.installer9s_��	�!�^�^�K�8�N�#�-�-�/�D��:�:�<�L��#�#�0���
��%6�7�	��	�s�?�A�Ac�$�|jd�S)N�	REQUESTED)rlr&s r(�	requestedzBaseDistribution.requestedEs���|�|�K�(�(r+c�,�t|j�Sr#)�boolrfr&s r(�editablezBaseDistribution.editableIs���D�2�2�3�3r+c�F�|j�yt|j�S)z|If distribution is installed in the current virtual environment.

        Always True if we're not in a virtualenv.
        F)rhrr&s r(�localzBaseDistribution.localMs$���"�"�*����/�/�0�0r+c�x�|j�t�y|jjtt��S�NF)rhr�
startswithrr&s r(�in_usersitezBaseDistribution.in_usersiteWs2���"�"�*�i�.?���&�&�1�1�.��2K�L�Lr+c�x�|j�t�y|jjtt��Sr�)rhrr�rr&s r(�in_site_packagesz!BaseDistribution.in_site_packages]s2���"�"�*�m�.C���&�&�1�1�.��2O�P�Pr+c��t��)z7Check whether an entry in the info directory is a file.r$�r'�paths  r(rlzBaseDistribution.is_filecr*r+c��t��)z�Find distutils 'scripts' entries metadata.

        If 'scripts' is supplied in ``setup.py``, distutils records those in the
        installed distribution's ``scripts`` directory, a file for each script.
        r$r&s r(�iter_distutils_script_namesz,BaseDistribution.iter_distutils_script_namesgrMr+c��t��)z�Read a file in the info directory.

        :raise FileNotFoundError: If ``path`` does not exist in the directory.
        :raise NoneMetadataError: If ``path`` exists in the info directory, but
            cannot be read.
        r$r�s  r(r�zBaseDistribution.read_texto�
��"�#�#r+c��t��r#r$r&s r(�iter_entry_pointsz"BaseDistribution.iter_entry_pointsx���!�#�#r+c��t��r#r$r&s r(�_metadata_implzBaseDistribution._metadata_impl{r�r+c�H�|j�}|j|�|S)aMetadata of distribution parsed from e.g. METADATA or PKG-INFO.

        This should return an empty message if the metadata file is unavailable.

        :raises NoneMetadataError: If the metadata file is available, but does
            not contain valid metadata.
        )r��_add_egg_info_requires)r'�metadatas  r(r�zBaseDistribution.metadata~s%���&�&�(���#�#�H�-��r+c�,�t|j�S)aPEP 566 compliant JSON-serializable representation of METADATA or PKG-INFO.

        This should return an empty dict if the metadata file is unavailable.

        :raises NoneMetadataError: If the metadata file is available, but does
            not contain valid metadata.
        )rr�r&s r(�
metadata_dictzBaseDistribution.metadata_dict�s���4�=�=�)�)r+c�8�|jjd�S)zDValue of "Metadata-Version:" in distribution metadata, if available.zMetadata-Version)r��getr&s r(�metadata_versionz!BaseDistribution.metadata_version�s���}�}� � �!3�4�4r+c�N�|jjd|j�S)z*Value of "Name:" in distribution metadata.�Name)r�r�r{r&s r(rZzBaseDistribution.raw_name�s!��
�}�}� � ���)<�)<�=�=r+c��|jjd�}|�
t�S	tt|��}|S#t$r7}d}t
j
||j|�t�cYd}~Sd}~wwxYw)z�Value of "Requires-Python:" in distribution metadata.

        If the key does not exist or contains an invalid value, an empty
        SpecifierSet should be returned.
        zRequires-PythonNz-Package %r has an invalid Requires-Python: %s)r�r�rr2rr�r�rZ)r'r-�specr��messages     r(�requires_pythonz BaseDistribution.requires_python�ss���
�
�!�!�"3�4���=��>�!�	"���E�
�+�D�
���	 �	"�E�G��N�N�7�D�M�M�1�5��>�!��	"�s�?�	A?�,A:�4A?�:A?c��t��)z�Dependencies of this distribution.

        For modern .dist-info distributions, this is the collection of
        "Requires-Dist:" entries in distribution metadata.
        r$)r'�extrass  r(�iter_dependenciesz"BaseDistribution.iter_dependencies�rMr+c�:�|jjdg�S)zRaw Requires-Dist metadata.�
Requires-Dist)r��get_allr&s r(�iter_raw_dependenciesz&BaseDistribution.iter_raw_dependencies�s���}�}�$�$�_�b�9�9r+c��t��)ajExtras provided by this distribution.

        For modern .dist-info distributions, this is the collection of
        "Provides-Extra:" entries in distribution metadata.

        The return value of this function is expected to be normalised names,
        per PEP 685, with the returned value being handled appropriately by
        `iter_dependencies`.
        r$r&s r(�iter_provided_extrasz%BaseDistribution.iter_provided_extras�s
��"�#�#r+c��	|jd�}d�tj|j	��D�S#t$rYywxYw)N�RECORDc3�^K�|]%}ttj|d�����'y�w)rNr;)�.0�rows  r(�	<genexpr>zFBaseDistribution._iter_declared_entries_from_record.<locals>.<genexpr>�s%����S�5R�c��G�L�L��Q��(�)�5R�s�+-)r�r��csv�readerr�)r'�texts  r(�"_iter_declared_entries_from_recordz3BaseDistribution._iter_declared_entries_from_record�sG��	��>�>�(�+�D�T�S�Z�Z����@Q�5R�S�S��!�	��	�s�=�	A	�A	c�R��	|jd�}d�|jd��D�}|j}|j}|�|�|S	tj|�j|���js|S�fd�|D�S#t$rYywxYw#t$r|cYSwxYw)Nzinstalled-files.txtc3�&K�|]	}|s�|���y�wr#r7)r��ps  r(r�zFBaseDistribution._iter_declared_entries_from_legacy.<locals>.<genexpr>�s����A�;�q�q��;�s��F)�keependsc3��K�|]7}ttj|�j�j����9y�wr#)r@r<r=�parts)r�r��info_rels  �r(r�zFBaseDistribution._iter_declared_entries_from_legacy.<locals>.<genexpr>�s2�����
���
*�'�,�,�q�/�*?�*?����P��s�=A)
r�r�r�r\rjr<r=�relative_tor�r�)r'r��paths�rootr?r�s     @r(�"_iter_declared_entries_from_legacyz3BaseDistribution._iter_declared_entries_from_legacy�s����	��>�>�"7�8�D�B�D�O�O�U�O�;�A���}�}���!�!���<�4�<��L�	��|�|�D�)�5�5�d�;�H��~�~��L�
��
�	
��!�	��	���	��L�	�s#�B	�$B�		B�B�B&�%B&c�F�|j�xs|j�S)a�Iterate through file entries declared in this distribution.

        For modern .dist-info distributions, this is the files listed in the
        ``RECORD`` metadata file. For legacy setuptools distributions, this
        comes from ``installed-files.txt``, with entries normalized to be
        compatible with the format used by ``RECORD``.

        :return: An iterator for listed entries, or None if the distribution
            contains neither ``RECORD`` nor ``installed-files.txt``.
        )r�r�r&s r(�iter_declared_entriesz&BaseDistribution.iter_declared_entries�s&��
�3�3�5�
9��6�6�8�	
r+c#�vK�	|jd�}dx}}|j�D]}}|j�}|r|j	d�r�'|j	d�r6|jd�r%|jd�j
d�\}}}�nt|||�	����y#t$rYywxYw�w)
a�Parse a ``requires.txt`` in an egg-info directory.

        This is an INI-ish format where an egg-info stores dependencies. A
        section name describes extra other environment markers, while each entry
        is an arbitrary string (not a key-value pair) representing a dependency
        as a requirement string (no markers).

        There is a construct in ``importlib.metadata`` called ``Sectioned`` that
        does mostly the same, but the format is currently considered private.
        zrequires.txtNr��#�[�]z[]�:)rCrDrE)r�r�r�r�r�ru�	partitionrB)r'r�rDrEr�r�s      r(�_iter_requires_txt_entriesz+BaseDistribution._iter_requires_txt_entries�s�����	��n�n�^�4�G������&�&�(�D��:�:�<�D��4�?�?�3�/�����s�#��
�
�c�(:�#'�:�:�d�#3�#=�#=�c�#B� ��q�&���D��f�M�M�)��!�	��	�s(�B9�B*�BB9�*	B6�3B9�5B6�6B9c#�K�dh}|j�D]1}t|j�}||vr�|j|�|���3y�w)z'Get extras from the egg-info directory.r�N)r�rrD�add)r'�known_extrasr>rDs    r(�_iter_egg_info_extrasz&BaseDistribution._iter_egg_info_extrassL�����t���4�4�6�E�%�e�k�k�2�E���$�����U�#��K�7�s�A	Ac#�4K�|j�D]�}t|j�}|r |jrd|j�d|�d�}n$|rd|�d�}n|jr
|j}nd}|r|j�d|�����t|j����y�w)a�Get distribution dependencies from the egg-info directory.

        To ease parsing, this converts a legacy dependency entry into a PEP 508
        requirement string. Like ``_iter_requires_txt_entries()``, there is code
        in ``importlib.metadata`` that does mostly the same, but not do exactly
        what we need.

        Namely, ``importlib.metadata`` does not normalize the extra name before
        putting it into the requirement string, which causes marker comparison
        to fail because the dist-info format do normalize. This is consistent in
        all currently available PEP 517 backends, although not standardized.
        �(z) and extra == "�"z
extra == "r�z ; N)r�rrDrErC)r'r>rDrEs    r(�_iter_egg_info_dependenciesz,BaseDistribution._iter_egg_info_dependenciess������4�4�6�E�%�e�k�k�2�E������U�\�\�N�*:�5�'��C���%�e�W�A�.�������������*�*�+�3�v�h�7�7��'�'�'�7�s�BBc��|jd�s|j�D]}||d<�	|jd�s|j�D]}||d<�	yy)z6Add egg-info requires.txt information to the metadata.r�zProvides-ExtraN)r�r�r�)r'r��deprDs    r(r�z'BaseDistribution._add_egg_info_requires9s_������0��7�7�9��,/���)�:���� 0�1��3�3�5��-2��)�*�6�2r+N)rKr2r1rH)rO�bytesrPr2rQr2r1rH)rT�Wheelr)r2r1rHr0)r1z
str | None)r1r�)r1r)r1r)r1zDirectUrl | None)r��InfoPathr1r�)r1z
Iterator[str])r�r�r1r2)r1zIterable[BaseEntryPoint])r1�email.message.Message)r1zdict[str, Any])r1r)r7)r�zCollection[str]r1zIterable[Requirement])r1z
Iterable[str])r1zIterable[NormalizedName])r1zIterator[str] | None)r1zIterator[RequiresEntry])r�r�r1�None)3r3r4r5�classmethodrLrRrUr]r_r6r\rfrhrjrnrrrwryr{r}r[r�rbr�r�r�r�r�r�rlr�r�r�r��	functools�cached_propertyr�r�r�rZr�r�r�r�r�r�r�r�r�r�r�r7r+r(rHrH^s����$��$��$� �$��$��	$�

�$��$�"�$��$�G�5��$��$�����*�
$��
$��
$��
$��
5��
5��7��7��4��4�"�
4��
4��$��$��$��$��$��$��/��/�����2�	��	��)��)��4��4��1��1��M��M�
�Q��Q�
$�$�$�$�$����
��
��*��*��5��5��>��>�����$$�:�
$�T�
�*
� N�2�(�83r+rHc�v�eZdZdZedd��Zedd��Zd
d�Zdd�Zdd�Z	de
dddf											dd	�Zy
)�BaseEnvironmentz6An environment containing distributions to introspect.c��t��r#r$)rJs r(�defaultzBaseEnvironment.defaultFr*r+c��t��r#r$)rJr�s  r(�
from_pathszBaseEnvironment.from_pathsJr*r+c��t��)z�Given a requirement name, return the installed distributions.

        The name may not be normalized. The implementation must canonicalize
        it for lookup.
        r$)r'r)s  r(�get_distributionz BaseEnvironment.get_distributionNrMr+c��t��)aIterate through installed distributions.

        This function should be implemented by subclass, but never called
        directly. Use the public ``iter_distribution()`` instead, which
        implements additional logic to make sure the distributions are valid.
        r$r&s r(�_iter_distributionsz#BaseEnvironment._iter_distributionsVr�r+c#�K�|j�D]d}tjd|jtj��}|s,t
j
d|j|j��a|���fy�w)zBIterate through all installed distributions without any filtering.z)^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$)�flagsz%Ignoring invalid distribution %s (%s)N)r�re�matchr{�
IGNORECASEr�r�r\)r'�dist�project_name_valids   r(�iter_all_distributionsz&BaseEnvironment.iter_all_distributions_sk�����,�,�.�D�
"$���<��#�#��m�m�"��
&����;��'�'��M�M��
��J�#/�s�A9A;TFc���|j�}|r	d�|D�}|s	d�|D�}|r	d�|D�}|r	d�|D�}�fd�|D�S)a/Return a list of installed distributions.

        This is based on ``iter_all_distributions()`` with additional filtering
        options. Note that ``iter_installed_distributions()`` without arguments
        is *not* equal to ``iter_all_distributions()``, since some of the
        configurations exclude packages by default.

        :param local_only: If True (default), only return installations
        local to the current virtualenv, if in a virtualenv.
        :param skip: An iterable of canonicalized project names to ignore;
            defaults to ``stdlib_pkgs``.
        :param include_editables: If False, don't report editables.
        :param editables_only: If True, only report editables.
        :param user_only: If True, only report installations in the user
        site directory.
        c3�:K�|]}|js�|���y�wr#)r��r��ds  r(r�z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>�s����+�R��1�7�7�!�R����c3�:K�|]}|jr�|���y�wr#�r�rs  r(r�z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>�s����2�R��q�z�z�!�R�rc3�:K�|]}|js�|���y�wr#rrs  r(r�z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>�s����.�R��1�:�:�!�R�rc3�:K�|]}|js�|���y�wr#)r�rs  r(r�z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>�s����1�R��1�=�=�!�R�rc3�@�K�|]}|j�vs�|���y�wr#)r{)r�r�skips  �r(r�z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>�s�����>�2�a��!1�!1��!=��2�s��)r)r'�
local_onlyr�include_editables�editables_only�	user_only�its  `    r(�iter_installed_distributionsz,BaseEnvironment.iter_installed_distributionstsR���0�
(�
(�
*���+�R�+�B� �2�R�2�B��.�R�.�B��1�R�1�B�>�2�>�>r+N)r1r�)r�zlist[str] | Noner1r�)r)r2r1zBaseDistribution | None)r1�Iterator[BaseDistribution])rr�rzContainer[str]rr�rr�rr�r1r)r3r4r5�__doc__r�r�rrrrrrr7r+r(r�r�Cs���@��$��$��$��$�$�$��. �*�"&�$��
!?��!?��!?� �	!?�
�!?��
!?�
$�!?r+r�c� �eZdZUded<dd�Zy)r�r2r\c��t��r#r$r&s r(�
as_zipfilezWheel.as_zipfile�r�r+N�r1zzipfile.ZipFile)r3r4r5rFr"r7r+r(r�r��s���M�$r+r�c��eZdZdd�Zdd�Zy)�FilesystemWheelc��||_yr#)r\rqs  r(�__init__zFilesystemWheel.__init__�s	�� ��
r+c�D�tj|jd��S�NT)�
allowZip64)�zipfile�ZipFiler\r&s r(r"zFilesystemWheel.as_zipfile�s�����t�}�}��>�>r+N)r\r2r1r�r#�r3r4r5r'r"r7r+r(r%r%�s��!�?r+r%c��eZdZdd�Zdd�Zy)�MemoryWheelc� �||_||_yr#)r\�stream)r'r\r1s   r(r'zMemoryWheel.__init__�s�� ��
���r+c�D�tj|jd��Sr))r+r,r1r&s r(r"zMemoryWheel.as_zipfile�s�����t�{�{�t�<�<r+N)r\r2r1z	IO[bytes]r1r�r#r-r7r+r(r/r/�s���=r+r/)r>�tuple[str, ...]r?r3r1r2)B�
__future__rr��
email.message�emailr�r��loggingr<rr+�collections.abcrrrr�typingrr	r
rr�"pip._vendor.packaging.requirementsr
� pip._vendor.packaging.specifiersrr�pip._vendor.packaging.utilsrr�pip._vendor.packaging.versionr�pip._internal.exceptionsr�pip._internal.locationsrr�pip._internal.models.direct_urlrrr�pip._internal.utils.compatr�pip._internal.utils.egg_linkr�pip._internal.utils.miscrr�pip._internal.utils.urlsr�_jsonrr2�PurePathr��	getLoggerr3r�r!r@rBrHr�r�r%r/r7r+r(�<module>rHs���"�
������	��E�E���;�K�I�1�6�<���
3�D�=�0����g�&�&�&�'��	��	�	�8�	$��$�X�$�,��,�
�,�	�,�<�J��b3�x�b3�JR?�R?�j$�H�$�?�e�?�=�%�=r+
Back to Directory File Manager