§
    
Á³g½b  ã                   ó”  — 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 d dlmZ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 ddl5m6Z6 erd dl	m7Z7 ne8Z7eee f         Z9ee:ej;        f         Z< ej=        e>¦  «        Z? G d„ de7¦  «        Z@dee:df         dee:df         de:fd„ZA G d„ de¦  «        ZB G d„ de7¦  «        ZC G d„ d¦  «        ZD G d„ d e7¦  «        ZE G d!„ d"eE¦  «        ZF G d#„ d$eE¦  «        ZGdS )%é    N)ÚIOÚTYPE_CHECKINGÚAnyÚ
CollectionÚ	ContainerÚDictÚIterableÚIteratorÚListÚ
NamedTupleÚOptionalÚTupleÚUnion)ÚRequirement)ÚInvalidSpecifierÚSpecifierSet)ÚNormalizedName)ÚLegacyVersionÚVersion)ÚNoneMetadataError)Úsite_packagesÚ	user_site)ÚDIRECT_URL_METADATA_NAMEÚ	DirectUrlÚDirectUrlValidationError)Ústdlib_pkgs)Úegg_link_path_from_sys_path)Úis_localÚnormalize_path)Ú
safe_extra)Úurl_to_pathé   )Úmsg_to_json)ÚProtocolc                   ó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    úY/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/pip/_internal/metadata/base.pyÚnamezBaseEntryPoint.name:   ó   € å!Ñ#Ô#Ð#ó    c                 ó   — t          ¦   «         ‚r)   r*   r,   s    r.   ÚvaluezBaseEntryPoint.value>   r0   r1   c                 ó   — t          ¦   «         ‚r)   r*   r,   s    r.   ÚgroupzBaseEntryPoint.groupB   r0   r1   N)Ú__name__Ú
__module__Ú__qualname__ÚpropertyÚstrr/   r3   r5   © r1   r.   r&   r&   9   s‡   € € € € € Øð$�cð $ð $ð $ñ „Xð$ð ð$�sð $ð $ð $ñ „Xð$ð ð$�sð $ð $ð $ñ „Xð$ð $ð $r1   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"   ©r:   ÚpathlibÚPath)r<   r=   s     r.   Ú_convert_installed_files_pathrD   G   s’   € ð* ð �E˜!”H Ò$Ð$Øð 	�t˜B”x 4Ò'Ð'Ø�G‰OˆDˆDà˜˜˜”9ˆDØ�a�b�b”	ˆð ð �E˜!”H Ò$Ð$õ �wŒ|Ð*˜TÐ* EÐ*Ð*Ð*Ñ+Ô+Ð+r1   c                   ó.   — e Zd ZU eed<   eed<   eed<   dS )ÚRequiresEntryÚrequirementÚextraÚmarkerN)r6   r7   r8   r:   Ú__annotations__r;   r1   r.   rF   rF   e   s.   € € € € € € ØÐÐÑØ€J€J�JØ€K€K�K€K€Kr1   rF   c            	       óZ  — 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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. e/j0        d&¬'¦  «        de+j,        j-        fd(„¦   «         Z1e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d0„Z<de(e         fd1„Z=dee%e                  fd2„Z>dee%e                  fd3„Z?dee%e                  fd4„Z@de%eA         fd5„ZBde(e         fd6„ZCde(e         fd7„ZDd8e+j,        j-        dd9fd:„ZEd9S )<ÚBaseDistributionÚ	directoryr'   c                 ó   — t          ¦   «         ‚)z‡Load the distribution from a metadata directory.

        :param directory: Path to a metadata directory, e.g. ``.dist-info``.
        r*   )ÚclsrM   s     r.   Úfrom_directoryzBaseDistribution.from_directoryl   ó   € õ "Ñ#Ô#Ð#r1   Ú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*   )rO   rR   rS   rT   s       r.   Úfrom_metadata_file_contentsz,BaseDistribution.from_metadata_file_contentst   s   € õ  "Ñ#Ô#Ð#r1   Ú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*   )rO   rW   r/   s      r.   Ú
from_wheelzBaseDistribution.from_wheel†   ó   € õ "Ñ#Ô#Ð#r1   c                 ó6   — | j         › d| j        › d| j        › d�S )Nú z (ú))Úraw_nameÚversionÚlocationr,   s    r.   Ú__repr__zBaseDistribution.__repr__”   s'   € Ø”-ÐBÐB $¤,ÐBÐB°$´-ÐBÐBÐBÐBr1   c                 ó$   — | j         › d| j        › �S )Nr]   )r_   r`   r,   s    r.   Ú__str__zBaseDistribution.__str__—   s   € Ø”-Ð0Ð0 $¤,Ð0Ð0Ð0r1   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.   ra   zBaseDistribution.locationš   r[   r1   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_   ra   )r-   rg   Úegg_link_paths      r.   Úeditable_project_locationz*BaseDistribution.editable_project_location¨   sd   € ð ”_ˆ
Øð 
	%Ø×+Ò+Ñ-Ô-ð 3Ý" :¤>Ñ2Ô2Ð2ð3õ
 8¸¼ÑFÔFˆMØð %ð ”}Ð$Øˆtr1   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   € õ "Ñ#Ô#Ð#r1   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   € õ "Ñ#Ô#Ð#r1   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)ro   rB   rC   Úis_file©r-   ro   s     r.   Úinstalled_by_distutilsz'BaseDistribution.installed_by_distutilsÛ   s5   € ð Ô*ˆØð 	Ø�5ÝŒ|˜MÑ*Ô*×2Ò2Ñ4Ô4Ð4r1   c                 óB   — | j         }|sdS |                     d¦  «        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)ra   Úendswith©r-   ra   s     r.   Úinstalled_as_eggz!BaseDistribution.installed_as_eggè   s,   € ð ”=ˆØð 	Ø�5Ø× Ò  Ñ(Ô(Ð(r1   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   ru   rB   rC   Ú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Ð3r1   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Ð3r1   c                 ó   — t          ¦   «         ‚r)   r*   r,   s    r.   Úcanonical_namezBaseDistribution.canonical_name  r0   r1   c                 ó   — t          ¦   «         ‚r)   r*   r,   s    r.   r`   zBaseDistribution.version  r0   r1   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¨#Ñ.Ô.Ð.r1   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.   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)rq   r,   s    r.   Ú	requestedzBaseDistribution.requestedL  s   € à�|Š|˜KÑ(Ô(Ð(r1   c                 ó*   — t          | j        ¦  «        S r)   )Úboolrk   r,   s    r.   ÚeditablezBaseDistribution.editableP  s   € å�DÔ2Ñ3Ô3Ð3r1   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.localT  s#   € ð Ô"Ð*Ø�5Ý˜Ô/Ñ0Ô0Ð0r1   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ÐLr1   c                 óz   — | j         �t          €dS | j                              t          t          ¦  «        ¦  «        S r¥   )rm   r   r¦   r   r,   s    r.   Úin_site_packagesz!BaseDistribution.in_site_packagesd  s4   € àÔ"Ð*­mÐ.CØ�5ØÔ&×1Ò1µ.ÅÑ2OÔ2OÑPÔPÐPr1   Úpathc                 ó   — t          ¦   «         ‚)z7Check whether an entry in the info directory is a file.r*   ©r-   rª   s     r.   rq   zBaseDistribution.is_filej  r0   r1   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_namesn  rQ   r1   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_textv  ó   € õ "Ñ#Ô#Ð#r1   c                 ó   — t          ¦   «         ‚r)   r*   r,   s    r.   Úiter_entry_pointsz"BaseDistribution.iter_entry_points  ó   € Ý!Ñ#Ô#Ð#r1   c                 ó   — t          ¦   «         ‚r)   r*   r,   s    r.   Ú_metadata_implzBaseDistribution._metadata_impl‚  r³   r1   r"   )Úmaxsizec                 óX   — |                       ¦   «         }|                      |¦  «         |S r)   )rµ   Ú_add_egg_info_requires)r-   Úmetadatas     r.   Ú_metadata_cachedz!BaseDistribution._metadata_cached…  s.   € ð ×&Ò&Ñ(Ô(ˆØ×#Ò# HÑ-Ô-Ð-Øˆr1   c                 ó*   — |                       ¦   «         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º   r,   s    r.   r¹   zBaseDistribution.metadata�  s   € ð ×$Ò$Ñ&Ô&Ð&r1   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œ=Ñ)Ô)Ð)r1   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Ð4r1   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   € ð
 Œ}× Ò  ¨Ô)<Ñ=Ô=Ð=r1   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-   r3   Ú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r;   Ú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Â  rQ   r1   c                 ó   — t          ¦   «         ‚)z²Extras provided by this distribution.

        For modern .dist-info distributions, this is the collection of
        "Provides-Extra:" entries in distribution metadata.
        r*   r,   s    r.   Úiter_provided_extrasz%BaseDistribution.iter_provided_extrasÊ  rQ   r1   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   NrA   )Ú.0Úrows     r.   ú	<genexpr>zFBaseDistribution._iter_declared_entries_from_record.<locals>.<genexpr>Ø  s8   è è € ÐSÐS¨c••G”L  Q¤Ñ(Ô(Ñ)Ô)ÐSÐSÐSÐSÐSÐSr1   )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)   r;   )rÏ   Úps     r.   rÑ   zFBaseDistribution._iter_declared_entries_from_legacy.<locals>.<genexpr>ß  s'   è è € ÐAÐA�q¸qÐA�ÐAÐAÐAÐAÐAÐAr1   F)Úkeependsc              3   óp   •K  — | ]0}t          t          j        |¦  «        j        ‰j        ¦  «        V — Œ1d S r)   )rD   rB   rC   Úparts)rÏ   rØ   Úinfo_rels     €r.   rÑ   zFBaseDistribution._iter_declared_entries_from_legacy.<locals>.<genexpr>ê  sN   øè è € ð 
ð 
àõ *­'¬,°q©/¬/Ô*?ÀÄÑPÔPð
ð 
ð 
ð 
ð 
ð 
r1   )
r‡   rˆ   r–   ra   ro   rB   rC   Ú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ð	
r1   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[]ú:)rG   rH   rI   )r‡   rˆ   r–   r—   r¦   ru   Ú	partitionrF   )r-   r�   rH   rI   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 ]/}|j        |v rŒ|                     |j        ¦  «         |j        V — Œ0dS )z'Get extras from the egg-info directory.r“   N)ré   rH   Úadd)r-   Úknown_extrasr<   s      r.   Ú_iter_egg_info_extrasz&BaseDistribution._iter_egg_info_extras  si   è è € à�tˆØ×4Ò4Ñ6Ô6ð 	ð 	ˆEØŒ{˜lÐ*Ð*ØØ×Ò˜Uœ[Ñ)Ô)Ð)Ø”+ÐÐÐÐð		ð 	r1   c              #   ó,  K  — |                       ¦   «         D ]|}|j        r(|j        r!d|j        › dt          |j        ¦  «        › d�}n1|j        rdt          |j        ¦  «        › d�}n|j        r|j        }nd}|r|j        › d|› �V — Œs|j        V — Œ}d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é   rH   rI   r    rG   )r-   r<   rI   s      r.   Ú_iter_egg_info_dependenciesz,BaseDistribution._iter_egg_info_dependencies!  sÞ   è è € ð ×4Ò4Ñ6Ô6ð 	(ð 	(ˆEØŒ{ð ˜uœ|ð ØU˜Uœ\ÐUÐU½:ÀeÄkÑ;RÔ;RÐUÐUÐU��Ø”ð Ø@¥j°´Ñ&=Ô&=Ð@Ð@Ð@��Ø”ð Øœ��à�Øð (ØÔ*Ð7Ð7¨vÐ7Ð7Ð7Ð7Ð7Ð7àÔ'Ð'Ð'Ð'Ð'ð	(ð 	(r1   r¹   Nc                 óÎ   — |                      d¦  «        s|                      ¦   «         D ]}||d<   Œ|                      d¦  «        s|                      ¦   «         D ]	}||d<   ŒdS dS )z6Add egg-info requires.txt information to the metadata.zRequires-DistzProvides-ExtraN)Úget_allrñ   rí   )r-   r¹   ÚdeprH   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ð 3r1   )r;   )Fr6   r7   r8   Úclassmethodr:   rP   ÚbytesrV   rZ   rb   rd   r9   r   ra   rk   rm   ro   r    rs   rw   r{   r}   r   r   ÚDistributionVersionr`   r…   r   rg   r›   rž   r¡   r£   r§   r©   ÚInfoPathrq   r
   r®   r‡   r	   r&   r²   ÚemailrÅ   ÚMessagerµ   Ú	functoolsÚ	lru_cacherº   r¹   r   r   r½   rÀ   r_   r   rÆ   r   r   rÉ   rË   rÕ   rà   râ   rF   ré   rí   rñ   r¸   r;   r1   r.   rL   rL   k   sÔ  € € € € € Øð$ sð $Ð/Að $ð $ð $ñ „[ð$ð ð$à ð$ð ð$ð ð	$ð
 
ð$ð $ð $ñ „[ð$ð" ð$˜wð $¨cð $Ð6Hð $ð $ð $ñ „[ð$ðC˜#ð Cð Cð Cð Cð1˜ð 1ð 1ð 1ð 1ð ð$˜( 3œ-ð $ð $ð $ñ „Xð$ð ð¨8°C¬=ð ð ð ñ „Xðð* ð
$ H¨S¤Mð 
$ð 
$ð 
$ñ „Xð
$ð ð$˜x¨œ}ð $ð $ð $ñ „Xð$ð ð
5¨ð 
5ð 
5ð 
5ñ „Xð
5ð ð	) $ð 	)ð 	)ð 	)ñ „Xð	)ð ð4°Dð 4ð 4ð 4ñ „Xð4ð" ð4¨$ð 4ð 4ð 4ñ „Xð4ð ð$ ð $ð $ð $ñ „Xð$ð ð$Ð,ð $ð $ð $ñ „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ð $ð $ð $ð $ð €YÔ Ð#Ñ#Ô#ð %¤-Ô"7ð ð ð ñ $Ô#ðð ð'˜%œ-Ô/ð 'ð 'ð 'ñ „Xð'ð ð*˜t C¨ Hœ~ð *ð *ð *ñ „Xð*ð ð5 (¨3¤-ð 5ð 5ð 5ñ „Xð5ð ð>˜#ð >ð >ð >ñ „Xð>ð ð ð ð ð ñ „Xðð$$ð $¨
°3¬ð $ÀÈ+ÔAVð $ð $ð $ð $ð$ h¨s¤mð $ð $ð $ð $ð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¬]ð (ð (ð (ð (ð63¨u¬}Ô/Dð 3Èð 3ð 3ð 3ð 3ð 3ð 3r1   rL   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*   )rO   s    r.   ÚdefaultzBaseEnvironment.defaultI  r0   r1   rÞ   c                 ó   — t          ¦   «         ‚r)   r*   )rO   rÞ   s     r.   Ú
from_pathszBaseEnvironment.from_pathsM  r0   r1   r/   rL   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_distributionQ  rQ   r1   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_distributionsY  r°   r1   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Ž   ra   )r-   ÚdistÚproject_name_valids      r.   Úiter_all_distributionsz&BaseEnvironment.iter_all_distributionsb  s�   è è € à×,Ò,Ñ.Ô.ð 	ð 	ˆDõ
 "$¤Ø<ØÔ#Ý”mð"ñ "ô "Ðð
 &ð Ý—’Ø;ØÔ'Ø”Mñô ð ð
 ØˆJˆJˆJˆJð#	ð 	r1   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Ð+�!Ð+Ð+Ð+Ð+Ð+Ð+r1   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Ð2r1   c              3   ó(   K  — | ]}|j         ¯	|V — Œd S r)   r  r  s     r.   rÑ   z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>•  s)   è è € Ð.Ð.˜ 1¤:Ð.�!Ð.Ð.Ð.Ð.Ð.Ð.r1   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Ð1r1   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¸Ð!=Ð!=�Ð!=Ð!=Ð!=Ð!=Ð>Ð>r1   )r  )r-   r  r  r  r  r  Úits     `    r.   Úiter_installed_distributionsz,BaseEnvironment.iter_installed_distributionsw  sœ   ø€ ð0 ×(Ò(Ñ*Ô*ˆØð 	,Ø+Ð+˜RÐ+Ñ+Ô+ˆBØ ð 	3Ø2Ð2˜RÐ2Ñ2Ô2ˆBØð 	/Ø.Ð.˜RÐ.Ñ.Ô.ˆBØð 	2Ø1Ð1˜RÐ1Ñ1Ô1ˆBØ>Ð>Ð>Ð>˜2Ð>Ñ>Ô>Ð>r1   N)r'   rþ   )r6   r7   r8   Ú__doc__rõ   r   r   r   r:   r  r  r
   r  rL   r  r   r    r   r  r;   r1   r.   rþ   rþ   F  sH  € € € € € Ø@Ð@àð$ð $ð $ñ „[ð$ð ð$˜x¨¨S¬	Ô2ð $Ð7Hð $ð $ð $ñ „[ð$ð$ Sð $¨XÐ6HÔ-Ið $ð $ð $ð $ð$ XÐ.@Ô%Að $ð $ð $ð $ð¨Ð1AÔ(Bð ð ð ð ð.  Ø*Ø"&Ø$Øð!?ð !?àð!?ð ˜Œnð!?ð  ð	!?ð
 ð!?ð ð!?ð 
Ð"Ô	#ð!?ð !?ð !?ð !?ð !?ð !?r1   rþ   c                   ó0   — e Zd ZU eed<   dej        fd„ZdS )rX   ra   r'   c                 ó   — t          ¦   «         ‚r)   r*   r,   s    r.   Ú
as_zipfilezWheel.as_zipfilež  r³   r1   N)r6   r7   r8   r:   rJ   ÚzipfileÚZipFiler"  r;   r1   r.   rX   rX   ›  s<   € € € € € € Ø€M€M�Mð$˜GœOð $ð $ð $ð $ð $ð $r1   rX   c                   ó4   — e Zd Zdeddfd„Zdej        fd„ZdS )ÚFilesystemWheelra   r'   Nc                 ó   — || _         d S r)   )ra   rv   s     r.   Ú__init__zFilesystemWheel.__init__£  s   € Ø ˆŒˆˆr1   c                 ó8   — t          j        | j        d¬¦  «        S ©NT)Ú
allowZip64)r#  r$  ra   r,   s    r.   r"  zFilesystemWheel.as_zipfile¦  s   € ÝŒ˜tœ}¸Ð>Ñ>Ô>Ð>r1   )r6   r7   r8   r:   r(  r#  r$  r"  r;   r1   r.   r&  r&  ¢  sS   € € € € € ð! ð !¨ð !ð !ð !ð !ð?˜GœOð ?ð ?ð ?ð ?ð ?ð ?r1   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 )ÚMemoryWheelra   Ústreamr'   Nc                 ó"   — || _         || _        d S r)   )ra   r.  )r-   ra   r.  s      r.   r(  zMemoryWheel.__init__«  s   € Ø ˆŒØˆŒˆˆr1   c                 ó8   — t          j        | j        d¬¦  «        S r*  )r#  r$  r.  r,   s    r.   r"  zMemoryWheel.as_zipfile¯  s   € ÝŒ˜tœ{°tÐ<Ñ<Ô<Ð<r1   )
r6   r7   r8   r:   r   rö   r(  r#  r$  r"  r;   r1   r.   r-  r-  ª  s^   € € € € € ð ð ¨b°¬ið ¸Dð ð ð ð ð=˜GœOð =ð =ð =ð =ð =ð =r1   r-  )HrÒ   Úemail.messagerù   rû   r‹   ÚloggingrB   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   Úpip._vendor.packaging.versionr   r   Ú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.packagingr    Úpip._internal.utils.urlsr!   Ú_jsonr#   r$   Úobjectr÷   r:   ÚPurePathrø   Ú	getLoggerr6   r�   r&   rD   rF   rL   rþ   rX   r&  r-  r;   r1   r.   ú<module>rD     sã  ðØ 
€
€
€
Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð  ;Ð :Ð :Ð :Ð :Ð :Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @à 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <ðð ð ð ð ð ð ð ð ð ð
 3Ð 2Ð 2Ð 2Ð 2Ð 2Ø DÐ DÐ DÐ DÐ DÐ DØ =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0à Ð Ð Ð Ð Ð àð ØÐÐÐÐÐÐà€Hà˜M¨7Ð2Ô3Ð à��gÔ&Ð&Ô'€à	ˆÔ	˜8Ñ	$Ô	$€ð$ð $ð $ð $ð $�Xñ $ô $ð $ð,Ø��c�Œ?ð,à
��S�Œ/ð,ð 	ð,ð ,ð ,ð ,ð<ð ð ð ð �Jñ ô ð ðX3ð X3ð X3ð X3ð X3�xñ X3ô X3ð X3ðvR?ð R?ð R?ð R?ð R?ñ R?ô R?ð R?ðj$ð $ð $ð $ð $ˆHñ $ô $ð $ð?ð ?ð ?ð ?ð ?�eñ ?ô ?ð ?ð=ð =ð =ð =ð =�%ñ =ô =ð =ð =ð =r1   