§
    u”jLc  ã                  ó6  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlmZmZmZmZ d dlmZmZmZmZmZ d dlmZ d dlmZmZ d dlmZmZ d dlmZ d d	l m!Z! d d
l"m#Z#m$Z$ d dl%m&Z&m'Z'm(Z( d dl)m*Z* d dl+m,Z, d dl-m.Z.m/Z/ d dl0m1Z1 ddl2m3Z3 ee4ej5        f         Z6 ej7        e8¦  «        Z9 G d„ de¦  «        Z:d&d„Z; G d„ de¦  «        Z< G d„ de¦  «        Z= G d„ d¦  «        Z> G d „ d!e¦  «        Z? G d"„ d#e?¦  «        Z@ G d$„ d%e?¦  «        ZAdS )'é    )Ú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                  óV   — e Zd Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         ZdS )ÚBaseEntryPointÚreturnÚstrc                ó   — t          ¦   «         ‚©N©ÚNotImplementedError©Úselfs    új/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/pip/_internal/metadata/base.pyÚnamezBaseEntryPoint.name-   ó   € å!Ñ#Ô#Ð#ó    c                ó   — t          ¦   «         ‚r%   r&   r(   s    r*   ÚvaluezBaseEntryPoint.value1   r,   r-   c                ó   — t          ¦   «         ‚r%   r&   r(   s    r*   ÚgroupzBaseEntryPoint.group5   r,   r-   N©r"   r#   )Ú__name__Ú
__module__Ú__qualname__Úpropertyr+   r/   r1   © r-   r*   r!   r!   ,   sr   € € € € € Øð$ð $ð $ñ „Xð$ð ð$ð $ð $ñ „Xð$ð ð$ð $ð $ñ „Xð$ð $ð $r-   r!   Úentryútuple[str, ...]Úinfor"   r#   c                óÊ   — | rB| d         dk    r6|r|d         dk    r|dz  }n
|dd…         }| dd…         } | r| d         dk    °6t          t          j        g |¢| ¢R Ž ¦  «        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   ©r#   ÚpathlibÚPath)r8   r:   s     r*   Ú_convert_installed_files_pathrA   :   s’   € ð* ð �E˜!”H Ò$Ð$Øð 	�t˜B”x 4Ò'Ð'Ø�G‰OˆDˆDà˜˜˜”9ˆDØ�a�b�b”	ˆð ð �E˜!”H Ò$Ð$õ �wŒ|Ð*˜TÐ* EÐ*Ð*Ð*Ñ+Ô+Ð+r-   c                  ó.   — e Zd ZU ded<   ded<   ded<   dS )ÚRequiresEntryr#   ÚrequirementÚextraÚmarkerN)r3   r4   r5   Ú__annotations__r7   r-   r*   rC   rC   X   s.   € € € € € € ØÐÐÑØ€J€J�JØ€K€K�K€K€Kr-   rC   c                  ó*  — e Zd ZedNd„¦   «         ZedOd	„¦   «         ZedPd„¦   «         ZdQd„ZdQd„Ze	dRd„¦   «         Z
e	dRd„¦   «         Ze	dRd„¦   «         Ze	dRd„¦   «         Ze	dSd„¦   «         Ze	dSd„¦   «         Ze	dSd„¦   «         Ze	dSd„¦   «         Ze	dTd„¦   «         Ze	dUd„¦   «         Ze	dQd„¦   «         Ze	dQd„¦   «         Ze	dVd!„¦   «         Ze	dQd"„¦   «         Ze	dSd#„¦   «         Ze	dSd$„¦   «         Ze	dSd%„¦   «         Ze	dSd&„¦   «         Ze	dSd'„¦   «         ZdWd*„ZdXd,„ZdYd-„ZdZd/„Z d[d1„Z!e"j#        d[d2„¦   «         Z$e	d\d4„¦   «         Z%e	dRd5„¦   «         Z&e	dQd6„¦   «         Z'e	d]d8„¦   «         Z(d^d_d=„Z)d`d?„Z*dadA„Z+dbdC„Z,dbdD„Z-dbdE„Z.dcdG„Z/d`dH„Z0d`dI„Z1dddL„Z2dMS )eÚBaseDistributionÚ	directoryr#   r"   c                ó   — t          ¦   «         ‚)z‡Load the distribution from a metadata directory.

        :param directory: Path to a metadata directory, e.g. ``.dist-info``.
        r&   )ÚclsrJ   s     r*   Úfrom_directoryzBaseDistribution.from_directory_   ó   € õ "Ñ#Ô#Ð#r-   Úmetadata_contentsÚbytesÚ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&   )rL   rO   rQ   rR   s       r*   Úfrom_metadata_file_contentsz,BaseDistribution.from_metadata_file_contentsg   s   € õ  "Ñ#Ô#Ð#r-   ÚwheelÚWheelr+   c                ó   — t          ¦   «         ‚)a  Load 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&   )rL   rU   r+   s      r*   Ú
from_wheelzBaseDistribution.from_wheely   ó   € õ "Ñ#Ô#Ð#r-   c                ó6   — | j         › d| j        › d| j        › d�S )Nú z (ú))Úraw_nameÚraw_versionÚlocationr(   s    r*   Ú__repr__zBaseDistribution.__repr__‡   s(   € Ø”-ÐFÐF $Ô"2ÐFÐF°d´mÐFÐFÐFÐFr-   c                ó$   — | j         › d| j        › �S )Nr[   )r]   r^   r(   s    r*   Ú__str__zBaseDistribution.__str__Š   s   € Ø”-Ð4Ð4 $Ô"2Ð4Ð4Ð4r-   ú
str | Nonec                ó   — 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_   zBaseDistribution.location�   rY   r-   c                ó¤   — | j         }|r)|                     ¦   «         rt          |j        ¦  «        S nt	          | j        ¦  «        }|r| j        S dS )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   Úurlr   r]   r_   )r)   rf   Úegg_link_paths      r*   Úeditable_project_locationz*BaseDistribution.editable_project_location›   sd   € ð ”_ˆ
Øð 
	%Ø×+Ò+Ñ-Ô-ð 3Ý" :¤>Ñ2Ô2Ð2ð3õ
 8¸¼ÑFÔFˆMØð %ð ”}Ð$Øˆtr-   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_locationzBaseDistribution.info_location¾   s   € õ "Ñ#Ô#Ð#r-   Úboolc                ód   — | j         }|sdS t          j        |¦  «                             ¦   «         S )a  Whether 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)rn   r?   r@   Úis_file©r)   rn   s     r*   Úinstalled_by_distutilsz'BaseDistribution.installed_by_distutilsÎ   s5   € ð Ô*ˆØð 	Ø�5ÝŒ|˜MÑ*Ô*×2Ò2Ñ4Ô4Ð4r-   c                óR   — | j         }|sdS t          j        |¦  «        j        dk    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Û   s2   € ð ”=ˆØð 	Ø�5õ Œ|˜HÑ%Ô%Ô,°Ò6Ð6r-   c                ó’   — | j         }|sdS |                     d¦  «        sdS t          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©rn   Úendswithr?   r@   Úis_dirrr   s     r*   Ú"installed_with_setuptools_egg_infoz3BaseDistribution.installed_with_setuptools_egg_infoé   sP   € ð Ô*ˆØð 	Ø�5Ø×%Ò% kÑ2Ô2ð 	Ø�5ÝŒ|˜MÑ*Ô*×1Ò1Ñ3Ô3Ð3r-   c                ó’   — | j         }|sdS |                     d¦  «        sdS t          j        |¦  «                             ¦   «         S )aa  Whether 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-infory   rr   s     r*   Úinstalled_with_dist_infoz)BaseDistribution.installed_with_dist_infoû   sP   € ð Ô*ˆØð 	Ø�5Ø×%Ò% lÑ3Ô3ð 	Ø�5ÝŒ|˜MÑ*Ô*×1Ò1Ñ3Ô3Ð3r-   r   c                ó   — t          ¦   «         ‚r%   r&   r(   s    r*   Úcanonical_namezBaseDistribution.canonical_name  r,   r-   r   c                ó   — t          ¦   «         ‚r%   r&   r(   s    r*   ÚversionzBaseDistribution.version  r,   r-   c                ó   — t          ¦   «         ‚r%   r&   r(   s    r*   r^   zBaseDistribution.raw_version  r,   r-   c                ó8   — | j                              dd¦  «        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_filename  s   € ð Œ}×$Ò$ S¨#Ñ.Ô.Ð.r-   úDirectUrl | Nonec                ó(  — 	 |                       t          ¦  «        }n# t          $ r Y dS w xY w	 t          j        |¦  «        S # t
          t          j        t          f$ r2}t           
                    dt          | j        |¦  «         Y d}~dS d}~ww xY w)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.
        NzError parsing %s for %s: %s)Ú	read_textr   ÚFileNotFoundErrorr   Ú	from_jsonÚUnicodeDecodeErrorÚjsonÚJSONDecodeErrorr   ÚloggerÚwarningr€   )r)   ÚcontentÚes      r*   rf   zBaseDistribution.direct_url  s¶   € ð	Ø—n’nÕ%=Ñ>Ô>ˆGˆGøÝ ð 	ð 	ð 	Ø�4�4ð	øøøð	ÝÔ& wÑ/Ô/Ð/øåÝÔ Ý$ð
ð 	ð 	ð 	õ
 �NŠNØ-Ý(ØÔ#Øñ	ô ð ð �4�4�4�4�4øøøøð	øøøs#   ‚ �
+ª+¯A ÁBÁ'BÂBc                óÒ   — 	 |                       d¦  «        }n# t          t          t          f$ r Y dS w xY w|                     ¦   «         D ]}|                     ¦   «         }|r|c S ŒdS )NÚ	INSTALLERÚ )r‹   ÚOSErrorÚ
ValueErrorr   Ú
splitlinesÚstrip)r)   Úinstaller_textÚlineÚcleaned_lines       r*   Ú	installerzBaseDistribution.installer9  sŠ   € ð	Ø!Ÿ^š^¨KÑ8Ô8ˆNˆNøÝ�Õ%6Ð7ð 	ð 	ð 	Ø�2�2ð	øøøà"×-Ò-Ñ/Ô/ð 	$ð 	$ˆDØŸ:š:™<œ<ˆLØð $Ø#Ð#Ð#Ð#ð$àˆrs   ‚ ˜3²3c                ó,   — |                       d¦  «        S )NÚ	REQUESTED)rq   r(   s    r*   Ú	requestedzBaseDistribution.requestedE  s   € à�|Š|˜KÑ(Ô(Ð(r-   c                ó*   — t          | j        ¦  «        S r%   )ro   rj   r(   s    r*   ÚeditablezBaseDistribution.editableI  s   € å�DÔ2Ñ3Ô3Ð3r-   c                ó<   — | j         €dS t          | j         ¦  «        S )z|If distribution is installed in the current virtual environment.

        Always True if we're not in a virtualenv.
        NF)rl   r   r(   s    r*   ÚlocalzBaseDistribution.localM  s#   € ð Ô"Ð*Ø�5Ý˜Ô/Ñ0Ô0Ð0r-   c                óz   — | j         �t          €dS | j                              t          t          ¦  «        ¦  «        S ©NF)rl   r   Ú
startswithr   r(   s    r*   Úin_usersitezBaseDistribution.in_usersiteW  s4   € àÔ"Ð*­iÐ.?Ø�5ØÔ&×1Ò1µ.ÅÑ2KÔ2KÑLÔLÐLr-   c                óz   — | j         �t          €dS | j                              t          t          ¦  «        ¦  «        S r¨   )rl   r   r©   r   r(   s    r*   Úin_site_packagesz!BaseDistribution.in_site_packages]  s4   € àÔ"Ð*­mÐ.CØ�5ØÔ&×1Ò1µ.ÅÑ2OÔ2OÑPÔPÐPr-   ÚpathÚInfoPathc                ó   — t          ¦   «         ‚)z7Check whether an entry in the info directory is a file.r&   ©r)   r­   s     r*   rq   zBaseDistribution.is_filec  r,   r-   úIterator[str]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_namesg  rN   r-   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‹   zBaseDistribution.read_texto  ó   € õ "Ñ#Ô#Ð#r-   úIterable[BaseEntryPoint]c                ó   — t          ¦   «         ‚r%   r&   r(   s    r*   Úiter_entry_pointsz"BaseDistribution.iter_entry_pointsx  ó   € Ý!Ñ#Ô#Ð#r-   úemail.message.Messagec                ó   — t          ¦   «         ‚r%   r&   r(   s    r*   Ú_metadata_implzBaseDistribution._metadata_impl{  r¹   r-   c                óX   — |                       ¦   «         }|                      |¦  «         |S )a  Metadata 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¿   zBaseDistribution.metadata~  s.   € ð ×&Ò&Ñ(Ô(ˆØ×#Ò# HÑ-Ô-Ð-Øˆr-   údict[str, Any]c                ó*   — t          | j        ¦  «        S )a  PEP 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_dictzBaseDistribution.metadata_dict‹  s   € õ ˜4œ=Ñ)Ô)Ð)r-   c                ó6   — | j                              d¦  «        S )zDValue of "Metadata-Version:" in distribution metadata, if available.zMetadata-Version)r¿   Úgetr(   s    r*   Úmetadata_versionz!BaseDistribution.metadata_version–  s   € ð Œ}× Ò Ð!3Ñ4Ô4Ð4r-   c                óB   — | j                              d| j        ¦  «        S )z*Value of "Name:" in distribution metadata.ÚName)r¿   rÄ   r€   r(   s    r*   r]   zBaseDistribution.raw_name›  s   € ð
 Œ}× Ò  ¨Ô)<Ñ=Ô=Ð=r-   r   c                ó&  — | j                              d¦  «        }|€t          ¦   «         S 	 t          t          |¦  «        ¦  «        }nH# t          $ r;}d}t
                               || j        |¦  «         t          ¦   «         cY d}~S d}~ww xY w|S )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.
        zRequires-PythonNz-Package %r has an invalid Requires-Python: %s)r¿   rÄ   r   r#   r   r‘   r’   r]   )r)   r/   Úspecr”   Úmessages        r*   Úrequires_pythonz BaseDistribution.requires_python¢  sŸ   € ð ”×!Ò!Ð"3Ñ4Ô4ˆØˆ=Ý‘>”>Ð!ð	"å¥ E¡
¤
Ñ+Ô+ˆDˆDøÝð 	"ð 	"ð 	"ØEˆGÝ�NŠN˜7 D¤M°1Ñ5Ô5Ð5Ý‘>”>Ð!Ð!Ð!Ð!Ð!Ð!øøøøð	"øøøð ˆs   ¬A	 Á	
BÁ0B	ÂBÂ	Br7   ÚextrasúCollection[str]úIterable[Requirement]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)   rÌ   s     r*   Úiter_dependenciesz"BaseDistribution.iter_dependenciesµ  rN   r-   úIterable[str]c                ó8   — | j                              dg ¦  «        S )zRaw Requires-Dist metadata.úRequires-Dist)r¿   Úget_allr(   s    r*   Úiter_raw_dependenciesz&BaseDistribution.iter_raw_dependencies½  s   € àŒ}×$Ò$ _°bÑ9Ô9Ð9r-   úIterable[NormalizedName]c                ó   — t          ¦   «         ‚)aj  Extras 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-   úIterator[str] | Nonec                ó²   — 	 |                       d¦  «        }n# t          $ r Y d S w xY wd„ t          j        |                     ¦   «         ¦  «        D ¦   «         S )NÚRECORDc              3  ód   K  — | ]+}t          t          j        |d          ¦  «        ¦  «        V — Œ,dS )r   Nr>   )Ú.0Úrows     r*   ú	<genexpr>zFBaseDistribution._iter_declared_entries_from_record.<locals>.<genexpr>Ó  s8   è è € ÐSÐS¨c••G”L  Q¤Ñ(Ô(Ñ)Ô)ÐSÐSÐSÐSÐSÐSr-   )r‹   rŒ   ÚcsvÚreaderrš   )r)   Útexts     r*   Ú"_iter_declared_entries_from_recordz3BaseDistribution._iter_declared_entries_from_recordÍ  sg   € ð	Ø—>’> (Ñ+Ô+ˆDˆDøÝ ð 	ð 	ð 	Ø�4�4ð	øøøð TÐSµS´ZÀÇÂÑ@QÔ@QÑ5RÔ5RÐSÑSÔSÐSs   ‚ ˜
&¥&c                ó`  ‡— 	 |                       d¦  «        }n# t          $ r Y d S w xY wd„ |                     d¬¦  «        D ¦   «         }| j        }| j        }|�|€|S 	 t          j        |¦  «                             |¦  «        Šn# t          $ r |cY S w xY w‰j	        s|S ˆfd„|D ¦   «         S )Nzinstalled-files.txtc              3  ó   K  — | ]}|¯|V — Œ	d S r%   r7   )rÝ   Úps     r*   rß   zFBaseDistribution._iter_declared_entries_from_legacy.<locals>.<genexpr>Ú  s'   è è € ÐAÐA�q¸qÐA�ÐAÐAÐAÐAÐAÐAr-   F)Úkeependsc              3  óp   •K  — | ]0}t          t          j        |¦  «        j        ‰j        ¦  «        V — Œ1d S r%   )rA   r?   r@   Úparts)rÝ   ræ   Úinfo_rels     €r*   rß   zFBaseDistribution._iter_declared_entries_from_legacy.<locals>.<genexpr>å  sN   øè è € ð 
ð 
àõ *­'¬,°q©/¬/Ô*?ÀÄÑPÔPð
ð 
ð 
ð 
ð 
ð 
r-   )
r‹   rŒ   rš   r_   rn   r?   r@   Úrelative_tor™   ré   )r)   râ   ÚpathsÚrootr:   rê   s        @r*   Ú"_iter_declared_entries_from_legacyz3BaseDistribution._iter_declared_entries_from_legacyÕ  sþ   ø€ ð	Ø—>’>Ð"7Ñ8Ô8ˆDˆDøÝ ð 	ð 	ð 	Ø�4�4ð	øøøàAÐA˜DŸOšO°U˜OÑ;Ô;ÐAÑAÔAˆØŒ}ˆØÔ!ˆØˆ<˜4˜<ØˆLð	Ý”| DÑ)Ô)×5Ò5°dÑ;Ô;ˆHˆHøÝð 	ð 	ð 	ØˆLˆLˆLð	øøøàŒ~ð 	ØˆLð
ð 
ð 
ð 
àð
ñ 
ô 
ð 	
s   ƒ ™
'¦'Á'B ÂBÂBc                óR   — |                       ¦   «         p|                      ¦   «         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Ô5ð 9Ø×6Ò6Ñ8Ô8ð	
r-   úIterator[RequiresEntry]c              #  ó¾  K  — 	 |                       d¦  «        }n# t          $ r Y dS w xY wdx}}|                     ¦   «         D ]™}|                     ¦   «         }|r|                     d¦  «        rŒ.|                     d¦  «        rB|                     d¦  «        r-|                     d¦  «                             d¦  «        \  }}}Œ…t          |||¬	¦  «        V — ŒšdS )
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[]ú:)rD   rE   rF   )r‹   rŒ   rš   r›   r©   rz   Ú	partitionrC   )r)   r“   rE   rF   r�   r†   s         r*   Ú_iter_requires_txt_entriesz+BaseDistribution._iter_requires_txt_entriesú  s  è è € ð	Ø—n’n ^Ñ4Ô4ˆGˆGøÝ ð 	ð 	ð 	ØˆFˆFð	øøøàÐˆ�Ø×&Ò&Ñ(Ô(ð 	Nð 	NˆDØ—:’:‘<”<ˆDØð ˜4Ÿ?š?¨3Ñ/Ô/ð ØØ�Š˜sÑ#Ô#ð ¨¯ª°cÑ(:Ô(:ð Ø#'§:¢:¨dÑ#3Ô#3×#=Ò#=¸cÑ#BÔ#BÑ ��q˜&ØÝ¨D¸ÀfÐMÑMÔMÐMÐMÐMÐMð	Nð 	Ns   „ š
(§(c              #  ó¢   K  — dh}|                       ¦   «         D ]4}t          |j        ¦  «        }||v rŒ|                     |¦  «         |V — Œ5dS )z'Get extras from the egg-info directory.r—   N)rø   r   rE   Úadd)r)   Úknown_extrasr8   rE   s       r*   Ú_iter_egg_info_extrasz&BaseDistribution._iter_egg_info_extras  sn   è è € à�tˆØ×4Ò4Ñ6Ô6ð 	ð 	ˆEÝ% e¤kÑ2Ô2ˆEØ˜Ð$Ð$ØØ×Ò˜UÑ#Ô#Ð#ØˆKˆKˆKˆKð	ð 	r-   c              #  óø   K  — |                       ¦   «         D ]b}t          |j        ¦  «        }|r|j        rd|j        › d|› d�}n|rd|› d�}n|j        r|j        }nd}|r|j        › d|› �V — ŒY|j        V — ŒcdS )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ø   r   rE   rF   rD   )r)   r8   rE   rF   s       r*   Ú_iter_egg_info_dependenciesz,BaseDistribution._iter_egg_info_dependencies  sÕ   è è € ð ×4Ò4Ñ6Ô6ð 	(ð 	(ˆEÝ% e¤kÑ2Ô2ˆEØð ˜œð ØC˜Uœ\ÐCÐC¸5ÐCÐCÐC��Øð Ø. eÐ.Ð.Ð.��Ø”ð Øœ��à�Øð (ØÔ*Ð7Ð7¨vÐ7Ð7Ð7Ð7Ð7Ð7àÔ'Ð'Ð'Ð'Ð'ð	(ð 	(r-   r¿   ÚNonec                óÎ   — |                      d¦  «        s|                      ¦   «         D ]}||d<   Œ|                      d¦  «        s|                      ¦   «         D ]	}||d<   ŒdS dS )z6Add egg-info requires.txt information to the metadata.rÓ   zProvides-ExtraN)rÔ   r   rü   )r)   r¿   ÚdeprE   s       r*   r¾   z'BaseDistribution._add_egg_info_requires9  s”   € à×Ò Ñ0Ô0ð 	0Ø×7Ò7Ñ9Ô9ð 0ð 0�Ø,/�˜Ñ)Ð)Ø×ÒÐ 0Ñ1Ô1ð 	3Ø×3Ò3Ñ5Ô5ð 3ð 3�Ø-2�Ð)Ñ*Ð*ð	3ð 	3ð3ð 3r-   N)rJ   r#   r"   rI   )rO   rP   rQ   r#   rR   r#   r"   rI   )rU   rV   r+   r#   r"   rI   r2   )r"   rc   )r"   ro   )r"   r   )r"   r   )r"   r‰   )r­   r®   r"   ro   )r"   r±   )r­   r®   r"   r#   )r"   r¶   )r"   rº   )r"   rÀ   )r"   r   )r7   )rÌ   rÍ   r"   rÎ   )r"   rÑ   )r"   rÖ   )r"   rÙ   )r"   rñ   )r¿   rº   r"   r  )3r3   r4   r5   ÚclassmethodrM   rT   rX   r`   rb   r6   r_   rj   rl   rn   rs   rw   r|   r~   r€   r‚   r^   rˆ   rf   rŸ   r¢   r¤   r¦   rª   r¬   rq   r³   r‹   r¸   r¼   Ú	functoolsÚcached_propertyr¿   rÂ   rÅ   r]   rË   rÐ   rÕ   rØ   rã   rî   rð   rø   rü   r   r¾   r7   r-   r*   rI   rI   ^   sã  € € € € € Øð$ð $ð $ñ „[ð$ð ð$ð $ð $ñ „[ð$ð" ð$ð $ð $ñ „[ð$ðGð Gð Gð Gð5ð 5ð 5ð 5ð ð$ð $ð $ñ „Xð$ð ðð ð ñ „Xðð* ð
$ð 
$ð 
$ñ „Xð
$ð ð$ð $ð $ñ „Xð$ð ð
5ð 
5ð 
5ñ „Xð
5ð ð7ð 7ð 7ñ „Xð7ð ð4ð 4ð 4ñ „Xð4ð" ð4ð 4ð 4ñ „Xð4ð ð$ð $ð $ñ „Xð$ð ð$ð $ð $ñ „Xð$ð ð$ð $ð $ñ „Xð$ð ð/ð /ð /ñ „Xð/ð ðð ð ñ „Xðð2 ð	ð 	ð 	ñ „Xð	ð ð)ð )ð )ñ „Xð)ð ð4ð 4ð 4ñ „Xð4ð ð1ð 1ð 1ñ „Xð1ð ðMð Mð Mñ „XðMð
 ðQð Qð Qñ „XðQð
$ð $ð $ð $ð$ð $ð $ð $ð$ð $ð $ð $ð$ð $ð $ð $ð$ð $ð $ð $ð Ôð
ð 
ð 
ñ Ôð
ð ð*ð *ð *ñ „Xð*ð ð5ð 5ð 5ñ „Xð5ð ð>ð >ð >ñ „Xð>ð ðð ð ñ „Xðð$$ð $ð $ð $ð $ð:ð :ð :ð :ð
$ð 
$ð 
$ð 
$ðTð Tð Tð Tð
ð 
ð 
ð 
ð*
ð 
ð 
ð 
ð Nð Nð Nð Nð2ð ð ð ð(ð (ð (ð (ð83ð 3ð 3ð 3ð 3ð 3r-   rI   c                  ón   — e Zd ZdZedd„¦   «         Zedd„¦   «         Zdd
„Zdd„Zdd„Z	de
dddfdd„ZdS )ÚBaseEnvironmentz6An environment containing distributions to introspect.r"   c                ó   — t          ¦   «         ‚r%   r&   )rL   s    r*   ÚdefaultzBaseEnvironment.defaultF  r,   r-   rì   úlist[str] | Nonec                ó   — t          ¦   «         ‚r%   r&   )rL   rì   s     r*   Ú
from_pathszBaseEnvironment.from_pathsJ  r,   r-   r+   r#   úBaseDistribution | Nonec                ó   — 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_distributionN  rN   r-   úIterator[BaseDistribution]c                ó   — t          ¦   «         ‚)a  Iterate 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_distributionsV  rµ   r-   c              #  óÞ   K  — |                       ¦   «         D ]U}t          j        d|j        t          j        ¬¦  «        }|s't
                               d|j        |j        ¦  «         ŒQ|V — ŒVdS )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_  s�   è è € à×,Ò,Ñ.Ô.ð 	ð 	ˆDõ
 "$¤Ø<ØÔ#Ý”mð"ñ "ô "Ðð
 &ð Ý—’Ø;ØÔ'Ø”Mñô ð ð
 ØˆJˆJˆJˆJð#	ð 	r-   TFÚ
local_onlyro   ÚskipúContainer[str]Úinclude_editablesÚeditables_onlyÚ	user_onlyc                ó¸   ‡— |                       ¦   «         }|rd„ |D ¦   «         }|sd„ |D ¦   «         }|rd„ |D ¦   «         }|rd„ |D ¦   «         }ˆfd„|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.
        c              3  ó(   K  — | ]}|j         ¯	|V — Œd S r%   )r¦   ©rÝ   Úds     r*   rß   z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>Ž  s)   è è € Ð+Ð+˜ 1¤7Ð+�!Ð+Ð+Ð+Ð+Ð+Ð+r-   c              3  ó(   K  — | ]}|j         °	|V — Œd S r%   ©r¤   r$  s     r*   rß   z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>�  s)   è è € Ð2Ð2˜ q¤zÐ2�!Ð2Ð2Ð2Ð2Ð2Ð2r-   c              3  ó(   K  — | ]}|j         ¯	|V — Œd S r%   r'  r$  s     r*   rß   z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>’  s)   è è € Ð.Ð.˜ 1¤:Ð.�!Ð.Ð.Ð.Ð.Ð.Ð.r-   c              3  ó(   K  — | ]}|j         ¯	|V — Œd S r%   )rª   r$  s     r*   rß   z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>”  s)   è è € Ð1Ð1˜ 1¤=Ð1�!Ð1Ð1Ð1Ð1Ð1Ð1r-   c              3  ó.   •K  — | ]}|j         ‰v¯|V — Œd S r%   )r€   )rÝ   r%  r  s     €r*   rß   z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>•  s0   øè è € Ð>Ð>�a Ô!1¸Ð!=Ð!=�Ð!=Ð!=Ð!=Ð!=Ð>Ð>r-   )r  )r)   r  r  r  r   r!  Úits     `    r*   Úiter_installed_distributionsz,BaseEnvironment.iter_installed_distributionst  sœ   ø€ ð0 ×(Ò(Ñ*Ô*ˆØð 	,Ø+Ð+˜RÐ+Ñ+Ô+ˆBØ ð 	3Ø2Ð2˜RÐ2Ñ2Ô2ˆBØð 	/Ø.Ð.˜RÐ.Ñ.Ô.ˆBØð 	2Ø1Ð1˜RÐ1Ñ1Ô1ˆBØ>Ð>Ð>Ð>˜2Ð>Ñ>Ô>Ð>r-   N)r"   r  )rì   r  r"   r  )r+   r#   r"   r  )r"   r  )r  ro   r  r  r  ro   r   ro   r!  ro   r"   r  )r3   r4   r5   Ú__doc__r  r
  r  r  r  r  r   r,  r7   r-   r*   r  r  C  s¾   € € € € € Ø@Ð@àð$ð $ð $ñ „[ð$ð ð$ð $ð $ñ „[ð$ð$ð $ð $ð $ð$ð $ð $ð $ðð ð ð ð.  Ø*Ø"&Ø$Øð!?ð !?ð !?ð !?ð !?ð !?ð !?r-   r  c                  ó"   — e Zd ZU ded<   dd„ZdS )rV   r#   r_   r"   úzipfile.ZipFilec                ó   — t          ¦   «         ‚r%   r&   r(   s    r*   Ú
as_zipfilezWheel.as_zipfile›  r¹   r-   N©r"   r/  )r3   r4   r5   rG   r1  r7   r-   r*   rV   rV   ˜  s3   € € € € € € Ø€M€M�Mð$ð $ð $ð $ð $ð $r-   rV   c                  ó   — e Zd Zd	d„Zd
d„ZdS )ÚFilesystemWheelr_   r#   r"   r  c                ó   — || _         d S r%   )r_   rv   s     r*   Ú__init__zFilesystemWheel.__init__   s   € Ø ˆŒˆˆr-   r/  c                ó8   — t          j        | j        d¬¦  «        S ©NT)Ú
allowZip64)ÚzipfileÚZipFiler_   r(   s    r*   r1  zFilesystemWheel.as_zipfile£  s   € ÝŒ˜tœ}¸Ð>Ñ>Ô>Ð>r-   N)r_   r#   r"   r  r2  ©r3   r4   r5   r6  r1  r7   r-   r*   r4  r4  Ÿ  s<   € € € € € ð!ð !ð !ð !ð?ð ?ð ?ð ?ð ?ð ?r-   r4  c                  ó   — e Zd Zdd„Zdd	„Zd
S )ÚMemoryWheelr_   r#   Ústreamú	IO[bytes]r"   r  c                ó"   — || _         || _        d S r%   )r_   r?  )r)   r_   r?  s      r*   r6  zMemoryWheel.__init__¨  s   € Ø ˆŒØˆŒˆˆr-   r/  c                ó8   — t          j        | j        d¬¦  «        S r8  )r:  r;  r?  r(   s    r*   r1  zMemoryWheel.as_zipfile¬  s   € ÝŒ˜tœ{°tÐ<Ñ<Ô<Ð<r-   N)r_   r#   r?  r@  r"   r  r2  r<  r7   r-   r*   r>  r>  §  s<   € € € € € ðð ð ð ð=ð =ð =ð =ð =ð =r-   r>  )r8   r9   r:   r9   r"   r#   )BÚ
__future__r   rà   Úemail.messageÚemailr  r�   Úloggingr?   r  r:  Úcollections.abcr   r   r   r   Útypingr   r	   r
   r   r   Ú"pip._vendor.packaging.requirementsr   Ú pip._vendor.packaging.specifiersr   r   Úpip._vendor.packaging.utilsr   r   Úpip._vendor.packaging.versionr   Úpip._internal.exceptionsr   Úpip._internal.locationsr   r   Úpip._internal.models.direct_urlr   r   r   Úpip._internal.utils.compatr   Úpip._internal.utils.egg_linkr   Úpip._internal.utils.miscr   r   Úpip._internal.utils.urlsr   Ú_jsonr   r#   ÚPurePathr®   Ú	getLoggerr3   r‘   r!   rA   rC   rI   r  rV   r4  r>  r7   r-   r*   ú<module>rW     s[  ðØ "Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ Eðð ð ð ð ð ð ð ð ð ð ð ð ð ð ;Ð :Ð :Ð :Ð :Ð :Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 1Ð 1Ð 1Ð 1Ð 1Ð 1à 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <ðð ð ð ð ð ð ð ð ð ð
 3Ð 2Ð 2Ð 2Ð 2Ð 2Ø DÐ DÐ DÐ DÐ DÐ DØ =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0à Ð Ð Ð Ð Ð à��gÔ&Ð&Ô'€à	ˆÔ	˜8Ñ	$Ô	$€ð$ð $ð $ð $ð $�Xñ $ô $ð $ð,ð ,ð ,ð ,ð<ð ð ð ð �Jñ ô ð ðb3ð b3ð b3ð b3ð b3�xñ b3ô b3ð b3ðJR?ð R?ð R?ð R?ð R?ñ R?ô R?ð R?ðj$ð $ð $ð $ð $ˆHñ $ô $ð $ð?ð ?ð ?ð ?ð ?�eñ ?ô ?ð ?ð=ð =ð =ð =ð =�%ñ =ô =ð =ð =ð =r-   