ó
    ¢'ÔiLc  ã                  ó   • S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKJrJrJrJr  S SKJrJrJrJrJr  S SKJr  S SKJrJr  S SKJrJr  S SKJr  S S	K J!r!  S S
K"J#r#J$r$  S SK%J&r&J'r'J(r(  S SK)J*r*  S SK+J,r,  S SK-J.r.J/r/  S SK0J1r1  SSK2J3r3  \\4\Rj                  4   r6\Rn                  " \85      r9 " S S\5      r:      S!S jr; " S S\5      r< " S S\5      r= " S S5      r> " S S\5      r? " S S\?5      r@ " S S \?5      rAg)"é    )ÚannotationsN)Ú
CollectionÚ	ContainerÚIterableÚIterator)ÚIOÚAnyÚ
NamedTupleÚProtocolÚUnion)ÚRequirement)ÚInvalidSpecifierÚSpecifierSet)ÚNormalizedNameÚcanonicalize_name)ÚVersion)ÚNoneMetadataError)Úsite_packagesÚ	user_site)ÚDIRECT_URL_METADATA_NAMEÚ	DirectUrlÚDirectUrlValidationError)Ústdlib_pkgs)Úegg_link_path_from_sys_path)Úis_localÚnormalize_path)Úurl_to_pathé   )Úmsg_to_jsonc                  óP   • \ rS rSr\SS j5       r\SS j5       r\SS j5       rSrg)ÚBaseEntryPointé,   c                ó   • [        5       e©N©ÚNotImplementedError©Úselfs    ÚZ/var/www/surfInsights/venv3-11/lib/python3.13/site-packages/pip/_internal/metadata/base.pyÚnameÚBaseEntryPoint.name-   ó   € ä!Ó#Ð#ó    c                ó   • [        5       er$   r%   r'   s    r)   ÚvalueÚBaseEntryPoint.value1   r,   r-   c                ó   • [        5       er$   r%   r'   s    r)   ÚgroupÚBaseEntryPoint.group5   r,   r-   © N©ÚreturnÚstr)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Úpropertyr*   r/   r2   Ú__static_attributes__r4   r-   r)   r!   r!   ,   s<   † Øó$ó ð$ð ó$ó ð$ð ó$ó ó$r-   r!   c                óÈ   • U (       a;  U S   S:X  a2  U(       a	  US   S:X  a  US-  nOUSS nU SS n U (       a  U S   S:X  a  M2  [        [        R                  " / UQU Q76 5      $ )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   ©r7   ÚpathlibÚPath)ÚentryÚinfos     r)   Ú_convert_installed_files_pathrF   :   sm   € ö* �E˜!‘H Ó$Þ�t˜B‘x 4Ó'Ø�G‰O‰Dà˜˜�9ˆDØ�a�b�	ˆö �E˜!‘H Õ$ô Œw�|Š|Ð*˜TÐ* EÒ*Ó+Ð+r-   c                  ó4   • \ rS rSr% S\S'   S\S'   S\S'   Srg)ÚRequiresEntryéX   r7   ÚrequirementÚextraÚmarkerr4   N)r8   r9   r:   r;   Ú__annotations__r=   r4   r-   r)   rH   rH   X   s   ‡ ØÓØƒJØ†Kr-   rH   c                  ó  • \ rS rSr\S0S j5       r\        S1S j5       r\S2S j5       rS3S jrS3S jr	\
S4S j5       r\
S4S j5       r\
S4S	 j5       r\
S4S
 j5       r\
S5S j5       r\
S5S j5       r\
S5S j5       r\
S5S j5       r\
S6S j5       r\
S7S j5       r\
S3S j5       r\
S3S j5       r\
S8S j5       r\
S3S j5       r\
S5S j5       r\
S5S j5       r\
S5S j5       r\
S5S j5       r\
S5S j5       rS9S jrS:S jrS;S jr S<S jr!S=S jr"\#RH                  S=S j5       r%\
S>S  j5       r&\
S4S! j5       r'\
S3S" j5       r(\
S?S# j5       r)S@SAS% jjr*SBS& jr+SCS' jr,SDS( jr-SDS) jr.SDS* jr/SES+ jr0SBS, jr1SBS- jr2SFS. jr3S$r4g/)GÚBaseDistributioné^   c                ó   • [        5       e)zwLoad the distribution from a metadata directory.

:param directory: Path to a metadata directory, e.g. ``.dist-info``.
r%   )ÚclsÚ	directorys     r)   Úfrom_directoryÚBaseDistribution.from_directory_   ó   € ô "Ó#Ð#r-   c                ó   • [        5       e)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%   )rR   Úmetadata_contentsÚfilenameÚproject_names       r)   Úfrom_metadata_file_contentsÚ,BaseDistribution.from_metadata_file_contentsg   s   € ô  "Ó#Ð#r-   c                ó   • [        5       e)aG  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%   )rR   Úwheelr*   s      r)   Ú
from_wheelÚBaseDistribution.from_wheely   ó   € ô "Ó#Ð#r-   c                óT   • U R                    SU R                   SU R                   S3$ )NÚ z (Ú))Úraw_nameÚraw_versionÚlocationr'   s    r)   Ú__repr__ÚBaseDistribution.__repr__‡   s*   € Ø—-‘-�  $×"2Ñ"2Ð!3°2°d·m±m°_ÀAÐFÐFr-   c                ó8   • U R                    SU R                   3$ )Nrc   )re   rf   r'   s    r)   Ú__str__ÚBaseDistribution.__str__Š   s   € Ø—-‘-�  $×"2Ñ"2Ð!3Ð4Ð4r-   c                ó   • [        5       e)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)   rg   ÚBaseDistribution.location�   ra   r-   c                óÒ   • U R                   nU(       a,  UR                  5       (       a  [        UR                  5      $  g[	        U R
                  5      nU(       a  U R                  $ g)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   re   rg   )r(   rp   Úegg_link_paths      r)   Úeditable_project_locationÚ*BaseDistribution.editable_project_location›   sZ   € ð —_‘_ˆ
ÞØ×+Ñ+×-Ñ-Ü" :§>¡>Ó2Ð2ð .ð ô 8¸¿¹ÓFˆMÞð —}‘}Ð$Ør-   c                ó   • [        5       e)ab  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_locationÚ#BaseDistribution.installed_location±   s   € ô "Ó#Ð#r-   c                ó   • [        5       e)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_locationÚBaseDistribution.info_location¾   s   € ô "Ó#Ð#r-   c                ór   • U R                   nU(       d  g[        R                  " U5      R                  5       $ )zþ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)rz   rB   rC   Úis_file©r(   rz   s     r)   Úinstalled_by_distutilsÚ'BaseDistribution.installed_by_distutilsÎ   s-   € ð ×*Ñ*ˆÞØÜ�|Š|˜MÓ*×2Ñ2Ó4Ð4r-   c                óp   • U R                   nU(       d  g[        R                  " U5      R                  S:H  $ )zŽWhether this distribution is installed as an egg.

This usually indicates the distribution was installed by (older versions
of) easy_install.
Fz.egg)rg   rB   rC   Úsuffix©r(   rg   s     r)   Úinstalled_as_eggÚ!BaseDistribution.installed_as_eggÛ   s/   € ð —=‘=ˆÞØô �|Š|˜HÓ%×,Ñ,°Ñ6Ð6r-   c                ó    • U R                   nU(       d  gUR                  S5      (       d  g[        R                  " U5      R	                  5       $ )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©rz   ÚendswithrB   rC   Úis_dirr~   s     r)   Ú"installed_with_setuptools_egg_infoÚ3BaseDistribution.installed_with_setuptools_egg_infoé   sA   € ð ×*Ñ*ˆÞØØ×%Ñ% k×2Ñ2ØÜ�|Š|˜MÓ*×1Ñ1Ó3Ð3r-   c                ó    • U R                   nU(       d  gUR                  S5      (       d  g[        R                  " U5      R	                  5       $ )a9  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-infor‡   r~   s     r)   Úinstalled_with_dist_infoÚ)BaseDistribution.installed_with_dist_infoû   sA   € ð ×*Ñ*ˆÞØØ×%Ñ% l×3Ñ3ØÜ�|Š|˜MÓ*×1Ñ1Ó3Ð3r-   c                ó   • [        5       er$   r%   r'   s    r)   Úcanonical_nameÚBaseDistribution.canonical_name  r,   r-   c                ó   • [        5       er$   r%   r'   s    r)   ÚversionÚBaseDistribution.version  r,   r-   c                ó   • [        5       er$   r%   r'   s    r)   rf   ÚBaseDistribution.raw_version  r,   r-   c                ó:   • U R                   R                  SS5      $ )z„Convert a project name to its setuptools-compatible filename.

This is a copy of ``pkg_resources.to_filename()`` for compatibility.
Ú-Ú_)re   Úreplacer'   s    r)   Úsetuptools_filenameÚ$BaseDistribution.setuptools_filename  s   € ð �}‰}×$Ñ$ S¨#Ó.Ð.r-   c                ó   •  U R                  [        5      n [        R                  " U5      $ ! [         a     gf = f! [
        [        R                  [        4 a0  n[        R                  S[        U R                  U5         SnAgSnAff = f)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)   rp   ÚBaseDistribution.direct_url  s‡   € ð	Ø—n‘nÔ%=Ó>ˆGð	Ü×&Ò& wÓ/Ð/øô !ó 	Ùð	ûô
 Ü× Ñ Ü$ð
ó 	ô
 �N‰NØ-Ü(Ø×#Ñ#Øô	ô ûð	ús!   ‚. ˜> ®
;º;¾BÁ&BÂBc                óÂ   •  U R                  S5      nUR	                  5        H  nUR                  5       nU(       d  M  Us  $    g! [        [        [        4 a     gf = f)NÚ	INSTALLERÚ )rž   ÚOSErrorÚ
ValueErrorr   Ú
splitlinesÚstrip)r(   Úinstaller_textÚlineÚcleaned_lines       r)   Ú	installerÚBaseDistribution.installer9  sa   € ð	Ø!Ÿ^™^¨KÓ8ˆNð #×-Ñ-Ö/ˆDØŸ:™:›<ˆLßˆ|Ø#Ò#ñ 0ð øô œÔ%6Ð7ó 	Ùð	ús   ‚A ÁAÁAc                ó$   • U R                  S5      $ )NÚ	REQUESTED)r}   r'   s    r)   Ú	requestedÚBaseDistribution.requestedE  s   € à�|‰|˜KÓ(Ð(r-   c                ó,   • [        U R                  5      $ r$   )Úboolrt   r'   s    r)   ÚeditableÚBaseDistribution.editableI  s   € ä�D×2Ñ2Ó3Ð3r-   c                óH   • U R                   c  g[        U R                   5      $ )zlIf distribution is installed in the current virtual environment.

Always True if we're not in a virtualenv.
F)rw   r   r'   s    r)   ÚlocalÚBaseDistribution.localM  s$   € ð ×"Ñ"Ñ*ØÜ˜×/Ñ/Ó0Ð0r-   c                ó|   • U R                   b  [        c  gU R                   R                  [        [        5      5      $ ©NF)rw   r   Ú
startswithr   r'   s    r)   Úin_usersiteÚBaseDistribution.in_usersiteW  s2   € à×"Ñ"Ñ*¬iÑ.?ØØ×&Ñ&×1Ñ1´.ÄÓ2KÓLÐLr-   c                ó|   • U R                   b  [        c  gU R                   R                  [        [        5      5      $ rÁ   )rw   r   rÂ   r   r'   s    r)   Úin_site_packagesÚ!BaseDistribution.in_site_packages]  s2   € à×"Ñ"Ñ*¬mÑ.CØØ×&Ñ&×1Ñ1´.ÄÓ2OÓPÐPr-   c                ó   • [        5       e)z7Check whether an entry in the info directory is a file.r%   ©r(   Úpaths     r)   r}   ÚBaseDistribution.is_filec  r,   r-   c                ó   • [        5       e)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_namesÚ,BaseDistribution.iter_distutils_script_namesg  rV   r-   c                ó   • [        5       e)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ž   ÚBaseDistribution.read_texto  ó   € ô "Ó#Ð#r-   c                ó   • [        5       er$   r%   r'   s    r)   Úiter_entry_pointsÚ"BaseDistribution.iter_entry_pointsx  ó   € Ü!Ó#Ð#r-   c                ó   • [        5       er$   r%   r'   s    r)   Ú_metadata_implÚBaseDistribution._metadata_impl{  rÕ   r-   c                óH   • U R                  5       nU R                  U5        U$ )zò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Û   ÚBaseDistribution.metadata~  s%   € ð ×&Ñ&Ó(ˆØ×#Ñ# HÔ-Øˆr-   c                ó,   • [        U R                  5      $ )zû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_dictÚBaseDistribution.metadata_dict‹  s   € ô ˜4Ÿ=™=Ó)Ð)r-   c                ó8   • U R                   R                  S5      $ )zDValue of "Metadata-Version:" in distribution metadata, if available.zMetadata-Version)rÛ   Úgetr'   s    r)   Úmetadata_versionÚ!BaseDistribution.metadata_version–  s   € ð �}‰}× Ñ Ð!3Ó4Ð4r-   c                óN   • U R                   R                  SU R                  5      $ )z*Value of "Name:" in distribution metadata.ÚName)rÛ   rá   r�   r'   s    r)   re   ÚBaseDistribution.raw_name›  s!   € ð
 �}‰}× Ñ  ¨×)<Ñ)<Ó=Ð=r-   c                ó  • U R                   R                  S5      nUc
  [        5       $  [        [        U5      5      nU$ ! [         a6  nSn[
        R                  X@R                  U5        [        5       s SnA$ SnAff = f)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   r7   r   r¤   r¥   re   )r(   r/   Úspecr§   Úmessages        r)   Úrequires_pythonÚ BaseDistribution.requires_python¢  sq   € ð —‘×!Ñ!Ð"3Ó4ˆØ‰=Ü“>Ð!ð	"ä¤ E£
Ó+ˆDð
 ˆøô	  ó 	"ØEˆGÜ�N‰N˜7§M¡M°1Ô5Ü“>Õ!ûð	"ús   ªA  Á 
B Á
+A;Á5B Á;B r4   c                ó   • [        5       e)z–Dependencies of this distribution.

For modern .dist-info distributions, this is the collection of
"Requires-Dist:" entries in distribution metadata.
r%   )r(   Úextrass     r)   Úiter_dependenciesÚ"BaseDistribution.iter_dependenciesµ  rV   r-   c                ó:   • U R                   R                  S/ 5      $ )zRaw Requires-Dist metadata.úRequires-Dist)rÛ   Úget_allr'   s    r)   Úiter_raw_dependenciesÚ&BaseDistribution.iter_raw_dependencies½  s   € à�}‰}×$Ñ$ _°bÓ9Ð9r-   c                ó   • [        5       e)a:  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_extrasÚ%BaseDistribution.iter_provided_extrasÁ  s   € ô "Ó#Ð#r-   c                óœ   •  U R                  S5      nS [        R                  " UR	                  5       5       5       $ ! [         a     g f = f)NÚRECORDc              3  óf   #   • U  H'  n[        [        R                  " US    5      5      v •  M)     g7f)r   NrA   )Ú.0Úrows     r)   Ú	<genexpr>ÚFBaseDistribution._iter_declared_entries_from_record.<locals>.<genexpr>Ó  s'   é € ÐSÒ5R¨c””G—L’L  Q¡Ó(×)Ð)Ò5Rùs   ‚/1)rž   rŸ   ÚcsvÚreaderr®   )r(   Útexts     r)   Ú"_iter_declared_entries_from_recordÚ3BaseDistribution._iter_declared_entries_from_recordÍ  sG   € ð	Ø—>‘> (Ó+ˆDñ T´S·Z²ZÀÇÁÓ@QÔ5RÓSÐSøô !ó 	Ùð	ús   ‚> ¾
AÁ
Ac                ób  ^•  U R                  S5      nS UR                  SS9 5       nU R                  nU R                  nUb  Uc  U$  [
        R                  " U5      R                  U5      mTR                  (       d  U$ U4S jU 5       $ ! [         a     g f = f! [         a    Us $ f = f)Nzinstalled-files.txtc              3  ó6   #   • U  H  o(       d  M  Uv •  M     g 7fr$   r4   )rû   Úps     r)   rý   ÚFBaseDistribution._iter_declared_entries_from_legacy.<locals>.<genexpr>Ú  s   é € ÐAÒ;�q»q—‘Ò;ùs   ‚
�	F)Úkeependsc              3  óŒ   >#   • U  H9  n[        [        R                  " U5      R                  TR                  5      v •  M;     g 7fr$   )rF   rB   rC   Úparts)rû   r  Úinfo_rels     €r)   rý   r  å  s4   øé € ð 
â�ô *¬'¯,ª,°q«/×*?Ñ*?ÀÇÁ×PÐPÚùs   ƒAA)
rž   rŸ   r®   rg   rz   rB   rC   Úrelative_tor­   r
  )r(   r  ÚpathsÚrootrE   r  s        @r)   Ú"_iter_declared_entries_from_legacyÚ3BaseDistribution._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                óP   • U R                  5       =(       d    U R                  5       $ )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_entriesÚ&BaseDistribution.iter_declared_entriesê  s&   € ð ×3Ñ3Ó5÷ 9Ø×6Ñ6Ó8ð	
r-   c              #  óœ  #   •  U R                  S5      nS=p#UR                  5        H�  nUR                  5       nU(       a  UR	                  S5      (       a  M2  UR	                  S5      (       a;  UR                  S5      (       a%  UR                  S5      R                  S5      u  p%nMƒ  [        XBUS	9v •  M‘     g! [         a     gf = f7f)
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[]Ú:)rJ   rK   rL   )rž   rŸ   r®   r¯   rÂ   rˆ   Ú	partitionrH   )r(   r¦   rK   rL   r±   r™   s         r)   Ú_iter_requires_txt_entriesÚ+BaseDistribution._iter_requires_txt_entriesú  s²   é € ð	Ø—n‘n ^Ó4ˆGð ÐˆØ×&Ñ&Ö(ˆDØ—:‘:“<ˆDÞ˜4Ÿ?™?¨3×/Ñ/ÙØ�‰˜s×#Ñ#¨¯©°c×(:Ñ(:Ø#'§:¡:¨dÓ#3×#=Ñ#=¸cÓ#BÑ �˜&ÙÜ¨DÀfÑMÔMò )øô !ó 	Ùð	üs(   ‚C„B< •B'CÂ<
C	ÃCÃC	Ã	Cc              #  ó¢   #   • S1nU R                  5        H4  n[        UR                  5      nX1;   a  M  UR                  U5        Uv •  M6     g7f)z'Get extras from the egg-info directory.r«   N)r  r   rK   Úadd)r(   Úknown_extrasrD   rK   s       r)   Ú_iter_egg_info_extrasÚ&BaseDistribution._iter_egg_info_extras  sI   é € à�tˆØ×4Ñ4Ö6ˆEÜ% e§k¡kÓ2ˆEØÓ$ÙØ×Ñ˜UÔ#ØŒKò 7ùs   ‚AAc              #  ól  #   • U R                  5        Hœ  n[        UR                  5      nU(       a%  UR                  (       a  SUR                   SU S3nO.U(       a  SU S3nO UR                  (       a  UR                  nOSnU(       a  UR                   SU 3v •  MŽ  UR                  v •  Mž     g7f)aA  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   rK   rL   rJ   )r(   rD   rK   rL   s       r)   Ú_iter_egg_info_dependenciesÚ,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à×'Ñ'Ô'ò 7ùs   ‚B2B4c                óÊ   • UR                  S5      (       d  U R                  5        H  nX!S'   M	     UR                  S5      (       d  U R                  5        H  nX1S'   M	     gg)z6Add egg-info requires.txt information to the metadata.rñ   zProvides-ExtraN)rò   r$  r  )r(   rÛ   ÚdeprK   s       r)   rÚ   Ú'BaseDistribution._add_egg_info_requires9  sa   € à×Ñ ×0Ñ0Ø×7Ñ7Ö9�Ø,/˜Ó)ñ :à×ÑÐ 0×1Ñ1Ø×3Ñ3Ö5�Ø-2Ð)Ó*ò 6ð 2r-   N)rS   r7   r6   rO   )rX   ÚbytesrY   r7   rZ   r7   r6   rO   )r^   ÚWheelr*   r7   r6   rO   r5   )r6   z
str | None)r6   rº   )r6   r   )r6   r   )r6   zDirectUrl | None)rÊ   ÚInfoPathr6   rº   )r6   zIterator[str])rÊ   r+  r6   r7   )r6   zIterable[BaseEntryPoint])r6   úemail.message.Message)r6   zdict[str, Any])r6   r   )r4   )rí   zCollection[str]r6   zIterable[Requirement])r6   zIterable[str])r6   zIterable[NormalizedName])r6   zIterator[str] | None)r6   zIterator[RequiresEntry])rÛ   r,  r6   ÚNone)5r8   r9   r:   r;   ÚclassmethodrT   r[   r_   rh   rk   r<   rg   rt   rw   rz   r   r„   rŠ   r�   r�   r“   rf   r›   rp   r³   r·   r»   r¾   rÃ   rÆ   r}   rÍ   rž   rÓ   r×   Ú	functoolsÚcached_propertyrÛ   rÞ   râ   re   rê   rî   ró   rö   r  r  r  r  r  r$  rÚ   r=   r4   r-   r)   rO   rO   ^   s¤  † Øó$ó ð$ð ð$à ð$ð ð$ð ð	$ð
 
ó$ó ð$ð" ó$ó ð$ôGô5ð ó$ó ð$ð óó ðð* ó
$ó ð
$ð ó$ó ð$ð ó
5ó ð
5ð ó7ó ð7ð ó4ó ð4ð" ó4ó ð4ð ó$ó ð$ð ó$ó ð$ð ó$ó ð$ð ó/ó ð/ð óó ðð2 ó	ó ð	ð ó)ó ð)ð ó4ó ð4ð ó1ó ð1ð óMó ðMð
 óQó ðQô
$ô$ô$ô$ô$ð ×Ñó
ó ð
ð ó*ó ð*ð ó5ó ð5ð ó>ó ð>ð óó ðö$$ô:ô
$ôTô
ô*
ô Nô2ô(÷83r-   rO   c                  óŒ   • \ rS rSrSr\SS j5       r\SS j5       rSS jrSS jr	SS jr
S\SS	S	4           SS
 jjrSrg)ÚBaseEnvironmentiC  z6An environment containing distributions to introspect.c                ó   • [        5       er$   r%   )rR   s    r)   ÚdefaultÚBaseEnvironment.defaultF  r,   r-   c                ó   • [        5       er$   r%   )rR   r  s     r)   Ú
from_pathsÚBaseEnvironment.from_pathsJ  r,   r-   c                ó   • [        5       e)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_distributionÚ BaseEnvironment.get_distributionN  rV   r-   c                ó   • [        5       e)zò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_distributionsÚ#BaseEnvironment._iter_distributionsV  rÑ   r-   c              #  ó  #   • U R                  5        Hi  n[        R                  " SUR                  [        R                  S9nU(       d-  [
        R                  SUR                  UR                  5        Me  Uv •  Mk     g7f)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¥   rg   )r(   ÚdistÚproject_name_valids      r)   Úiter_all_distributionsÚ&BaseEnvironment.iter_all_distributions_  sj   é € à×,Ñ,Ö.ˆDô
 "$§¢Ø<Ø×#Ñ#Ü—m‘mñ"Ðö
 &Ü—‘Ø;Ø×'Ñ'Ø—M‘Môñ
 ØŒJò# /ùs   ‚A?BTFc                ó¼   ^• U R                  5       nU(       a	  S U 5       nU(       d	  S U 5       nU(       a	  S U 5       nU(       a	  S U 5       nU4S jU 5       $ )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  óJ   #   • U  H  oR                   (       d  M  Uv •  M     g 7fr$   )r¾   ©rû   Úds     r)   rý   Ú?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>Ž  s   é € Ð+šR˜§7¥7—!‘!šRùó   ‚#š	#c              3  óJ   #   • U  H  oR                   (       a  M  Uv •  M     g 7fr$   ©r»   rJ  s     r)   rý   rL  �  s   é € Ð2šR˜§z¥z—!‘!šRùrM  c              3  óJ   #   • U  H  oR                   (       d  M  Uv •  M     g 7fr$   rO  rJ  s     r)   rý   rL  ’  s   é € Ð.šR˜§:¥:—!‘!šRùrM  c              3  óJ   #   • U  H  oR                   (       d  M  Uv •  M     g 7fr$   )rÃ   rJ  s     r)   rý   rL  ”  s   é € Ð1šR˜§=¥=—!‘!šRùrM  c              3  óJ   >#   • U  H  oR                   T;  d  M  Uv •  M     g 7fr$   )r�   )rû   rK  Úskips     €r)   rý   rL  •  s   øé € Ð>š2�a×!1Ñ!1¸Ñ!=—‘š2ùs   ƒ#š	#)rF  )r(   Ú
local_onlyrS  Úinclude_editablesÚeditables_onlyÚ	user_onlyÚits     `    r)   Úiter_installed_distributionsÚ,BaseEnvironment.iter_installed_distributionst  sR   ø€ ð0 ×(Ñ(Ó*ˆÞÙ+™RÓ+ˆBÞ Ù2™RÓ2ˆBÞÙ.™RÓ.ˆBÞÙ1™RÓ1ˆBÜ>™2Ó>Ð>r-   r4   N)r6   r2  )r  zlist[str] | Noner6   r2  )r*   r7   r6   zBaseDistribution | None)r6   úIterator[BaseDistribution])rT  rº   rS  zContainer[str]rU  rº   rV  rº   rW  rº   r6   r[  )r8   r9   r:   r;   Ú__doc__r.  r4  r7  r:  r=  rF  r   rY  r=   r4   r-   r)   r2  r2  C  s�   † Ù@àó$ó ð$ð ó$ó ð$ô$ô$ôð.  Ø*Ø"&Ø$Øð!?àð!?ð ð!?ð  ð	!?ð
 ð!?ð ð!?ð 
$÷!?ð !?r-   r2  c                  ó*   • \ rS rSr% S\S'   SS jrSrg)r*  i˜  r7   rg   c                ó   • [        5       er$   r%   r'   s    r)   Ú
as_zipfileÚWheel.as_zipfile›  rÕ   r-   r4   N©r6   zzipfile.ZipFile)r8   r9   r:   r;   rM   r_  r=   r4   r-   r)   r*  r*  ˜  s   ‡ ØƒM÷$r-   r*  c                  ó(   • \ rS rSrSS jrSS jrSrg)ÚFilesystemWheeliŸ  c                ó   • Xl         g r$   ©rg   rƒ   s     r)   Ú__init__ÚFilesystemWheel.__init__   s   € Ø �r-   c                ó@   • [         R                  " U R                  SS9$ ©NT)Ú
allowZip64)ÚzipfileÚZipFilerg   r'   s    r)   r_  ÚFilesystemWheel.as_zipfile£  s   € Ü�Š˜tŸ}™}¸Ñ>Ð>r-   re  N)rg   r7   r6   r-  ra  ©r8   r9   r:   r;   rf  r_  r=   r4   r-   r)   rc  rc  Ÿ  s   † ô!÷?r-   rc  c                  ó(   • \ rS rSrSS jrSS jrSrg)ÚMemoryWheeli§  c                ó   • Xl         X l        g r$   ©rg   Ústream)r(   rg   rs  s      r)   rf  ÚMemoryWheel.__init__¨  s   € Ø ŒØ�r-   c                ó@   • [         R                  " U R                  SS9$ ri  )rk  rl  rs  r'   s    r)   r_  ÚMemoryWheel.as_zipfile¬  s   € Ü�Š˜tŸ{™{°tÑ<Ð<r-   rr  N)rg   r7   rs  z	IO[bytes]r6   r-  ra  rn  r4   r-   r)   rp  rp  §  s   † ô÷=r-   rp  )rD   útuple[str, ...]rE   rw  r6   r7   )BÚ
__future__r   rÿ   Úemail.messageÚemailr/  r¢   ÚloggingrB   rA  rk  Úcollections.abcr   r   r   r   Útypingr   r	   r
   r   r   Ú"pip._vendor.packaging.requirementsr   Ú pip._vendor.packaging.specifiersr   r   Úpip._vendor.packaging.utilsr   r   Úpip._vendor.packaging.versionr   Úpip._internal.exceptionsr   Úpip._internal.locationsr   r   Úpip._internal.models.direct_urlr   r   r   Úpip._internal.utils.compatr   Úpip._internal.utils.egg_linkr   Úpip._internal.utils.miscr   r   Úpip._internal.utils.urlsr   Ú_jsonr   r7   ÚPurePathr+  Ú	getLoggerr8   r¤   r!   rF   rH   rO   r2  r*  rc  rp  r4   r-   r)   Ú<module>rŒ     sû   ðÝ "ã 
Û Û Û Û Û Û 	Û ß EÓ E÷õ õ ;ß Kß IÝ 1å 6ß <÷ñ õ
 3Ý Dß =Ý 0å à��g×&Ñ&Ð&Ñ'€à	×	Ò	˜8Ó	$€ô$�Xô $ð,Øð,à
ð,ð 	ô,ô<�Jô ôb3�xô b3÷JR?ñ R?ôj$ˆHô $ô?�eô ?ô=�%õ =r-   