
    жvg!N                     J   d dl Z d dlZd dlmZmZmZmZ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 d dlmZ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 d d
l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*m+Z+ erddl,m-Z-  e j.        e/          Z0e	d         Z1 e
ed          Z2de)dee1         fdZ3dede#de#fdZ4dede#de#fdZ5dede#de#fdZ6 G d de)          Z7 G d de7          Z8 G d  d!e7          Z9 G d" d#e)          Z: G d$ d%e)          Z; G d& d'e)          Z<dS )(    N)TYPE_CHECKINGAny	FrozenSetIterableOptionalTupleUnioncast)InvalidRequirement)NormalizedNamecanonicalize_name)Version)	HashErrorInstallationSubprocessErrorInvalidInstalledPackageMetadataInconsistentMetadataInvalid)BaseDistribution)Linklinks_equivalent)Wheel)install_req_from_editableinstall_req_from_line)InstallRequirement)direct_url_from_link)normalize_version_info   )	CandidateRequirementformat_name)Factory)AlreadyInstalledCandidateEditableCandidateLinkCandidatez<Python from Requires-Python>	candidatereturnc                 R    t           t          t          f}t          | |          r| S dS )z%The runtime version of BaseCandidate.N)r"   r#   r$   
isinstance)r%   base_candidate_classess     k/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/candidates.pyas_base_candidater+   ,   s5     	"
 )344 4    linktemplatec                 ,   |j         r
J d            |j        rt          |j                  }n| j        }t	          ||j        |j        |j        |j        |j	        |j
        |j        |j        	  	        }|j        |_        | |_        |j        |_        |S )Nztemplate is editableuser_supplied
comes_from
use_pep517isolated
constraintglobal_optionshash_optionsconfig_settings)editablereqstrurlr   r1   r2   r3   r4   r5   r6   r7   r8   original_linkr-   extras)r-   r.   lineireqs       r*   make_install_req_from_linkrA   8   s      88"8888| 8<  x ,&&"&.* 0
 
 
D "/DDI/DKKr,   c                     |j         s
J d            t          | j        |j        |j        |j        |j        |j        |j        |j	        |j
        |j        
  
        }|j        |_        |S )Nztemplate not editable)	r1   r2   r3   r4   r5   permit_editable_wheelsr6   r7   r8   )r9   r   r<   r1   r2   r3   r4   r5   rC   r6   r7   r8   r>   )r-   r.   r@   s      r*   make_install_req_from_editablerD   Q   s{     555555$,&&"&'>.* 0  D /DKKr,   distc                 *   |j         rt          |j                   }n/|j        r| j         d|j        j         }n| j         d| j         }t          ||j        |j        |j	        |j
        |j        |j        |j        |j        	  	        }| |_        |S )Nz @ z==r0   )r:   r;   r-   canonical_namer<   versionr   r1   r2   r3   r4   r5   r6   r7   r8   satisfied_by)rE   r.   r?   r@   s       r*   _make_install_req_from_distrJ   e   s     | 88<  	 8%==(-*;==%7777 ,&&"&.* 0
 
 
D DKr,   c                      e Zd ZU dZeed<   dZ	 	 ddedededd	d
e	e
         de	e         ddfdZdefdZdefdZdefdZdedefdZede	e         fd            Zede
fd            Zedefd            Zedefd            ZdefdZdefdZdeddfdZdefdZdedee	e                  fdZ de	e         fdZ!dS )"_InstallRequirementBackedCandidatea  A candidate backed by an ``InstallRequirement``.

    This represents a package request with the target not being already
    in the environment, and needs to be fetched and installed. The backing
    ``InstallRequirement`` is responsible for most of the leg work; this
    class exposes appropriate information to the resolver.

    :param link: The link passed to the ``InstallRequirement``. The backing
        ``InstallRequirement`` will use this link to fetch the distribution.
    :param source_link: The link this candidate "originates" from. This is
        different from ``link`` when the link is found in the wheel cache.
        ``link`` would point to the wheel cache, while this points to the
        found remote link (e.g. from pypi.org).
    rE   FNr-   source_linkr@   factoryr!   namerH   r&   c                     || _         || _        || _        || _        || _        || _        |                                 | _        d | _        d S N)	_link_source_link_factory_ireq_name_version_preparerE   _hash)selfr-   rM   r@   rN   rO   rH   s          r*   __init__z+_InstallRequirementBackedCandidate.__init__   sI     
'

MMOO	$(


r,   c                 $    | j          d| j         S )N rO   rH   rZ   s    r*   __str__z*_InstallRequirementBackedCandidate.__str__   s    ),,dl,,,r,   c                 J    | j         j         dt          | j                  dS N())	__class____name__r;   rR   r_   s    r*   __repr__z+_InstallRequirementBackedCandidate.__repr__   s&    .)@@C
OO@@@@r,   c                 l    | j         | j         S t          | j        | j        f          | _         | j         S rQ   )rY   hashre   rR   r_   s    r*   __hash__z+_InstallRequirementBackedCandidate.__hash__   s2    :!:4>4:677
zr,   otherc                 d    t          || j                  rt          | j        |j                  S dS NF)r(   re   r   rR   rZ   rk   s     r*   __eq__z)_InstallRequirementBackedCandidate.__eq__   s/    eT^,, 	=#DJ<<<ur,   c                     | j         S rQ   )rS   r_   s    r*   rM   z._InstallRequirementBackedCandidate.source_link         r,   c                 @    | j         | j        j        | _         | j         S z:The normalised name of the project the candidate refers to)rV   rE   rG   r_   s    r*   project_namez/_InstallRequirementBackedCandidate.project_name   s      :1DJzr,   c                     | j         S rQ   rt   r_   s    r*   rO   z'_InstallRequirementBackedCandidate.name   rq   r,   c                 @    | j         | j        j        | _         | j         S rQ   rW   rE   rH   r_   s    r*   rH   z*_InstallRequirementBackedCandidate.version       =  I-DM}r,   c                 f    | j          d| j         d| j        j        r| j        j        n| j         dS )Nr]   z (from rd   )rO   rH   rR   is_file	file_pathr_   s    r*   format_for_errorz3_InstallRequirementBackedCandidate.format_for_error   sS    y S S4< S S-1Z-?OTZ))TZS S S	
r,   c                      t          d          )NzOverride in subclass)NotImplementedErrorr_   s    r*   _prepare_distributionz8_InstallRequirementBackedCandidate._prepare_distribution   s    !"8999r,   c                    | j         1| j         |j        k    r!t          | j        d| j         |j                  | j        K| j        |j        k    r;t          | j        dt          | j                  t          |j                            	 t          |                    t          |	                                                               dS # t          $ r'}t          | j        t          |                    d}~ww xY w)z:Check for consistency of project name and version of dist.NrO   rH   )rV   rG   r   rU   rW   rH   r;   listiter_dependenciesiter_provided_extrasr   r   )rZ   rE   es      r*   _check_metadata_consistencyz>_InstallRequirementBackedCandidate._check_metadata_consistency   s    :!djD4G&G&G&

#	   =$$,)F)F&
DM""DL!!	  	6''T-F-F-H-H(I(IJJKKKKK! 	6 	6 	6!$*c!ff555	6s   AC 
D "C;;D c                     	 |                                  }n4# t          $ r}| j        |_         d }~wt          $ r}d|_         d }~ww xY w|                     |           |S )NzSee above for output.)r   r   rU   r:   r   contextr   )rZ   rE   r   excs       r*   rX   z+_InstallRequirementBackedCandidate._prepare   s    	--//DD 	 	 	 JAE* 	 	 	1CK	
 	((...s    
A.AAAwith_requiresc              #      K   |r| j                                         nd}|D ]5}| j                            t	          |          | j                  E d {V  6| j                            | j         j                  V  d S N )rE   r   rT   make_requirements_from_specr;   rU    make_requires_python_requirementrequires_python)rZ   r   requiresrs       r*   r   z4_InstallRequirementBackedCandidate.iter_dependencies   s      4AI49..000r 	U 	UA}@@QTTTTTTTTTTm<<TY=VWWWWWWWr,   c                     | j         S rQ   )rU   r_   s    r*   get_install_requirementz:_InstallRequirementBackedCandidate.get_install_requirement  s
    zr,   NN)"rf   
__module____qualname____doc__r   __annotations__is_installedr   r   r   r   r   r[   r;   r`   rg   intrj   r   boolro   propertyrM   rt   rO   rH   r}   r   r   rX   r   r   r   r   r   r,   r*   rL   rL   }   s          L *.%)) )) ) !	)
 ) ~&) '") 
) ) ) )$- - - - -A# A A A A#    C D    
 !Xd^ ! ! ! X! n    X !c ! ! ! X!     X

# 
 
 
 
:'7 : : : :60@ 6T 6 6 6 60*    "Xt X+AV8W X X X X2D)E      r,   rL   c                   f     e Zd ZdZ	 	 ddededddee         dee         d	df fd
Z	d	e
fdZ xZS )r$   FNr-   r.   rN   r!   rO   rH   r&   c                    |}|                     ||          }|'t                              d|j                   |j        }t	          ||          }|j        |k    sJ |j        j        r}|j        j        sqt          |j        j                  }	t          |	j
                  }
||
k    sJ |d|
d            |,t          |	j                  }||k    sJ |d|d|             |g|j        j        sJ |j        j        sJ |j        r|j        |j        u r||_        |j        |j        |_        nt%          ||j                  |_        t'                                          ||||||           d S )NzUsing cached wheel link: %sz != z
 for wheelz for wheel )link_is_in_wheel_cacher-   rM   r@   rN   rO   rH   )get_wheel_cache_entryloggerdebugr-   rA   is_wheelr{   r   filenamer   rO   r   rH   
persistentr=   cached_wheel_source_linkorigindownload_infor   superr[   )rZ   r-   r.   rN   rO   rH   rM   cache_entryr@   wheel
wheel_namewheel_versionre   s               r*   r[   zLinkCandidate.__init__  s    33KFF"LL68HIII#D)$99yD    9 		Hdi&7 		H$),--E*5:66J:%%%$'N'Nj'N'N'N%%%" ' 6 6},,,GG]GGGG -,, "9%%%%9$$$$% <(-8;Q*Q*Q0;-!-%0%7"" &:8N& & &" 	# 	 	
 	
 	
 	
 	
r,   c                 R    | j         j        }|                    | j        d          S )NT)parallel_builds)rT   preparerprepare_linked_requirementrU   )rZ   r   s     r*   r   z#LinkCandidate._prepare_distribution9  s'    =)224:t2TTTr,   r   rf   r   r   is_editabler   r   r   r   r   r[   r   r   __classcell__re   s   @r*   r$   r$     s        K *.%)/
 /
/
 %/
 	/

 ~&/
 '"/
 
/
 /
 /
 /
 /
 /
bU'7 U U U U U U U Ur,   r$   c                   f     e Zd ZdZ	 	 ddededddee         dee         d	df fd
Z	d	e
fdZ xZS )r#   TNr-   r.   rN   r!   rO   rH   r&   c                 r    t                                          ||t          ||          |||           d S )Nr   )r   r[   rD   )rZ   r-   r.   rN   rO   rH   re   s         r*   r[   zEditableCandidate.__init__A  sL     	/h?? 	 	
 	
 	
 	
 	
r,   c                 J    | j         j                            | j                  S rQ   )rT   r   prepare_editable_requirementrU   r_   s    r*   r   z'EditableCandidate._prepare_distributionR  s    }%BB4:NNNr,   r   r   r   s   @r*   r#   r#   >  s        K *.%)
 

 %
 	

 ~&
 '"
 

 
 
 
 
 
"O'7 O O O O O O O Or,   r#   c                      e Zd ZdZdZdededdddfdZdefd	Z	defd
Z
dedefdZ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defdZdedeee                  fdZdee         fdZdS )r"   TNrE   r.   rN   r!   r&   c                     || _         t          ||          | _        || _        d | _        d}|j                            | j        |           d S )Nzalready satisfied)rE   rJ   rU   rT   rW   r   prepare_installed_requirement)rZ   rE   r.   rN   skip_reasons        r*   r[   z"AlreadyInstalledCandidate.__init__Z  sR     	0x@@
 *66tz;OOOOOr,   c                 *    t          | j                  S rQ   )r;   rE   r_   s    r*   r`   z!AlreadyInstalledCandidate.__str__l  s    49~~r,   c                 0    | j         j         d| j        dS rb   )re   rf   rE   r_   s    r*   rg   z"AlreadyInstalledCandidate.__repr__o  s     .)::DI::::r,   rk   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S rQ   )r(   r"   NotImplementedrO   rH   rn   s     r*   ro   z AlreadyInstalledCandidate.__eq__r  s8    %!:;; 	"!!yEJ&H4<5=+HHr,   c                 8    t          | j        | j        f          S rQ   )ri   rO   rH   r_   s    r*   rj   z"AlreadyInstalledCandidate.__hash__w  s    TY-...r,   c                     | j         j        S rQ   )rE   rG   r_   s    r*   rt   z&AlreadyInstalledCandidate.project_namez  s    y''r,   c                     | j         S rQ   rv   r_   s    r*   rO   zAlreadyInstalledCandidate.name~  rq   r,   c                 @    | j         | j        j        | _         | j         S rQ   rx   r_   s    r*   rH   z!AlreadyInstalledCandidate.version  ry   r,   c                     | j         j        S rQ   )rE   r9   r_   s    r*   r   z%AlreadyInstalledCandidate.is_editable  s    y!!r,   c                 &    | j          d| j         dS )Nr]   z (Installed)r^   r_   s    r*   r}   z*AlreadyInstalledCandidate.format_for_error  s    )88dl8888r,   r   c              #     K   |sd S 	 | j                                         D ]5}| j                            t	          |          | j                  E d {V  6d S # t          $ r}t          | j         |          d d }~ww xY w)N)rE   invalid_exc)rE   r   rT   r   r;   rU   r   r   )rZ   r   r   r   s       r*   r   z+AlreadyInstalledCandidate.iter_dependencies  s       	F	UY0022 Y Y=DDSVVTZXXXXXXXXXXY Y! 	U 	U 	U)tycJJJPTT	Us   AA 
A?#A::A?c                     d S rQ   r   r_   s    r*   r   z1AlreadyInstalledCandidate.get_install_requirement      tr,   )rf   r   r   r   rM   r   r   r[   r;   r`   rg   objectr   ro   r   rj   r   r   rt   rO   r   rH   r   r}   r   r   r   r   r   r   r,   r*   r"   r"   V  s       LKPP %P 	P
 
P P P P$    ;# ; ; ; ;IF It I I I I
/# / / / / (n ( ( ( X( !c ! ! ! X!     X
 "T " " " X"9# 9 9 9 9Ut U+AV8W U U U U2D)E      r,   r"   c            	       |   e Zd ZdZdddedee         dee         ddfdZ	defd	Z
defd
ZdefdZdedefdZedefd            Zedefd            Zedefd            Z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S )ExtrasCandidatea  A candidate that has 'extras', indicating additional dependencies.

    Requirements can be for a project with dependencies, something like
    foo[extra].  The extras don't affect the project/version being installed
    directly, but indicate that we need additional dependencies. We model that
    by having an artificial ExtrasCandidate that wraps the "base" candidate.

    The ExtrasCandidate differs from the base in the following ways:

    1. It has a unique name, of the form foo[extra]. This causes the resolver
       to treat it as a separate node in the dependency graph.
    2. When we're getting the candidate's dependencies,
       a) We specify that we want the extra dependencies as well.
       b) We add a dependency on the base candidate.
          See below for why this is needed.
    3. We return None for the underlying InstallRequirement, as the base
       candidate will provide it, and we don't want to end up with duplicates.

    The dependency on the base candidate is needed so that the resolver can't
    decide that it should recommend foo[extra1] version 1.0 and foo[extra2]
    version 2.0. Having those candidates depend on foo=1.0 and foo=2.0
    respectively forces the resolver to recognise that this is a conflict.
    N)r2   baser>   r2   r&   c                z    || _         t          d |D                       | _        ||n| j         j        | _        dS )a  
        :param comes_from: the InstallRequirement that led to this candidate if it
            differs from the base's InstallRequirement. This will often be the
            case in the sense that this candidate's requirement has the extras
            while the base's does not. Unlike the InstallRequirement backed
            candidates, this requirement is used solely for reporting purposes,
            it does not do any leg work.
        c              3   4   K   | ]}t          |          V  d S rQ   )r   ).0r   s     r*   	<genexpr>z+ExtrasCandidate.__init__.<locals>.<genexpr>  s+      EE 1! 4 4EEEEEEr,   N)r   	frozensetr>   rU   _comes_from)rZ   r   r>   r2   s       r*   r[   zExtrasCandidate.__init__  sD     	EEfEEEEE)3)?::TY_r,   c                     t          | j                                      dd          \  }}d                    |d                    | j                  |          S )Nr]   r   z	{}[{}] {},)r;   r   splitformatjoinr>   )rZ   rO   rests      r*   r`   zExtrasCandidate.__str__  sI    ^^))#q11
d!!$(=(=tDDDr,   c                 @    | j         j         d| j        d| j        dS )Nz(base=z	, extras=rd   )re   rf   r   r>   r_   s    r*   rg   zExtrasCandidate.__repr__  s*    .)WWWWt{WWWWr,   c                 8    t          | j        | j        f          S rQ   )ri   r   r>   r_   s    r*   rj   zExtrasCandidate.__hash__  s    TY,---r,   rk   c                 p    t          || j                  r | j        |j        k    o| j        |j        k    S dS rm   )r(   re   r   r>   rn   s     r*   ro   zExtrasCandidate.__eq__  s9    eT^,, 	K9
*Jt{el/JJur,   c                     | j         j        S rQ   )r   rt   r_   s    r*   rt   zExtrasCandidate.project_name      y%%r,   c                 @    t          | j        j        | j                  S rs   )r    r   rt   r>   r_   s    r*   rO   zExtrasCandidate.name  s     4914;???r,   c                     | j         j        S rQ   )r   rH   r_   s    r*   rH   zExtrasCandidate.version  s    y  r,   c                     d                     | j                                        d                    t	          | j                                      S )Nz{} [{}]z, )r   r   r}   r   sortedr>   r_   s    r*   r}   z ExtrasCandidate.format_for_error  sC    I&&(($))F4;4G4G*H*H
 
 	
r,   c                     | j         j        S rQ   )r   r   r_   s    r*   r   zExtrasCandidate.is_installed  r   r,   c                     | j         j        S rQ   )r   r   r_   s    r*   r   zExtrasCandidate.is_editable      y$$r,   c                     | j         j        S rQ   )r   rM   r_   s    r*   rM   zExtrasCandidate.source_link  r   r,   r   c              #   X  K   | j         j        }|                    | j                   V  |sd S | j                            | j         j                                                  }| j                            | j         j                                                  }t          |          D ].}t          
                    d| j         j        | j        |           /| j         j                            |          D ]1}|                    t          |          | j        |          E d {V  2d S )Nz%%s %s does not provide the extra '%s')r   rT   make_requirement_from_candidater>   intersectionrE   r   
differencer   r   warningrO   rH   r   r   r;   r   )rZ   r   rN   valid_extrasinvalid_extrasextrar   s          r*   r   z!ExtrasCandidate.iter_dependencies  sE     )$ 55di@@@@@ 	F {//	0S0S0U0UVV//	0S0S0U0UVVN++ 	 	ENN7		    11,?? 	 	A::A          	 	r,   c                     d S rQ   r   r_   s    r*   r   z'ExtrasCandidate.get_install_requirement  s	     tr,   ) rf   r   r   r   BaseCandidater   r;   r   r   r[   r`   rg   r   rj   r   r   ro   r   r   rt   rO   r   rH   r}   r   r   r   rM   r   r   r   r   r   r,   r*   r   r     sS        : 48U U UU #U
 /0U 
U U U U&E E E E EX# X X X X.# . . . .C D    
 &n & & & X& @c @ @ @ X@ ! ! ! ! X!
# 
 
 
 

 &d & & & X& %T % % % X% %Xd^ % % % X%t +AV8W    82D)E      r,   r   c                       e Zd ZdZdZdeeedf                  ddfdZde	fdZ
edefd            Zede	fd	            Zedefd
            Zde	fdZdedeee                  fdZdee         fdZdS )RequiresPythonCandidateFNpy_version_info.r&   c                     |t          |          }nt          j        d d         }t          d                    d |D                                 | _        d S )N   .c              3   4   K   | ]}t          |          V  d S rQ   )r;   )r   cs     r*   r   z3RequiresPythonCandidate.__init__.<locals>.<genexpr>"  s(      (F(FAQ(F(F(F(F(F(Fr,   )r   sysversion_infor   r   rW   )rZ   r   r   s      r*   r[   z RequiresPythonCandidate.__init__  sV    &1/BBLL+BQB/L(F(F(F(F(F F FGGr,   c                     d| j          S NzPython rW   r_   s    r*   r`   zRequiresPythonCandidate.__str__(  s    ((((r,   c                     t           S rQ   REQUIRES_PYTHON_IDENTIFIERr_   s    r*   rt   z$RequiresPythonCandidate.project_name+      ))r,   c                     t           S rQ   r  r_   s    r*   rO   zRequiresPythonCandidate.name/  r  r,   c                     | j         S rQ   r  r_   s    r*   rH   zRequiresPythonCandidate.version3  s
    }r,   c                     d| j          S r   )rH   r_   s    r*   r}   z(RequiresPythonCandidate.format_for_error7  s    ''''r,   r   c                     dS r   r   )rZ   r   s     r*   r   z)RequiresPythonCandidate.iter_dependencies:  s    rr,   c                     d S rQ   r   r_   s    r*   r   z/RequiresPythonCandidate.get_install_requirement=  r   r,   )rf   r   r   r   rM   r   r   r   r[   r;   r`   r   r   rt   rO   r   rH   r}   r   r   r   r   r   r   r   r,   r*   r   r     sK       LKHsCx(A Hd H H H H) ) ) ) ) *n * * * X* *c * * * X*     X(# ( ( ( (t +AV8W    2D)E      r,   r   )=loggingr   typingr   r   r   r   r   r   r	   r
   "pip._vendor.packaging.requirementsr   pip._vendor.packaging.utilsr   r   pip._vendor.packaging.versionr   pip._internal.exceptionsr   r   r   r   r   pip._internal.metadatar   pip._internal.models.linkr   r   pip._internal.models.wheelr   pip._internal.req.constructorsr   r   pip._internal.req.req_installr   &pip._internal.utils.direct_url_helpersr   pip._internal.utils.miscr   r   r   r   r    rN   r!   	getLoggerrf   r   r   r  r+   rA   rD   rJ   rL   r$   r#   r"   r   r   r   r,   r*   <module>r     s    



 X X X X X X X X X X X X X X X X X X X X A A A A A A I I I I I I I I 1 1 1 1 1 1              4 3 3 3 3 3 < < < < < < < < , , , , , ,        = < < < < < G G G G G G ; ; ; ; ; ; 5 5 5 5 5 5 5 5 5 5 !      		8	$	$ "T.2QRR 	 	x/F 	 	 	 	
,   2
,   (
&8   0E E E E E E E EP6U 6U 6U 6U 6U6 6U 6U 6UrO O O O O: O O O0D D D D D	 D D DNy y y y yi y y yx% % % % %i % % % % %r,   