+
    BV-jLc  ã                  ó   € ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIHtHtHtHt ^ RIHtHtHtHtHt ^ RIHt ^ RIHtHt ^ RIHtHt ^ RIHt ^ R	I H!t! ^ R
I"H#t#H$t$ ^ RI%H&t&H't'H(t( ^ RI)H*t* ^ RI+H,t, ^ RI-H.t.H/t/ ^ RI0H1t1 ^RI2H3t3 ]]4]Pj                  3,          t6]Pn                  ! ]84      t9 ! R R]4      t:R R lt; ! R R]4      t< ! R R]4      t= ! R R4      t> ! R R]4      t? ! R R]?4      t@ ! R R ]?4      tAR# )!é    )Ú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                  óX   € ] tR t^,t]R R l4       t]R R l4       t]R R l4       tRtR# )	ÚBaseEntryPointc               ó   € V ^8„  d   QhRR/# ©é   ÚreturnÚstr© )Úformats   "Úl/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/pip/_internal/metadata/base.pyÚ__annotate__ÚBaseEntryPoint.__annotate__.   s   € ÷ $ñ $�cñ $ó    c                	ó   € \        4       h©N©ÚNotImplementedError©Úselfs   &r(   ÚnameÚBaseEntryPoint.name-   ó   € ä!Ó#Ð#r+   c               ó   € V ^8„  d   QhRR/# r"   r&   )r'   s   "r(   r)   r*   2   ó   € ÷ $ñ $�sñ $r+   c                	ó   € \        4       hr-   r.   r0   s   &r(   ÚvalueÚBaseEntryPoint.value1   r4   r+   c               ó   € V ^8„  d   QhRR/# r"   r&   )r'   s   "r(   r)   r*   6   r6   r+   c                	ó   € \        4       hr-   r.   r0   s   &r(   ÚgroupÚBaseEntryPoint.group5   r4   r+   r&   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Úpropertyr2   r8   r<   Ú__static_attributes__r&   r+   r(   r    r    ,   s<   † Øô$ó ð$ð ô$ó ð$ð ô$ó ô$r+   r    c               ó$   € V ^8„  d   QhRRRRRR/# )r#   Úentryztuple[str, ...]Úinfor$   r%   r&   )r'   s   "r(   r)   r)   :   s&   € ÷ ,ñ ,Øð,à
ð,ð 	ñ,r+   c                óÒ   € V '       d?   V ^ ,          R8X  d1   V'       d   VR,          R8X  d   VR,          pMVRR pV R,          p KF  \        \        P                  ! . VOV O5!  4      # )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.
ú..N:é   NNéÿÿÿÿ)rH   ©r%   ÚpathlibÚPath)rE   rF   s   &&r(   Ú_convert_installed_files_pathrN   :   sY   € ÷* �E˜!•H Ô$ß�t˜B•x 4Ô'Ø�G�O‰Dà˜˜�9ˆDØ�b•	ŠÜŒw�|Š|Ð*˜TÐ* EÓ*Ó+Ð+r+   c                  ó6   € ] tR t^Xt$ R]R&   R]R&   R]R&   RtR# )ÚRequiresEntryr%   ÚrequirementÚextraÚmarkerr&   N)r>   r?   r@   rA   Ú__annotations__rC   r&   r+   r(   rP   rP   X   s   ‡ ØÓØƒJØ‡Kr+   rP   c                  óL  € ] tR t^^t]R R l4       t]R R l4       t]R R l4       tR R ltR	 R
 lt	]
R R l4       t]
R R l4       t]
R R l4       t]
R R l4       t]
R R l4       t]
R R l4       t]
R R l4       t]
R R l4       t]
R R l4       t]
R R l4       t]
R R  l4       t]
R! R" l4       t]
R# R$ l4       t]
R% R& l4       t]
R' R( l4       t]
R) R* l4       t]
R+ R, l4       t]
R- R. l4       t]
R/ R0 l4       tR1 R2 ltR3 R4 ltR5 R6 lt R7 R8 lt!R9 R: lt"]#PH                  R; R< l4       t%]
R= R> l4       t&]
R? R@ l4       t']
RA RB l4       t(]
RC RD l4       t)R[RE RF llt*RG RH lt+RI RJ lt,RK RL lt-RM RN lt.RO RP lt/RQ RR lt0RS RT lt1RU RV lt2RW RX lt3RYt4RZ# )\ÚBaseDistributionc               ó    € V ^8„  d   QhRRRR/# )r#   Ú	directoryr%   r$   rV   r&   )r'   s   "r(   r)   ÚBaseDistribution.__annotate__`   s   € ÷ $ñ $ sð $Ð/?ñ $r+   c                ó   € \        4       h)zwLoad the distribution from a metadata directory.

:param directory: Path to a metadata directory, e.g. ``.dist-info``.
r.   )ÚclsrX   s   &&r(   Úfrom_directoryÚBaseDistribution.from_directory_   ó   € ô "Ó#Ð#r+   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r#   Úmetadata_contentsÚbytesÚfilenamer%   Úproject_namer$   rV   r&   )r'   s   "r(   r)   rY   h   s2   € ÷ $ñ $à ð$ð ð$ð ð	$ð
 
ñ$r+   c                ó   € \        4       h)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.   )r[   r`   rb   rc   s   &&&&r(   Úfrom_metadata_file_contentsÚ,BaseDistribution.from_metadata_file_contentsg   s   € ô  "Ó#Ð#r+   c               ó$   € V ^8„  d   QhRRRRRR/# )r#   ÚwheelÚWheelr2   r%   r$   rV   r&   )r'   s   "r(   r)   rY   z   s"   € ÷ $ñ $˜uð $¨Cð $Ð4Dñ $r+   c                ó   € \        4       h)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.   )r[   rh   r2   s   &&&r(   Ú
from_wheelÚBaseDistribution.from_wheely   ó   € ô "Ó#Ð#r+   c               ó   € V ^8„  d   QhRR/# r"   r&   )r'   s   "r(   r)   rY   ‡   s   € ÷ Gñ G˜#ñ Gr+   c                	óT   € V P                    R V P                   RV P                   R2# )Ú z (Ú))Úraw_nameÚraw_versionÚlocationr0   s   &r(   Ú__repr__ÚBaseDistribution.__repr__‡   s*   € Ø—-‘-�  $×"2Ñ"2Ð!3°2°d·m±m°_ÀAÐFÐFr+   c               ó   € V ^8„  d   QhRR/# r"   r&   )r'   s   "r(   r)   rY   Š   s   € ÷ 5ñ 5˜ñ 5r+   c                	ó8   € V P                    R V P                   2# )rp   )rr   rs   r0   s   &r(   Ú__str__ÚBaseDistribution.__str__Š   s   € Ø—-‘-�  $×"2Ñ"2Ð!3Ð4Ð4r+   c               ó   € V ^8„  d   QhRR/# ©r#   r$   z
str | Noner&   )r'   s   "r(   r)   rY   Ž   s   € ÷ $ñ $˜*ñ $r+   c                ó   € \        4       h)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.   r0   s   &r(   rt   ÚBaseDistribution.location�   rm   r+   c               ó   € V ^8„  d   QhRR/# r|   r&   )r'   s   "r(   r)   rY   œ   s   € ÷ ñ ¨:ñ r+   c                óÜ   € V P                   pV'       d/   VP                  4       '       d   \        VP                  4      #  R# \	        V P
                  4      pV'       d   V P                  # R# )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   rr   rt   )r1   r�   Úegg_link_paths   &  r(   Úeditable_project_locationÚ*BaseDistribution.editable_project_location›   sZ   € ð —_‘_ˆ
ßØ×+Ñ+×-Ò-Ü" :§>¡>Ó2Ð2ð .ñ ô 8¸¿¹ÓFˆMßð —}‘}Ð$Ùr+   c               ó   € V ^8„  d   QhRR/# r|   r&   )r'   s   "r(   r)   rY   ²   s   € ÷ 
$ñ 
$ Jñ 
$r+   c                ó   € \        4       h)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.   r0   s   &r(   Úinstalled_locationÚ#BaseDistribution.installed_location±   s   € ô "Ó#Ð#r+   c               ó   € V ^8„  d   QhRR/# r|   r&   )r'   s   "r(   r)   rY   ¿   s   € ÷ $ñ $˜zñ $r+   c                ó   € \        4       h)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.   r0   s   &r(   Úinfo_locationÚBaseDistribution.info_location¾   s   € ô "Ó#Ð#r+   c               ó   € V ^8„  d   QhRR/# ©r#   r$   Úboolr&   )r'   s   "r(   r)   rY   Ï   s   € ÷ 
5ñ 
5¨ñ 
5r+   c                óv   € V P                   pV'       g   R# \        P                  ! V4      P                  4       # )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)r�   rL   rM   Úis_file©r1   r�   s   & r(   Úinstalled_by_distutilsÚ'BaseDistribution.installed_by_distutilsÎ   s-   € ð ×*Ñ*ˆßÙÜ�|Š|˜MÓ*×2Ñ2Ó4Ð4r+   c               ó   € V ^8„  d   QhRR/# r�   r&   )r'   s   "r(   r)   rY   Ü   s   € ÷ 7ñ 7 $ñ 7r+   c                ót   € V P                   pV'       g   R# \        P                  ! V4      P                  R8H  # )zŽWhether this distribution is installed as an egg.

This usually indicates the distribution was installed by (older versions
of) easy_install.
Fz.egg)rt   rL   rM   Úsuffix©r1   rt   s   & r(   Úinstalled_as_eggÚ!BaseDistribution.installed_as_eggÛ   s/   € ð —=‘=ˆßÙô �|Š|˜HÓ%×,Ñ,°Ñ6Ð6r+   c               ó   € V ^8„  d   QhRR/# r�   r&   )r'   s   "r(   r)   rY   ê   s   € ÷ 4ñ 4°Dñ 4r+   c                ó¨   € V P                   pV'       g   R# VP                  R4      '       g   R# \        P                  ! V4      P	                  4       # )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©r�   ÚendswithrL   rM   Ú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               ó   € V ^8„  d   QhRR/# r�   r&   )r'   s   "r(   r)   rY   ü   s   € ÷ 4ñ 4¨$ñ 4r+   c                ó¨   € V P                   pV'       g   R# VP                  R4      '       g   R# \        P                  ! V4      P	                  4       # )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               ó   € V ^8„  d   QhRR/# )r#   r$   r   r&   )r'   s   "r(   r)   rY     s   € ÷ $ñ $ ñ $r+   c                	ó   € \        4       hr-   r.   r0   s   &r(   Úcanonical_nameÚBaseDistribution.canonical_name  r4   r+   c               ó   € V ^8„  d   QhRR/# )r#   r$   r   r&   )r'   s   "r(   r)   rY     s   € ÷ $ñ $˜ñ $r+   c                	ó   € \        4       hr-   r.   r0   s   &r(   ÚversionÚBaseDistribution.version  r4   r+   c               ó   € V ^8„  d   QhRR/# r"   r&   )r'   s   "r(   r)   rY     s   € ÷ $ñ $˜Sñ $r+   c                	ó   € \        4       hr-   r.   r0   s   &r(   rs   ÚBaseDistribution.raw_version  r4   r+   c               ó   € V ^8„  d   QhRR/# r"   r&   )r'   s   "r(   r)   rY     s   € ÷ /ñ / Sñ /r+   c                ó:   € V P                   P                  RR4      # )z„Convert a project name to its setuptools-compatible filename.

This is a copy of ``pkg_resources.to_filename()`` for compatibility.
Ú-Ú_)rr   Úreplacer0   s   &r(   Úsetuptools_filenameÚ$BaseDistribution.setuptools_filename  s   € ð �}‰}×$Ñ$ S¨#Ó.Ð.r+   c               ó   € V ^8„  d   QhRR/# )r#   r$   zDirectUrl | Noner&   )r'   s   "r(   r)   rY      s   € ÷ ñ Ð,ñ r+   c                ó(  €  V P                  \        4      p \        P                  ! T4      #   \         d     R# i ; i  \
        \        P                  \        3 d2   p\        P                  R\        T P                  T4        Rp?R# Rp?ii ; i)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ª   )r1   ÚcontentÚes   &  r(   r�   ÚBaseDistribution.direct_url  s‡   € ð	Ø—n‘nÔ%=Ó>ˆGð	Ü×&Ò& wÓ/Ð/øô !ô 	Úð	ûô
 Ü× Ñ Ü$ð
ô 	ô
 �N‰NØ-Ü(Ø×#Ñ#Øô	õ ûð	ús#   ‚. ˜A  ®=¼=Á  BÁ &BÂBc               ó   € V ^8„  d   QhRR/# r"   r&   )r'   s   "r(   r)   rY   :  s   € ÷ 	ñ 	˜3ñ 	r+   c                	óÊ   €  V P                  R 4      pTP	                  4        F  pTP                  4       pT'       g   K  Tu # 	  R#   \        \        \        3 d     R# i ; i)Ú	INSTALLERÚ )r¼   ÚOSErrorÚ
ValueErrorr   Ú
splitlinesÚstrip)r1   Úinstaller_textÚlineÚcleaned_lines   &   r(   Ú	installerÚBaseDistribution.installer9  sa   € ð	Ø!Ÿ^™^¨KÓ8ˆNð #×-Ñ-Ö/ˆDØŸ:™:›<ˆLß‰|Ø#Ò#ñ 0ñ øô œÔ%6Ð7ô 	Úð	ús   ‚A ÁA"Á!A"c               ó   € V ^8„  d   QhRR/# r�   r&   )r'   s   "r(   r)   rY   F  s   € ÷ )ñ )˜4ñ )r+   c                	ó$   € V P                  R 4      # )Ú	REQUESTED)r“   r0   s   &r(   Ú	requestedÚBaseDistribution.requestedE  s   € à�|‰|˜KÓ(Ð(r+   c               ó   € V ^8„  d   QhRR/# r�   r&   )r'   s   "r(   r)   rY   J  s   € ÷ 4ñ 4˜$ñ 4r+   c                	ó,   € \        V P                  4      # r-   )r‘   r…   r0   s   &r(   ÚeditableÚBaseDistribution.editableI  s   € ä�D×2Ñ2Ó3Ð3r+   c               ó   € V ^8„  d   QhRR/# r�   r&   )r'   s   "r(   r)   rY   N  s   € ÷ 1ñ 1�tñ 1r+   c                óL   € V P                   f   R# \        V P                   4      # )zlIf distribution is installed in the current virtual environment.

Always True if we're not in a virtualenv.
F)r‰   r   r0   s   &r(   ÚlocalÚBaseDistribution.localM  s$   € ð ×"Ñ"Ò*ÙÜ˜×/Ñ/Ó0Ð0r+   c               ó   € V ^8„  d   QhRR/# r�   r&   )r'   s   "r(   r)   rY   X  s   € ÷ Mñ M˜Tñ Mr+   c                	ó‚   € V P                   e	   \        f   R# V P                   P                  \        \        4      4      # ©NF)r‰   r   Ú
startswithr   r0   s   &r(   Úin_usersiteÚBaseDistribution.in_usersiteW  s2   € à×"Ñ"Ò*¬iÒ.?ÙØ×&Ñ&×1Ñ1´.ÄÓ2KÓLÐLr+   c               ó   € V ^8„  d   QhRR/# r�   r&   )r'   s   "r(   r)   rY   ^  s   € ÷ Qñ Q $ñ Qr+   c                	ó‚   € V P                   e	   \        f   R# V P                   P                  \        \        4      4      # rã   )r‰   r   rä   r   r0   s   &r(   Úin_site_packagesÚ!BaseDistribution.in_site_packages]  s2   € à×"Ñ"Ò*¬mÒ.CÙØ×&Ñ&×1Ñ1´.ÄÓ2OÓPÐPr+   c               ó    € V ^8„  d   QhRRRR/# )r#   ÚpathÚInfoPathr$   r‘   r&   )r'   s   "r(   r)   rY   c  s   € ÷ $ñ $˜Hð $¨ñ $r+   c                ó   € \        4       h)z7Check whether an entry in the info directory is a file.r.   ©r1   rì   s   &&r(   r“   ÚBaseDistribution.is_filec  r4   r+   c               ó   € V ^8„  d   QhRR/# )r#   r$   zIterator[str]r&   )r'   s   "r(   r)   rY   g  s   € ÷ $ñ $¨]ñ $r+   c                ó   € \        4       h)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.   r0   s   &r(   Úiter_distutils_script_namesÚ,BaseDistribution.iter_distutils_script_namesg  r^   r+   c               ó    € V ^8„  d   QhRRRR/# )r#   rì   rí   r$   r%   r&   )r'   s   "r(   r)   rY   o  s   € ÷ $ñ $˜hð $¨3ñ $r+   c                ó   € \        4       h)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               ó   € V ^8„  d   QhRR/# )r#   r$   zIterable[BaseEntryPoint]r&   )r'   s   "r(   r)   rY   x  s   € ÷ $ñ $Ð#;ñ $r+   c                	ó   € \        4       hr-   r.   r0   s   &r(   Úiter_entry_pointsÚ"BaseDistribution.iter_entry_pointsx  ó   € Ü!Ó#Ð#r+   c               ó   € V ^8„  d   QhRR/# ©r#   r$   úemail.message.Messager&   )r'   s   "r(   r)   rY   {  s   € ÷ $ñ $Ð 5ñ $r+   c                	ó   € \        4       hr-   r.   r0   s   &r(   Ú_metadata_implÚBaseDistribution._metadata_impl{  rý   r+   c               ó   € V ^8„  d   QhRR/# rÿ   r&   )r'   s   "r(   r)   rY     s   € ÷ 
ñ 
Ð/ñ 
r+   c                óH   € V P                  4       pV P                  V4       V# )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)r1   Úmetadatas   & r(   r  ÚBaseDistribution.metadata~  s%   € ð ×&Ñ&Ó(ˆØ×#Ñ# HÔ-Øˆr+   c               ó   € V ^8„  d   QhRR/# )r#   r$   zdict[str, Any]r&   )r'   s   "r(   r)   rY   Œ  s   € ÷ *ñ *˜~ñ *r+   c                ó,   € \        V P                  4      # )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  r0   s   &r(   Úmetadata_dictÚBaseDistribution.metadata_dict‹  s   € ô ˜4Ÿ=™=Ó)Ð)r+   c               ó   € V ^8„  d   QhRR/# r|   r&   )r'   s   "r(   r)   rY   —  s   € ÷ 5ñ 5 *ñ 5r+   c                ó8   € V P                   P                  R4      # )zDValue of "Metadata-Version:" in distribution metadata, if available.zMetadata-Version)r  Úgetr0   s   &r(   Úmetadata_versionÚ!BaseDistribution.metadata_version–  s   € ð �}‰}× Ñ Ð!3Ó4Ð4r+   c               ó   € V ^8„  d   QhRR/# r"   r&   )r'   s   "r(   r)   rY   œ  s   € ÷ >ñ >˜#ñ >r+   c                óN   € V P                   P                  RV P                  4      # )z*Value of "Name:" in distribution metadata.ÚName)r  r  rª   r0   s   &r(   rr   ÚBaseDistribution.raw_name›  s!   € ð
 �}‰}× Ñ  ¨×)<Ñ)<Ó=Ð=r+   c               ó   € V ^8„  d   QhRR/# )r#   r$   r   r&   )r'   s   "r(   r)   rY   £  s   € ÷ ñ  ñ r+   c                ó
  € V P                   P                  R4      pVf   \        4       #  \        \        V4      4      pV#   \         d7   pRp\
        P                  Y@P                  T4       \        4       u Rp?# Rp?ii ; i)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Ã   rr   )r1   r8   Ú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=Á7BÁ=Bc               ó    € V ^8„  d   QhRRRR/# )r#   ÚextraszCollection[str]r$   zIterable[Requirement]r&   )r'   s   "r(   r)   rY   µ  s   € ÷ $ñ $¨ð $ÐAVñ $r+   c                ó   € \        4       h)z–Dependencies of this distribution.

For modern .dist-info distributions, this is the collection of
"Requires-Dist:" entries in distribution metadata.
r.   )r1   r  s   &&r(   Úiter_dependenciesÚ"BaseDistribution.iter_dependenciesµ  r^   r+   c               ó   € V ^8„  d   QhRR/# ©r#   r$   zIterable[str]r&   )r'   s   "r(   r)   rY   ½  s   € ÷ :ñ : }ñ :r+   c                ó:   € V P                   P                  R. 4      # )zRaw Requires-Dist metadata.úRequires-Dist)r  Úget_allr0   s   &r(   Úiter_raw_dependenciesÚ&BaseDistribution.iter_raw_dependencies½  s   € à�}‰}×$Ñ$ _°bÓ9Ð9r+   c               ó   € V ^8„  d   QhRR/# )r#   r$   zIterable[NormalizedName]r&   )r'   s   "r(   r)   rY   Á  s   € ÷ 
$ñ 
$Ð&>ñ 
$r+   c                ó   € \        4       h)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.   r0   s   &r(   Úiter_provided_extrasÚ%BaseDistribution.iter_provided_extrasÁ  s   € ô "Ó#Ð#r+   c               ó   € V ^8„  d   QhRR/# ©r#   r$   zIterator[str] | Noner&   )r'   s   "r(   r)   rY   Í  s   € ÷ Tñ TÐ4Hñ Tr+   c                	ó    €  V P                  R 4      pR \        P                  ! TP	                  4       4       4       #   \         d     R# i ; i)ÚRECORDNc              3  ón   "  € T F+  p\        \        P                  ! V^ ,          4      4      x € K-  	  R# 5i)r   NrK   )Ú.0Úrows   & r(   Ú	<genexpr>ÚFBaseDistribution._iter_declared_entries_from_record.<locals>.<genexpr>Ó  s'   é € ÐSÑ5R¨c””G—L’L  Q¥Ó(×)Ð)Ó5Rùs   ‚35)r¼   r½   ÚcsvÚreaderrÍ   )r1   Ú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               ó   € V ^8„  d   QhRR/# r-  r&   )r'   s   "r(   r)   rY   Õ  s   € ÷ 
ñ 
Ð4Hñ 
r+   c                	ót  a€  V P                  R 4      pR TP                  RR7       4       pT P                  pT P                  pTe   Tf   T#  \
        P                  ! T4      P                  T4      oSP                  '       g   T# T3R lT 4       #   \         d     R# i ; i  \         d    Tu # i ; i)zinstalled-files.txtNc              3  ó8   "  € T F  q'       g   K  Vx € K  	  R # 5ir-   r&   )r1  Úps   & r(   r3  ÚFBaseDistribution._iter_declared_entries_from_legacy.<locals>.<genexpr>Ú  s   é € ÐAÑ;�q»q—’Ó;ùs   ‚	�
F)Úkeependsc              3  óŒ   <"  € T F9  p\        \        P                  ! V4      P                  SP                  4      x € K;  	  R # 5ir-   )rN   rL   rM   Úparts)r1  r=  Úinfo_rels   & €r(   r3  r>  å  s4   øé € ð 
á�ô *¬'¯,ª,°q«/×*?Ñ*?ÀÇÁ×PÐPÛùs   ƒAA)
r¼   r½   rÍ   rt   r�   rL   rM   Úrelative_torÌ   rA  )r1   r7  ÚpathsÚrootrF   rB  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$Â'B7Â6B7c               ó   € V ^8„  d   QhRR/# r-  r&   )r'   s   "r(   r)   rY   ê  s   € ÷ 
ñ 
Ð';ñ 
r+   c                óR   € V P                  4       ;'       g    V P                  4       # )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``.
)r8  rF  r0   s   &r(   Úiter_declared_entriesÚ&BaseDistribution.iter_declared_entriesê  s+   € ð ×3Ñ3Ó5÷ 9ð 9Ø×6Ñ6Ó8ð	
r+   c               ó   € V ^8„  d   QhRR/# )r#   r$   zIterator[RequiresEntry]r&   )r'   s   "r(   r)   rY   ú  s   € ÷ Nñ NÐ,Cñ Nr+   c              #  ó°  "  €  V P                  R4      pR;r#TP                  4        F–  pTP                  4       pT'       d   TP	                  R4      '       d   K4  TP	                  R4      '       d=   TP                  R4      '       d&   TP                  R4      P                  R4      w  r%pK‡  \        YBTR	7      x € K˜  	  R#   \         d     R# i ; i5i)
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[]Ú:)rQ   rR   rS   )r¼   r½   rÍ   rÎ   rä   r    Ú	partitionrP   )r1   rÄ   rR   rS   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„C •ACÁCÁ3CÂ
:CÃCÃCÃCÃCc               ó   € V ^8„  d   QhRR/# r"  r&   )r'   s   "r(   r)   rY     s   € ÷ ñ  }ñ r+   c              #  ó¦   "  € R0pV P                  4        F5  p\        VP                  4      pW19   d   K   VP                  V4       Vx € K7  	  R# 5i)z'Get extras from the egg-info directory.rÊ   N)rS  r   rR   Úadd)r1   Úknown_extrasrE   rR   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               ó   € V ^8„  d   QhRR/# r"  r&   )r'   s   "r(   r)   rY     s   € ÷ (ñ (¨]ñ (r+   c              #  óx  "  € V P                  4        F¡  p\        VP                  4      pV'       d'   VP                  '       d   RVP                   RV R2pM0V'       d   RV R2pM!VP                  '       d   VP                  pMRpV'       d   VP                   RV 2x € K“  VP                  x € K£  	  R# 5i)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)rS  r   rR   rS   rQ   )r1   rE   rR   rS   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   ‚AB:ÁB:Á!B:Á:B:Â)B:c               ó    € V ^8„  d   QhRRRR/# )r#   r  r   r$   ÚNoner&   )r'   s   "r(   r)   rY   9  s   € ÷ 3ñ 3Ð/Dð 3Èñ 3r+   c                óÒ   € VP                  R4      '       g   V P                  4        F  pW!R&   K	  	  VP                  R4      '       g   V P                  4        F  pW1R&   K	  	  R# R# )z6Add egg-info requires.txt information to the metadata.r$  zProvides-ExtraN)r%  r_  rY  )r1   r  ÚdeprR   s   &&  r(   r  Ú'BaseDistribution._add_egg_info_requires9  sa   € à×Ñ ×0Ò0Ø×7Ñ7Ö9�Ø,/˜Ó)ñ :à×ÑÐ 0×1Ò1Ø×3Ñ3Ö5�Ø-2Ð)Ó*ó 6ñ 2r+   r&   N)r&   )5r>   r?   r@   rA   Úclassmethodr\   re   rk   ru   ry   rB   rt   r…   r‰   r�   r•   r›   r¢   r¦   rª   r®   rs   r¸   r�   rÒ   r×   rÛ   rß   rå   ré   r“   ró   r¼   rû   r  Ú	functoolsÚcached_propertyr  r  r  rr   r  r  r&  r*  r8  rF  rJ  rS  rY  r_  r  rC   r&   r+   r(   rV   rV   ^   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3ñ 3r+   rV   c                  ó„   € ] tR tRtRt]R R l4       t]R R l4       tR R ltR	 R
 lt	R R lt
R]RRR3R R lltRtR# )ÚBaseEnvironmentiC  z6An environment containing distributions to introspect.c               ó   € V ^8„  d   QhRR/# )r#   r$   rj  r&   )r'   s   "r(   r)   ÚBaseEnvironment.__annotate__G  s   € ÷ $ñ $˜ñ $r+   c                	ó   € \        4       hr-   r.   )r[   s   &r(   ÚdefaultÚBaseEnvironment.defaultF  r4   r+   c               ó    € V ^8„  d   QhRRRR/# )r#   rD  zlist[str] | Noner$   rj  r&   )r'   s   "r(   r)   rl  K  s   € ÷ $ñ $Ð/ð $°Oñ $r+   c                	ó   € \        4       hr-   r.   )r[   rD  s   &&r(   Ú
from_pathsÚBaseEnvironment.from_pathsJ  r4   r+   c               ó    € V ^8„  d   QhRRRR/# )r#   r2   r%   r$   zBaseDistribution | Noner&   )r'   s   "r(   r)   rl  N  s   € ÷ $ñ $ Sð $Ð-Dñ $r+   c                ó   € \        4       h)z“Given a requirement name, return the installed distributions.

The name may not be normalized. The implementation must canonicalize
it for lookup.
r.   )r1   r2   s   &&r(   Úget_distributionÚ BaseEnvironment.get_distributionN  r^   r+   c               ó   € V ^8„  d   QhRR/# ©r#   r$   úIterator[BaseDistribution]r&   )r'   s   "r(   r)   rl  V  s   € ÷ $ñ $Ð%?ñ $r+   c                ó   € \        4       h)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.   r0   s   &r(   Ú_iter_distributionsÚ#BaseEnvironment._iter_distributionsV  rø   r+   c               ó   € V ^8„  d   QhRR/# ry  r&   )r'   s   "r(   r)   rl  _  s   € ÷ ñ Ð(Bñ r+   c              #  ó  "  € V P                  4        Fm  p\        P                  ! RVP                  \        P                  R7      pV'       g.   \
        P                  RVP                  VP                  4       Ki  Vx € Ko  	  R# 5i)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Ã   rt   )r1   ÚdistÚproject_name_valids   &  r(   Úiter_all_distributionsÚ&BaseEnvironment.iter_all_distributions_  sj   é € à×,Ñ,Ö.ˆDô
 "$§¢Ø<Ø×#Ñ#Ü—m‘mô"Ð÷
 &Ü—‘Ø;Ø×'Ñ'Ø—M‘Môñ
 ØŒJó# /ùs   ‚BBTFc               ó0   € V ^8„  d   QhRRRRRRRRRRRR	/# )
r#   Ú
local_onlyr‘   ÚskipzContainer[str]Úinclude_editablesÚeditables_onlyÚ	user_onlyr$   rz  r&   )r'   s   "r(   r)   rl  t  sF   € ÷ !?ñ !?àð!?ð ð!?ð  ð	!?ð
 ð!?ð ð!?ð 
$ñ!?r+   c                óÄ   a€ V P                  4       pV'       d
   R V 4       pV'       g
   R V 4       pV'       d
   R V 4       pV'       d
   R V 4       pV3R lV 4       # )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  óL   "  € T F  qP                   '       g   K  Vx € K  	  R # 5ir-   )rß   ©r1  Úds   & r(   r3  Ú?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>Ž  s   é € Ð+™R˜§7¥7—!’!›Rùó   ‚$š
$c              3  óL   "  € T F  qP                   '       d   K  Vx € K  	  R # 5ir-   ©rÛ   r�  s   & r(   r3  r’  �  s   é € Ð2™R˜§z¥z—!’!›Rùr“  c              3  óL   "  € T F  qP                   '       g   K  Vx € K  	  R # 5ir-   r•  r�  s   & r(   r3  r’  ’  s   é € Ð.™R˜§:¥:—!’!›Rùr“  c              3  óL   "  € T F  qP                   '       g   K  Vx € K  	  R # 5ir-   )rå   r�  s   & r(   r3  r’  ”  s   é € Ð1™R˜§=¥=—!’!›Rùr“  c              3  óL   <"  € T F  qP                   S9  g   K  Vx € K  	  R # 5ir-   )rª   )r1  r‘  rŠ  s   & €r(   r3  r’  •  s   øé € Ð>™2�a×!1Ñ!1¸Ñ!=—’›2ùs   ƒ$š
$)r†  )r1   r‰  rŠ  r‹  rŒ  r�  Úits   &&f&&& r(   Úiter_installed_distributionsÚ,BaseEnvironment.iter_installed_distributionst  sR   ø€ ð0 ×(Ñ(Ó*ˆßÙ+™RÓ+ˆBß Ù2™RÓ2ˆBßÙ.™RÓ.ˆBßÙ1™RÓ1ˆBÜ>™2Ó>Ð>r+   r&   N)r>   r?   r@   rA   Ú__doc__rf  rn  rr  rv  r|  r†  r   rš  rC   r&   r+   r(   rj  rj  C  sU   † Ù@àô$ó ð$ð ô$ó ð$õ$õ$õð.  Ø*Ø"&Ø$Ø÷!?ó !?r+   rj  c                  ó.   € ] tR tRt$ R]R&   R R ltRtR# )ri   i˜  r%   rt   c               ó   € V ^8„  d   QhRR/# ©r#   r$   zzipfile.ZipFiler&   )r'   s   "r(   r)   ÚWheel.__annotate__›  s   € ÷ $ñ $˜Oñ $r+   c                	ó   € \        4       hr-   r.   r0   s   &r(   Ú
as_zipfileÚWheel.as_zipfile›  rý   r+   r&   N)r>   r?   r@   rA   rT   r¢  rC   r&   r+   r(   ri   ri   ˜  s   ‡ ØƒM÷$ñ $r+   ri   c                  ó.   € ] tR tRtR R ltR R ltRtR# )ÚFilesystemWheeliŸ  c               ó    € V ^8„  d   QhRRRR/# )r#   rt   r%   r$   rb  r&   )r'   s   "r(   r)   ÚFilesystemWheel.__annotate__   s   € ÷ !ñ ! ð !¨ñ !r+   c                	ó   € Wn         R # r-   ©rt   rš   s   &&r(   Ú__init__ÚFilesystemWheel.__init__   s   € Ø Žr+   c               ó   € V ^8„  d   QhRR/# rŸ  r&   )r'   s   "r(   r)   r§  £  s   € ÷ ?ñ ?˜Oñ ?r+   c                	óF   € \         P                  ! V P                  R R7      # ©T)Ú
allowZip64)ÚzipfileÚZipFilert   r0   s   &r(   r¢  ÚFilesystemWheel.as_zipfile£  s   € Ü�Š˜tŸ}™}¸Ô>Ð>r+   r©  N©r>   r?   r@   rA   rª  r¢  rC   r&   r+   r(   r¥  r¥  Ÿ  s   † õ!÷?ñ ?r+   r¥  c                  ó.   € ] tR tRtR R ltR R ltRtR# )ÚMemoryWheeli§  c               ó$   € V ^8„  d   QhRRRRRR/# )r#   rt   r%   Ústreamz	IO[bytes]r$   rb  r&   )r'   s   "r(   r)   ÚMemoryWheel.__annotate__¨  s!   € ÷ ñ  ð ¨ið ¸Dñ r+   c                	ó   € Wn         W n        R # r-   ©rt   r·  )r1   rt   r·  s   &&&r(   rª  ÚMemoryWheel.__init__¨  s   € Ø ŒØŽr+   c               ó   € V ^8„  d   QhRR/# rŸ  r&   )r'   s   "r(   r)   r¸  ¬  s   € ÷ =ñ =˜Oñ =r+   c                	óF   € \         P                  ! V P                  R R7      # r®  )r°  r±  r·  r0   s   &r(   r¢  ÚMemoryWheel.as_zipfile¬  s   € Ü�Š˜tŸ{™{°tÔ<Ð<r+   rº  Nr³  r&   r+   r(   rµ  rµ  §  s   † õ÷=ñ =r+   rµ  )BÚ
__future__r   r5  Úemail.messageÚemailrg  rÀ   ÚloggingrL   r�  r°  Ú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   r%   ÚPurePathrí   Ú	getLoggerr>   rÂ   r    rN   rP   rV   rj  ri   r¥  rµ  r&   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+   