
    )h                        d dl mZ d dlmZmZmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZ d dlmZ d dlmZ eed	   ee   f   Zd
e
dee
   defdZ ed       G d d             Z G d d      Zdedd	defdZ G d d	      Zy)    )	dataclass)	FrozenSetIterableOptionalTuple)SpecifierSet)NormalizedName)Version)Linklinks_equivalent)InstallRequirement)Hashes	Candidateprojectextrasreturnc                 N    |s| S dj                  t        |            }|  d| dS )N,[])joinsorted)r   r   extras_exprs      [/var/www/html/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/base.pyformat_namer      s/    ((6&>*KYa}A&&    T)frozenc                       e Zd ZU eed<   eed<   ee   ed<   edd       Z	ede
dd fd       ZdefdZd	e
dd fd
ZdddefdZy)
Constraint	specifierhasheslinksr   c                 L    t        t               t               t                     S N)r   r   r   	frozenset)clss    r   emptyzConstraint.empty   s    ,.&(IK@@r   ireqc                     |j                   rt        |j                   g      n	t               }t        |j                  |j	                  d      |      S NF)trust_internet)linkr%   r   r    r!   )r&   r(   r"   s      r   	from_ireqzConstraint.from_ireq    s:    *.))	499+&$..$++U+*KUSSr   c                     t        | j                        xs, t        | j                        xs t        | j                        S r$   )boolr    r!   r"   selfs    r   __bool__zConstraint.__bool__%   s-    DNN#LtDKK'8LD<LLr   otherc                     t        |t              st        S | j                  |j                  z  }| j                  |j	                  d      z  }| j
                  }|j                  r|j                  |j                  g      }t        |||      S r*   )	
isinstancer   NotImplementedr    r!   r"   r,   unionr   )r1   r3   r    r!   r"   s        r   __and__zConstraint.__and__(   sq    %!34!!NNU__4	u||5|AA

::KK-E)VU33r   	candidater   c                     | j                   rt        fd| j                   D              sy| j                  j                  j                  d      S )Nc              3   6   K   | ]  }t        |        y wr$   )_match_link).0r,   r9   s     r   	<genexpr>z-Constraint.is_satisfied_by.<locals>.<genexpr>4   s     !V4+dI">!Vs   FT)prereleases)r"   allr    containsversionr1   r9   s    `r   is_satisfied_byzConstraint.is_satisfied_by2   s@    ::c!V4::!VV ~~&&y'8'8d&KKr   N)r   r   )__name__
__module____qualname__r   __annotations__r   r   r   classmethodr'   r   r-   r/   r2   r8   rD    r   r   r   r      s    NT?A A T/ TL T TM$ M4/ 4L 4L L Lr   r   c                   `    e Zd Zedefd       Zedefd       ZdddefdZ	de
fdZdefdZy	)
Requirementr   c                     t        d      )zThe "project name" of a requirement.

        This is different from ``name`` if this requirement contains extras,
        in which case ``name`` would contain the ``[...]`` part, while this
        refers to the name of the project.
        Subclass should overrideNotImplementedErrorr0   s    r   project_namezRequirement.project_name=   s     ""<==r   c                     t        d      )zThe name identifying this requirement in the resolver.

        This is different from ``project_name`` if this requirement contains
        extras, where ``project_name`` would not contain the ``[...]`` part.
        rN   rO   r0   s    r   namezRequirement.nameG   s     ""<==r   r9   r   c                      yNFrJ   rC   s     r   rD   zRequirement.is_satisfied_byP   s    r   c                     t        d      NrN   rO   r0   s    r   get_candidate_lookupz Requirement.get_candidate_lookupS       !"<==r   c                     t        d      rW   rO   r0   s    r   format_for_errorzRequirement.format_for_errorV   rY   r   N)rE   rF   rG   propertyr	   rQ   strrS   r/   rD   CandidateLookuprX   r[   rJ   r   r   rL   rL   <   sa    >n > > >c > >  >o >># >r   rL   r,   r9   c                 H    |j                   rt        | |j                         S yrU   )source_linkr   )r,   r9   s     r   r<   r<   Z   s!    i&;&;<<r   c                       e Zd Zedefd       Zedefd       Zedefd       Z	ede
fd       Zede
fd       Zedee   fd       Zde
deee      fd	Zdee   fd
ZdefdZy)r   r   c                     t        d      )zThe "project name" of the candidate.

        This is different from ``name`` if this candidate contains extras,
        in which case ``name`` would contain the ``[...]`` part, while this
        refers to the name of the project.
        Override in subclassrO   r0   s    r   rQ   zCandidate.project_namea   s     ""899r   c                     t        d      )zThe name identifying this candidate in the resolver.

        This is different from ``project_name`` if this candidate contains
        extras, where ``project_name`` would not contain the ``[...]`` part.
        rc   rO   r0   s    r   rS   zCandidate.namek   s     ""899r   c                     t        d      Nrc   rO   r0   s    r   rB   zCandidate.versiont       !"899r   c                     t        d      rf   rO   r0   s    r   is_installedzCandidate.is_installedx   rg   r   c                     t        d      rf   rO   r0   s    r   is_editablezCandidate.is_editable|   rg   r   c                     t        d      rf   rO   r0   s    r   r`   zCandidate.source_link   rg   r   with_requiresc                     t        d      rf   rO   )r1   rm   s     r   iter_dependencieszCandidate.iter_dependencies       !"899r   c                     t        d      rf   rO   r0   s    r   get_install_requirementz!Candidate.get_install_requirement   rp   r   c                     t        d      rW   rO   r0   s    r   r[   zCandidate.format_for_error   rY   r   N)rE   rF   rG   r\   r	   rQ   r]   rS   r
   rB   r/   ri   rk   r   r   r`   r   rL   ro   r   rr   r[   rJ   r   r   r   r   `   s    :n : : :c : : : : : :d : : :T : : :Xd^ : ::t :+AV8W ::2D)E :># >r   N)dataclassesr   typingr   r   r   r    pip._vendor.packaging.specifiersr   pip._vendor.packaging.utilsr	   pip._vendor.packaging.versionr
   pip._internal.models.linkr   r   pip._internal.req.req_installr   pip._internal.utils.hashesr   r^   r]   r   r   rL   r/   r<   r   rJ   r   r   <module>r|      s    ! 7 7 9 6 1 < < --x8J/KKL' '>1J 's ' $"L "L "LJ> ><d { t +> +>r   