Ë
    ��h{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jl                  f   Z7 ejp                  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@«      ZBy)#é    N)ÚIOÚAnyÚ
CollectionÚ	ContainerÚDictÚIterableÚIteratorÚListÚ
NamedTupleÚOptionalÚProtocolÚTupleÚUnion)ÚRequirement)ÚInvalidSpecifierÚSpecifierSet)ÚNormalizedNameÚcanonicalize_name)ÚVersion)ÚNoneMetadataError)Úsite_packagesÚ	user_site)ÚDIRECT_URL_METADATA_NAMEÚ	DirectUrlÚDirectUrlValidationError)Ústdlib_pkgs)Úegg_link_path_from_sys_path)Úis_localÚnormalize_path)Úurl_to_pathé   )Úmsg_to_jsonc                   óN   — e Zd Zedefd„«       Zedefd„«       Zedefd„«       Zy)ÚBaseEntryPointÚreturnc                 ó   — t        «       ‚©N©ÚNotImplementedError©Úselfs    úY/var/www/skyplay_api_hub/venv/lib/python3.12/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   sQ   „ Øð$�cò $ó ð$ð ð$�sò $ó ð$ð ð$�sò $ó ñ$r/   r$   Úentry.Úinfor%   c                 ó    — | r-| d   dk(  r%|r|d   dk(  r|dz  }n|dd }| dd } | r	| d   dk(  rŒ%t        t        j                  g |¢| ¢­Ž «      S )aì  Convert a legacy installed-files.txt path into modern RECORD path.

    The legacy format stores paths relative to the info directory, while the
    modern format stores paths relative to the package root, e.g. the
    site-packages directory.

    :param entry: Path parts of the installed-files.txt entry.
    :param info: Path parts of the egg-info directory relative to package root.
    :returns: The converted entry.

    For best compatibility with symlinks, this does not use ``abspath()`` or
    ``Path.resolve()``, but tries to work with path parts:

    1. While ``entry`` starts with ``..``, remove the equal amounts of parts
       from ``info``; if ``info`` is empty, start appending ``..`` instead.
    2. Join the two directly.
    r   ú..éÿÿÿÿ)r=   Nr!   ©r8   ÚpathlibÚPath)r:   r;   s     r,   Ú_convert_installed_files_pathrB   ?   sm   € ñ* �E˜!‘H Ò$Ù�t˜B‘x 4Ò'Ø�G‰O‰Dà˜˜�9ˆDØ�a�b�	ˆñ �E˜!‘H Ó$ô Œw�|‰|Ð*˜TÐ* EÒ*Ó+Ð+r/   c                   ó,   — e Zd ZU eed<   eed<   eed<   y)ÚRequiresEntryÚrequirementÚextraÚmarkerN)r4   r5   r6   r8   Ú__annotations__r9   r/   r,   rD   rD   ]   s   … ØÓØƒJØ„Kr/   rD   c            	       óh  — 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,jZ                  j\                  fd&„Z/e0jb                  de,jZ                  j\                  fd'„«       Z2ede3ee4f   fd(„«       Z5edee   fd)„«       Z6edefd*„«       Z7ede8fd+„«       Z9d9d,e:e   de)e;   fd-„Z<de)e   fd.„Z=de)e   fd/„Z>dee&e      fd0„Z?dee&e      fd1„Z@dee&e      fd2„ZAde&eB   fd3„ZCde)e   fd4„ZDde)e   fd5„ZEd6e,jZ                  j\                  dd7fd8„ZFy7):ÚBaseDistributionÚ	directoryr%   c                 ó   — t        «       ‚)z‡Load the distribution from a metadata directory.

        :param directory: Path to a metadata directory, e.g. ``.dist-info``.
        r(   )Ú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                 óT   — | j                   › d| j                  › d| j                  › d�S )Nú z (ú))Úraw_nameÚraw_versionÚlocationr*   s    r,   Ú__repr__zBaseDistribution.__repr__Œ   s*   € Ø—-‘-�  $×"2Ñ"2Ð!3°2°d·m±m°_ÀAÐFÐFr/   c                 ó8   — | j                   › d| j                  › �S )Nr[   )r]   r^   r*   s    r,   Ú__str__zBaseDistribution.__str__�   s   € Ø—-‘-�  $×"2Ñ"2Ð!3Ð4Ð4r/   c                 ó   — t        «       ‚)aÐ  Where the distribution is loaded from.

        A string value is not necessarily a filesystem path, since distributions
        can be loaded from other sources, e.g. arbitrary zip archives. ``None``
        means the distribution is created in-memory.

        Do not canonicalize this value with e.g. ``pathlib.Path.resolve()``. If
        this is a symbolic link, we want to preserve the relative path between
        it and files in the distribution.
        r(   r*   s    r,   r_   zBaseDistribution.location’   rY   r/   c                 ó²   — | j                   }|r&|j                  «       rt        |j                  «      S yt	        | j
                  «      }|r| j                  S y)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    sR   € ð —_‘_ˆ
ÙØ×+Ñ+Ô-Ü" :§>¡>Ó2Ð2ð ô 8¸¿¹ÓFˆMÙð —}‘}Ð$Ør/   c                 ó   — t        «       ‚)a’  The distribution's "installed" location.

        This should generally be a ``site-packages`` directory. This is
        usually ``dist.location``, except for legacy develop-installed packages,
        where ``dist.location`` is the source code location, and this is where
        the ``.egg-link`` file is.

        The returned location is normalized (in particular, with symlinks removed).
        r(   r*   s    r,   Úinstalled_locationz#BaseDistribution.installed_location¶   s   € ô "Ó#Ð#r/   c                 ó   — t        «       ‚)a/  Location of the .[egg|dist]-info directory or file.

        Similarly to ``location``, a string value is not necessarily a
        filesystem path. ``None`` means the distribution is created in-memory.

        For a modern .dist-info installation on disk, this should be something
        like ``{location}/{raw_name}-{version}.dist-info``.

        Do not canonicalize this value with e.g. ``pathlib.Path.resolve()``. If
        this is a symbolic link, we want to preserve the relative path between
        it and other files in the distribution.
        r(   r*   s    r,   Úinfo_locationzBaseDistribution.info_locationÃ   s   € ô "Ó#Ð#r/   c                 óf   — | j                   }|syt        j                  |«      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Ó   s-   € ð ×*Ñ*ˆÙØÜ�|‰|˜MÓ*×2Ñ2Ó4Ð4r/   c                 ód   — | j                   }|sy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à   s/   € ð —=‘=ˆÙØô �|‰|˜HÓ%×,Ñ,°Ñ6Ð6r/   c                 óŠ   — | j                   }|sy|j                  d«      syt        j                  |«      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î   s>   € ð ×*Ñ*ˆÙØØ×%Ñ% kÔ2ØÜ�|‰|˜MÓ*×1Ñ1Ó3Ð3r/   c                 óŠ   — | j                   }|sy|j                  d«      syt        j                  |«      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   s>   € ð ×*Ñ*ˆÙØØ×%Ñ% lÔ3ØÜ�|‰|˜MÓ*×1Ñ1Ó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                 ó:   — | j                   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                 ó  — 	 | j                  t        «      }	 t        j                  |«      S # t        $ r Y yw xY w# t
        t        j                  t        f$ r0}t        j                  dt        | j                  |«       Y d}~y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ð	Ü×&Ñ& wÓ/Ð/øô !ò 	Ùð	ûô
 Ü× Ñ Ü$ð
ò 	ô
 �N‰NØ-Ü(Ø×#Ñ#Øô	ô ûð	ús!   ‚- ˜< ­	9¸9¼B
Á&BÂB
c                 ó²   — 	 | j                  d«      }|j	                  «       D ]  }|j                  «       }|sŒ|c S  y# t        t        t        f$ r Y yw xY w)NÚ	INSTALLERÚ )rˆ   ÚOSErrorÚ
ValueErrorr   Ú
splitlinesÚstrip)r+   Úinstaller_textÚlineÚcleaned_lines       r,   Ú	installerzBaseDistribution.installer>  sd   € ð	Ø!Ÿ^™^¨KÓ8ˆNð #×-Ñ-Ó/ò 	$ˆDØŸ:™:›<ˆLÚØ#Ò#ð	$ð øô œÔ%6Ð7ò 	Ùð	ús   ‚? ¿AÁAc                 ó$   — | j                  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Ñ2Ó3Ð3r/   c                 óF   — | j                   €yt        | j                   «      S )z|If distribution is installed in the current virtual environment.

        Always True if we're not in a virtualenv.
        F)rk   r   r*   s    r,   ÚlocalzBaseDistribution.localR  s$   € ð ×"Ñ"Ð*ØÜ˜×/Ñ/Ó0Ð0r/   c                 óx   — | j                   �t        €y| j                   j                  t        t        «      «      S ©NF)rk   r   Ú
startswithr   r*   s    r,   Úin_usersitezBaseDistribution.in_usersite\  s2   € à×"Ñ"Ð*¬iÐ.?ØØ×&Ñ&×1Ñ1´.ÄÓ2KÓLÐLr/   c                 óx   — | j                   �t        €y| j                   j                  t        t        «      «      S r¦   )rk   r   r§   r   r*   s    r,   Úin_site_packagesz!BaseDistribution.in_site_packagesb  s2   € à×"Ñ"Ð*¬mÐ.CØØ×&Ñ&×1Ñ1´.ÄÓ2OÓPÐPr/   Úpathc                 ó   — t        «       ‚)z7Check whether an entry in the info directory is a file.r(   ©r+   r«   s     r,   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                 óH   — | j                  «       }| j                  |«       |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                 ó8   — | j                   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Ð4r/   c                 óN   — | j                   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                   j                  d«      }|€
t        «       S 	 t        t        |«      «      }|S # t        $ r7}d}t
        j                  || j                  |«       t        «       cY d}~S d}~ww xY w)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§  ss   € ð —‘×!Ñ!Ð"3Ó4ˆØˆ=Ü“>Ð!ð	"ä¤ E£
Ó+ˆDð
 ˆøô	  ò 	"ØEˆGÜ�N‰N˜7 D§M¡M°1Ô5Ü“>Õ!ûð	"ús   ©? ¿	A?Á,A:Á4A?Á:A?Úextrasc                 ó   — t        «       ‚)z®Dependencies of this distribution.

        For modern .dist-info distributions, this is the collection of
        "Requires-Dist:" entries in distribution metadata.
        r(   )r+   rÅ   s     r,   Úiter_dependenciesz"BaseDistribution.iter_dependenciesº  rO   r/   c                 ó:   — | j                   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Ð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                 ó˜   — 	 | j                  d«      }d„ t        j                  |j	                  «       «      D «       S # t        $ r Y y w xY w)NÚRECORDc              3   ó^   K  — | ]%  }t        t        j                  |d    «      «      –— Œ' y­w)r   Nr?   )Ú.0Úrows     r,   ú	<genexpr>zFBaseDistribution._iter_declared_entries_from_record.<locals>.<genexpr>Ø  s"   è ø€ ÒS¨c””G—L‘L  Q¡Ó(×)ÑSùs   ‚+-)rˆ   r‰   ÚcsvÚreaderr—   )r+   Útexts     r,   Ú"_iter_declared_entries_from_recordz3BaseDistribution._iter_declared_entries_from_recordÒ  sG   € ð	Ø—>‘> (Ó+ˆDñ T´S·Z±ZÀÇÁÓ@QÓ5RÔSÐSøô !ò 	Ùð	ús   ‚= ½	A	ÁA	c                 óR  ‡— 	 | j                  d«      }d„ |j                  d¬«      D «       }| j                  }| j                  }|�|€|S 	 t        j                  |«      j                  |«      Š‰j                  s|S ˆfd„|D «       S # t        $ r Y y w xY w# t        $ r |cY S w xY w)Nzinstalled-files.txtc              3   ó&   K  — | ]	  }|sŒ|–— Œ y ­wr'   r9   )rÑ   Úps     r,   rÓ   zFBaseDistribution._iter_declared_entries_from_legacy.<locals>.<genexpr>ß  s   è ø€ ÒA�qºq”ÑAùs   ‚ŠF)Úkeependsc              3   ó„   •K  — | ]7  }t        t        j                  |«      j                  ‰j                  «      –— Œ9 y ­wr'   )rB   r@   rA   Úparts)rÑ   rÚ   Úinfo_rels     €r,   rÓ   zFBaseDistribution._iter_declared_entries_from_legacy.<locals>.<genexpr>ê  s2   øè ø€ ò 
àô *¬'¯,©,°q«/×*?Ñ*?ÀÇÁ×Pñ
ùs   ƒ=A )
rˆ   r‰   r—   r_   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ˆDñ B˜DŸO™O°U˜OÓ;ÔAˆØ�}‰}ˆØ×!Ñ!ˆØˆ<˜4˜<ØˆLð	Ü—|‘| DÓ)×5Ñ5°dÓ;ˆHð �~Š~ØˆLó
àô
ð 	
øô !ò 	Ùð	ûô ò 	ØŠLð	ús#   ƒB	 Á$B Â		BÂBÂB&Â%B&c                 óF   — | j                  «       xs | j                  «       S )aò  Iterate through file entries declared in this distribution.

        For modern .dist-info distributions, this is the files listed in the
        ``RECORD`` metadata file. For legacy setuptools distributions, this
        comes from ``installed-files.txt``, with entries normalized to be
        compatible with the format used by ``RECORD``.

        :return: An iterator for listed entries, or None if the distribution
            contains neither ``RECORD`` nor ``installed-files.txt``.
        )r×   râ   r*   s    r,   Úiter_declared_entriesz&BaseDistribution.iter_declared_entriesï  s&   € ð ×3Ñ3Ó5ò 9Ø×6Ñ6Ó8ð	
r/   c              #   óv  K  — 	 | j                  d«      }dx}}|j                  «       D ]}  }|j                  «       }|r|j	                  d«      rŒ'|j	                  d«      r6|j                  d«      r%|j                  d«      j                  d«      \  }}}Œnt        |||¬	«      –— Œ y# t        $ r Y yw xY w­w)
aö  Parse a ``requires.txt`` in an egg-info directory.

        This is an INI-ish format where an egg-info stores dependencies. A
        section name describes extra other environment markers, while each entry
        is an arbitrary string (not a key-value pair) representing a dependency
        as a requirement string (no markers).

        There is a construct in ``importlib.metadata`` called ``Sectioned`` that
        does mostly the same, but the format is currently considered private.
        zrequires.txtNr”   ú#ú[ú]z[]ú:)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ˆGð Ðˆ�Ø×&Ñ&Ó(ò 	NˆDØ—:‘:“<ˆDÙ˜4Ÿ?™?¨3Ô/ØØ�‰˜sÔ#¨¯©°cÔ(:Ø#'§:¡:¨dÓ#3×#=Ñ#=¸cÓ#BÑ ��q˜&ØÜ¨D¸ÀfÔMÓMñ	Nøô !ò 	Ùð	üs(   ‚B9„B* •BB9Â*	B6Â3B9Â5B6Â6B9c              #   óš   K  — dh}| j                  «       D ]1  }t        |j                  «      }||v rŒ|j                  |«       |–— Œ3 y­w)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  sQ   è ø€ à�tˆØ×4Ñ4Ó6ò 	ˆEÜ% e§k¡kÓ2ˆEØ˜Ñ$ØØ×Ñ˜UÔ#Ø‹Kñ	ùs   ‚A	Ac              #   ó4  K  — | j                  «       D ]�  }t        |j                  «      }|r |j                  rd|j                  › d|› d�}n$|rd|› d�}n|j                  r|j                  }nd}|r|j                  › d|› �–— Œt|j                  –— Œƒ y­w)a‰  Get distribution dependencies from the egg-info directory.

        To ease parsing, this converts a legacy dependency entry into a PEP 508
        requirement string. Like ``_iter_requires_txt_entries()``, there is code
        in ``importlib.metadata`` that does mostly the same, but not do exactly
        what we need.

        Namely, ``importlib.metadata`` does not normalize the extra name before
        putting it into the requirement string, which causes marker comparison
        to fail because the dist-info format do normalize. This is consistent in
        all currently available PEP 517 backends, although not standardized.
        ú(z) and extra == "ú"z
extra == "r”   z ; N)rë   r   rF   rG   rE   )r+   r:   rF   rG   s       r,   Ú_iter_egg_info_dependenciesz,BaseDistribution._iter_egg_info_dependencies"  s�   è ø€ ð ×4Ñ4Ó6ò 	(ˆEÜ% e§k¡kÓ2ˆEÙ˜ŸšØ˜UŸ\™\˜NÐ*:¸5¸'ÀÐC‘ÙØ% e W¨AÐ.‘Ø—’ØŸ™‘à�ÙØ×*Ñ*Ð+¨3¨v¨hÐ7Ó7à×'Ñ'Ó'ñ	(ùs   ‚BBr¹   Nc                 ó²   — |j                  d«      s| j                  «       D ]  }||d<   Œ	 |j                  d«      s| j                  «       D ]  }||d<   Œ	 yy)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>  si   € à×Ñ Ô0Ø×7Ñ7Ó9ò 0�Ø,/�˜Ò)ð0à×ÑÐ 0Ô1Ø×3Ñ3Ó5ò 3�Ø-2�Ð)Ò*ñ3ð 2r/   )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ð5˜ó 5ð ð$˜( 3™-ò $ó ð$ð ð¨8°C©=ò ó ðð* ð
$ H¨S¡Mò 
$ó ð
$ð ð$˜x¨™}ò $ó ð$ð ð
5¨ò 
5ó ð
5ð ð7 $ò 7ó ð7ð ð4°Dò 4ó ð4ð" ð4¨$ò 4ó ð4ð ð$ ò $ó ð$ð ð$˜ò $ó ð$ð ð$˜Sò $ó ð$ð ð/ Sò /ó ð/ð ð˜H YÑ/ò ó ðð2 ð	˜3ò 	ó ð	ð ð)˜4ò )ó ð)ð ð4˜$ò 4ó ð4ð ð1�tò 1ó ð1ð ðM˜Tò Mó ðMð
 ðQ $ò Qó ðQð
$˜Hð $¨ó $ð$¨X°c©]ó $ð$˜hð $¨3ó $ð$ 8¨NÑ#;ó $ð$ §¡× 5Ñ 5ó $ð ×Ñð
˜%Ÿ-™-×/Ñ/ò 
ó ð
ð ð*˜t C¨ H™~ò *ó ð*ð ð5 (¨3¡-ò 5ó ð5ð ð>˜#ò >ó ð>ð ð ò ó ðñ$$¨
°3©ð $ÀÈ+ÑAVó $ð: x°¡}ó :ð
$ h¨~Ñ&>ó 
$ðT°H¸XÀc¹]Ñ4Kó Tð
°H¸XÀc¹]Ñ4Kó 
ð*
 x°¸±Ñ'>ó 
ð N¨H°]Ñ,Có Nð2 x°¡}ó ð(¨X°c©]ó (ð83¨u¯}©}×/DÑ/Dð 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y)Ú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  — | j                  «       D ]d  }t        j                  d|j                  t        j                  ¬«      }|s,t
        j                  d|j                  |j                  «       Œa|–— Œf y­w)zBIterate through all installed distributions without any filtering.z)^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$)Úflagsz%Ignoring invalid distribution %s (%s)N)r  ÚreÚmatchr~   Ú
IGNORECASErŽ   r�   r_   )r+   ÚdistÚproject_name_valids      r,   Úiter_all_distributionsz&BaseEnvironment.iter_all_distributionsd  sp   è ø€ à×,Ñ,Ó.ò 	ˆDô
 "$§¡Ø<Ø×#Ñ#Ü—m‘mô"Ðñ
 &Ü—‘Ø;Ø×'Ñ'Ø—M‘Môð
 Ø‹Jñ#	ùs   ‚A9A;TFÚ
local_onlyÚskipÚinclude_editablesÚeditables_onlyÚ	user_onlyc                 ó’   ‡— | j                  «       }|r	d„ |D «       }|s	d„ |D «       }|r	d„ |D «       }|r	d„ |D «       }ˆ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                   sŒ|–— Œ y ­wr'   )r¤   ©rÑ   Úds     r,   rÓ   z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>“  s   è ø€ Ò+˜ 1§7£7”!Ñ+ùó   ‚”c              3   ó:   K  — | ]  }|j                   rŒ|–— Œ y ­wr'   ©r¢   r  s     r,   rÓ   z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>•  s   è ø€ Ò2˜ q§z£z”!Ñ2ùr  c              3   ó:   K  — | ]  }|j                   sŒ|–— Œ y ­wr'   r  r  s     r,   rÓ   z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>—  s   è ø€ Ò.˜ 1§:£:”!Ñ.ùr  c              3   ó:   K  — | ]  }|j                   sŒ|–— Œ y ­wr'   )r¨   r  s     r,   rÓ   z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>™  s   è ø€ Ò1˜ 1§=£=”!Ñ1ùr  c              3   ó@   •K  — | ]  }|j                   ‰vsŒ|–— Œ y ­wr'   )r~   )rÑ   r  r  s     €r,   rÓ   z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>š  s   øè ø€ Ò>�a ×!1Ñ!1¸Ò!=”Ñ>ùs   ƒ—)r  )r+   r  r  r  r  r  Úits     `    r,   Úiter_installed_distributionsz,BaseEnvironment.iter_installed_distributionsy  sR   ø€ ð0 ×(Ñ(Ó*ˆÙÙ+˜RÔ+ˆBÙ Ù2˜RÔ2ˆBÙÙ.˜RÔ.ˆBÙÙ1˜RÔ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  sÚ   „ Ù@àò$ó ð$ð ð$˜x¨¨S©	Ñ2ð $Ð7Hò $ó ð$ð$ Sð $¨XÐ6HÑ-Ió $ð$ XÐ.@Ñ%Aó $ð¨Ð1AÑ(Bó ð.  Ø*Ø"&Ø$Øñ!?àð!?ð ˜‰nð!?ð  ð	!?ð
 ð!?ð ð!?ð 
Ð"Ñ	#ô!?r/   rþ   c                   ó8   — e Zd ZU eed<   dej                  fd„Zy)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ð$˜GŸO™Oô $r/   rV   c                   ó<   — e Zd Zdeddfd„Zdej                  fd„Zy)ÚFilesystemWheelr_   r%   Nc                 ó   — || _         y r'   )r_   rt   s     r,   Ú__init__zFilesystemWheel.__init__¥  s	   € Ø ˆ�r/   c                 óD   — 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'  ¤  s%   „ ð! ð !¨ó !ð?˜GŸO™Oô ?r/   r'  c                   óF   — e Zd Zdedee   ddfd„Zdej                  fd„Z	y)ÚMemoryWheelr_   Ústreamr%   Nc                 ó    — || _         || _        y r'   )r_   r/  )r+   r_   r/  s      r,   r)  zMemoryWheel.__init__­  s   € Ø ˆŒØˆ�r/   c                 óD   — 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.  ¬  s0   „ ð ð ¨b°©ið ¸Dó ð=˜GŸO™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>rC     s  ðÛ 
Û Û Û Û Û Û 	Û ÷÷ ÷ õ õ  ;ß Kß IÝ 1å 6ß <÷ñ õ
 3Ý Dß =Ý 0å à��g×&Ñ&Ð&Ñ'€à	ˆ×	Ñ	˜8Ó	$€ô$�Xô $ð,Ø��c�‰?ð,à
��S�‰/ð,ð 	ó,ô<�Jô ôb3�xô b3÷JR?ñ R?ôj$ˆHô $ô?�eô ?ô=�%õ =r/   