+
    <j{c                        ^ 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HtHtHtHt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/H0t0 ^ RI1H2t2 ^RI3H4t4 ]]5]Pl                  3,          t7]Pp                  ! ]94      t: ! 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      tA ! R R]@4      tBR# )    N)IOAny
Collection	ContainerDictIterableIteratorList
NamedTupleOptionalProtocolTupleUnion)Requirement)InvalidSpecifierSpecifierSet)NormalizedNamecanonicalize_nameVersion)NoneMetadataError)site_packages	user_site)DIRECT_URL_METADATA_NAME	DirectUrlDirectUrlValidationError)stdlib_pkgs)egg_link_path_from_sys_path)is_localnormalize_path)url_to_path)msg_to_jsonc                   t   a  ] tR t^1t o ]V 3R lR l4       t]V 3R lR l4       t]V 3R lR l4       tRtV t	R# )	BaseEntryPointc                    < V ^8  d   QhRS[ /#    returnstr)format__classdict__s   "P/opt/headortail/venv/lib/python3.14/site-packages/pip/_internal/metadata/base.py__annotate__BaseEntryPoint.__annotate__3   s     $ $c $    c                    \        4       hNNotImplementedErrorselfs   &r-   nameBaseEntryPoint.name2       !##r0   c                    < V ^8  d   QhRS[ /# r&   r)   )r+   r,   s   "r-   r.   r/   7        $ $s $r0   c                    \        4       hr2   r3   r5   s   &r-   valueBaseEntryPoint.value6   r9   r0   c                    < V ^8  d   QhRS[ /# r&   r)   )r+   r,   s   "r-   r.   r/   ;   r;   r0   c                    \        4       hr2   r3   r5   s   &r-   groupBaseEntryPoint.group:   r9   r0    N)
__name__
__module____qualname____firstlineno__propertyr7   r=   rA   __static_attributes____classdictcell__r,   s   @r-   r$   r$   1   s?     $ $ $ $ $ $r0   r$   c                p    V ^8  d   QhR\         \        R3,          R\         \        R3,          R\        /# )r'   entry.infor(   )r   r*   )r+   s   "r-   r.   r.   ?   s6     , ,c?,
S/, 	,r0   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)rP   r*   pathlibPath)rM   rN   s   &&r-   _convert_installed_files_pathrV   ?   sY    * E!H$tBx4'GOD9Db	w||*T*E*++r0   c                   ,   a  ] tR t^]t o V 3R ltRtV tR# )RequiresEntryc                >   < V ^8  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   # )r'   requirementextramarkerr)   )r+   r,   s   "r-   r.   RequiresEntry.__annotate__]   s&      J  K r0   rC   N)rD   rE   rF   rG   __annotate_func__rI   rJ   rK   s   @r-   rX   rX   ]   s      r0   rX   c                   ^  a  ] tR t^ct o ]V 3R lR l4       t]V 3R lR l4       t]V 3R lR l4       tV 3R lR ltV 3R	 lR
 lt	]
V 3R lR l4       t]
V 3R lR l4       t]
V 3R lR l4       t]
V 3R lR l4       t]
V 3R lR l4       t]
V 3R lR l4       t]
V 3R lR l4       t]
V 3R lR l4       t]
V 3R lR l4       t]
V 3R lR l4       t]
V 3R lR  l4       t]
V 3R! lR" l4       t]
V 3R# lR$ l4       t]
V 3R% lR& l4       t]
V 3R' lR( l4       t]
V 3R) lR* l4       t]
V 3R+ lR, l4       t]
V 3R- lR. l4       t]
V 3R/ lR0 l4       tV 3R1 lR2 ltV 3R3 lR4 ltV 3R5 lR6 lt V 3R7 lR8 lt!V 3R9 lR: lt"]#PH                  V 3R; lR< l4       t%]
V 3R= lR> l4       t&]
V 3R? lR@ l4       t']
V 3RA lRB l4       t(]
V 3RC lRD l4       t)R[V 3RE lRF llt*V 3RG lRH lt+V 3RI lRJ lt,V 3RK lRL lt-V 3RM lRN lt.V 3RO lRP lt/V 3RQ lRR lt0V 3RS lRT lt1V 3RU lRV lt2V 3RW lRX lt3RYt4V t5RZ# )\BaseDistributionc                $   < V ^8  d   QhRS[ RR/# )r'   	directoryr(   r`   r)   )r+   r,   s   "r-   r.   BaseDistribution.__annotate__e   s     $ $s $/A $r0   c                    \        4       h)zwLoad the distribution from a metadata directory.

:param directory: Path to a metadata directory, e.g. ``.dist-info``.
r3   )clsrb   s   &&r-   from_directoryBaseDistribution.from_directoryd        "##r0   c                0   < V ^8  d   QhRS[ RS[RS[RR/# )r'   metadata_contentsfilenameproject_namer(   r`   )bytesr*   )r+   r,   s   "r-   r.   rc   m   s3     $ $ $ $ 	$
 
$r0   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.
r3   )re   rj   rk   rl   s   &&&&r-   from_metadata_file_contents,BaseDistribution.from_metadata_file_contentsl   s      "##r0   c                (   < V ^8  d   QhRRRS[ RR/# )r'   wheelWheelr7   r(   r`   r)   )r+   r,   s   "r-   r.   rc      s#     $ $w $c $6H $r0   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.
r3   )re   rr   r7   s   &&&r-   
from_wheelBaseDistribution.from_wheel~        "##r0   c                    < V ^8  d   QhRS[ /# r&   r)   )r+   r,   s   "r-   r.   rc      s     G G# Gr0   c                T    V P                    R V P                   RV P                   R2# ) z ())raw_nameraw_versionlocationr5   s   &r-   __repr__BaseDistribution.__repr__   s*    --$"2"2!32dmm_AFFr0   c                    < V ^8  d   QhRS[ /# r&   r)   )r+   r,   s   "r-   r.   rc      s     5 5 5r0   c                8    V P                    R V P                   2# )rz   )r|   r}   r5   s   &r-   __str__BaseDistribution.__str__   s    --$"2"2!344r0   c                0   < V ^8  d   QhRS[ S[,          /# r&   r   r*   )r+   r,   s   "r-   r.   rc      s     $ $(3- $r0   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.
r3   r5   s   &r-   r~   BaseDistribution.location   rw   r0   c                0   < V ^8  d   QhRS[ S[,          /# r&   r   )r+   r,   s   "r-   r.   rc      s      8C= r0   c                    V P                   pV'       d/   VP                  4       '       d   \        VP                  4      #  R# \	        V P
                  4      pV'       d   V P                  # R# )zThe project location for editable distributions.

This is the directory where pyproject.toml or setup.py is located.
None if the distribution is not installed in editable mode.
N)
direct_urlis_local_editabler!   urlr   r|   r~   )r6   r   egg_link_paths   &  r-   editable_project_location*BaseDistribution.editable_project_location   sZ     __
++--":>>22 .  8FM }}$r0   c                0   < V ^8  d   QhRS[ S[,          /# r&   r   )r+   r,   s   "r-   r.   rc      s     
$ 
$HSM 
$r0   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).
r3   r5   s   &r-   installed_location#BaseDistribution.installed_location   s     "##r0   c                0   < V ^8  d   QhRS[ S[,          /# r&   r   )r+   r,   s   "r-   r.   rc      s     $ $x} $r0   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.
r3   r5   s   &r-   info_locationBaseDistribution.info_location   s     "##r0   c                    < V ^8  d   QhRS[ /# r&   bool)r+   r,   s   "r-   r.   rc      s     
5 
5 
5r0   c                v    V P                   pV'       g   R# \        P                  ! V4      P                  4       # )zWhether 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   rT   rU   is_filer6   r   s   & r-   installed_by_distutils'BaseDistribution.installed_by_distutils   s-     **||M*2244r0   c                    < V ^8  d   QhRS[ /# r&   r   )r+   r,   s   "r-   r.   rc      s     7 7$ 7r0   c                t    V P                   pV'       g   R# \        P                  ! V4      P                  R8H  # )zWhether this distribution is installed as an egg.

This usually indicates the distribution was installed by (older versions
of) easy_install.
Fz.egg)r~   rT   rU   suffixr6   r~   s   & r-   installed_as_egg!BaseDistribution.installed_as_egg   s/     == ||H%,,66r0   c                    < V ^8  d   QhRS[ /# r&   r   )r+   r,   s   "r-   r.   rc      s     4 4D 4r0   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   endswithrT   rU   is_dirr   s   & r-   "installed_with_setuptools_egg_info3BaseDistribution.installed_with_setuptools_egg_info   sA     **%%k22||M*1133r0   c                    < V ^8  d   QhRS[ /# r&   r   )r+   r,   s   "r-   r.   rc     s     4 4$ 4r0   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3r0   c                    < V ^8  d   QhRS[ /# r&   )r   )r+   r,   s   "r-   r.   rc     s     $ $ $r0   c                    \        4       hr2   r3   r5   s   &r-   canonical_nameBaseDistribution.canonical_name  r9   r0   c                    < V ^8  d   QhRS[ /# r&   r   )r+   r,   s   "r-   r.   rc     s     $ $ $r0   c                    \        4       hr2   r3   r5   s   &r-   versionBaseDistribution.version  r9   r0   c                    < V ^8  d   QhRS[ /# r&   r)   )r+   r,   s   "r-   r.   rc     s     $ $S $r0   c                    \        4       hr2   r3   r5   s   &r-   r}   BaseDistribution.raw_version  r9   r0   c                    < V ^8  d   QhRS[ /# r&   r)   )r+   r,   s   "r-   r.   rc     s     / /S /r0   c                :    V P                   P                  RR4      # )zConvert a project name to its setuptools-compatible filename.

This is a copy of ``pkg_resources.to_filename()`` for compatibility.
-_)r|   replacer5   s   &r-   setuptools_filename$BaseDistribution.setuptools_filename  s     }}$$S#..r0   c                0   < V ^8  d   QhRS[ S[,          /# r&   )r   r   )r+   r,   s   "r-   r.   rc   %  s      HY/ r0   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)zObtain 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   )r6   contentes   &  r-   r   BaseDistribution.direct_url$  s    	nn%=>G	&&w// ! 		
   $
 	
 NN-(##	 	s#   . A  ==  B &BBc                    < V ^8  d   QhRS[ /# r&   r)   )r+   r,   s   "r-   r.   rc   ?  s     	 	3 	r0   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)r6   installer_textlinecleaned_lines   &   r-   	installerBaseDistribution.installer>  sa    	!^^K8N #--/D::<L|## 0  %67 		s   A A"!A"c                    < V ^8  d   QhRS[ /# r&   r   )r+   r,   s   "r-   r.   rc   K  s     ) )4 )r0   c                $    V P                  R 4      # )	REQUESTED)r   r5   s   &r-   	requestedBaseDistribution.requestedJ  s    ||K((r0   c                    < V ^8  d   QhRS[ /# r&   r   )r+   r,   s   "r-   r.   rc   O  s     4 4$ 4r0   c                ,    \        V P                  4      # r2   )r   r   r5   s   &r-   editableBaseDistribution.editableN  s    D2233r0   c                    < V ^8  d   QhRS[ /# r&   r   )r+   r,   s   "r-   r.   rc   S  s     1 1t 1r0   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   r5   s   &r-   localBaseDistribution.localR  s$     ""*//00r0   c                    < V ^8  d   QhRS[ /# r&   r   )r+   r,   s   "r-   r.   rc   ]  s     M MT Mr0   c                    V P                   e	   \        f   R# V P                   P                  \        \        4      4      # NF)r   r   
startswithr    r5   s   &r-   in_usersiteBaseDistribution.in_usersite\  s2    ""*i.?&&11.2KLLr0   c                    < V ^8  d   QhRS[ /# r&   r   )r+   r,   s   "r-   r.   rc   c  s     Q Q$ Qr0   c                    V P                   e	   \        f   R# V P                   P                  \        \        4      4      # r   )r   r   r   r    r5   s   &r-   in_site_packages!BaseDistribution.in_site_packagesb  s2    ""*m.C&&11.2OPPr0   c                &   < V ^8  d   QhRS[ RS[/# r'   pathr(   )InfoPathr   )r+   r,   s   "r-   r.   rc   h  s     $ $H $ $r0   c                    \        4       h)z7Check whether an entry in the info directory is a file.r3   r6   r   s   &&r-   r   BaseDistribution.is_fileh  r9   r0   c                0   < V ^8  d   QhRS[ S[,          /# r&   )r	   r*   )r+   r,   s   "r-   r.   rc   l  s     $ $Xc] $r0   c                    \        4       h)zFind 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.
r3   r5   s   &r-   iter_distutils_script_names,BaseDistribution.iter_distutils_script_namesl  rh   r0   c                &   < V ^8  d   QhRS[ RS[/# r   )r   r*   )r+   r,   s   "r-   r.   rc   t  s     $ $h $3 $r0   c                    \        4       h)zRead 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.
r3   r   s   &&r-   r   BaseDistribution.read_textt       "##r0   c                0   < V ^8  d   QhRS[ S[,          /# r&   )r   r$   )r+   r,   s   "r-   r.   rc   }  s     $ $8N#; $r0   c                    \        4       hr2   r3   r5   s   &r-   iter_entry_points"BaseDistribution.iter_entry_points}      !##r0   c                H   < V ^8  d   QhRS[ P                  P                  /# r&   emailmessageMessage)r+   r,   s   "r-   r.   rc     s     $ $ 5 5 $r0   c                    \        4       hr2   r3   r5   s   &r-   _metadata_implBaseDistribution._metadata_impl  r  r0   c                H   < V ^8  d   QhRS[ P                  P                  /# r&   r
  )r+   r,   s   "r-   r.   rc     s     
 
%--// 
r0   c                H    V P                  4       pV P                  V4       V# )zMetadata 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)r6   metadatas   & r-   r  BaseDistribution.metadata  s%     &&(##H-r0   c                6   < V ^8  d   QhRS[ S[S[3,          /# r&   )r   r*   r   )r+   r,   s   "r-   r.   rc     s     * *tCH~ *r0   c                ,    \        V P                  4      # )zPEP 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  r5   s   &r-   metadata_dictBaseDistribution.metadata_dict  s     4==))r0   c                0   < V ^8  d   QhRS[ S[,          /# r&   r   )r+   r,   s   "r-   r.   rc     s     5 5(3- 5r0   c                8    V P                   P                  R4      # )zDValue of "Metadata-Version:" in distribution metadata, if available.zMetadata-Version)r  getr5   s   &r-   metadata_version!BaseDistribution.metadata_version  s     }}  !344r0   c                    < V ^8  d   QhRS[ /# r&   r)   )r+   r,   s   "r-   r.   rc     s     > ># >r0   c                N    V P                   P                  RV P                  4      # )z*Value of "Name:" in distribution metadata.Name)r  r  r   r5   s   &r-   r|   BaseDistribution.raw_name  s!    
 }}  )<)<==r0   c                    < V ^8  d   QhRS[ /# r&   )r   )r+   r,   s   "r-   r.   rc     s       r0   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)zValue of "Requires-Python:" in distribution metadata.

If the key does not exist or contains an invalid value, an empty
SpecifierSet should be returned.
zRequires-PythonNz-Package %r has an invalid Requires-Python: %s)r  r  r   r*   r   r   r   r|   )r6   r=   specr   r  s   &    r-   requires_python BaseDistribution.requires_python  sq     !!"34=>!	"E
+D
 	   	"EGNN7MM15>!	"s   A B+A=7B=Bc                F   < V ^8  d   QhRS[ S[,          RS[S[,          /# )r'   extrasr(   )r   r*   r   r   )r+   r,   s   "r-   r.   rc     s$     $ $
3 $+AV $r0   c                    \        4       h)zDependencies of this distribution.

For modern .dist-info distributions, this is the collection of
"Requires-Dist:" entries in distribution metadata.
r3   )r6   r)  s   &&r-   iter_dependencies"BaseDistribution.iter_dependencies  rh   r0   c                0   < V ^8  d   QhRS[ S[,          /# r&   r   r*   )r+   r,   s   "r-   r.   rc     s     : :x} :r0   c                :    V P                   P                  R. 4      # )zRaw Requires-Dist metadata.Requires-Dist)r  get_allr5   s   &r-   iter_raw_dependencies&BaseDistribution.iter_raw_dependencies  s    }}$$_b99r0   c                0   < V ^8  d   QhRS[ S[,          /# r&   )r   r   )r+   r,   s   "r-   r.   rc     s     
$ 
$h~&> 
$r0   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`.
r3   r5   s   &r-   iter_provided_extras%BaseDistribution.iter_provided_extras  s     "##r0   c                @   < V ^8  d   QhRS[ S[S[,          ,          /# r&   r   r	   r*   )r+   r,   s   "r-   r.   rc     s      T THXc]4K Tr0   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   NrS   ).0rows   & r-   	<genexpr>FBaseDistribution._iter_declared_entries_from_record.<locals>.<genexpr>  s'     S5RcGLLQ())5Rs   35)r   r   csvreaderr   )r6   texts   & r-   "_iter_declared_entries_from_record3BaseDistribution._iter_declared_entries_from_record  sG    	>>(+D TSZZ@Q5RSS ! 		s   > AAc                @   < V ^8  d   QhRS[ S[S[,          ,          /# r&   r9  )r+   r,   s   "r-   r.   rc     s     
 
HXc]4K 
r0   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r2   rC   )r=  ps   & r-   r?  FBaseDistribution._iter_declared_entries_from_legacy.<locals>.<genexpr>  s     A;qq;s   	
F)keependsc              3      <"   T F9  p\        \        P                  ! V4      P                  SP                  4      x  K;  	  R # 5ir2   )rV   rT   rU   parts)r=  rI  info_rels   & r-   r?  rJ    s4      
 *',,q/*?*?PPs   AA)
r   r   r   r~   r   rT   rU   relative_tor   rM  )r6   rC  pathsrootrN   rN  s   &    @r-   "_iter_declared_entries_from_legacy3BaseDistribution._iter_declared_entries_from_legacy  s    	>>"78D BDOOUO;A}}!!<4<L	||D)55d;H ~~~L

 	
 ! 		  	L	s#   B %B' B$#B$'B76B7c                @   < V ^8  d   QhRS[ S[S[,          ,          /# r&   r9  )r+   r,   s   "r-   r.   rc     s     
 
x'> 
r0   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``.
)rD  rR  r5   s   &r-   iter_declared_entries&BaseDistribution.iter_declared_entries  s+     335 9 9668	
r0   c                0   < V ^8  d   QhRS[ S[,          /# r&   )r	   rX   )r+   r,   s   "r-   r.   rc     s     N NH],C Nr0   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[]:)rZ   r[   r\   )r   r   r   r   r   r   	partitionrX   )r6   r   r[   r\   r   r   s   &     r-   _iter_requires_txt_entries+BaseDistribution._iter_requires_txt_entries  s     	nn^4G &&(D::<D4??3//s##c(:(:#'::d#3#=#=c#B &DfMM ) ! 		s:   CC ACC3C
:CCCCCc                0   < V ^8  d   QhRS[ S[,          /# r&   r.  )r+   r,   s   "r-   r.   rc     s      x} r0   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)r_  r   r[   add)r6   known_extrasrM   r[   s   &   r-   _iter_egg_info_extras&BaseDistribution._iter_egg_info_extras  sI     t446E%ekk2E$U#K 7s   AAc                0   < V ^8  d   QhRS[ S[,          /# r&   r.  )r+   r,   s   "r-   r.   rc   "  s     ( (Xc] (r0   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)r_  r   r[   r\   rZ   )r6   rM   r[   r\   s   &   r-   _iter_egg_info_dependencies,BaseDistribution._iter_egg_info_dependencies"  s      446E%ekk2EU\\N*:5'C%eWA.**+3vh77''' 7s   AB:B:!B::B:)B:c                L   < V ^8  d   QhRS[ P                  P                  RR/# )r'   r  r(   Nr
  )r+   r,   s   "r-   r.   rc   >  s%     3 3u}}/D/D 3 3r0   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.r0  zProvides-ExtraN)r1  rk  re  )r6   r  depr[   s   &&  r-   r  'BaseDistribution._add_egg_info_requires>  sa    00779,/) : 011335-2)* 6 2r0   rC   N)rC   )6rD   rE   rF   rG   classmethodrf   ro   ru   r   r   rH   r~   r   r   r   r   r   r   r   r   r   r}   r   r   r   r   r   r   r   r   r   r   r   r  r  	functoolscached_propertyr  r  r  r|   r&  r+  r2  r6  rD  rR  rV  r_  re  rk  r  rI   rJ   rK   s   @r-   r`   r`   c   s    $ $ $ $" $ $G G5 5 $ $  * 
$ 
$ $ $ 
5 
5 7 7 4 4" 4 4 $ $ $ $ $ $ / /  2 	 	 ) ) 4 4 1 1 M M
 Q Q
$ $$ $$ $$ $$ $ 
 
 * * 5 5 > >  $$ $: :
$ 
$T T
 
*
 
 N N2 ( (83 3r0   r`   c                      a  ] tR tRt o Rt]V 3R lR l4       t]V 3R lR l4       tV 3R lR ltV 3R	 lR
 lt	V 3R lR lt
R]RRR3V 3R lR lltRtV tR# )BaseEnvironmentiH  z6An environment containing distributions to introspect.c                   < V ^8  d   QhRR/# )r'   r(   ru  rC   )r+   r,   s   "r-   r.   BaseEnvironment.__annotate__L  s     $ $) $r0   c                    \        4       hr2   r3   )re   s   &r-   defaultBaseEnvironment.defaultK  r9   r0   c                D   < V ^8  d   QhRS[ S[S[,          ,          RR/# )r'   rP  r(   ru  )r   r
   r*   )r+   r,   s   "r-   r.   rw  P  s%     $ $xS	2 $7H $r0   c                    \        4       hr2   r3   )re   rP  s   &&r-   
from_pathsBaseEnvironment.from_pathsO  r9   r0   c                4   < V ^8  d   QhRS[ RS[R,          /# )r'   r7   r(   r`   )r*   r   )r+   r,   s   "r-   r.   rw  S  s!     $ $S $X6H-I $r0   c                    \        4       h)zGiven a requirement name, return the installed distributions.

The name may not be normalized. The implementation must canonicalize
it for lookup.
r3   )r6   r7   s   &&r-   get_distribution BaseEnvironment.get_distributionS  rh   r0   c                .   < V ^8  d   QhRS[ R,          /# )r'   r(   r`   )r	   )r+   r,   s   "r-   r.   rw  [  s     $ $X.@%A $r0   c                    \        4       h)zIterate 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.
r3   r5   s   &r-   _iter_distributions#BaseEnvironment._iter_distributions[  r  r0   c                0   < V ^8  d   QhRS[ S[,          /# r&   )r	   r`   )r+   r,   s   "r-   r.   rw  d  s      1A(B r0   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   r~   )r6   distproject_name_valids   &  r-   iter_all_distributions&BaseEnvironment.iter_all_distributionsd  sj     ,,.D
 "$<##mm"
 &;''MM
 J# /s   BBTFc                ^   < V ^8  d   QhRS[ RS[S[,          RS[ RS[ RS[ RS[S[,          /# )r'   
local_onlyskipinclude_editableseditables_only	user_onlyr(   )r   r   r*   r	   r`   )r+   r,   s   "r-   r.   rw  y  sQ     !? !?!? n!?  	!?
 !? !? 
"	#!?r0   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r2   )r   r=  ds   & r-   r?  ?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>  s     +R77!!R   $
$c              3   L   "   T F  qP                   '       d   K  Vx  K  	  R # 5ir2   r   r  s   & r-   r?  r    s     2Rzz!!Rr  c              3   L   "   T F  qP                   '       g   K  Vx  K  	  R # 5ir2   r  r  s   & r-   r?  r    s     .R::!!Rr  c              3   L   "   T F  qP                   '       g   K  Vx  K  	  R # 5ir2   )r   r  s   & r-   r?  r    s     1R==!!Rr  c              3   L   <"   T F  qP                   S9  g   K  Vx  K  	  R # 5ir2   )r   )r=  r  r  s   & r-   r?  r    s     >2a!1!1!=2s   $
$)r  )r6   r  r  r  r  r  its   &&f&&& r-   iter_installed_distributions,BaseEnvironment.iter_installed_distributionsy  sR    0 ((*+R+B 2R2B.R.B1R1B>2>>r0   rC   N)rD   rE   rF   rG   __doc__rq  ry  r}  r  r  r  r   r  rI   rJ   rK   s   @r-   ru  ru  H  sl     @$ $ $ $$ $$ $ .  *"&$!? !? !?r0   ru  c                   >   a  ] tR tRt o V 3R lR ltV 3R ltRtV tR# )rs   i  c                4   < V ^8  d   QhRS[ P                  /# r&   zipfileZipFile)r+   r,   s   "r-   r.   Wheel.__annotate__  s     $ $GOO $r0   c                    \        4       hr2   r3   r5   s   &r-   
as_zipfileWheel.as_zipfile  r  r0   c                &   < V ^8  d   Qh/ S[ ;R&   # )r'   r~   r)   )r+   r,   s   "r-   r.   r    s     M r0   rC   N)rD   rE   rF   rG   r  r^   rI   rJ   rK   s   @r-   rs   rs     s     $ $  r0   rs   c                   D   a  ] tR tRt o V 3R lR ltV 3R lR ltRtV tR# )FilesystemWheeli  c                $   < V ^8  d   QhRS[ RR/# )r'   r~   r(   Nr)   )r+   r,   s   "r-   r.   FilesystemWheel.__annotate__  s     ! ! ! !r0   c                    Wn         R # r2   r~   r   s   &&r-   __init__FilesystemWheel.__init__  s     r0   c                4   < V ^8  d   QhRS[ P                  /# r&   r  )r+   r,   s   "r-   r.   r    s     ? ?GOO ?r0   c                F    \         P                  ! V P                  R R7      # T)
allowZip64)r  r  r~   r5   s   &r-   r  FilesystemWheel.as_zipfile  s    t}}>>r0   r  NrD   rE   rF   rG   r  r  rI   rJ   rK   s   @r-   r  r    s     ! !? ?r0   r  c                   D   a  ] tR tRt o V 3R lR ltV 3R lR ltRtV tR# )MemoryWheeli  c                :   < V ^8  d   QhRS[ RS[S[,          RR/# )r'   r~   streamr(   N)r*   r   rm   )r+   r,   s   "r-   r.   MemoryWheel.__annotate__  s&       bi D r0   c                    Wn         W n        R # r2   r~   r  )r6   r~   r  s   &&&r-   r  MemoryWheel.__init__  s     r0   c                4   < V ^8  d   QhRS[ P                  /# r&   r  )r+   r,   s   "r-   r.   r    s     = =GOO =r0   c                F    \         P                  ! V P                  R R7      # r  )r  r  r  r5   s   &r-   r  MemoryWheel.as_zipfile  s    t{{t<<r0   r  Nr  rK   s   @r-   r  r    s      = =r0   r  )CrA  email.messager  rr  r   loggingrT   r  r  typingr   r   r   r   r   r   r	   r
   r   r   r   r   r   "pip._vendor.packaging.requirementsr    pip._vendor.packaging.specifiersr   r   pip._vendor.packaging.utilsr   r   pip._vendor.packaging.versionr   pip._internal.exceptionsr   pip._internal.locationsr   r   pip._internal.models.direct_urlr   r   r   pip._internal.utils.compatr   pip._internal.utils.egg_linkr   pip._internal.utils.miscr   r    pip._internal.utils.urlsr!   _jsonr"   r*   PurePathr   	getLoggerrD   r   r$   rV   rX   r`   ru  rs   r  r  rC   r0   r-   <module>r     s    
      	      ; K I 1 6 < 
 3 D = 0 g&&&'			8	$$X $,<J b3x b3JR? R?j$H $?e ?=% =r0   