403Webshell
Server IP : 209.209.40.120  /  Your IP : 216.73.217.112
Web Server : Microsoft-IIS/10.0
System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586
User : NEWWWW$ ( 0)
PHP Version : 8.3.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /Python312/Lib/site-packages/pip/_internal/metadata/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /Python312/Lib/site-packages/pip/_internal/metadata/__pycache__/base.cpython-312.pyc
�

�k�f�b��.�ddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
mZmZm
Z
mZmZmZmZmZmZmZmZmZddlmZddlmZmZddlmZmZddlm Z ddl!m"Z"ddl#m$Z$m%Z%dd	l&m'Z'm(Z(m)Z)dd
l*m+Z+ddl,m-Z-ddl.m/Z/m0Z0dd
l1m2Z2ddl3m4Z4ee5ejlfZ7ejpe9�Z:Gd�de�Z;dee5dfdee5dfde5fd�Z<Gd�de�Z=Gd�de�Z>Gd�d�Z?Gd�de�Z@Gd�d e@�ZAGd!�d"e@�ZBy)#�N)
�IO�Any�
Collection�	Container�Dict�Iterable�Iterator�List�
NamedTuple�Optional�Protocol�Tuple�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�N�eZdZedefd��Zedefd��Zedefd��Zy)�BaseEntryPoint�returnc��t���N��NotImplementedError��selfs �=C:\Python312\Lib\site-packages\pip/_internal/metadata/base.py�namezBaseEntryPoint.name2���!�#�#�c��t��r'r(r*s r,�valuezBaseEntryPoint.value6r.r/c��t��r'r(r*s r,�groupzBaseEntryPoint.group:r.r/N)�__name__�
__module__�__qualname__�property�strr-r1r3�r/r,r$r$1sQ��
�$�c�$��$��$�s�$��$��$�s�$��$r/r$�entry.�infor%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�..���)r=Nr!�r8�pathlib�Path)r:r;s  r,�_convert_installed_files_pathrB?sm��*�E�!�H��$��t�B�x�4�'��G�O�D����9�D��a�b�	���E�!�H��$��w�|�|�*�T�*�E�*�+�+r/c�,�eZdZUeed<eed<eed<y)�
RequiresEntry�requirement�extra�markerN)r4r5r6r8�__annotations__r9r/r,rDrD]s�����J��Kr/rDc	�h�eZdZededdfd��Zededededdfd��Zedd	d
eddfd��Zdefd�Z	defd
�Z
edeefd��Z
edeefd��Zedeefd��Zedeefd��Zedefd��Zedefd��Zedefd��Zedefd��Zedefd��Zedefd��Zedefd��Zedefd��Zedeefd��Zedefd��Zedefd��Zedefd��Z edefd��Z!edefd��Z"edefd ��Z#d!e$defd"�Z%de&efd#�Z'd!e$defd$�Z(de)e*fd%�Z+de,jZj\fd&�Z/e0jbde,jZj\fd'��Z2ede3ee4ffd(��Z5edeefd)��Z6edefd*��Z7ede8fd+��Z9d9d,e:ede)e;fd-�Z<de)efd.�Z=de)efd/�Z>dee&efd0�Z?dee&efd1�Z@dee&efd2�ZAde&eBfd3�ZCde)efd4�ZDde)efd5�ZEd6e,jZj\dd7fd8�ZFy7):�BaseDistribution�	directoryr%c��t��)z�Load the distribution from a metadata directory.

        :param directory: Path to a metadata directory, e.g. ``.dist-info``.
        r()�clsrKs  r,�from_directoryzBaseDistribution.from_directoryd�
��"�#�#r/�metadata_contents�filename�project_namec��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()rMrPrQrRs    r,�from_metadata_file_contentsz,BaseDistribution.from_metadata_file_contentsls
�� "�#�#r/�wheel�Wheelr-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()rMrUr-s   r,�
from_wheelzBaseDistribution.from_wheel~�
��"�#�#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)Nr[)r]r^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�rYr/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 �urlrr]r_)r+re�
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)rmr@rA�is_file�r+rms  r,�installed_by_distutilsz'BaseDistribution.installed_by_distutils�s-���*�*�
����|�|�M�*�2�2�4�4r/c�B�|j}|sy|jd�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_�endswith�r+r_s  r,�installed_as_eggz!BaseDistribution.installed_as_egg�s$���=�=����� � ��(�(r/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�rmrsr@rA�is_dirrps  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-inforwrps  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.
        �-�_)r]�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,rezBaseDistribution.direct_url"s���	��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.installer<sd��	�!�^�^�K�8�N�#�-�-�/�	$�D��:�:�<�L��#�#�	$���
��%6�7�	��	�s�?�A�Ac�$�|jd�S)N�	REQUESTED)ror*s r,�	requestedzBaseDistribution.requestedHs���|�|�K�(�(r/c�,�t|j�Sr')�boolrir*s r,�editablezBaseDistribution.editableLs���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)rkrr*s r,�localzBaseDistribution.localPs$���"�"�*����/�/�0�0r/c�x�|j�t�y|jjtt��S�NF)rkr�
startswithrr*s r,�in_usersitezBaseDistribution.in_usersiteZs2���"�"�*�i�.?���&�&�1�1�.��2K�L�Lr/c�x�|j�t�y|jjtt��Sr�)rkrr�rr*s r,�in_site_packagesz!BaseDistribution.in_site_packages`s2���"�"�*�m�.C���&�&�1�1�.��2O�P�Pr/�pathc��t��)z7Check whether an entry in the info directory is a file.r(�r+r�s  r,rozBaseDistribution.is_filefr.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_namesjrOr/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_textr�
��"�#�#r/c��t��r'r(r*s r,�iter_entry_pointsz"BaseDistribution.iter_entry_points{���!�#�#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.
        )r"r�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,r]zBaseDistribution.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�rr8rr�r�r])r+r1�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?�extrasc��t��)z�Dependencies of this distribution.

        For modern .dist-info distributions, this is the collection of
        "Requires-Dist:" entries in distribution metadata.
        r()r+r�s  r,�iter_dependenciesz"BaseDistribution.iter_dependencies�rOr/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�c��G�L�L��Q��(�)�S�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'r9)r��ps  r,r�zFBaseDistribution._iter_declared_entries_from_legacy.<locals>.<genexpr>�s����A�q�q��A�s��F)�keependsc3��K�|]7}ttj|�j�j����9y�wr')rBr@rA�parts)r�r��info_rels  �r,r�zFBaseDistribution._iter_declared_entries_from_legacy.<locals>.<genexpr>�s2�����
��
*�'�,�,�q�/�*?�*?����P�
�s�=A)
r�r�r�r_rmr@rA�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[]�:)rErFrG)r�r�r�r�r�rs�	partitionrD)r+r�rFrGr�r�s      r,�_iter_requires_txt_entriesz+BaseDistribution._iter_requires_txt_entries�s�����	��n�n�^�4�G������&�&�(�	N�D��:�:�<�D��4�?�?�3�/�����s�#��
�
�c�(:�#'�:�:�d�#3�#=�#=�c�#B� ��q�&���D��f�M�M�	N��!�	��	�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�rrF�add)r+�known_extrasr:rFs    r,�_iter_egg_info_extrasz&BaseDistribution._iter_egg_info_extrassQ�����t���4�4�6�	�E�%�e�k�k�2�E���$�����U�#��K�	�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�rrFrGrE)r+r:rFrGs    r,�_iter_egg_info_dependenciesz,BaseDistribution._iter_egg_info_dependencies s������4�4�6�
	(�E�%�e�k�k�2�E������U�\�\�N�*:�5�'��C���%�e�W�A�.�������������*�*�+�3�v�h�7�7��'�'�'�
	(�s�BBr�Nc��|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��deprFs    r,r�z'BaseDistribution._add_egg_info_requires<si������0��7�7�9�
0��,/���)�
0���� 0�1��3�3�5�
3��-2��)�*�
3�2r/)r9)Gr4r5r6�classmethodr8rN�bytesrTrXr`rbr7rr_rirkrmr�rqruryr{rr}rrr^r�rrer�r�r�r�r�r��InfoPathror	r�r�rr$r��emailr��Messager��	functools�cached_propertyr�rrr�r�r]rr�rrr�r�r�r�r�r�rDr�r�r�r�r9r/r,rJrJcs����$�s�$�/A�$��$��$� �$��$��	$�

�$��$�"�$�w�$�c�$�6H�$��$�G�#�G�5��5��$�(�3�-�$��$���8�C�=����*�
$�H�S�M�
$��
$��
$�x��}�
$��
$��
5��
5��
5��	)�$�	)��	)��4�D�4��4�"�
4�$�
4��
4��$��$��$��$��$��$��$�S�$��$��/�S�/��/���H�Y�/����2�	�3�	��	��)�4�)��)��4�$�4��4��1�t�1��1��M�T�M��M�
�Q�$�Q��Q�
$�H�$��$�$�X�c�]�$�$�h�$�3�$�$�8�N�#;�$�$��
�
� 5� 5�$����
�%�-�-�/�/�
��
��*�t�C��H�~�*��*��5�(�3�-�5��5��>�#�>��>�������$$�
�3��$��+�AV�$�:�x��}�:�
$�h�~�&>�
$�T�H�X�c�]�4K�T�
�H�X�c�]�4K�
�*
�x���
�'>�
� N�H�]�,C�N�2�x��}��(�X�c�]�(�83�u�}�}�/D�/D�3��3r/rJc��eZdZdZedd��Zedeeeddfd��Z	dededfd�Z
dedfd	�Zdee
fd
�Zdedddfd
edeededededee
fd�Zy)�BaseEnvironmentz6An environment containing distributions to introspect.r%c��t��r'r()rMs r,�defaultzBaseEnvironment.defaultIr.r/r�c��t��r'r()rMr�s  r,�
from_pathszBaseEnvironment.from_pathsMr.r/r-rJc��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_distributionQrOr/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_distributionsYr�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_distributionsbsp�����,�,�.�	�D�
"$���<��#�#��m�m�"��
&����;��'�'��M�M��
��J�#	�s�A9A;TF�
local_only�skip�include_editables�editables_only�	user_onlyc���|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����+��1�7�7�!�+����c3�:K�|]}|jr�|���y�wr'�r�rs  r,r�z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>�s����2��q�z�z�!�2�rc3�:K�|]}|js�|���y�wr'rrs  r,r�z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>�s����.��1�:�:�!�.�rc3�:K�|]}|js�|���y�wr')r�rs  r,r�z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>�s����1��1�=�=�!�1�rc3�@�K�|]}|j�vs�|���y�wr')r})r�rrs  �r,r�z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>�s�����>�a��!1�!1��!=��>�s��)r
)r+rrrrr�its  `    r,�iter_installed_distributionsz,BaseEnvironment.iter_installed_distributionswsR���0�
(�
(�
*���+�R�+�B� �2�R�2�B��.�R�.�B��1�R�1�B�>�2�>�>r/N)r%r�)r4r5r6�__doc__r�r�rr
r8rrr	rrJr
rr�rrr9r/r,r�r�Fs���@��$��$��$�x��S�	�2�$�7H�$��$�$�S�$�X�6H�-I�$�$�X�.@�%A�$���1A�(B��. �*�"&�$��
!?��!?���n�!?� �	!?�
�!?��
!?�
�"�	#�!?r/r�c�8�eZdZUeed<dejfd�Zy)rVr_r%c��t��r'r(r*s r,�
as_zipfilezWheel.as_zipfile�r�r/N)r4r5r6r8rH�zipfile�ZipFiler"r9r/r,rVrV�s���M�$�G�O�O�$r/rVc�<�eZdZdeddfd�Zdejfd�Zy)�FilesystemWheelr_r%Nc��||_yr')r_rts  r,�__init__zFilesystemWheel.__init__�s	�� ��
r/c�D�tj|jd��S�NT)�
allowZip64)r#r$r_r*s r,r"zFilesystemWheel.as_zipfile�s�����t�}�}��>�>r/)r4r5r6r8r(r#r$r"r9r/r,r&r&�s%��!��!��!�?�G�O�O�?r/r&c�F�eZdZdedeeddfd�Zdejfd�Z	y)�MemoryWheelr_�streamr%Nc� �||_||_yr')r_r.)r+r_r.s   r,r(zMemoryWheel.__init__�s�� ��
���r/c�D�tj|jd��Sr*)r#r$r.r*s r,r"zMemoryWheel.as_zipfile�s�����t�{�{�t�<�<r/)
r4r5r6r8rr�r(r#r$r"r9r/r,r-r-�s0�����b��i��D��=�G�O�O�=r/r-)Cr��
email.messager�r�r��loggingr@rr#�typingrrrrrrr	r
rr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 �_jsonr"r8�PurePathr��	getLoggerr4r�r$rBrDrJr�rVr&r-r9r/r,�<module>rBs��
������	������ ;�K�I�1�6�<���
3�D�=�0����g�&�&�&�'��	��	�	�8�	$��$�X�$�,���c��?�,�
��S��/�,�	�,�<�J��`3�x�`3�FR?�R?�j$�H�$�?�e�?�=�%�=r/

Youez - 2016 - github.com/yon3zu
LinuXploit