
    wOg                     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dS )    )	dataclass)	FrozenSetIterableOptionalTuple)SpecifierSet)NormalizedName)Version)Linklinks_equivalent)InstallRequirement)Hashes	Candidateprojectextrasreturnc                 ^    |s| S d                     t          |                    }|  d| dS )N,[])joinsorted)r   r   extras_exprs      b/var/www/AppWebDeiv/myenv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/base.pyformat_namer      s=     ((6&>>**K&&&&&&    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dS )
Constraint	specifierhasheslinksr   c                 l    t          t                      t                      t                                S N)r   r   r   	frozenset)clss    r   emptyzConstraint.empty   s     ,..&((IKK@@@r   ireqc                     |j         rt          |j         g          nt                      }t          |j        |                    d          |          S NF)trust_internet)linkr%   r   r    r!   )r&   r(   r"   s      r   	from_ireqzConstraint.from_ireq    sE    *.)D	49+&&&$.$++U+*K*KUSSSr   c                 z    t          | j                  p't          | j                  pt          | j                  S r$   )boolr    r!   r"   selfs    r   __bool__zConstraint.__bool__%   s0    DN##LtDK'8'8LD<L<LLr   otherc                    t          |t                    st          S | j        |j        z  }| j        |                    d          z  }| j        }|j        r|                    |j        g          }t          |||          S r*   )	
isinstancer   NotImplementedr    r!   r"   r,   unionr   )r1   r3   r    r!   r"   s        r   __and__zConstraint.__and__(   s{    %!344 	"!!NU_4	u||5|AAA
: 	.KK--E)VU333r   	candidater   c                     | j         r"t          fd| j         D                       sdS | j                            j        d          S )Nc              3   8   K   | ]}t          |          V  d S r$   )_match_link).0r,   r9   s     r   	<genexpr>z-Constraint.is_satisfied_by.<locals>.<genexpr>4   s-      !V!V4+dI">">!V!V!V!V!V!Vr   FT)prereleases)r"   allr    containsversionr1   r9   s    `r   is_satisfied_byzConstraint.is_satisfied_by2   sX    : 	c!V!V!V!V4:!V!V!VVV 	5 ~&&y'8d&K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         NNNT?A A A [A T/ TL T T T [TM$ M M M M4/ 4L 4 4 4 4L L L L L L L Lr   r   c                   n    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d	S )
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                     dS NFrJ   rC   s     r   rD   zRequirement.is_satisfied_byP   s    ur   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   <   s        >n > > > X> >c > > > X>     >o > > > >># > > > > > >r   rL   r,   r9   c                 >    |j         rt          | |j                   S dS rU   )source_linkr   )r,   r9   s     r   r<   r<   Z   s%     =i&;<<<5r   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dS )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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99r   c                      t          d          Nrc   rO   r0   s    r   rB   zCandidate.versiont       !"89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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   `   sh       :n : : : X: :c : : : X: : : : : X: :d : : : X: :T : : : X: :Xd^ : : : X::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 7 7 7 7 7 7 7 7 7 7 9 9 9 9 9 9 6 6 6 6 6 6 1 1 1 1 1 1 < < < < < < < < < < < < < < - - - - - --x8J/KKL' '>1J 's ' ' ' ' $"L "L "L "L "L "L "L "LJ> > > > > > > ><d { t    +> +> +> +> +> +> +> +> +> +>r   