2biffSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK J r J r J r J r JrJrJrJrJrJrJrJrJr SSKJr SSKJrJr SSKJrJr SSKJ r J!r! SSK"J#r# SSK$J%r%J&r&J'r' SS K(J)r)J*r*J+r+ SS K,J-r- SS K.J/r/ SS K0J1r1J2r2 SS K3J4r4 SSK5J6r6 \ (aSSK J7r7 O\8r7\\ \!4r9\\:\Rv4r<\Rz"\>5r?"SS\75r@S\\:S4S\\:S4S\:4SjrA"SS\5rB"SS\75rC"SS5rD"SS\75rE"S S!\E5rF"S"S#\E5rGg)$N) IO TYPE_CHECKINGAny Collection ContainerDictIterableIteratorList NamedTupleOptionalTupleUnion) Requirement)InvalidSpecifier SpecifierSet)NormalizedNamecanonicalize_name) LegacyVersionVersion)NoneMetadataError) get_scheme site_packages user_site)DIRECT_URL_METADATA_NAME DirectUrlDirectUrlValidationError) stdlib_pkgs)egg_link_path_from_sys_path)is_localnormalize_path) url_to_path) msg_to_json)Protocolc\\rSrSr\S\4Sj5r\S\4Sj5r\S\4Sj5rSr g)BaseEntryPoint8returnc[5eNNotImplementedErrorselfs ڍ/builddir/build/BUILDROOT/alt-python313-pip-23.3.1-3.el8.x86_64/opt/alt/python313/lib/python3.13/site-packages/pip/_internal/metadata/base.pynameBaseEntryPoint.name9 !##c[5er+r,r.s r0valueBaseEntryPoint.value=r3r4c[5er+r,r.s r0groupBaseEntryPoint.groupAr3r4N) __name__ __module__ __qualname____firstlineno__propertystrr1r6r9__static_attributes__r;r4r0r'r'8sQ $c$$$s$$$s$$r4r'entry.infor)cU(a;USS:Xa2U(a USS:XaUS- nOUSSnUSSnU(a USS:XaM2[[R"/UQUQ765$)aConvert a legacy installed-files.txt path into modern RECORD path. The legacy format stores paths relative to the info directory, while the modern format stores paths relative to the package root, e.g. the site-packages directory. :param entry: Path parts of the installed-files.txt entry. :param info: Path parts of the egg-info directory relative to package root. :returns: The converted entry. For best compatibility with symlinks, this does not use ``abspath()`` or ``Path.resolve()``, but tries to work with path parts: 1. While ``entry`` starts with ``..``, remove the equal amounts of parts from ``info``; if ``info`` is empty, start appending ``..`` instead. 2. Join the two directly. r..)rFNr#rApathlibPath)rCrDs r0_convert_installed_files_pathrKFsm* E!H$tBx4' GOD9Dab  E!H$ w||*T*E* ++r4c4\rSrSr%\\S'\\S'\\S'Srg) RequiresEntryd requirementextramarkerr;N)r<r=r>r?rA__annotations__rBr;r4r0rMrMds J Kr4rMc \rSrSr\S\SS4Sj5r\S\S\S\SS4Sj5r\S S S \SS4S j5r S\4S jr S\4Sjr \ S\ \4Sj5r\ S\ \4Sj5r\ S\ \4Sj5r\ S\ \4Sj5r\ S\4Sj5r\ S\4Sj5r\ S\4Sj5r\ S\4Sj5r\ S\4Sj5r\ S\4Sj5r\ S\4Sj5r\ S\ \4Sj5r\ S\4Sj5r\ S\4Sj5r\ S\4Sj5r \ S\4Sj5r!\ S\4Sj5r"\ S\4S j5r#S!\$S\4S"jr%S\&\4S#jr'S!\$S\4S$jr(S\)\*4S%jr+S\,RZR\4S&jr/\0Rb"S'S(9S\,RZR\4S)j5r2\ S\,RZR\4S*j5r3\ S\4\\544S+j5r6\ S\ \4S,j5r7\ S\4S-j5r8\ S\94S.j5r:S?S0\;\S\)\<4S1jjr=S\)\4S2jr>S3\S\4S4jr?S\ \&\4S5jr@S\ \&\4S6jrAS\ \&\4S7jrBS\&\C4S8jrDS\)\4S9jrES\)\4S:jrFS;\,RZR\SS<4S=jrG\ S\4S>j5rHS/rIg<)@BaseDistributionj directoryr)c[5e)zwLoad the distribution from a metadata directory. :param directory: Path to a metadata directory, e.g. ``.dist-info``. r,)clsrVs r0from_directoryBaseDistribution.from_directoryk "##r4metadata_contentsfilename project_namec[5e)aLoad 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,)rXr\r]r^s r0from_metadata_file_contents,BaseDistribution.from_metadata_file_contentsss "##r4wheelWheelr1c[5e)aGLoad 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,)rXrbr1s r0 from_wheelBaseDistribution.from_wheel "##r4cTURSURSURS3$)N z ())raw_nameversionlocationr.s r0__repr__BaseDistribution.__repr__s'--$,,r$--BBr4c8URSUR3$)Nri)rkrlr.s r0__str__BaseDistribution.__str__s--$,,00r4c[5e)aWhere 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 r0rmBaseDistribution.locationrgr4cURnU(a,UR5(a[UR5$g[ UR 5nU(a UR $g)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_urlis_local_editabler"urlrrkrm)r/rv egg_link_paths r0editable_project_location*BaseDistribution.editable_project_locationsZ__ ++--":>>22. 8 FM}}$r4c[5e)abThe 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 r0installed_location#BaseDistribution.installed_location "##r4c[5e)aLocation 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 r0 info_locationBaseDistribution.info_locations "##r4crURnU(dg[R"U5R5$)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)rrIrJis_filer/rs r0installed_by_distutils'BaseDistribution.installed_by_distutilss-** ||M*2244r4cLURnU(dgURS5$)zWhether this distribution is installed as an egg. This usually indicates the distribution was installed by (older versions of) easy_install. Fz.egg)rmendswithr/rms r0installed_as_egg!BaseDistribution.installed_as_eggs$==  ((r4cURnU(dgURS5(dg[R"U5R 5$)aWhether 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-inforrrIrJis_dirrs r0"installed_with_setuptools_egg_info3BaseDistribution.installed_with_setuptools_egg_infosA** %%k22||M*1133r4cURnU(dgURS5(dg[R"U5R 5$)a9Whether 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-inforrs r0installed_with_dist_info)BaseDistribution.installed_with_dist_infosA** %%l33||M*1133r4c[5er+r,r.s r0canonical_nameBaseDistribution.canonical_namer3r4c[5er+r,r.s r0rlBaseDistribution.versionr3r4c:URRSS5$)zConvert a project name to its setuptools-compatible filename. This is a copy of ``pkg_resources.to_filename()`` for compatibility. -_)rkreplacer.s r0setuptools_filename$BaseDistribution.setuptools_filenames }}$$S#..r4c UR[5n[R"U5$![a gf=f![ [ R[4a0n[RS[URU5 SnAgSnAff=f)zObtain a DirectUrl from this distribution. Returns None if the distribution has no `direct_url.json` metadata, or if `direct_url.json` is invalid. NzError parsing %s for %s: %s) read_textrFileNotFoundErrorr from_jsonUnicodeDecodeErrorjsonJSONDecodeErrorrloggerwarningr)r/contentes r0rvBaseDistribution.direct_url%s nn%=>G &&w/ /!     $  NN-(##    s!.> ;;B &BB cURS5nUR 5HnUR 5nU(dMUs $ g![[[4a gf=f)N INSTALLER)rOSError ValueErrorr splitlinesstrip)r/installer_textline cleaned_lines r0 installerBaseDistribution.installer?sa !^^K8N#--/D:: ! "E +D    "EG NN7MM1 5> ! "sA B +A;5B;Br;extrasc[5e)zDependencies of this distribution. For modern .dist-info distributions, this is the collection of "Requires-Dist:" entries in distribution metadata. r,)r/rs r0iter_dependencies"BaseDistribution.iter_dependenciesr[r4c[5e)aExtras 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 not particularly useful other than display purposes due to backward compatibility issues and the extra names being poorly normalized prior to PEP 685. If you want to perform logic operations on extras, use :func:`is_extra_provided` instead. r,r.s r0iter_provided_extras%BaseDistribution.iter_provided_extrasrr4rPc[5e)zCheck whether an extra is provided by this distribution. This is needed mostly for compatibility issues with pkg_resources not following the extra normalization rules defined in PEP 685. r,)r/rPs r0is_extra_provided"BaseDistribution.is_extra_providedr[r4cURS5nS[R"UR 555$![a gf=f)NRECORDc3f# UH'n[[R"US55v M) g7f)rNrH).0rows r0 FBaseDistribution._iter_declared_entries_from_record..s'S5RcGLLQ())5Rs/1)rrcsvreaderr)r/texts r0"_iter_declared_entries_from_record3BaseDistribution._iter_declared_entries_from_recordsG >>(+DTSZZ@Q5RSS!  s> A  A cb^URS5nSURSS95nURnURnUbUcU$[ R "U5RU5mTR(dU$U4SjU5$![a gf=f![a Us$f=f)Nzinstalled-files.txtc36# UHo(dM Uv M g7fr+r;)rps r0rFBaseDistribution._iter_declared_entries_from_legacy..sA;qq;s  F)keependsc3># UH9n[[R"U5RTR5v M; g7fr+)rKrIrJparts)rr info_rels r0rr s4  *',,q/*?*? P PsAA) rrrrmrrIrJ relative_torr)r/rpathsrootrDrs @r0"_iter_declared_entries_from_legacy3BaseDistribution._iter_declared_entries_from_legacys >>"78DBDOOUO;A}}!! <4<L ||D)55d;H~~L   !   L s#B %B BB B.-B.cPUR5=(d UR5$)aIterate 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``. )rrr.s r0iter_declared_entries&BaseDistribution.iter_declared_entriess&  3 3 5 9668 r4c## URS5nS=p#UR5HnUR5nU(aUR S5(aM2UR S5(a;UR S5(a%URS5R S5up%nM[XBUS 9v M g![a gf=f7f) aParse 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[]:)rOrPrQ)rrrrrr partitionrM)r/rrPrQrrs r0_iter_requires_txt_entries+BaseDistribution._iter_requires_txt_entries s nn^4G&&(D::r? classmethodrArYbytesr`rernrqr@r rmrzr}rrrrrrrrDistributionVersionrlrrrvrrrrrrInfoPathrr rrr r'remailrMessager functools lru_cacherrrrrrrkrrrrrrrrrrrMrr$r)rr4rBr;r4r0rTrTjs$s$/A$$$ $$ $  $$" $w $c $6H $ $C#C11 $(3- $ $8C=* $HSM $ $ $x} $ $ 5 5 5 )$ ) )4D44" 4$ 4 4$$$$,$$/S//HY/2 3  )4))4$441t11MTMM Q$QQ $H$$$Xc]$$h$3$$8N#;$$ 5 5$#%--"7"7$'%--//''*tCH~**5(3-55>#>> $$ 3$+AV$ $hsm $$s$t$THXc]4KT HXc]4K * x '> NH],CN2x}(Xc](83u}}/D/D33888r4rTc\rSrSrSr\SSj5r\S\\\ SS4Sj5r S\ S\S4S jr S\ S4S jr S\ \4S jrS \S S S 4S\S\\ S\S\S\S\ \4 SjjrSrg)BaseEnvironmenti^z6An environment containing distributions to introspect.r)c[5er+r,)rXs r0defaultBaseEnvironment.defaultar3r4rc[5er+r,)rXrs r0 from_pathsBaseEnvironment.from_pathser3r4r1rTc[5e)zGiven a requirement name, return the installed distributions. The name may not be normalized. The implementation must canonicalize it for lookup. r,)r/r1s r0get_distribution BaseEnvironment.get_distributionir[r4c[5e)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. r,r.s r0_iter_distributions#BaseEnvironment._iter_distributionsqrr4c## UR5Hin[R"SUR[RS9nU(d-[ R SURUR5 MeUv Mk g7f)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)rJrematchr IGNORECASErrrm)r/distproject_name_valids r0iter_all_distributions&BaseEnvironment.iter_all_distributionszsj,,.D "$<##mm"  &;''MM J#/sA?BTF local_onlyskipinclude_editableseditables_only user_onlyc^UR5nU(a SU5nU(d SU5nU(a SU5nU(a SU5nU4SjU5$)aReturn 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. c3J# UHoR(dMUv M g7fr+)rrds r0r?BaseEnvironment.iter_installed_distributions..s+R77!!R# #c3J# UHoR(aMUv M g7fr+rr\s r0rr^s2Rzz!!Rr_c3J# UHoR(dMUv M g7fr+rar\s r0rr^s.R::!!Rr_c3J# UHoR(dMUv M g7fr+)rr\s r0rr^s1R==!!Rr_c3J># UHoRT;dMUv M g7fr+)r)rr]rVs r0rr^s>2a!1!1!=2s# #)rS)r/rUrVrWrXrYits ` r0iter_installed_distributions,BaseEnvironment.iter_installed_distributionssR0 ( ( * +R+B 2R2B .R.B 1R1B>2>>r4r;N)r)r?)r<r=r>r?__doc__r6rAr r rArDrGr rJrTrSrrrrfrBr;r4r0r?r?^s@$$$xS 2$7H$$$S$X6H-I$$X.@%A$1A(B. *"&$ !?!?n!? !?  !?  !? " #!?!?r4r?cB\rSrSr%\\S'S\R4SjrSr g)rcirmr)c[5er+r,r.s r0 as_zipfileWheel.as_zipfilerr4r;N) r<r=r>r?rArRzipfileZipFilerkrBr;r4r0rcrcsM$GOO$r4rccH\rSrSrS\SS4SjrS\R4SjrSr g)FilesystemWheelirmr)NcXlgr+rmrs r0__init__FilesystemWheel.__init__s r4c@[R"URSS9$NT) allowZip64)rmrnrmr.s r0rkFilesystemWheel.as_zipfilest}}>>r4rr) r<r=r>r?rArsrmrnrkrBr;r4r0rprps%!!!?GOO?r4rpcR\rSrSrS\S\\SS4SjrS\R4Sjr Sr g) MemoryWheelirmstreamr)NcXlX lgr+rmr{)r/rmr{s r0rsMemoryWheel.__init__s   r4c@[R"URSS9$rv)rmrnr{r.s r0rkMemoryWheel.as_zipfilest{{t<r?rArr7rsrmrnrkrBr;r4r0rzrzs0biD=GOO=r4rz)Hr email.messager:r<rloggingrIrNrmtypingrrrrrrr r r r r rr"pip._vendor.packaging.requirementsr pip._vendor.packaging.specifiersrrpip._vendor.packaging.utilsrrpip._vendor.packaging.versionrrpip._internal.exceptionsrpip._internal.locationsrrrpip._internal.models.direct_urlrrrpip._internal.utils.compatrpip._internal.utils.egg_linkrpip._internal.utils.miscr r!pip._internal.utils.urlsr"_jsonr$r%objectr8rAPurePathr9 getLoggerr<rr'rKrMrTr?rcrprzr;r4r0rs*    ;KI@6HH 3D=0HM723 g&&& '   8 $ $X $, c?, S/, ,<J q8xq8hR?R?j$H$?e?=%=r4