ó
    Þ jÏ&  ã            
       ó.  • S SK r S SKrS SKJr  S SKJrJrJrJrJ	r	J
r
JrJr  S SKJr  SSKJrJrJr  SSKJr  SSKJr  \(       a  S S	KJr  S S
KJr  \\\4   r\\\\4   rO\r\" S5      r\" S5      rS\	\\4   S\S\S\\\4   4S jr " S S\5      r g)é    N)Ú	lru_cache)ÚTYPE_CHECKINGÚDictÚIterableÚIteratorÚMappingÚSequenceÚTypeVarÚUnion)ÚAbstractProvideré   )Ú	CandidateÚ
ConstraintÚRequirement)ÚREQUIRES_PYTHON_IDENTIFIER)ÚFactory)Ú
Preference)ÚRequirementInformationÚDÚVÚmappingÚ
identifierÚdefaultÚreturnc                 ó`   • X;   a  X   $ UR                  S5      u  p4nU(       a	  X0;   a  X   $ U$ )aU  Get item from a package name lookup mapping with a resolver identifier.

This extra logic is needed when the target mapping is keyed by package
name, which cannot be directly looked up with an identifier (which may
contain requested extras). Additional logic is added to also look up a value
by "cleaning up" the extras from the identifier.
Ú[)Ú	partition)r   r   r   ÚnameÚopen_bracketÚ_s         Úf/var/www/html/gaurav/venv/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/provider.pyÚ_get_with_identifierr"   6   s>   € ð ÓØÑ"Ð"ð '×0Ñ0°Ó5Ñ€D˜Þ˜›Ø‰}ÐØ€Nó    c                   ób  • \ rS rSrSrS\S\\\4   S\	S\S\\\
4   SS	4S
 jrS\\\4   S\4S jrS\S\\\4   S\\\\   4   S\\\S   4   S\S   SS4S jrS\S\\\\   4   S\\\\   4   S\\   4S jr\" S	S9S\S\S\	4S j5       rS\S\\   4S jr\S\S\S   S\	4S j5       rSrg	)ÚPipProvideréO   a˜  Pip's provider implementation for resolvelib.

:params constraints: A mapping of constraints specified by the user. Keys
    are canonicalized project names.
:params ignore_dependencies: Whether the user specified ``--no-deps``.
:params upgrade_strategy: The user-specified upgrade strategy.
:params user_requested: A set of canonicalized package names that the user
    supplied for pip to install/upgrade.
ÚfactoryÚconstraintsÚignore_dependenciesÚupgrade_strategyÚuser_requestedr   Nc                 óx   • Xl         X l        X0l        X@l        XPl        [
        R                  " S 5      U l        g )Nc                  ó"   • [         R                  $ ©N)ÚmathÚinf© r#   r!   Ú<lambda>Ú&PipProvider.__init__.<locals>.<lambda>g   s   € ÌtÏxÊxr#   )Ú_factoryÚ_constraintsÚ_ignore_dependenciesÚ_upgrade_strategyÚ_user_requestedÚcollectionsÚdefaultdictÚ_known_depths)Úselfr'   r(   r)   r*   r+   s         r!   Ú__init__ÚPipProvider.__init__Z   s5   € ð  ŒØ'ÔØ$7Ô!Ø!1ÔØ-ÔÜ/:×/FÒ/FÑGWÓ/XˆÕr#   Úrequirement_or_candidatec                 ó   • UR                   $ r.   )r   )r<   r?   s     r!   ÚidentifyÚPipProvider.identifyi   s   € Ø'×,Ñ,Ð,r#   r   ÚresolutionsÚ
candidatesÚinformationÚPreferenceInformationÚbacktrack_causesr   c                 ó  ^ •  [        [        XA   5      5        SnU(       a  S XA    5       n[        U6 u  p‰OSu  p‰S U	 5        V
Vs/ sH  n
U
 H  nUR                  PM     M     nn
nUSLn[        S U 5       5      n[        U5      n T R                  U   nSnUT R                  U'   T R                  R                  U[        R                  5      nU[        :H  nT R                  X5      nU(       + U(       + U(       + U(       + UUU(       + U4$ ! [         a    Sn GNf = fs  snn
f ! [         aO    [        R                  nU(       a%  U 4S	 jXA    5       n[        S
 U 5       5      S-   n NÕ[        R                  n Nçf = f)aM  Produce a sort key for given requirement based on preference.

The lower the return value is, the more preferred this group of
arguments is.

Currently pip considers the following in order:

* Prefer if any of the known requirements is "direct", e.g. points to an
  explicit URL.
* If equal, prefer if any requirement is "pinned", i.e. contains
  operator ``===`` or ``==``.
* If equal, calculate an approximate "depth" and resolve requirements
  closer to the user-specified requirements first. If the depth cannot
  by determined (eg: due to no matching parents), it is considered
  infinite.
* Order user-specified requirements by the order they are specified.
* If equal, prefers "non-free" requirements, i.e. contains at least one
  operator, such as ``>=`` or ``<``.
* If equal, order alphabetically for consistency (helps debuggability).
TFc              3   óD   #   • U H  u  pUR                  5       v •  M     g 7fr.   )Úget_candidate_lookup)Ú.0Úrr    s      r!   Ú	<genexpr>Ú-PipProvider.get_preference.<locals>.<genexpr>’   s    é € ÐTÑ<S±D°A�q×-Ñ-×/Ð/Ò<Sùs   ‚ )Nr1   c              3   óH   #   • U H  o(       d  M  UR                   v •  M     g 7fr.   )Ú	specifier)rK   Úireqs     r!   rM   rN   ™   s   é € Ð!K¹U°TÃd£. $§.¦.ºUùs   ‚	"�"Nc              3   ó.   #   • U H  oS S S:H  v •  M     g 7f)Né   z==r1   )rK   Úops     r!   rM   rN   ž   s   é € Ð8©i¨˜˜�V˜t–^ªiùs   ‚g      ð?c              3   ób   >#   • U H%  u  pUb  TR                   UR                     OSv •  M'     g 7f)Ng        )r;   r   )rK   r    Úparentr<   s      €r!   rM   rN   ¦   s3   øé € ð !á%<™	˜ð 8>Ñ7I�D×&Ñ& v§{¡{Ò3ÈsÔRÚ%<ùs   ƒ,/c              3   ó"   #   • U H  ov •  M     g 7fr.   r1   )rK   Úds     r!   rM   rN   ª   s   é € Ð$>±¨1¤Q²ùs   ‚)ÚnextÚiterÚStopIterationÚzipÚoperatorÚanyÚboolr8   ÚKeyErrorr/   r0   Úminr;   Úgetr   Úis_backtrack_cause)r<   r   rC   rD   rE   rG   Úhas_informationÚlookupsÚ	candidateÚireqsÚspecifier_setrP   Ú	operatorsÚdirectÚpinnedÚunfreeÚrequested_orderÚinferred_depthÚparent_depthsÚrequires_pythonÚbacktrack_causes   `                    r!   Úget_preferenceÚPipProvider.get_preferencel   s¨  ø€ ð8	#Ü”�kÑ-Ó.Ô/ð #ˆOæÙT¸KÒ<SÓTˆGÜ" G˜}ÑˆI�uà'ÑˆIñ "L¹UÔ!Kô
á!K�Û*�	ð ×Ôá*ñ Ù!Kð 	ñ 
ð  $Ð&ˆÜÑ8©iÓ8Ó8ˆÜ�i“ˆð	!Ø15×1EÑ1EÀjÑ1QˆOð !ˆNØ)7ˆ×Ñ˜:Ñ&à×.Ñ.×2Ñ2°:¼t¿x¹xÓHˆð %Ô(BÑBˆð
 ×1Ñ1°*ÓOˆð  ÔØŒJØŒJØÔØØØŒJØð	
ð 		
øôe ó 	$ð $‹Oð	$üó
øô ó 		*Ü"Ÿh™hˆOÞô!à%0Ò%<ó!�ô "%Ñ$>±Ó$>Ó!>ÀÑ!D’ä!%§¡’ð		*ús0   ƒD ÁD%ÂD+ ÄD"Ä!D"Ä+AFÅ1FÆFÚrequirementsÚincompatibilitiesc           	      óâ   ^ • S[         S[        4U 4S jjn[        T R                  U[        R
                  " 5       S9nT R                  R                  UUUU" U5      (       + UT R                  S9$ )Nr   r   c                 óz   >• TR                   S:X  a  gTR                   S:X  a  [        TR                  U SS9nUSL$ g)a€  Are upgrades allowed for this project?

This checks the upgrade strategy, and whether the project was one
that the user specified in the command line, in order to decide
whether we should upgrade if there's a newer version available.

(Note that we don't need access to the `--upgrade` flag, because
an upgrade strategy of "to-satisfy-only" means that `--upgrade`
was not specified).
ÚeagerTzonly-if-neededN©r   F)r7   r"   r8   )r   Ú
user_orderr<   s     €r!   Ú_eligible_for_upgradeÚ7PipProvider.find_matches.<locals>._eligible_for_upgradeÍ   sN   ø€ ð ×%Ñ%¨Ó0ØØ×'Ñ'Ð+;Ó;Ü1Ø×(Ñ(ØØ ñ�
ð
 "¨Ð-Ð-Ør#   ry   )r   rt   Ú
constraintÚprefers_installedru   Úis_satisfied_by)	Ústrr_   r"   r5   r   Úemptyr4   Úfind_candidatesr   )r<   r   rt   ru   r{   r}   s   `     r!   Úfind_matchesÚPipProvider.find_matchesÇ   sx   ø€ ð	¬cð 	´d÷ 	ô, *Ø×ÑØÜ×$Ò$Ó&ñ
ˆ
ð
 �}‰}×,Ñ,Ø!Ø%Ø!Ù#8¸Ó#DÔDØ/Ø ×0Ñ0ð -ð 
ð 	
r#   )ÚmaxsizeÚrequirementrf   c                 ó$   • UR                  U5      $ r.   )r   )r<   r†   rf   s      r!   r   ÚPipProvider.is_satisfied_byñ   s   € à×*Ñ*¨9Ó5Ð5r#   c                 óx   • U R                   (       + nUR                  U5       Vs/ sH	  o3c  M  UPM     sn$ s  snf r.   )r6   Úiter_dependencies)r<   rf   Úwith_requiresrL   s       r!   Úget_dependenciesÚPipProvider.get_dependenciesõ   s5   € Ø ×5Ñ5Ô5ˆØ$×6Ñ6°}ÔEÓWÑE�a—ÑEÑWÐWùÒWs   ¥7®7c                 ó¨   • U HL  nXR                   R                  :X  a    gUR                  (       d  M1  XR                  R                  :X  d  ML    g   g)NTF)r†   r   rV   )r   rG   rq   s      r!   rc   ÚPipProvider.is_backtrack_causeù   sH   € ó  0ˆOØ×8Ñ8×=Ñ=Ó=ÙØ×%×%Ñ%¨*×8NÑ8N×8SÑ8SÕ*SÙñ	  0ð
 r#   )r5   r4   r6   r;   r7   r8   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r€   r   r_   Úintr=   r   r   r   rA   r   r   r   r	   rr   rƒ   r   r   rŒ   Ústaticmethodrc   Ú__static_attributes__r1   r#   r!   r%   r%   O   s¼  † ñðYàðYð ˜#˜z˜/Ñ*ðYð "ð	Yð
 ðYð ˜S #˜X™ðYð 
ôYð-°°{ÀIÐ7MÑ1Nð -ÐSVô -ðY
àðY
ð ˜S )˜^Ñ,ðY
ð ˜C ¨)Ñ!4Ð4Ñ5ð	Y
ð
 ˜S (Ð+BÑ"CÐCÑDðY
ð #Ð#:Ñ;ðY
ð 
ôY
ðv(
àð(
ð ˜c 8¨KÑ#8Ð8Ñ9ð(
ð # 3¨°Ñ(;Ð#;Ñ<ð	(
ð
 
�)Ñ	ô(
ñT �tÑð6¨;ð 6À9ð 6ÐQUó 6ó ð6ðX¨)ð X¸ÀÑ8Mô Xð ðØðØ+3Ð4KÑ+Lðà	óó ór#   r%   )!r9   r/   Ú	functoolsr   Útypingr   r   r   r   r   r	   r
   r   Ú pip._vendor.resolvelib.providersr   Úbaser   r   r   rD   r   r'   r   r   Ú pip._vendor.resolvelib.resolversr   rF   r€   Ú_ProviderBaser   r   r"   r%   r1   r#   r!   Ú<module>rž      s¸   ðÛ Û Ý ÷	÷ 	ó 	õ >ç 4Ñ 4Ý 2Ý æÝ;ÝGà2°;À	Ð3IÑJÐà$ [°)¸SÐ%@ÑA�Mà$€Mñ* ˆCƒL€ÙˆCƒL€ðØ�S˜!�V‰_ðàðð ðð ˆ1ˆaˆ4�[ô	ô2s�-õ sr#   