Ë
    äO´j*d  ã                  ó  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlmZmZmZmZ d dlmZmZmZmZ d dlmZ d dlmZmZ d dlmZmZ d dlmZ d d	lm Z  d d
l!m"Z"m#Z# d dl$m%Z%m&Z&m'Z' d dl(m)Z) d dl*m+Z+m,Z, d dl-m.Z. ddl/m0Z0 h d£Z1e2ejf                  z  Z4 ejj                  e6«      Z7 G d„ de«      Z8	 	 	 	 	 	 d!d„Z9 G d„ de«      Z: G d„ de«      Z; G d„ d«      Z< G d„ de«      Z= G d„ de=«      Z> G d„ d e=«      Z?y)"é    )Ú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_json>   ÚpythonÚwsgirefÚargparsec                  óB   — e Zd Zedd„«       Zedd„«       Zedd„«       Zy)ÚBaseEntryPointc                ó   — t        «       ‚©N©ÚNotImplementedError©Úselfs    úr/var/www/origus_pro_usr/data/www/origus.pro/core/.venv/lib/python3.12/site-packages/pip/_internal/metadata/base.pyÚnamezBaseEntryPoint.name3   ó   € ä!Ó#Ð#ó    c                ó   — t        «       ‚r$   r%   r'   s    r)   ÚvaluezBaseEntryPoint.value7   r+   r,   c                ó   — t        «       ‚r$   r%   r'   s    r)   ÚgroupzBaseEntryPoint.group;   r+   r,   N©ÚreturnÚstr)Ú__name__Ú
__module__Ú__qualname__Úpropertyr*   r.   r0   © r,   r)   r"   r"   2   s<   „ Øò$ó ð$ð ò$ó ð$ð ò$ó ñ$r,   r"   c                ó    — | r-| d   dk(  r%|r|d   dk(  r|dz  }n|dd }| dd } | r	| d   dk(  rŒ%t        t        j                  g |¢| ¢­Ž «      S )aì  Convert a legacy installed-files.txt path into modern RECORD path.

    The legacy format stores paths relative to the info directory, while the
    modern format stores paths relative to the package root, e.g. the
    site-packages directory.

    :param entry: Path parts of the installed-files.txt entry.
    :param info: Path parts of the egg-info directory relative to package root.
    :returns: The converted entry.

    For best compatibility with symlinks, this does not use ``abspath()`` or
    ``Path.resolve()``, but tries to work with path parts:

    1. While ``entry`` starts with ``..``, remove the equal amounts of parts
       from ``info``; if ``info`` is empty, start appending ``..`` instead.
    2. Join the two directly.
    r   ú..éÿÿÿÿ)r:   Nr   ©r3   ÚpathlibÚPath)ÚentryÚinfos     r)   Ú_convert_installed_files_pathrA   @   sm   € ñ* �E˜!‘H Ò$Ù�t˜B‘x 4Ò'Ø�G‰O‰Dà˜˜�9ˆDØ�a�b�	ˆñ �E˜!‘H Ó$ô Œw�|‰|Ð*˜TÐ* EÒ*Ó+Ð+r,   c                  ó,   — e Zd ZU ded<   ded<   ded<   y)ÚRequiresEntryr3   ÚrequirementÚextraÚmarkerN)r4   r5   r6   Ú__annotations__r8   r,   r)   rC   rC   ^   s   … ØÓØƒJØ„Kr,   rC   c                  ó´  — e Zd Zed.d„«       Ze	 	 	 	 	 	 	 	 d/d„«       Zed0d„«       Zd1d„Zd1d„Ze	d2d„«       Z
ej                  d2d„«       Ze	d2d„«       Ze	d2d	„«       Ze	d3d
„«       Ze	d3d„«       Ze	d3d„«       Ze	d3d„«       Ze	d4d„«       Ze	d5d„«       Ze	d1d„«       Ze	d1d„«       Ze	d6d„«       Ze	d1d„«       Ze	d3d„«       Ze	d3d„«       Ze	d3d„«       Ze	d3d„«       Ze	d3d„«       Zd7d„Zd8d„Z d9d„Z!d:d„Z"d;d„Z#ej                  d;d„«       Z$e	d<d„«       Z%e	d2d „«       Z&e	d1d!„«       Z'e	d=d"„«       Z(d>d?d#„Z)d@d$„Z*dAd%„Z+dBd&„Z,dBd'„Z-dBd(„Z.dCd)„Z/d@d*„Z0d@d+„Z1dDd,„Z2y-)EÚBaseDistributionc                ó   — t        «       ‚)z‡Load the distribution from a metadata directory.

        :param directory: Path to a metadata directory, e.g. ``.dist-info``.
        r%   )ÚclsÚ	directorys     r)   Úfrom_directoryzBaseDistribution.from_directorye   ó   € ô "Ó#Ð#r,   c                ó   — t        «       ‚)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%   )rK   Úmetadata_contentsÚfilenameÚproject_names       r)   Úfrom_metadata_file_contentsz,BaseDistribution.from_metadata_file_contentsm   s   € ô  "Ó#Ð#r,   c                ó   — t        «       ‚)a  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%   )rK   Úwheelr*   s      r)   Ú
from_wheelzBaseDistribution.from_wheel   ó   € ô "Ó#Ð#r,   c                óT   — | j                   › d| j                  › d| j                  › d�S )Nú z (ú))Úraw_nameÚraw_versionÚlocationr'   s    r)   Ú__repr__zBaseDistribution.__repr__�   s*   € Ø—-‘-�  $×"2Ñ"2Ð!3°2°d·m±m°_ÀAÐFÐFr,   c                ó8   — | j                   › d| j                  › �S )NrY   )r[   r\   r'   s    r)   Ú__str__zBaseDistribution.__str__�   s   € Ø—-‘-�  $×"2Ñ"2Ð!3Ð4Ð4r,   c                ó   — t        «       ‚)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)   r]   zBaseDistribution.location“   rW   r,   c                ó²   — | j                   }|r&|j                  «       rt        |j                  «      S yt	        | j
                  «      }|r| j                  S y)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   r[   r]   )r(   rc   Úegg_link_paths      r)   Úeditable_project_locationz*BaseDistribution.editable_project_location¡   sR   € ð —_‘_ˆ
ÙØ×+Ñ+Ô-Ü" :§>¡>Ó2Ð2ð ô 8¸¿¹ÓFˆMÙð —}‘}Ð$Ør,   c                ó   — t        «       ‚)a’  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_locationz#BaseDistribution.installed_location¶   s   € ô "Ó#Ð#r,   c                ó   — t        «       ‚)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_locationzBaseDistribution.info_locationÃ   s   € ô "Ó#Ð#r,   c                óf   — | j                   }|syt        j                  |«      j                  «       S )a  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)rk   r=   r>   Úis_file©r(   rk   s     r)   Úinstalled_by_distutilsz'BaseDistribution.installed_by_distutilsÓ   s-   € ð ×*Ñ*ˆÙØÜ�|‰|˜MÓ*×2Ñ2Ó4Ð4r,   c                ód   — | j                   }|syt        j                  |«      j                  dk(  S )z¦Whether this distribution is installed as an egg.

        This usually indicates the distribution was installed by (older versions
        of) easy_install.
        Fz.egg)r]   r=   r>   Úsuffix©r(   r]   s     r)   Úinstalled_as_eggz!BaseDistribution.installed_as_eggà   s/   € ð —=‘=ˆÙØô �|‰|˜HÓ%×,Ñ,°Ñ6Ð6r,   c                óŠ   — | j                   }|sy|j                  d«      syt        j                  |«      j	                  «       S )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©rk   Úendswithr=   r>   Úis_dirrn   s     r)   Ú"installed_with_setuptools_egg_infoz3BaseDistribution.installed_with_setuptools_egg_infoî   s>   € ð ×*Ñ*ˆÙØØ×%Ñ% kÔ2ØÜ�|‰|˜MÓ*×1Ñ1Ó3Ð3r,   c                óŠ   — | j                   }|sy|j                  d«      syt        j                  |«      j	                  «       S )aa  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-inforu   rn   s     r)   Úinstalled_with_dist_infoz)BaseDistribution.installed_with_dist_info   s>   € ð ×*Ñ*ˆÙØØ×%Ñ% lÔ3ØÜ�|‰|˜MÓ*×1Ñ1Ó3Ð3r,   c                ó   — t        «       ‚r$   r%   r'   s    r)   Úcanonical_namezBaseDistribution.canonical_name  r+   r,   c                ó   — t        «       ‚r$   r%   r'   s    r)   ÚversionzBaseDistribution.version  r+   r,   c                ó   — t        «       ‚r$   r%   r'   s    r)   r\   zBaseDistribution.raw_version  r+   r,   c                ó:   — | j                   j                  dd«      S )z”Convert a project name to its setuptools-compatible filename.

        This is a copy of ``pkg_resources.to_filename()`` for compatibility.
        ú-Ú_)r[   Úreplacer'   s    r)   Úsetuptools_filenamez$BaseDistribution.setuptools_filename  s   € ð �}‰}×$Ñ$ S¨#Ó.Ð.r,   c                ó  — 	 | j                  t        «      }	 t        j                  |«      S # t        $ r Y yw xY w# t
        t        j                  t        f$ r0}t        j                  dt        | j                  |«       Y d}~yd}~ww xY w)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)   rc   zBaseDistribution.direct_url$  s‡   € ð	Ø—n‘nÔ%=Ó>ˆGð	Ü×&Ñ& wÓ/Ð/øô !ò 	Ùð	ûô
 Ü× Ñ Ü$ð
ò 	ô
 �N‰NØ-Ü(Ø×#Ñ#Øô	ô ûð	ús!   ‚- ˜< ­	9¸9¼B
Á&BÂB
c                ó²   — 	 | j                  d«      }|j	                  «       D ]  }|j                  «       }|sŒ|c S  y# t        t        t        f$ r Y yw xY w)NÚ	INSTALLERÚ )r†   ÚOSErrorÚ
ValueErrorr   Ú
splitlinesÚstrip)r(   Úinstaller_textÚlineÚcleaned_lines       r)   Ú	installerzBaseDistribution.installer>  sd   € ð	Ø!Ÿ^™^¨KÓ8ˆNð #×-Ñ-Ó/ò 	$ˆDØŸ:™:›<ˆLÚØ#Ò#ð	$ð øô œÔ%6Ð7ò 	Ùð	ús   ‚? ¿AÁAc                ó$   — | j                  d«      S )NÚ	REQUESTED)rm   r'   s    r)   Ú	requestedzBaseDistribution.requestedJ  s   € à�|‰|˜KÓ(Ð(r,   c                ó,   — t        | j                  «      S r$   )Úboolrg   r'   s    r)   ÚeditablezBaseDistribution.editableN  s   € ä�D×2Ñ2Ó3Ð3r,   c                óF   — | j                   €yt        | j                   «      S )z|If distribution is installed in the current virtual environment.

        Always True if we're not in a virtualenv.
        F)ri   r   r'   s    r)   ÚlocalzBaseDistribution.localR  s$   € ð ×"Ñ"Ð*ØÜ˜×/Ñ/Ó0Ð0r,   c                óx   — | j                   �t        €y| j                   j                  t        t        «      «      S ©NF)ri   r   Ú
startswithr   r'   s    r)   Úin_usersitezBaseDistribution.in_usersite\  s2   € à×"Ñ"Ð*¬iÐ.?ØØ×&Ñ&×1Ñ1´.ÄÓ2KÓLÐLr,   c                óx   — | j                   �t        €y| j                   j                  t        t        «      «      S r¤   )ri   r   r¥   r   r'   s    r)   Úin_site_packagesz!BaseDistribution.in_site_packagesb  s2   € à×"Ñ"Ð*¬mÐ.CØØ×&Ñ&×1Ñ1´.ÄÓ2OÓPÐPr,   c                ó   — t        «       ‚)z7Check whether an entry in the info directory is a file.r%   ©r(   Úpaths     r)   rm   zBaseDistribution.is_fileh  r+   r,   c                ó   — t        «       ‚)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_namesz,BaseDistribution.iter_distutils_script_namesl  rN   r,   c                ó   — t        «       ‚)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†   zBaseDistribution.read_textt  ó   € ô "Ó#Ð#r,   c                ó   — t        «       ‚r$   r%   r'   s    r)   Úiter_entry_pointsz"BaseDistribution.iter_entry_points}  ó   € Ü!Ó#Ð#r,   c                ó   — t        «       ‚r$   r%   r'   s    r)   Ú_metadata_implzBaseDistribution._metadata_impl€  r²   r,   c                óH   — | j                  «       }| j                  |«       |S )a  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·   zBaseDistribution.metadataƒ  s%   € ð ×&Ñ&Ó(ˆØ×#Ñ# HÔ-Øˆr,   c                ó,   — t        | j                  «      S )a  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_dictzBaseDistribution.metadata_dict�  s   € ô ˜4Ÿ=™=Ó)Ð)r,   c                ó8   — | j                   j                  d«      S )zDValue of "Metadata-Version:" in distribution metadata, if available.zMetadata-Version)r·   Úgetr'   s    r)   Úmetadata_versionz!BaseDistribution.metadata_version›  s   € ð �}‰}× Ñ Ð!3Ó4Ð4r,   c                óN   — | j                   j                  d| j                  «      S )z*Value of "Name:" in distribution metadata.ÚName)r·   r»   r|   r'   s    r)   r[   zBaseDistribution.raw_name   s!   € ð
 �}‰}× Ñ  ¨×)<Ñ)<Ó=Ð=r,   c                ó  — | j                   j                  d«      }|€
t        «       S 	 t        t        |«      «      }|S # t        $ r7}d}t
        j                  || j                  |«       t        «       cY d}~S d}~ww xY w)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   r3   r   rŒ   r�   r[   )r(   r.   Úspecr�   Úmessages        r)   Úrequires_pythonz BaseDistribution.requires_python§  ss   € ð —‘×!Ñ!Ð"3Ó4ˆØˆ=Ü“>Ð!ð	"ä¤ E£
Ó+ˆDð
 ˆøô	  ò 	"ØEˆGÜ�N‰N˜7 D§M¡M°1Ô5Ü“>Õ!ûð	"ús   ©? ¿	A?Á,A:Á4A?Á:A?c                ó   — t        «       ‚)z®Dependencies of this distribution.

        For modern .dist-info distributions, this is the collection of
        "Requires-Dist:" entries in distribution metadata.
        r%   )r(   Úextrass     r)   Úiter_dependenciesz"BaseDistribution.iter_dependenciesº  rN   r,   c                ó:   — | j                   j                  dg «      S )zRaw Requires-Dist metadata.úRequires-Dist)r·   Úget_allr'   s    r)   Úiter_raw_dependenciesz&BaseDistribution.iter_raw_dependenciesÂ  s   € à�}‰}×$Ñ$ _°bÓ9Ð9r,   c                ó   — t        «       ‚)aj  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_extrasz%BaseDistribution.iter_provided_extrasÆ  s   € ô "Ó#Ð#r,   c                ó˜   — 	 | j                  d«      }d„ t        j                  |j	                  «       «      D «       S # t        $ r Y y w xY w)NÚRECORDc              3  ó^   K  — | ]%  }t        t        j                  |d    «      «      –— Œ' y­w)r   Nr<   )Ú.0Úrows     r)   ú	<genexpr>zFBaseDistribution._iter_declared_entries_from_record.<locals>.<genexpr>Ø  s"   è ø€ ÒS¨c””G—L‘L  Q¡Ó(×)ÑSùs   ‚+-)r†   r‡   ÚcsvÚreaderr•   )r(   Útexts     r)   Ú"_iter_declared_entries_from_recordz3BaseDistribution._iter_declared_entries_from_recordÒ  sG   € ð	Ø—>‘> (Ó+ˆDñ T´S·Z±ZÀÇÁÓ@QÓ5RÔSÐSøô !ò 	Ùð	ús   ‚= ½	A	ÁA	c                óR  ‡— 	 | j                  d«      }d„ |j                  d¬«      D «       }| j                  }| j                  }|�|€|S 	 t        j                  |«      j                  |«      Š‰j                  s|S ˆfd„|D «       S # t        $ r Y y w xY w# t        $ r |cY S w xY w)Nzinstalled-files.txtc              3  ó&   K  — | ]	  }|sŒ|–— Œ y ­wr$   r8   )rÏ   Úps     r)   rÑ   zFBaseDistribution._iter_declared_entries_from_legacy.<locals>.<genexpr>ß  s   è ø€ ÒA�qºq”ÑAùs   ‚ŠF)Úkeependsc              3  ó„   •K  — | ]7  }t        t        j                  |«      j                  ‰j                  «      –— Œ9 y ­wr$   )rA   r=   r>   Úparts)rÏ   rØ   Úinfo_rels     €r)   rÑ   zFBaseDistribution._iter_declared_entries_from_legacy.<locals>.<genexpr>ê  s2   øè ø€ ò 
àô *¬'¯,©,°q«/×*?Ñ*?ÀÇÁ×Pñ
ùs   ƒ=A )
r†   r‡   r•   r]   rk   r=   r>   Úrelative_tor”   rÛ   )r(   rÔ   ÚpathsÚrootr@   rÜ   s        @r)   Ú"_iter_declared_entries_from_legacyz3BaseDistribution._iter_declared_entries_from_legacyÚ  s¸   ø€ ð	Ø—>‘>Ð"7Ó8ˆDñ B˜DŸO™O°U˜OÓ;ÔAˆØ�}‰}ˆØ×!Ñ!ˆØˆ<˜4˜<ØˆLð	Ü—|‘| DÓ)×5Ñ5°dÓ;ˆHð �~Š~ØˆLó
àô
ð 	
øô !ò 	Ùð	ûô ò 	ØŠLð	ús#   ƒB	 Á$B Â		BÂBÂB&Â%B&c                óF   — | j                  «       xs | j                  «       S )aò  Iterate through file entries declared in this distribution.

        For modern .dist-info distributions, this is the files listed in the
        ``RECORD`` metadata file. For legacy setuptools distributions, this
        comes from ``installed-files.txt``, with entries normalized to be
        compatible with the format used by ``RECORD``.

        :return: An iterator for listed entries, or None if the distribution
            contains neither ``RECORD`` nor ``installed-files.txt``.
        )rÕ   rà   r'   s    r)   Úiter_declared_entriesz&BaseDistribution.iter_declared_entriesï  s&   € ð ×3Ñ3Ó5ò 9Ø×6Ñ6Ó8ð	
r,   c              #  óv  K  — 	 | j                  d«      }dx}}|j                  «       D ]}  }|j                  «       }|r|j	                  d«      rŒ'|j	                  d«      r6|j                  d«      r%|j                  d«      j                  d«      \  }}}Œnt        |||¬	«      –— Œ y# t        $ r Y yw xY w­w)
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[]ú:)rD   rE   rF   )r†   r‡   r•   r–   r¥   rv   Ú	partitionrC   )r(   rŽ   rE   rF   r˜   r‚   s         r)   Ú_iter_requires_txt_entriesz+BaseDistribution._iter_requires_txt_entriesÿ  s·   è ø€ ð	Ø—n‘n ^Ó4ˆGð Ðˆ�Ø×&Ñ&Ó(ò 	NˆDØ—:‘:“<ˆDÙ˜4Ÿ?™?¨3Ô/ØØ�‰˜sÔ#¨¯©°cÔ(:Ø#'§:¡:¨dÓ#3×#=Ñ#=¸cÓ#BÑ ��q˜&ØÜ¨D¸ÀfÔMÓMñ	Nøô !ò 	Ùð	üs(   ‚B9„B* •BB9Â*	B6Â3B9Â5B6Â6B9c              #  óš   K  — dh}| j                  «       D ]1  }t        |j                  «      }||v rŒ|j                  |«       |–— Œ3 y­w)z'Get extras from the egg-info directory.r’   N)ré   r   rE   Úadd)r(   Úknown_extrasr?   rE   s       r)   Ú_iter_egg_info_extrasz&BaseDistribution._iter_egg_info_extras  sQ   è ø€ à�tˆØ×4Ñ4Ó6ò 	ˆEÜ% e§k¡kÓ2ˆEØ˜Ñ$ØØ×Ñ˜UÔ#Ø‹Kñ	ùs   ‚A	Ac              #  ó4  K  — | j                  «       D ]�  }t        |j                  «      }|r |j                  rd|j                  › d|› d�}n$|rd|› d�}n|j                  r|j                  }nd}|r|j                  › d|› �–— Œt|j                  –— Œƒ y­w)a‰  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   rE   rF   rD   )r(   r?   rE   rF   s       r)   Ú_iter_egg_info_dependenciesz,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à×'Ñ'Ó'ñ	(ùs   ‚BBc                ó²   — |j                  d«      s| j                  «       D ]  }||d<   Œ	 |j                  d«      s| j                  «       D ]  }||d<   Œ	 yy)z6Add egg-info requires.txt information to the metadata.rÇ   zProvides-ExtraN)rÈ   rñ   rí   )r(   r·   ÚdeprE   s       r)   r¶   z'BaseDistribution._add_egg_info_requires>  si   € à×Ñ Ô0Ø×7Ñ7Ó9ò 0�Ø,/�˜Ò)ð0à×ÑÐ 0Ô1Ø×3Ñ3Ó5ò 3�Ø-2�Ð)Ò*ñ3ð 2r,   N)rL   r3   r2   rI   )rP   ÚbytesrQ   r3   rR   r3   r2   rI   )rU   ÚWheelr*   r3   r2   rI   r1   )r2   z
str | None)r2   rŸ   )r2   r   )r2   r   )r2   zDirectUrl | None)r«   ÚInfoPathr2   rŸ   )r2   zIterator[str])r«   rö   r2   r3   )r2   zIterable[BaseEntryPoint])r2   úemail.message.Message)r2   zdict[str, Any])r2   r   )r8   )rÄ   zCollection[str]r2   zIterable[Requirement])r2   zIterable[str])r2   zIterable[NormalizedName])r2   zIterator[str] | None)r2   zIterator[RequiresEntry])r·   r÷   r2   ÚNone)3r4   r5   r6   ÚclassmethodrM   rS   rV   r^   r`   r7   r]   Ú	functoolsÚcached_propertyrg   ri   rk   ro   rs   rx   rz   r|   r~   r\   r„   rc   rš   r�   r    r¢   r¦   r¨   rm   r­   r†   r±   r´   r·   r¹   r¼   r[   rÂ   rÅ   rÉ   rË   rÕ   rà   râ   ré   rí   rñ   r¶   r8   r,   r)   rI   rI   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3r,   rI   c                  óv   — e Zd ZdZedd„«       Zedd„«       Zdd„Zdd„Zdd„Z	de
dddf	 	 	 	 	 	 	 	 	 	 	 dd	„Zy
)ÚBaseEnvironmentz6An environment containing distributions to introspect.c                ó   — t        «       ‚r$   r%   )rK   s    r)   ÚdefaultzBaseEnvironment.defaultK  r+   r,   c                ó   — t        «       ‚r$   r%   )rK   rÞ   s     r)   Ú
from_pathszBaseEnvironment.from_pathsO  r+   r,   c                ó   — t        «       ‚)z«Given a requirement name, return the installed distributions.

        The name may not be normalized. The implementation must canonicalize
        it for lookup.
        r%   )r(   r*   s     r)   Úget_distributionz BaseEnvironment.get_distributionS  rN   r,   c                ó   — t        «       ‚)a  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_distributionsz#BaseEnvironment._iter_distributions[  r¯   r,   c              #  óú   K  — | j                  «       D ]d  }t        j                  d|j                  t        j                  ¬«      }|s,t
        j                  d|j                  |j                  «       Œa|–— Œf y­w)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]   )r(   ÚdistÚproject_name_valids      r)   Úiter_all_distributionsz&BaseEnvironment.iter_all_distributionsd  sp   è ø€ à×,Ñ,Ó.ò 	ˆDô
 "$§¡Ø<Ø×#Ñ#Ü—m‘mô"Ðñ
 &Ü—‘Ø;Ø×'Ñ'Ø—M‘Môð
 Ø‹Jñ#	ùs   ‚A9A;TFc                ó’   ‡— | j                  «       }|r	d„ |D «       }|s	d„ |D «       }|r	d„ |D «       }|r	d„ |D «       }ˆfd„|D «       S )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  ó:   K  — | ]  }|j                   sŒ|–— Œ y ­wr$   )r¢   ©rÏ   Úds     r)   rÑ   z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>“  s   è ø€ Ò+˜ 1§7£7”!Ñ+ùó   ‚”c              3  ó:   K  — | ]  }|j                   rŒ|–— Œ y ­wr$   ©r    r  s     r)   rÑ   z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>•  s   è ø€ Ò2˜ q§z£z”!Ñ2ùr  c              3  ó:   K  — | ]  }|j                   sŒ|–— Œ y ­wr$   r  r  s     r)   rÑ   z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>—  s   è ø€ Ò.˜ 1§:£:”!Ñ.ùr  c              3  ó:   K  — | ]  }|j                   sŒ|–— Œ y ­wr$   )r¦   r  s     r)   rÑ   z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>™  s   è ø€ Ò1˜ 1§=£=”!Ñ1ùr  c              3  ó@   •K  — | ]  }|j                   ‰vsŒ|–— Œ y ­wr$   )r|   )rÏ   r  Úskips     €r)   rÑ   z?BaseEnvironment.iter_installed_distributions.<locals>.<genexpr>š  s   øè ø€ Ò>�a ×!1Ñ!1¸Ò!=”Ñ>ùs   ƒ—)r  )r(   Ú
local_onlyr  Úinclude_editablesÚeditables_onlyÚ	user_onlyÚits     `    r)   Úiter_installed_distributionsz,BaseEnvironment.iter_installed_distributionsy  sR   ø€ ð0 ×(Ñ(Ó*ˆÙÙ+˜RÔ+ˆBÙ Ù2˜RÔ2ˆBÙÙ.˜RÔ.ˆBÙÙ1˜RÔ1ˆBÛ>˜2Ô>Ð>r,   N)r2   rý   )rÞ   zlist[str] | Noner2   rý   )r*   r3   r2   zBaseDistribution | None)r2   úIterator[BaseDistribution])r  rŸ   r  zContainer[str]r  rŸ   r  rŸ   r  rŸ   r2   r  )r4   r5   r6   Ú__doc__rù   rÿ   r  r  r  r  Ústdlib_pkgsr  r8   r,   r)   rý   rý   H  sŠ   „ Ù@àò$ó ð$ð ò$ó ð$ó$ó$óð.  Ø*Ø"&Ø$Øð!?àð!?ð ð!?ð  ð	!?ð
 ð!?ð ð!?ð 
$ô!?r,   rý   c                  ó    — e Zd ZU ded<   dd„Zy)rõ   r3   r]   c                ó   — t        «       ‚r$   r%   r'   s    r)   Ú
as_zipfilezWheel.as_zipfile   r²   r,   N©r2   zzipfile.ZipFile)r4   r5   r6   rG   r$  r8   r,   r)   rõ   rõ   �  s   … ØƒMô$r,   rõ   c                  ó   — e Zd Zdd„Zdd„Zy)ÚFilesystemWheelc                ó   — || _         y r$   )r]   rr   s     r)   Ú__init__zFilesystemWheel.__init__¥  s	   € Ø ˆ�r,   c                óD   — t        j                  | j                  d¬«      S ©NT)Ú
allowZip64)ÚzipfileÚZipFiler]   r'   s    r)   r$  zFilesystemWheel.as_zipfile¨  s   € Ü�‰˜tŸ}™}¸Ô>Ð>r,   N)r]   r3   r2   rø   r%  ©r4   r5   r6   r)  r$  r8   r,   r)   r'  r'  ¤  s   „ ó!ô?r,   r'  c                  ó   — e Zd Zdd„Zdd„Zy)ÚMemoryWheelc                ó    — || _         || _        y r$   )r]   Ústream)r(   r]   r3  s      r)   r)  zMemoryWheel.__init__­  s   € Ø ˆŒØˆ�r,   c                óD   — t        j                  | j                  d¬«      S r+  )r-  r.  r3  r'   s    r)   r$  zMemoryWheel.as_zipfile±  s   € Ü�‰˜tŸ{™{°tÔ<Ð<r,   N)r]   r3   r3  z	IO[bytes]r2   rø   r%  r/  r8   r,   r)   r1  r1  ¬  s   „ óô=r,   r1  )r?   útuple[str, ...]r@   r5  r2   r3   )@Ú
__future__r   rÒ   Úemail.messageÚemailrú   rŠ   Úloggingr=   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!  r3   ÚPurePathrö   Ú	getLoggerr4   rŒ   r"   rA   rC   rI   rý   rõ   r'  r1  r8   r,   r)   ú<module>rI     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,   