+
    Žf©j*d  ã                  ó  € ^ 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 ^ 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+H,t, ^ RI-H.t. ^RI/H0t0 0 R mt1]2]Pf                  ,          t4]Pj                  ! ]64      t7 ! R R]4      t8R R lt9 ! R R]4      t: ! R R]4      t; ! R R4      t< ! R R]4      t= ! R R]=4      t> ! R R]=4      t?R# )!é    )ÚannotationsN)Ú
CollectionÚ	ContainerÚIterableÚIterator)ÚIOÚAnyÚ
NamedTupleÚProtocol)ÚRequirement)ÚInvalidSpecifierÚSpecifierSet)ÚNormalizedNameÚcanonicalize_name)ÚVersion)ÚNoneMetadataError)Úsite_packagesÚ	user_site)ÚDIRECT_URL_METADATA_NAMEÚ	DirectUrlÚDirectUrlValidationError)Úegg_link_path_from_sys_path)Úis_localÚnormalize_path)Úurl_to_path)Úmsg_to_jsonc                  óX   € ] tR t^2t]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   "ÚV/var/www/html/bestweb/venv/lib/python3.14/site-packages/pip/_internal/metadata/base.pyÚ__annotate__ÚBaseEntryPoint.__annotate__4   s   € ÷ $ñ $�cñ $ó    c                	ó   € \        4       h©N©ÚNotImplementedError©Úselfs   &r&   ÚnameÚBaseEntryPoint.name3   ó   € ä!Ó#Ð#r)   c               ó   € V ^8„  d   QhRR/# r    r$   )r%   s   "r&   r'   r(   8   ó   € ÷ $ñ $�sñ $r)   c                	ó   € \        4       hr+   r,   r.   s   &r&   ÚvalueÚBaseEntryPoint.value7   r2   r)   c               ó   € V ^8„  d   QhRR/# r    r$   )r%   s   "r&   r'   r(   <   r4   r)   c                	ó   € \        4       hr+   r,   r.   s   &r&   ÚgroupÚBaseEntryPoint.group;   r2   r)   r$   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Úpropertyr0   r6   r:   Ú__static_attributes__r$   r)   r&   r   r   2   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éÿÿÿÿ)rF   ©r#   ÚpathlibÚPath)rC   rD   s   &&r&   Ú_convert_installed_files_pathrL   @   sY   € ÷* �E˜!•H Ô$ß�t˜B•x 4Ô'Ø�G�O‰Dà˜˜�9ˆDØ�b•	ŠÜŒw�|Š|Ð*˜TÐ* EÓ*Ó+Ð+r)   c                  ó6   € ] tR t^^t$ R]R&   R]R&   R]R&   RtR# )ÚRequiresEntryr#   ÚrequirementÚextraÚmarkerr$   N)r<   r=   r>   r?   Ú__annotations__rA   r$   r)   r&   rN   rN   ^   s   ‡ ØÓØƒJØ‡Kr)   rN   c                  ó`  € ] tR t^dt]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]P                  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$]P                  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"   rT   r$   )r%   s   "r&   r'   ÚBaseDistribution.__annotate__f   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,   )ÚclsrV   s   &&r&   Úfrom_directoryÚBaseDistribution.from_directorye   ó   € ô "Ó#Ð#r)   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r!   Úmetadata_contentsÚbytesÚfilenamer#   Úproject_namer"   rT   r$   )r%   s   "r&   r'   rW   n   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,   )rY   r^   r`   ra   s   &&&&r&   Úfrom_metadata_file_contentsÚ,BaseDistribution.from_metadata_file_contentsm   s   € ô  "Ó#Ð#r)   c               ó$   € V ^8„  d   QhRRRRRR/# )r!   ÚwheelÚWheelr0   r#   r"   rT   r$   )r%   s   "r&   r'   rW   €   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,   )rY   rf   r0   s   &&&r&   Ú
from_wheelÚBaseDistribution.from_wheel   ó   € ô "Ó#Ð#r)   c               ó   € V ^8„  d   QhRR/# r    r$   )r%   s   "r&   r'   rW   �   s   € ÷ Gñ G˜#ñ Gr)   c                	óT   € V P                    R V P                   RV P                   R2# )Ú z (Ú))Úraw_nameÚraw_versionÚlocationr.   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'   rW   �   s   € ÷ 5ñ 5˜ñ 5r)   c                	ó8   € V P                    R V P                   2# )rn   )rp   rq   r.   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'   rW   ”   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,   r.   s   &r&   rr   ÚBaseDistribution.location“   rk   r)   c               ó   € V ^8„  d   QhRR/# rz   r$   )r%   s   "r&   r'   rW   ¢   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   rp   rr   )r/   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/# rz   r$   )r%   s   "r&   r'   rW   ·   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,   r.   s   &r&   Úinstalled_locationÚ#BaseDistribution.installed_location¶   s   € ô "Ó#Ð#r)   c               ó   € V ^8„  d   QhRR/# rz   r$   )r%   s   "r&   r'   rW   Ä   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,   r.   s   &r&   Úinfo_locationÚBaseDistribution.info_locationÃ   s   € ô "Ó#Ð#r)   c               ó   € V ^8„  d   QhRR/# ©r!   r"   Úboolr$   )r%   s   "r&   r'   rW   Ô   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‹   rJ   rK   Úis_file©r/   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'   rW   á   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)rr   rJ   rK   Úsuffix©r/   rr   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'   rW   ï   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‹   ÚendswithrJ   rK   Ú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'   rW     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'   rW     s   € ÷ $ñ $ ñ $r)   c                	ó   € \        4       hr+   r,   r.   s   &r&   Úcanonical_nameÚBaseDistribution.canonical_name  r2   r)   c               ó   € V ^8„  d   QhRR/# )r!   r"   r   r$   )r%   s   "r&   r'   rW     s   € ÷ $ñ $˜ñ $r)   c                	ó   € \        4       hr+   r,   r.   s   &r&   ÚversionÚBaseDistribution.version  r2   r)   c               ó   € V ^8„  d   QhRR/# r    r$   )r%   s   "r&   r'   rW     s   € ÷ $ñ $˜Sñ $r)   c                	ó   € \        4       hr+   r,   r.   s   &r&   rq   ÚBaseDistribution.raw_version  r2   r)   c               ó   € V ^8„  d   QhRR/# r    r$   )r%   s   "r&   r'   rW     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.
Ú-Ú_)rp   Úreplacer.   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'   rW   %  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¨   )r/   Ú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'   rW   ?  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)r/   Úinstaller_textÚlineÚcleaned_lines   &   r&   Ú	installerÚBaseDistribution.installer>  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'   rW   K  s   € ÷ )ñ )˜4ñ )r)   c                	ó$   € V P                  R 4      # )Ú	REQUESTED)r‘   r.   s   &r&   Ú	requestedÚBaseDistribution.requestedJ  s   € à�|‰|˜KÓ(Ð(r)   c               ó   € V ^8„  d   QhRR/# rŽ   r$   )r%   s   "r&   r'   rW   O  s   € ÷ 4ñ 4˜$ñ 4r)   c                	ó,   € \        V P                  4      # r+   )r�   rƒ   r.   s   &r&   ÚeditableÚBaseDistribution.editableN  s   € ä�D×2Ñ2Ó3Ð3r)   c               ó   € V ^8„  d   QhRR/# rŽ   r$   )r%   s   "r&   r'   rW   S  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   r.   s   &r&   ÚlocalÚBaseDistribution.localR  s$   € ð ×"Ñ"Ò*ÙÜ˜×/Ñ/Ó0Ð0r)   c               ó   € V ^8„  d   QhRR/# rŽ   r$   )r%   s   "r&   r'   rW   ]  s   € ÷ Mñ M˜Tñ Mr)   c                	ó‚   € V P                   e	   \        f   R# V P                   P                  \        \        4      4      # ©NF)r‡   r   Ú
startswithr   r.   s   &r&   Úin_usersiteÚBaseDistribution.in_usersite\  s2   € à×"Ñ"Ò*¬iÒ.?ÙØ×&Ñ&×1Ñ1´.ÄÓ2KÓLÐLr)   c               ó   € V ^8„  d   QhRR/# rŽ   r$   )r%   s   "r&   r'   rW   c  s   € ÷ Qñ Q $ñ Qr)   c                	ó‚   € V P                   e	   \        f   R# V P                   P                  \        \        4      4      # rá   )r‡   r   râ   r   r.   s   &r&   Úin_site_packagesÚ!BaseDistribution.in_site_packagesb  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'   rW   h  s   € ÷ $ñ $˜Hð $¨ñ $r)   c                ó   € \        4       h)z7Check whether an entry in the info directory is a file.r,   ©r/   rê   s   &&r&   r‘   ÚBaseDistribution.is_fileh  r2   r)   c               ó   € V ^8„  d   QhRR/# )r!   r"   zIterator[str]r$   )r%   s   "r&   r'   rW   l  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,   r.   s   &r&   Úiter_distutils_script_namesÚ,BaseDistribution.iter_distutils_script_namesl  r\   r)   c               ó    € V ^8„  d   QhRRRR/# )r!   rê   rë   r"   r#   r$   )r%   s   "r&   r'   rW   t  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_textt  ó   € ô "Ó#Ð#r)   c               ó   € V ^8„  d   QhRR/# )r!   r"   zIterable[BaseEntryPoint]r$   )r%   s   "r&   r'   rW   }  s   € ÷ $ñ $Ð#;ñ $r)   c                	ó   € \        4       hr+   r,   r.   s   &r&   Úiter_entry_pointsÚ"BaseDistribution.iter_entry_points}  ó   € Ü!Ó#Ð#r)   c               ó   € V ^8„  d   QhRR/# ©r!   r"   úemail.message.Messager$   )r%   s   "r&   r'   rW   €  s   € ÷ $ñ $Ð 5ñ $r)   c                	ó   € \        4       hr+   r,   r.   s   &r&   Ú_metadata_implÚBaseDistribution._metadata_impl€  rû   r)   c               ó   € V ^8„  d   QhRR/# rý   r$   )r%   s   "r&   r'   rW   „  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)r/   Ú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'   rW   ‘  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  r.   s   &r&   Úmetadata_dictÚBaseDistribution.metadata_dict�  s   € ô ˜4Ÿ=™=Ó)Ð)r)   c               ó   € V ^8„  d   QhRR/# rz   r$   )r%   s   "r&   r'   rW   œ  s   € ÷ 5ñ 5 *ñ 5r)   c                ó8   € V P                   P                  R4      # )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               ó   € V ^8„  d   QhRR/# r    r$   )r%   s   "r&   r'   rW   ¡  s   € ÷ >ñ >˜#ñ >r)   c                óN   € V P                   P                  RV P                  4      # )z*Value of "Name:" in distribution metadata.ÚName)r  r  r¨   r.   s   &r&   rp   ÚBaseDistribution.raw_name   s!   € ð
 �}‰}× Ñ  ¨×)<Ñ)<Ó=Ð=r)   c               ó   € V ^8„  d   QhRR/# )r!   r"   r   r$   )r%   s   "r&   r'   rW   ¨  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Á   rp   )r/   r6   Ú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'   rW   º  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,   )r/   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'   rW   Â  s   € ÷ :ñ : }ñ :r)   c                ó:   € V P                   P                  R. 4      # )zRaw Requires-Dist metadata.úRequires-Dist)r  Úget_allr.   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'   rW   Æ  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,   r.   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'   rW   Ò  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   NrI   )Ú.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Ë   )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               ó   € V ^8„  d   QhRR/# r+  r$   )r%   s   "r&   r'   rW   Ú  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$   )r/  Úps   & r&   r1  Ú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+   )rL   rJ   rK   Úparts)r/  r;  Úinfo_rels   & €r&   r1  r<  ê  s4   øé € ð 
á�ô *¬'¯,ª,°q«/×*?Ñ*?ÀÇÁ×PÐPÛùs   ƒAA)
rº   r»   rË   rr   r‹   rJ   rK   Úrelative_torÊ   r?  )r/   r5  ÚpathsÚrootrD   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$Â'B7Â6B7c               ó   € V ^8„  d   QhRR/# r+  r$   )r%   s   "r&   r'   rW   ï  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``.
)r6  rD  r.   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'   rW   ÿ  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[]Ú:)rO   rP   rQ   )rº   r»   rË   rÌ   râ   rž   Ú	partitionrN   )r/   rÂ   rP   rQ   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'   rW     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)rQ  r   rP   Úadd)r/   Úknown_extrasrC   rP   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'   rW   "  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)rQ  r   rP   rQ   rO   )r/   rC   rP   rQ   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'   rW   >  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]  rW  )r/   r  ÚdeprP   s   &&  r&   r  Ú'BaseDistribution._add_egg_info_requires>  sa   € à×Ñ ×0Ò0Ø×7Ñ7Ö9�Ø,/˜Ó)ñ :à×ÑÐ 0×1Ò1Ø×3Ñ3Ö5�Ø-2Ð)Ó*ó 6ñ 2r)   r$   N)r$   )5r<   r=   r>   r?   ÚclassmethodrZ   rc   ri   rs   rw   r@   rr   Ú	functoolsÚcached_propertyrƒ   r‡   r‹   r“   r™   r    r¤   r¨   r¬   rq   r¶   r   rÐ   rÕ   rÙ   rÝ   rã   rç   r‘   rñ   rº   rù   r   r  r	  r  rp   r  r  r$  r(  r6  rD  rH  rQ  rW  r]  r  rA   r$   r)   r&   rT   rT   d   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)   rT   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# )ÚBaseEnvironmentiH  z6An environment containing distributions to introspect.c               ó   € V ^8„  d   QhRR/# )r!   r"   rh  r$   )r%   s   "r&   r'   ÚBaseEnvironment.__annotate__L  s   € ÷ $ñ $˜ñ $r)   c                	ó   € \        4       hr+   r,   )rY   s   &r&   ÚdefaultÚBaseEnvironment.defaultK  r2   r)   c               ó    € V ^8„  d   QhRRRR/# )r!   rB  zlist[str] | Noner"   rh  r$   )r%   s   "r&   r'   rj  P  s   € ÷ $ñ $Ð/ð $°Oñ $r)   c                	ó   € \        4       hr+   r,   )rY   rB  s   &&r&   Ú
from_pathsÚBaseEnvironment.from_pathsO  r2   r)   c               ó    € V ^8„  d   QhRRRR/# )r!   r0   r#   r"   zBaseDistribution | Noner$   )r%   s   "r&   r'   rj  S  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,   )r/   r0   s   &&r&   Úget_distributionÚ BaseEnvironment.get_distributionS  r\   r)   c               ó   € V ^8„  d   QhRR/# ©r!   r"   úIterator[BaseDistribution]r$   )r%   s   "r&   r'   rj  [  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,   r.   s   &r&   Ú_iter_distributionsÚ#BaseEnvironment._iter_distributions[  rö   r)   c               ó   € V ^8„  d   QhRR/# rw  r$   )r%   s   "r&   r'   rj  d  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)rz  ÚreÚmatchr¨   Ú
IGNORECASErÀ   rÁ   rr   )r/   ÚdistÚproject_name_valids   &  r&   Úiter_all_distributionsÚ&BaseEnvironment.iter_all_distributionsd  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"   rx  r$   )r%   s   "r&   r'   rj  y  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Ý   ©r/  Úds   & r&   r1  Ú?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&   r1  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&   r1  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&   r1  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¨   )r/  r�  rˆ  s   & €r&   r1  r�  š  s   øé € Ð>™2�a×!1Ñ!1¸Ñ!=—’›2ùs   ƒ$š
$)r„  )r/   r‡  rˆ  r‰  rŠ  r‹  Úits   &&f&&& r&   Úiter_installed_distributionsÚ,BaseEnvironment.iter_installed_distributionsy  sR   ø€ ð0 ×(Ñ(Ó*ˆßÙ+™RÓ+ˆBß Ù2™RÓ2ˆBßÙ.™RÓ.ˆBßÙ1™RÓ1ˆBÜ>™2Ó>Ð>r)   r$   N)r<   r=   r>   r?   Ú__doc__rd  rl  rp  rt  rz  r„  Ústdlib_pkgsr˜  rA   r$   r)   r&   rh  rh  H  sU   † Ù@àô$ó ð$ð ô$ó ð$õ$õ$õð.  Ø*Ø"&Ø$Ø÷!?ó !?r)   rh  c                  ó.   € ] tR tRt$ R]R&   R R ltRtR# )rg   i�  r#   rr   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,   r.   s   &r&   Ú
as_zipfileÚWheel.as_zipfile   rû   r)   r$   N)r<   r=   r>   r?   rR   r¡  rA   r$   r)   r&   rg   rg   �  s   ‡ ØƒM÷$ñ $r)   rg   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!   rr   r#   r"   r`  r$   )r%   s   "r&   r'   ÚFilesystemWheel.__annotate__¥  s   € ÷ !ñ ! ð !¨ñ !r)   c                	ó   € Wn         R # r+   ©rr   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ÚZipFilerr   r.   s   &r&   r¡  ÚFilesystemWheel.as_zipfile¨  s   € Ü�Š˜tŸ}™}¸Ô>Ð>r)   r¨  N©r<   r=   r>   r?   r©  r¡  rA   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!   rr   r#   Ústreamz	IO[bytes]r"   r`  r$   )r%   s   "r&   r'   ÚMemoryWheel.__annotate__­  s!   € ÷ ñ  ð ¨ið ¸Dñ r)   c                	ó   € Wn         W n        R # r+   ©rr   r¶  )r/   rr   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¶  r.   s   &r&   r¡  ÚMemoryWheel.as_zipfile±  s   € Ü�Š˜tŸ{™{°tÔ<Ð<r)   r¹  Nr²  r$   r)   r&   r´  r´  ¬  s   † õ÷=ñ =r)   r´  >   ÚpythonÚwsgirefÚargparse)@Ú
__future__r   r3  Úemail.messageÚemailre  r¾   ÚloggingrJ   r  r¯  Úcollections.abcr   r   r   r   Útypingr   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.egg_linkr   Úpip._internal.utils.miscr   r   Úpip._internal.utils.urlsr   Ú_jsonr   r›  r#   ÚPurePathrë   Ú	getLoggerr<   rÀ   r   rL   rN   rT   rh  rg   r¤  r´  r$   r)   r&   Ú<module>rÔ     sã   ðÝ "ã 
Û Û Û Û Û Û 	Û ß EÓ E÷ó õ ;ß Kß IÝ 1å 6ß <÷ñ õ
 Eß =Ý 0å ò 0€ð �×!Ñ!Õ!€à	×	Ò	˜8Ó	$€ô$�Xô $õ,ô<�Jô ôa3�xô a3÷HR?ñ R?ôj$ˆHô $ô?�eô ?ô=�%ö =r)   