§
    �’jÜf  ã                  ó$  — 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 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+m,Z, d dl-m.Z. ddl/m0Z0 h d£Z1e2ej3        z  Z4 ej5        e6¦  «        Z7 G d„ de¦  «        Z8d&d„Z9 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=¦  «        Z?dS )'é    )ÚannotationsN)Ú
CollectionÚ	ContainerÚIterableÚIterator)ÚIOÚAnyÚ
NamedTupleÚProtocol)ÚRequirement)ÚInvalidSpecifierÚSpecifierSet)ÚNormalizedNameÚcanonicalize_name)ÚVersion)ÚNoneMetadataError)Úsite_packagesÚ	user_site)ÚDIRECT_URL_METADATA_NAMEÚ	DirectUrlÚDirectUrlValidationError)Úegg_link_path_from_sys_path)Úis_localÚnormalize_path)Úurl_to_pathé   )Úmsg_to_json>   ÚpythonÚwsgirefÚargparsec                  ó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    úIC:\Projects\DSCons\.venv\Lib\site-packages\pip\_internal\metadata\base.pyÚnamezBaseEntryPoint.name3   ó   € å!Ñ#Ô#Ð#ó    c                ó   — t          ¦   «         ‚r&   r'   r)   s    r+   ÚvaluezBaseEntryPoint.value7   r-   r.   c                ó   — t          ¦   «         ‚r&   r'   r)   s    r+   ÚgroupzBaseEntryPoint.group;   r-   r.   N©r#   r$   )Ú__name__Ú
__module__Ú__qualname__Úpropertyr,   r0   r2   © r.   r+   r"   r"   2   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)r9   r;   s     r+   Ú_convert_installed_files_pathrB   @   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)r4   r5   r6   Ú__annotations__r8   r.   r+   rD   rD   ^   s.   € € € € € € ØÐÐÑØ€J€J�JØ€K€K�K€K€Kr.   rD   c                  ó4  — e Zd ZedNd„¦   «         ZedOd	„¦   «         ZedPd„¦   «         ZdQd„ZdQd„Ze	dRd„¦   «         Z
ej        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'   )ÚclsrK   s     r+   Úfrom_directoryzBaseDistribution.from_directorye   ó   € õ "Ñ#Ô#Ð#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'   )rM   rP   rR   rS   s       r+   Úfrom_metadata_file_contentsz,BaseDistribution.from_metadata_file_contentsm   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'   )rM   rV   r,   s      r+   Ú
from_wheelzBaseDistribution.from_wheel   ó   € õ "Ñ#Ô#Ð#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“   rZ   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*   rg   Ú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)ro   r@   rA   Úis_file©r*   ro   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@   rA   Ú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©ro   Úendswithr@   rA   Úis_dirrs   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-inforz   rs   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+   rg   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.installer>  sŠ   € ð	Ø!Ÿ^š^¨KÑ8Ô8ˆNˆNøÝ�Õ%6Ð7ð 	ð 	ð 	Ø�2�2ð	øøøà"×-Ò-Ñ/Ô/ð 	$ð 	$ˆDØŸ:š:™<œ<ˆLØð $Ø#Ð#Ð#Ð#ð$àˆrs   ‚ ˜3²3c                ó,   — |                       d¦  «        S )NÚ	REQUESTED)rr   r)   s    r+   Ú	requestedzBaseDistribution.requestedJ  s   € à�|Š|˜KÑ(Ô(Ð(r.   c                ó*   — t          | j        ¦  «        S r&   )rp   rk   r)   s    r+   ÚeditablezBaseDistribution.editableN  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)rm   r   r)   s    r+   ÚlocalzBaseDistribution.localR  s#   € ð Ô"Ð*Ø�5Ý˜Ô/Ñ0Ô0Ð0r.   c                óz   — | j         �t          €dS | j                              t          t          ¦  «        ¦  «        S ©NF)rm   r   Ú
startswithr   r)   s    r+   Úin_usersitezBaseDistribution.in_usersite\  s4   € àÔ"Ð*­iÐ.?Ø�5ØÔ&×1Ò1µ.ÅÑ2KÔ2KÑLÔLÐLr.   c                óz   — | j         �t          €dS | j                              t          t          ¦  «        ¦  «        S r©   )rm   r   rª   r   r)   s    r+   Úin_site_packagesz!BaseDistribution.in_site_packagesb  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+   rr   zBaseDistribution.is_fileh  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_namesl  rO   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_textt  ó   € õ "Ñ#Ô#Ð#r.   úIterable[BaseEntryPoint]c                ó   — t          ¦   «         ‚r&   r'   r)   s    r+   Úiter_entry_pointsz"BaseDistribution.iter_entry_points}  ó   € Ý!Ñ#Ô#Ð#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*   r0   Ú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r8   Ú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º  rO   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&   r8   )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&   )rB   r@   rA   Úparts)rÞ   rç   Úinfo_rels     €r+   rà   zFBaseDistribution._iter_declared_entries_from_legacy.<locals>.<genexpr>ê  sN   øè è € ð 
ð 
àõ *­'¬,°q©/¬/Ô*?ÀÄÑPÔPð
ð 
ð 
ð 
ð 
ð 
r.   )
rŒ   r�   r›   r`   ro   r@   rA   Ú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[]ú:)rE   rF   rG   )rŒ   r�   r›   rœ   rª   r{   Ú	partitionrD   )r*   r”   rF   rG   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   rF   Úadd)r*   Úknown_extrasr9   rF   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   rF   rG   rE   )r*   r9   rF   rG   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À   ÚdeprF   s       r+   r¿   z'BaseDistribution._add_egg_info_requires>  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)rK   r$   r#   rJ   )rP   rQ   rR   r$   rS   r$   r#   rJ   )rV   rW   r,   r$   r#   rJ   r3   )r#   rd   )r#   rp   )r#   r   )r#   r   )r#   rŠ   )r®   r¯   r#   rp   )r#   r²   )r®   r¯   r#   r$   )r#   r·   )r#   r»   )r#   rÁ   )r#   r   )r8   )rÍ   rÎ   r#   rÏ   )r#   rÒ   )r#   r×   )r#   rÚ   )r#   rò   )rÀ   r»   r#   r  )3r4   r5   r6   ÚclassmethodrN   rU   rY   ra   rc   r7   r`   Ú	functoolsÚcached_propertyrk   rm   ro   rt   rx   r}   r   r�   rƒ   r_   r‰   rg   r    r£   r¥   r§   r«   r­   rr   r´   rŒ   r¹   r½   rÀ   rÃ   rÆ   r^   rÌ   rÑ   rÖ   rÙ   rä   rï   rñ   rù   rý   r  r¿   r8   r.   r+   rJ   rJ   d   sç  € € € € € Øð$ð $ð $ñ „[ð$ð ð$ð $ð $ñ „[ð$ð" ð$ð $ð $ñ „[ð$ðGð Gð Gð Gð5ð 5ð 5ð 5ð ð$ð $ð $ñ „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.   rJ   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'   )rM   s    r+   ÚdefaultzBaseEnvironment.defaultK  r-   r.   rí   úlist[str] | Nonec                ó   — t          ¦   «         ‚r&   r'   )rM   rí   s     r+   Ú
from_pathszBaseEnvironment.from_pathsO  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_distributionS  rO   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_distributions[  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_distributionsd  s�   è è € à×,Ò,Ñ.Ô.ð 	ð 	ˆDõ
 "$¤Ø<ØÔ#Ý”mð"ñ "ô "Ðð
 &ð Ý—’Ø;ØÔ'Ø”Mñô ð ð
 ØˆJˆJˆJˆJð#	ð 	r.   TFÚ
local_onlyrp   Ú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_distributionsy  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  rp   r  r  r   rp   r!  rp   r"  rp   r#   r  )r4   r5   r6   Ú__doc__r  r  r  r  r  r  Ústdlib_pkgsr-  r8   r.   r+   r	  r	  H  s¾   € € € € € Ø@Ð@àð$ð $ð $ñ „[ð$ð ð$ð $ð $ñ „[ð$ð$ð $ð $ð $ð$ð $ð $ð $ðð ð ð ð.  Ø*Ø"&Ø$Øð!?ð !?ð !?ð !?ð !?ð !?ð !?r.   r	  c                  ó"   — e Zd ZU ded<   dd„ZdS )rW   r$   r`   r#   úzipfile.ZipFilec                ó   — t          ¦   «         ‚r&   r'   r)   s    r+   Ú
as_zipfilezWheel.as_zipfile   rº   r.   N©r#   r1  )r4   r5   r6   rH   r3  r8   r.   r+   rW   rW   �  s3   € € € € € € Ø€M€M�Mð$ð $ð $ð $ð $ð $r.   rW   c                  ó   — e Zd Zd	d„Zd
d„ZdS )ÚFilesystemWheelr`   r$   r#   r  c                ó   — || _         d S r&   )r`   rw   s     r+   Ú__init__zFilesystemWheel.__init__¥  s   € Ø ˆŒˆˆr.   r1  c                ó8   — t          j        | j        d¬¦  «        S ©NT)Ú
allowZip64)ÚzipfileÚZipFiler`   r)   s    r+   r3  zFilesystemWheel.as_zipfile¨  s   € ÝŒ˜tœ}¸Ð>Ñ>Ô>Ð>r.   N)r`   r$   r#   r  r4  ©r4   r5   r6   r8  r3  r8   r.   r+   r6  r6  ¤  s<   € € € € € ð!ð !ð !ð !ð?ð ?ð ?ð ?ð ?ð ?r.   r6  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`   rA  )r*   r`   rA  s      r+   r8  zMemoryWheel.__init__­  s   € Ø ˆŒØˆŒˆˆr.   r1  c                ó8   — t          j        | j        d¬¦  «        S r:  )r<  r=  rA  r)   s    r+   r3  zMemoryWheel.as_zipfile±  s   € ÝŒ˜tœ{°tÐ<Ñ<Ô<Ð<r.   N)r`   r$   rA  rB  r#   r  r4  r>  r8   r.   r+   r@  r@  ¬  s<   € € € € € ðð ð ð ð=ð =ð =ð =ð =ð =r.   r@  )r9   r:   r;   r:   r#   r$   )@Ú
__future__r   rá   Úemail.messageÚemailr  r�   Úloggingr@   r  r<  Úcollections.abcr   r   r   r   Útypingr   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.egg_linkr   Úpip._internal.utils.miscr   r   Úpip._internal.utils.urlsr   Ú_jsonr   r/  r$   ÚPurePathr¯   Ú	getLoggerr4   r’   r"   rB   rD   rJ   r	  rW   r6  r@  r8   r.   r+   ú<module>rX     sJ  ðØ "Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø 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Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <ðð ð ð ð ð ð ð ð ð ð
 EÐ DÐ DÐ DÐ DÐ DØ =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0à Ð Ð Ð Ð Ð ð 0Ð/Ð/€ð �Ô!Ñ!€à	ˆÔ	˜8Ñ	$Ô	$€ð$ð $ð $ð $ð $�Xñ $ô $ð $ð,ð ,ð ,ð ,ð<ð ð ð ð �Jñ ô ð ða3ð a3ð a3ð a3ð a3�xñ a3ô a3ð a3ðHR?ð R?ð R?ð R?ð R?ñ R?ô R?ð R?ðj$ð $ð $ð $ð $ˆHñ $ô $ð $ð?ð ?ð ?ð ?ð ?�eñ ?ô ?ð ?ð=ð =ð =ð =ð =�%ñ =ô =ð =ð =ð =r.   