§
    è ph{c  ã                   ó^  — 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mZmZmZmZ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/m0Z0 d dl1m2Z2 ddl3m4Z4 ee5ej6        f         Z7 ej8        e9¦  «        Z: G d„ de¦  «        Z;dee5df         dee5df         de5f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@¦  «        ZA G d!„ d"e@¦  «        ZBdS )#é    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                   ób   — e Zd Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         ZdS )ÚBaseEntryPointÚreturnc                 ó   — t          ¦   «         ‚©N©ÚNotImplementedError©Úselfs    úhC:\Users\Daniel\PycharmProjects\Portfolio_Website\.venv\Lib\site-packages\pip\_internal\metadata\base.pyÚnamezBaseEntryPoint.name2   ó   € å!Ñ#Ô#Ð#ó    c                 ó   — t          ¦   «         ‚r'   r(   r*   s    r,   ÚvaluezBaseEntryPoint.value6   r.   r/   c                 ó   — t          ¦   «         ‚r'   r(   r*   s    r,   ÚgroupzBaseEntryPoint.group:   r.   r/   N)Ú__name__Ú
__module__Ú__qualname__ÚpropertyÚstrr-   r1   r3   © r/   r,   r$   r$   1   s‡   € € € € € Øð$�cð $ð $ð $ñ „Xð$ð ð$�sð $ð $ð $ñ „Xð$ð ð$�sð $ð $ð $ñ „Xð$ð $ð $r/   r$   Úentry.Úinfor%   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!   ©r8   ÚpathlibÚPath)r:   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 eed<   eed<   eed<   dS )ÚRequiresEntryÚrequirementÚextraÚmarkerN)r4   r5   r6   r8   Ú__annotations__r9   r/   r,   rD   rD   ]   s.   € € € € € € ØÐÐÑØ€J€J�JØ€K€K�K€K€Kr/   rD   c            	       óJ  — e Zd Zededd fd„¦   «         Zededededd fd„¦   «         Zedd	d
edd fd„¦   «         Zdefd„Z	defd„Z
edee         fd„¦   «         Zedee         fd„¦   «         Zedee         fd„¦   «         Zedee         fd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zedee         fd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Z edefd„¦   «         Z!edefd„¦   «         Z"edefd „¦   «         Z#d!e$defd"„Z%de&e         fd#„Z'd!e$defd$„Z(de)e*         fd%„Z+de,j-        j.        fd&„Z/e0j1        de,j-        j.        fd'„¦   «         Z2ede3ee4f         fd(„¦   «         Z5edee         fd)„¦   «         Z6edefd*„¦   «         Z7ede8fd+„¦   «         Z9d:d-e:e         de)e;         fd.„Z<de)e         fd/„Z=de)e         fd0„Z>dee&e                  fd1„Z?dee&e                  fd2„Z@dee&e                  fd3„ZAde&eB         fd4„ZCde)e         fd5„ZDde)e         fd6„ZEd7e,j-        j.        dd8fd9„ZFd8S );ÚBaseDistributionÚ	directoryr%   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_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(   )rM   rP   rQ   rR   s       r,   Úfrom_metadata_file_contentsz,BaseDistribution.from_metadata_file_contentsl   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   rU   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/   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_   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+   re   Ú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/   c                 ó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)rm   r@   rA   Úis_file©r+   rm   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©rm   Úendswithr@   rA   Úis_dirrp   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-inforw   rp   s     r,   Úinstalled_with_dist_infoz)BaseDistribution.installed_with_dist_info   sP   € ð Ô*ˆØð 	Ø�5Ø×%Ò% lÑ3Ô3ð 	Ø�5ÝŒ|˜MÑ*Ô*×1Ò1Ñ3Ô3Ð3r/   c                 ó   — t          ¦   «         ‚r'   r(   r*   s    r,   Úcanonical_namezBaseDistribution.canonical_name  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/   c                 ó(  — 	 |                       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,   re   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)ro   r*   s    r,   Ú	requestedzBaseDistribution.requestedJ  s   € à�|Š|˜KÑ(Ô(Ð(r/   c                 ó*   — t          | j        ¦  «        S r'   )Úboolri   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)rk   r   r*   s    r,   ÚlocalzBaseDistribution.localR  s%   € ð Ô"ð 	Ø�5Ý˜Ô/Ñ0Ô0Ð0r/   c                 óz   — | j         �t          €dS | j                              t          t          ¦  «        ¦  «        S ©NF)rk   r   Ú
startswithr   r*   s    r,   Úin_usersitezBaseDistribution.in_usersite\  s8   € àÔ"ð 	­ið 	Ø�5ØÔ&×1Ò1µ.ÅÑ2KÔ2KÑLÔLÐLr/   c                 óz   — | j         �t          €dS | j                              t          t          ¦  «        ¦  «        S r¦   )rk   r   r§   r   r*   s    r,   Úin_site_packagesz!BaseDistribution.in_site_packagesb  s8   € àÔ"ð 	­mð 	Ø�5ØÔ&×1Ò1µ.ÅÑ2OÔ2OÑPÔPÐPr/   Úpathc                 ó   — t          ¦   «         ‚)z7Check whether an entry in the info directory is a file.r(   ©r+   r«   s     r,   ro   zBaseDistribution.is_fileh  r.   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_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/   c                 ó   — t          ¦   «         ‚r'   r(   r*   s    r,   Úiter_entry_pointsz"BaseDistribution.iter_entry_points}  ó   € Ý!Ñ#Ô#Ð#r/   c                 ó   — 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/   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/   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   r8   r   rŽ   r�   r]   )r+   r1   Ú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r9   Ú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º  rO   r/   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/   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/   c                 ó²   — 	 |                       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'   r9   )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_   rm   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/   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§   rx   Ú	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_extrasr:   rF   s       r,   Ú_iter_egg_info_extrasz&BaseDistribution._iter_egg_info_extras  sp   è è € à�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+   r:   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¹   Nc                 óÎ   — |                      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/   )r9   )Gr4   r5   r6   Úclassmethodr8   rN   ÚbytesrT   rX   r`   rb   r7   r   r_   ri   rk   rm   r¡   rq   ru   rz   r|   r   r~   r   r€   r^   r†   r   re   rœ   rŸ   r¢   r¤   r¨   rª   ÚInfoPathro   r	   r¯   rˆ   r   r$   r³   ÚemailrÃ   ÚMessager¶   Ú	functoolsÚcached_propertyr¹   r   r   r»   r¾   r]   r   rÄ   r   r   rÇ   rË   rÍ   r×   râ   rä   rD   rë   rï   ró   r¸   r9   r/   r,   rJ   rJ   c   sá  € € € € € Øð$ sð $Ð/Að $ð $ð $ñ „[ð$ð ð$à ð$ð ð$ð ð	$ð
 
ð$ð $ð $ñ „[ð$ð" ð$˜wð $¨cð $Ð6Hð $ð $ð $ñ „[ð$ðG˜#ð Gð Gð Gð Gð5˜ð 5ð 5ð 5ð 5ð ð$˜( 3œ-ð $ð $ð $ñ „Xð$ð ð¨8°C¬=ð ð ð ñ „Xðð* ð
$ H¨S¤Mð 
$ð 
$ð 
$ñ „Xð
$ð ð$˜x¨œ}ð $ð $ð $ñ „Xð$ð ð
5¨ð 
5ð 
5ð 
5ñ „Xð
5ð ð7 $ð 7ð 7ð 7ñ „Xð7ð ð4°Dð 4ð 4ð 4ñ „Xð4ð" ð4¨$ð 4ð 4ð 4ñ „Xð4ð ð$ ð $ð $ð $ñ „Xð$ð ð$˜ð $ð $ð $ñ „Xð$ð ð$˜Sð $ð $ð $ñ „Xð$ð ð/ Sð /ð /ð /ñ „Xð/ð ð˜H YÔ/ð ð ð ñ „Xðð2 ð	˜3ð 	ð 	ð 	ñ „Xð	ð ð)˜4ð )ð )ð )ñ „Xð)ð ð4˜$ð 4ð 4ð 4ñ „Xð4ð ð1�tð 1ð 1ð 1ñ „Xð1ð ðM˜Tð Mð Mð Mñ „XðMð
 ðQ $ð Qð Qð Qñ „XðQð
$˜Hð $¨ð $ð $ð $ð $ð$¨X°c¬]ð $ð $ð $ð $ð$˜hð $¨3ð $ð $ð $ð $ð$ 8¨NÔ#;ð $ð $ð $ð $ð$ ¤Ô 5ð $ð $ð $ð $ð Ôð
˜%œ-Ô/ð 
ð 
ð 
ñ Ôð
ð ð*˜t C¨ Hœ~ð *ð *ð *ñ „Xð*ð ð5 (¨3¤-ð 5ð 5ð 5ñ „Xð5ð ð>˜#ð >ð >ð >ñ „Xð>ð ð ð ð ð ñ „Xðð$$ð $¨
°3¬ð $ÀÈ+ÔAVð $ð $ð $ð $ð: x°¤}ð :ð :ð :ð :ð
$ h¨~Ô&>ð 
$ð 
$ð 
$ð 
$ðT°H¸XÀc¼]Ô4Kð Tð Tð Tð Tð
°H¸XÀc¼]Ô4Kð 
ð 
ð 
ð 
ð*
 x°¸´Ô'>ð 
ð 
ð 
ð 
ð N¨H°]Ô,Cð Nð Nð Nð Nð2 x°¤}ð ð ð ð ð(¨X°c¬]ð (ð (ð (ð (ð83¨u¬}Ô/Dð 3Èð 3ð 3ð 3ð 3ð 3ð 3r/   rJ   c                   óò   — e Zd ZdZedd„¦   «         Zedeee                  dd fd„¦   «         Z	deded         fd„Z
ded         fd	„Zdee         fd
„Zdedddfdedee         dedededee         fd„ZdS )ÚBaseEnvironmentz6An environment containing distributions to introspect.r%   c                 ó   — t          ¦   «         ‚r'   r(   )rM   s    r,   ÚdefaultzBaseEnvironment.defaultK  r.   r/   rà   c                 ó   — t          ¦   «         ‚r'   r(   )rM   rà   s     r,   Ú
from_pathszBaseEnvironment.from_pathsO  r.   r/   r-   rJ   c                 ó   — t          ¦   «         ‚)z«Given a requirement name, return the installed distributions.

        The name may not be normalized. The implementation must canonicalize
        it for lookup.
        r(   )r+   r-   s     r,   Úget_distributionz BaseEnvironment.get_distributionS  rO   r/   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_onlyÚskipÚ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þ   )r4   r5   r6   Ú__doc__rö   r   r   r
   r8   r  r  r	   r  rJ   r  r   r¡   r   r  r9   r/   r,   rþ   rþ   H  sH  € € € € € Ø@Ð@àð$ð $ð $ñ „[ð$ð ð$˜x¨¨S¬	Ô2ð $Ð7Hð $ð $ð $ñ „[ð$ð$ Sð $¨XÐ6HÔ-Ið $ð $ð $ð $ð$ XÐ.@Ô%Að $ð $ð $ð $ð¨Ð1AÔ(Bð ð ð ð ð.  Ø*Ø"&Ø$Øð!?ð !?àð!?ð ˜Œnð!?ð  ð	!?ð
 ð!?ð ð!?ð 
Ð"Ô	#ð!?ð !?ð !?ð !?ð !?ð !?r/   rþ   c                   ó0   — e Zd ZU eed<   dej        fd„ZdS )rV   r_   r%   c                 ó   — t          ¦   «         ‚r'   r(   r*   s    r,   Ú
as_zipfilezWheel.as_zipfile   r´   r/   N)r4   r5   r6   r8   rH   ÚzipfileÚZipFiler"  r9   r/   r,   rV   rV   �  s<   € € € € € € Ø€M€M�Mð$˜GœOð $ð $ð $ð $ð $ð $r/   rV   c                   ó4   — e Zd Zdeddfd„Zdej        fd„ZdS )ÚFilesystemWheelr_   r%   Nc                 ó   — || _         d S r'   )r_   rt   s     r,   Ú__init__zFilesystemWheel.__init__¥  s   € Ø ˆŒˆˆr/   c                 ó8   — t          j        | j        d¬¦  «        S ©NT)Ú
allowZip64)r#  r$  r_   r*   s    r,   r"  zFilesystemWheel.as_zipfile¨  s   € ÝŒ˜tœ}¸Ð>Ñ>Ô>Ð>r/   )r4   r5   r6   r8   r(  r#  r$  r"  r9   r/   r,   r&  r&  ¤  sS   € € € € € ð! ð !¨ð !ð !ð !ð !ð?˜GœOð ?ð ?ð ?ð ?ð ?ð ?r/   r&  c                   óD   — e Zd Zdedee         ddfd„Zdej        fd„Z	dS )ÚMemoryWheelr_   Ústreamr%   Nc                 ó"   — || _         || _        d S r'   )r_   r.  )r+   r_   r.  s      r,   r(  zMemoryWheel.__init__­  s   € Ø ˆŒØˆŒˆˆr/   c                 ó8   — t          j        | j        d¬¦  «        S r*  )r#  r$  r.  r*   s    r,   r"  zMemoryWheel.as_zipfile±  s   € ÝŒ˜tœ{°tÐ<Ñ<Ô<Ð<r/   )
r4   r5   r6   r8   r   r÷   r(  r#  r$  r"  r9   r/   r,   r-  r-  ¬  s^   € € € € € ð ð ¨b°¬ið ¸Dð ð ð ð ð=˜GœOð =ð =ð =ð =ð =ð =r/   r-  )CrÔ   Úemail.messagerù   rû   rŒ   Úloggingr@   r	  r#  Útypingr   r   r   r   r   r   r	   r
   r   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"   r8   ÚPurePathrø   Ú	getLoggerr4   rŽ   r$   rB   rD   rJ   rþ   rV   r&  r-  r9   r/   r,   ú<module>rB     sŸ  ðØ 
€
€
€
Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð  ;Ð :Ð :Ð :Ð :Ð :Ø 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ñ $ô $ð $ð,Ø��c�Œ?ð,à
��S�Œ/ð,ð 	ð,ð ,ð ,ð ,ð<ð ð ð ð �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/   