
    @(i                       S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKJ	r	  SSK
Jr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJrJrJrJr  SSKJr  SSK J!r!  SSK"J#r#  SSK$J%r%  SSK&J'r'  SSK(J)r)  SSK*J+r+J,r,J-r-  SSK.J/r/  SSK0J1r1  SSK2J3r3J4r4  SSK5J6r6  SSK7J8r8  SSK9J:r:J;r;  SSK<J)r=  SSK>J1r?  SSK>J@r@  SSKAJr  SSKBJCrC  SSKDJErE  SSKFJGrGJHrHJIrIJJrJ  SSKKJLrLJMrM  \(       a2  SS KNJOrOJPrPJQrQ  SS!KRJSrS  SS"KTJUrU  SS#KJVrVJWrW  SS$K$JXrX  SS%K<JYrYJZrZ  SS&K>J[r[  \R                  " S'\] 35      r^ " S( S)\)5      r_g)*zU
This module defines the conda.core.solve.Solver interface and its immediate helpers
    )annotationsN)defaultdict)suppress)cache)stack)chain)dedent)TYPE_CHECKING)__version__)PREFIX_FROZEN_FILEREPODATA_FNUNKNOWN_CHANNELChannelPriority)context)NULL)time_recorder)paths_equal)percent_decode)Solver)CondaValueErrorPackagesNotFoundErrorUnsatisfiableError)Channel)	MatchSpec)PackageRecordPrefixRecord)VersionOrder)get_spinner)RequestSolution)
NoArchType   )LibMambaUnsatisfiableError)LibMambaIndexHelper)init_libmamba_contextmamba_versionproblems_format_autoproblems_format_nocolor)SolverInputStateSolverOutputState)IterableMappingSequence)
IndexedSet)_Null)DepsModifierUpdateModifier)PathType)Database
UnSolvable)PackageInfozconda.c                    ^  \ rS rSrSrSr\\S%S j5       5       rSSS\	\
4             S&U 4S jjjr\
\
\
\
\
S4             S'S jjr S(     S)S jjrS*S	 jr S+   S,S
 jjr\" \ S9          S-S j5       rS%S jr\" \ S9        S.S j5       r S/         S0S jjrS1S jr      S2S jr      S3S jr      S3S jr      S3S jr        S4S jr      S5S jr\S6S j5       r S+         S7S jjr        S8S jr S+     S9S jjr S:S jr!S;S jr"S<S jr#S=S jr$\S>S j5       r%\S?S  j5       r&S%S! jr'S/S@S" jjr(  SA       SBS# jjr)S$r*U =r+$ )CLibMambaSolverP   
   Fc                 *    S[          S[        5        3$ )zL
Expose this identifier to allow conda to extend its user agent if required
zconda-libmamba-solver/z libmambapy/)r   r&        T/data/cameron/miniconda/lib/python3.13/site-packages/conda_libmamba_solver/solver.py
user_agentLibMambaSolver.user_agentT   s     (}L@QRRr<   r;   c           
     @  > U(       a  U(       a  [        S5      eU(       a  U[        L a  Sn[        TU ]  [        R
                  " U5      UUUUUUS9  U R                  [        L d  U R                  (       d  [        R                  U l        SU R                  ;  a  / U R                  QSP7U l        U R                  5       U l	        [        [        S U R                   5       5      [        S U R                   5       5      [        U R                  5      S9U l        g )NzEOnly one of `specs_to_add` and `specs_to_remove` can be set at a timeremove)subdirsspecs_to_addspecs_to_removerepodata_fncommandnoarchc              3  8   #    U  H  oR                   v   M     g 7fN)canonical_name).0cs     r=   	<genexpr>*LibMambaSolver.__init__.<locals>.<genexpr>   s     C]++]s   c              3  4   #    U  H  oS :w  d  M
  Uv   M     g7frG   Nr;   )rK   ss     r=   rM   rN      s     C\(]!!\   		)channelsplatformtarget_prefix)
ValueErrorr   super__init__osfspathrB   r   _maybe_ignore_current_repodata_repodata_fnr%   tuplerS   nextstrprefix_libmamba_context)	selfr`   rS   rB   rC   rD   rE   rF   	__class__s	           r=   rX   LibMambaSolver.__init__\   s     OW  w$GIIf%+# 	 	
 <<4t||"??DL4<<' 5T\\484DL ??A!6CT]]CCCT\\CCdkk*"
r<   c                   U R                  5         [        U R                  U R                  =(       d    U R                  UUUUUU R
                  S9n[        US9nUR                  5       n	U	b  U	$ U R                  U5      n
U R                  [        U
5      S9n[        U R                  X5      5         U R                  U
UU R                  US9nUR                  U5        S S S 5        [        U R!                  5       5         U R#                  XxW5      n[%        UR&                  R)                  5       5      U l        UR,                  nS S S 5        U R/                  S WW5        U$ ! , (       d  f       N= f! , (       d  f       N4= f)N)r`   	requestedupdate_modifierdeps_modifierpruneignore_pinnedforce_removerF   )solver_input_state)seen)rS   conda_build_channelsrB   in_state)	_log_infor)   r`   rC   rD   _commandr*   
early_exit_collect_channel_list*_collect_channels_subdirs_from_conda_buildsetr   %_collect_all_metadata_spinner_message_collect_all_metadatarB   check_for_pin_conflicts_solving_loop_spinner_message_solving_loopr]   neuteredvaluesneutered_specscurrent_solution_notify_conda_outdated)rb   rg   rh   ri   rj   rk   should_retry_solvero   	out_statemaybe_final_staterS   rn   indexsolutions                 r=   solve_final_state LibMambaSolver.solve_final_state   st    	#;;''?4+?+?+''%MM	
 &B	 &002($$--h7#NNTWX`TaNb66xV
 ..!%9!	 / E --e4
 ..0

 **8FI"'	(:(:(A(A(C"DD 11H
 	##D%:3
 

 
s   3.E&AE7&
E47
Fc           
        U R                  5       (       ae  SnU(       aZ  [        [        R                  U Vs/ s H  n[	        U5      R
                  PM     sn5      5      nUSSR                  U5       S3-  nU$ [        [        R                  U Vs/ s H  oDR
                  PM     sn5      5      nSR                  U5      nSU S[        R                   SU R                   S3$ s  snf s  snf )	NzReloading output folderz (z, )z
 - zChannels:
 - z
Platform: z
Collecting package metadata ()
_called_from_conda_buildlistdictfromkeysr   rJ   joinr   subdirr\   )rb   rS   rn   msgrL   namescanonical_namescanonical_names_dasheds           r=   rv   4LibMambaSolver._collect_all_metadata_spinner_message   s    
 ((**+C#MMFZ"[FZ71:#<#<FZ"[\ DIIe,-Q//Jt}}-Q1.>.>-QRS!(o!>() * ( ),,0,=,=+>aA	
 #\
 .Rs   C(C-c                   0 n[        U R                  UR                  5       UR                  5       5       H  n[	        USS 5      =n(       au  X@R
                  ;  a"  [        R                  SUUU R
                  5        [        S0 UR                  5       R                  5        VVs0 s H  u  pVUS:w  d  M  XV_M     snnD6nS X#'   M     [        U5      $ s  snnf )NrT   z^Channel %s defines platform %s which is not part of subdirs=%s. Ignoring platform attribute...r;   )r   rS   channels_from_specsmaybe_free_channelgetattrrB   loginfor   dumpitemsr   )rb   ro   deduped_channelschannelchannel_platformkvs          r=   rs   $LibMambaSolver._collect_channel_list   s    MM87798;V;V;X
G $+7J#EEE#<<7HH9( "aglln6J6J6L$`6LdaPQU_P_TQT6L$`a(,%
  $%% %as   &C6Cc                   U R                  5       (       a  U=(       d
    [        5       n0 nU R                  =(       d    0  H  nUR                  R                  S:X  d  M  [        S0 UR                  R                  5       R                  5        VVs0 s H  u  pEUS:w  d  M  XE_M     snnD6nXa;  d  Mt  UR                  U5        M     [        U5      $ / $ s  snnf )NfilerT   r;   )
r   ru   _indexr   schemer   r   r   
setdefaultr   )rb   rm   rn   recordr   r   r   s          r=   rt   9LibMambaSolver._collect_channels_subdirs_from_conda_build   s     ((**=35D $& ++++>>((F2 & ,2NN,?,?,A,G,G,I],IDAQR\_414,I]G *,77@ , ,--	 ^s   C!C)module_namec           	     &   [        / UQUQUU R                  / UR                  R                  5       QUR                  R                  5       Q7[
        R                  (       a  [
        R                  OSUS9nU H  nUR                  U5        M     U$ )Nr;   )rS   rB   rE   installed_records	pkgs_dirsro   )	r$   r\   	installedr|   virtualr   offliner   reload_channel)rb   rS   rn   rB   ro   r   r   s          r=   rw   $LibMambaSolver._collect_all_metadata  s     $7+7h7))##**,!!((* ,3??g''

 ,G  ) ,r<   c                    [         R                  R                  U R                  5      nU R	                  5       (       a0  SU;   a)  SR                  UR                  S5      SS 5      nSU S3$ gg)	z<This shouldn't be our responsibility, but the CLI / app's..._env_N   zSolving environment (r   zGetting pinned dependencieszSolving environment)rY   pathbasenamer`   r   r   split)rb   prefix_nameenv_names      r=   ry   ,LibMambaSolver._solving_loop_spinner_message  sh    gg&&t{{3((**$88K$5$5c$:2A$>?.xj:: 5$r<   c                   [        SU R                  U5      S-   5       H  n U R                  XX4S9u  pVU(       a    Or [        U[	        UR
                  5      [	        UR                  5      [	        UR                  5      [	        UR                  5      [	        UR                  5      S9nM     W(       d  [        R                  S5        UR                  R                  UR                  R!                  5        VVs0 s H(  u  pxUR"                  (       a  M  XxR%                  5       _M*     snn5        U R                  XUWS-   S9u  pVU(       d0  U R'                  XcR(                  U5      n	[+        U	5      n
SU
l        U
eU R/                  X2W5        UR1                  U S9  U$ ! [        [        4 a    Sn   GM  f = fs  snnf )Nr"   )attempt)rl   recordsfor_historyr{   	conflictspinsFz2Last attempt: reporting all installed as conflicts)solver)range_max_attempts_solve_attemptr*   r   r   r   r{   r   r   r   r   r   debugupdater   r   is_unmanageableto_match_spec_prepare_problems_messagedbr#   allow_retry_export_solution
post_solve)rb   ro   r   r   r   solvedoutcomenamer   messageexcs              r=   rz   LibMambaSolver._solving_loop+  s    Q 2 28 <q @AG"&"5"5h5"5"b  .'/ !2!23 $Y%:%: ;!)"4"45"9#6#67inn-	 B" IIJK&& )1(:(:(@(@(B(B!11 1D..00(B #11(uV]`aVa1bOF88((IV09"'	 	e8 	D)E '(=> s   F%>G 
G 
%F=<F=c                   [         R                  SU5        [         R                  SUR                  5        U R	                  U5      nU R                  X5      n[        XeS9n[        5       nUR                  UR                  U5      n	[        U	[        5      (       a  UR                  R                  5         SU	4$ UR                  R                  5       n
U R                  XX*5      n[         R                  [         R"                  5      (       a<  U	R%                  UR                  5      n[         R                  SU['        U5      U5        UR                  R)                  U5        SU	4$ )NzSolver attempt: #%dz-Current conflicts (including learnt ones): %r)jobsflagsTz'Attempt %d failed with %s conflicts:
%sF)r   r   r   r   _solver_flags_specs_to_request_jobsr   LibsolvSolversolver   
isinstancer    clearcopy_maybe_raise_for_problemsisEnabledForloggingDEBUGproblems_to_strlenr   )rb   ro   r   r   r   r   r   requestr   r   old_conflictsnew_conflictsproblems_as_strs                r=   r   LibMambaSolver._solve_attempt[  s"    	&0		A9CVCVW""8,**8?t1,,uxx1gx((%%'= !++00266wy`GMM**%55ehh?OII:M"	 	""=1g~r<   c                4   SSUR                   SSS[        R                  [        R                  L S.n[
        R                  [        R                  5      (       a)  [
        R                  S[        R                  " USS95        [        R                  " S0 UD6$ )NT)allow_downgradeallow_uninstallforce_reinstallkeep_dependencieskeep_user_specsorder_requeststrict_repo_priorityzUsing solver flags:
%s   indentr;   )r   r   channel_priorityr   STRICTr   r   r   r   r   jsondumpsr   Flags)rb   ro   r   s      r=   r   LibMambaSolver._solver_flagsy  s|    #  $'77!%# "$+$<$<@V@V$V
 GMM**II/E!1LM}}%u%%r<   c                2   UR                   (       a  U R                  X5      nO8U R                  5       (       a  U R                  X5      nOU R	                  X5      n/ n0 nUR                  5        H  u  pg[        US5       H  u  pU R                  U	5      n
UR                  U" U
5      5        [        R                  [        R                  5      (       a4  UR                  UR                  / 5      R                  [        U	5      5        U[         R"                  :X  d  M  [%        U	5      n	XR&                  SU 3'   M     M     [        R                  [        R                  5      (       a+  [(        R*                  " USS9n[        R-                  SU5        U$ )Nr"   zpin-r   r   z)The solver will handle these requests:
%s)is_removing_specs_to_request_jobs_remover   "_specs_to_request_jobs_conda_build_specs_to_request_jobs_addr   	enumerate_conda_spec_to_libmamba_specappendr   r   r   INFOr   __name__r_   r   Pinr   r   r   r   r   )rb   ro   r   r   request_jobsjson_friendlyJobTypespecsidx
conda_speclibmamba_specjson_strs               r=   r   %LibMambaSolver._specs_to_request_jobs  s<   
 55hJD**,,::8OD228GD"jjlNG#,UA#6 $ A A* M##GM$:;##GLL11!,,W-=-=rBII#j/Zgkk)!*:!6J3=NNT#<0 $7 + GLL))zz-:HHHA8Lr<   c                Z   [        [        5      n/ UR                  QUR                  QUR                  QUR
                  Q7 Vs1 s H  nXAR                  ;   d  M  UiM     nnSnUR                  R                  S5      nUR                  R                  S5      nU(       a  U(       a  UR                  U5      (       + nUR                   GHo  n	UR                  R                  U	5      n
U
(       a   U R                  U
R                  5       5      nOS nU R                  UR                  R                  U	5      5      nU R                  UR                  R                  U	5      5      nU R                  UR                  R                  U	5      5      nU R                  UR                  R                  U	5      5      nX;   a:  UR                  (       d)  U(       d"  U[        R                      R#                  U5        U(       a3  UR$                  (       d"  U[        R&                     R#                  U5        U(       a  UR$                  (       a  U(       a  UR$                  (       d  UnOUnU
(       ah  U[        R(                     R#                  U5        U	S U[        R                       5       ;  a%  U[        R                      R#                  U	5        GM
  GM  U[        R*                     R#                  U5        GM2  XR,                  ;   a%  U[        R(                     R#                  U	5        GMf  UR                  (       a  GMz  U	S:X  ad  U
(       a]  U(       dV  SR/                  U
R0                  R3                  S5      S S 5      nU[        R&                     R#                  SU S35        GM  U(       a  U(       a  UR4                  S:X  a  [7        UR0                  =(       d    S	5      nUR9                  S
5      (       a  U	 SUSS   3nO0UR9                  S5      (       a  U	 SU 3nOU(       a	  U	 SU S3nOU	nU[        R*                     R#                  U5        GM  U[        R*                     R#                  U5        GM  U
(       d  GM  U(       a  GM  UR:                  R<                  nU(       a  UR$                  (       a  SnU(       a=  U
R>                  c0  U
R@                   H   n[C        U5      RD                  S;   d  M  Sn  O   U(       d  GMM  U[        RF                     R#                  U5        GMr     0 n[        R&                  [        R*                  [        R(                  [        R                   [        RF                  4 H  nUU;   d  M  UU   UU'   M     U$ s  snf )NFpythonc              3  L   #    U  H  n[        U5      R                  v   M     g 7frI   )r   r   )rK   specs     r=   rM   <LibMambaSolver._specs_to_request_jobs_add.<locals>.<genexpr>  s     #YEXTIdO$8$8EXs   "$.r   zpython .*r    == )z!=><T)r  
python_abi)$r   r   historyaggressive_updatespinneddo_not_remover   getr	  match_check_spec_compatr   rf   r   ri   r   Keepr  is_name_only_specr  UpdateInstallalways_updater   versionr   
strictnessr_   
startswithrg   FREEZE_INSTALLEDrG   dependsr   r   Freeze)rb   ro   r   taskspkguser_installedpython_version_might_changeinstalled_pythonto_be_installed_pythonr   r   installed_specrf   r  r  conflictingr  pyverr(  spec_strlockdepreturned_tasks	task_types                           r=   r   )LibMambaSolver._specs_to_request_jobs_add  s   
 D!!!,,  ''		
 (((  	 	
" ',##--11(;!*!4!4X!> 6.D.J.JK[.\*\'OOD'/'9'9'='=d'CI!%!8!89P9P9R!S!%#'#:#:8;M;M;Q;QRV;W#XI!%!8!89I9I9M9Md9S!TG $ 7 78K8KD8Q RF%)%<%<Y=P=P=T=TUY=Z%[K%hnn[gll#**>: f66 gkk"))&1 ..6&BZBZ "D$D'..)006#YU7<<EX#YYgll+2248 Z '//*11$7///gnn%,,T2 !i!2!2!8!8!=bq!ABgkk"))GE7"*=>7#5#5#: "'//"7R8G))$//&*V1WQR[M#: ++,<==&*V1WI#6 &*V1WIR#8#''//*11(;'//*11':  $33DDD&":":#2y7G7G7O#,#4#4C(~226NN', % $5 tgnn-44^Da $p KKOONNLLNN
I E!,1),<y)
 s	
s   V(V(c                   [        [        5      nUR                  R                  5        He  u  pEXAR                  ;   d  XAR
                  ;   d  M%  UR                  5       R                  5       nU[        R                     R                  U5        Mg     UR                  R                  5        HA  u  pFU R                  U5      nU[        R                     R                  [        U5      5        MC     [        U5      $ rI   )r   r   r   r   r  r  r   conda_build_formr   r#  r  rf   r"  Remover_   r   )rb   ro   r   r.  r   r   r  s          r=   r   ,LibMambaSolver._specs_to_request_jobs_remove.  s    
 D! &--335LD'''43N3N+N ++->>@gll#**40 6 #,,224JD**40D'..!((T3 5 E{r<   c                P   [        [        5      nUR                  R                  5        Ho  u  pEUR	                  S5      (       a  M  U R                  U5      nU R                  U5      nU[        R                     R                  UR                  5       5        Mq     [        U5      $ )N__)r   r   rf   r   r*  r"  "_fix_version_field_for_conda_buildr   r&  r  r>  r   )rb   ro   r   r.  r   r  s         r=   r   1LibMambaSolver._specs_to_request_jobs_conda_buildH  s     D!",,224JDt$$**40D::4@D'//"))$*?*?*AB 5 E{r<   c                   UR                    H  n[        USS 5      n[        USS 5      nU(       aM  UR                  R                  S5      (       a  MF  U R	                  XQ5      nXrR
                  UR                  '   Mq  U(       d  Mz  UR                  R                  S5      (       a  M  U R	                  Xa5      nUR
                  R                  UR                  S 5        M     U$ )NinstallrA   rB  )actionsr   r   r*  _package_info_to_package_recordr   pop)rb   r   r   r   actionrecord_to_installrecord_to_remover   s           r=   r   LibMambaSolver._export_solutionZ  s     &&F-4VY-M,3FHd,K $))44T::==>OW17!!&++.!!#((33D99==>NV!!%%fkk48 ' r<   c           
     ~   UR                   [        R                  :X  a  SnO#UR                   [        R                  :X  a  SnOS nUR                   H_  nUR
                  R                  UR                  5      (       d  M/  UR
                  R                  UR                  UR                  5      n  O   UR
                  n[        U5      n[        UR                  5      nUR                  (       dU  [        UR                  UR                  UR                   UR"                  UR$                  UR&                  UR(                  S9n[+        S0 SUR$                  _SUR,                  _SUR.                  _SUR0                  _SU_S	U_S
UR&                  _SUR2                  _SUR4                  _S[7        USS5      =(       d    S _SUR8                  _SUR:                  _SUR<                  _SUR>                  _SUR@                  _SURB                  _SURD                  _SU_SURF                  _SURH                  _6$ )Nr  generic)r   authlocationtokenr   rT   package_filenamer   r(  buildbuild_numberr   urlr   fnlicensepython_site_packages_pathr  md5sha256
signaturestrack_featuresr,  
constrainsdefaulted_keysrG   size	timestampr;   )%rG   r!   PythonGenericrepospackage_urlr*  url_no_credreplace
url_w_credr   r   r   r   r   rP  rQ  rR  r   rT   rS  r   r(  build_stringrU  filenamerX  r   rZ  r[  r\  r]  dependenciesr^  r_  r`  ra  )rb   r/  r   rG   	repo_inforV  r   s          r=   rH  .LibMambaSolver._package_info_to_package_recordo  s!   
 ::***FZZ:---FFI)))*?*?@@oo--i.C.CYEYEYZ %
 //CS! #++&~~ ~~\\ ))mm\\!(!9!9G  

KK
 ""
 ))	

 
 
 <<
 ||
 KK
 '.c3NPR&S&[W[
 
 ::
 ~~
 --
 $$
  ~~!
" --#
$ %
& '
( mm)
 	
r<   c           	        / n/ n/ nSnUR                  U5       H  nUS:X  a  SnM  UR                  U5        M      U(       a  UR                  S5         UR                  U[        5      nU GH  n
U
R                  5       nSU
;   ay  US	   S
:w  d	  US   S:w  a  [        SU
 35      eUR                  U R                  US   5      5        UR                  S5      nUR                  U R                  USU 5      5        M  SU
;   a{  Su  p[        U5       H  u  nnUS:X  a  UnM  US:X  d  M  US-   nM     Ub#  UR                  U R                  US   5      5        UR                  U R                  XU 5      5        GM  SU
;   a,  SU
;   a&  UR                  U R                  US   5      5        GMF  SU
;   am  SU
;   ag  US   R                  SS5      S	   nUS   R                  SS5      S	   nUR                  [        U5      5        UR                  [        U5      5        GM  SU
;   a&  UR                  U R                  US   5      5        GM  U
S:X  a  UR                  5        Hx  nUR                  S5      R!                  5       nUR                  5       nSU;   d  M:  SU;  d  MB  UR                  S 5      nUR                  U R                  USU 5      5          GMu     GMz  [
        R                  S!U
5        GM     U Vs0 s H  nUR"                  U_M     snU Vs0 s H  nUR"                  U_M     snS".$ ! [         a!  n	[
        R                  SU	S9  Sn Sn	A	GNSn	A	ff = fs  snf s  snf )#u:  
Problems can signal either unsatisfiability or unavailability.
First will raise LibmambaUnsatisfiableError.
Second will raise PackagesNotFoundError.

Libmamba can return spec strings in two formats:
- With dashes, e.g. package-1.2.3-h5487548_0
- à la conda-build, e.g. package 1.2.* *
- just names, e.g. package
Fzunsupported requestTzCannot explain problemsexc_infor  Nz&none of the providers can be installedr   packager   requireszUnknown message: r"   butr   znothing providesNNneededprovideszhas constraintzconflicting withzcannot install both pin-zand pin--   #is excluded by strict repo priorityu   │├└─ zdoes not existwhichdoesz!! Problem line not recognized: %s)r   	not_found)problemsr  explain_problemsr(   	Exceptionr   r   r   rV   _matchspec_from_error_strr   r   rsplitr   
splitlineslstripstripr   )cls
unsolvabler   r   r}  r~  has_unsupportedproblemexplained_problemsr   linewordsendstartmarkeriwordpin_apin_bexplained_lineexplained_wordsrQ   s                         r=   _parse_problemsLibMambaSolver._parse_problems  sR    		!**2.G//"&(	 /
 OO12	$!+!<!<RAX!Y DJJLE74?8y(E!H
,B$'8%?@@  !>!>uQx!HIkk%(  !>!>uQs|!LM#t+ *(/GAtx'!"+ !A	  0
 %$$S%B%B59%MN  !>!>u6?R!ST!T).@D.H   !>!>uRy!IJ+t3
d8JaQ/2aQ/2  5!12  5!126$>  !>!>uQx!HI.. '9&C&C&EN%3%:%:?%K%Q%Q%SN&4&:&:&<O'>9g^>[-33F;!(()F)FW[X[G\)]^ 'F 		=tDU Z .77Y!&&!)Y7-67Y!&&!)Y7
 	
_  	$II/#I>!#	$` 87s$   L? M-#M2?
M*	M%%M*c                   U R                  XR                  5      nU R                  0 US   EUS   EU R                  XR                  U5      S9  US   nUS   nU(       d  U(       a  [        R                  [        R                  5      (       aL  [        R                  S[        UR                  5       5      UR                  UR                  [        5      5        [        [        UR                  5       5      [        UR                  5      5      nSUl        UeU=(       d    0 n	[#        U	R                  5       5      n
[#        UR                  5       5      nUR%                  U
5      n['        U5      S:  a  SU;   a  UR)                  S5        U	(       a  X:X  d  ['        U5      S:  a0  U R                  XR                  U5      n[+        U5      nSUl        UeU$ )	Nr   r}  )r   z4Inferred PackagesNotFoundError %s from conflicts:
%sFr"   r  r9   )r  r   _maybe_raise_for_conda_buildr   r   r   r   r   r   r]   keysr  r(   r   r|   rS   r   ru   
differencer   rI  r#   )rb   r  r   r   previous_conflictsparsed_problemsunsatisfiabler}  r   previousprevious_setcurrent_setdiffr   s                 r=   r   (LibMambaSolver._maybe_raise_for_problems  s    ..z88D))L{+L{/KL22:xxS 	* 	

 (4#K0	..		K)..*+//:QR (i.>.>.@(A5CXYC#COI%+8??,--..01%%l3t9q=X6 h',53t9?44Z9UG,W5C#COIr<   c                   UR                  U5      nSnSU;  a  SnSnOSU;   a  [        R                  S5        SnU(       a   UR                  U[        5      nUSU-   -  nUR                  (       a<  S
U;   a6  SnUR                  R                  5        H  u  pUSU
 S3-  nM     USU 3-  nU$ ! [
         a  n[        R                  SUS	9   S nANrS nAff = f)NTz - z Failed with empty error message.Frz  z=Skipping error explanation. Excluded by strict repo priority.
zFailed to explain problemsro  zpin on zBPins seem to be involved in the conflict. Currently pinned specs:
z

)	r   r   r   r  r'   r  warningr   r   )rb   r  r   r   r   explainexplained_errorsr   pin_messager   r  s              r=   r   (LibMambaSolver._prepare_problems_message+  s     ,,R08GG2g=HHTUGH#-#>#>rCW#X 4"222 >>i72_K$>>//1TF"~- 2k]++G  H83GHs   B1 1
C;CCc                   U R                  5       (       d  g U(       d  g SSKJn  [        S U R                   5       [
        R                  5      nU" [        UR                  5       5      [        UR                  5       5      UUS9nUe)Nr"   )%ExplainedDependencyNeedsBuildingErrorc              3  4   #    U  H  oS :w  d  M
  Uv   M     g7frP   r;   )rK   r   s     r=   rM   >LibMambaSolver._maybe_raise_for_conda_build.<locals>.<genexpr>X  s     OL&h<NvvLrR   )packages
matchspecsr   explanation)
r   conda_build_exceptionsr  r^   rB   r   r   r   r  r|   )rb   conflicting_specsr   r  r   r   s         r=   r  +LibMambaSolver._maybe_raise_for_conda_buildF  sy     ,,.. Q ODLLOQXQ_Q_`3+0023-4467	
 	r<   c                0   [         R                  S[        5        [         R                  S[        5        [         R                  S[	        5       5        [         R                  SU R
                  5        [         R                  S[        R                  5        g )Nzconda version: %sz!conda-libmamba-solver version: %szlibmambapy version: %szTarget prefix: %rzCommand: %s)r   r   _conda_versionr   r&   r`   sysargv)rb   s    r=   rp   LibMambaSolver._log_infof  sV    $n54kB)=?;$dkk2)r<   c                    [        U SS5      =(       a<    S[        R                  ;   =(       a"    SS1[        5        Vs1 s H  oS   iM	     sn:*  $ s  snf )a  
conda build calls the solver via `conda.plan.install_actions`, which
overrides Solver._index (populated in the classic solver, but empty for us)
with a custom index. We can use this to detect whether conda build is in use
and apply some compatibility fixes.
r   Nconda_buildinstall_actionsget_install_actionsr   )r   r  modulesr   )rb   frames     r=   r   'LibMambaSolver._called_from_conda_buildm  sZ     D(D) ^,^ #$9:UZU\>]U\EQxU\>]]	
 ?^s   Ac                   Uc  g 0 nUR                    Hm  nUR                  U5      nU(       d  M  US:X  aF  [        U5      S:X  a  M4  [        USS5      (       d#  [        USS5      (       a  UR                  US'   Mi  XBU'   Mo     [        S0 UD6$ )Nr   z	<unknown>r   r  rT   r   r;   )FIELD_NAMESget_raw_valuer_   r   rT   r   )rb   r  spec_fieldsfieldvalues        r=   r"  !LibMambaSolver._check_spec_compat  s    <%%E&&u-EuI%5z[0 "5&"55 #5*b9949NNK1 %*E" & ';''r<   c                @    [         R                  " [        U5      5      $ rI   )LibmambaMatchSpecparser_   )rb   r  s     r=   r  +LibMambaSolver._conda_spec_to_libmamba_spec  s     &&s4y11r<   c                p   U R                   (       a  [        R                  " S5      n[        U R                   5      n[        R                  " X5      (       a^  U R                  5       R                  5       nUR                  S5      S::  a	  US-   US'   OUS-   US'   [        SR                  U5      5      $ U $ )zFix taken from mambabuildz	^[\d\.]+$r  r"   r  *r  )
r(  recompiler_   r!  r>  r   countr   r   )r  only_dot_or_digit_reversion_strr  s       r=   rC  1LibMambaSolver._fix_version_field_for_conda_build  s     <<#%::l#; dll+Kxx,::"335;;=$$S)Q.%04%7KN%03%6KN +!677r<   c                L    [        U [        5      (       a  U R                  SS5      u  pn[        XUS9$ SU S   R	                  S5      0n[        U 5      S:  ap  U S   S:w  ag  U S   R                  S	5      (       d  U S   R                  S
5      (       d  U S   R	                  S5      US'   OU S   SS  R	                  S5      S-   US'   [        U 5      S:X  a   U S   S:w  a  U S   R	                  S5      US'   [        S0 UD6$ ! [         a  n[        SU  35      UeS nAff = f)Nrx  r   )r   r(  rT  r   r   ,r"   z=*r  =r(  r  r   r  rT  zCould not parse spec: r;   )	r   r_   r  r   rstripr   r*  r  rV   )r  r   r(  rT  kwargsr   s         r=   r  (LibMambaSolver._matchspec_from_error_str  s'   	G$$$'+{{3':$u d5II $q'.."56t9>d1goAw))$//tAw7I7I#7N7N,0GNN3,?y),0GABK,>,>s,Cd,Jy)t9>d1gn&*1gnnS&9F7O *6** 	G5dV<=3F	Gs   3D CD 
D#DD#c                :   Sn[         R                  " 5       R                  5        H0  nUR                  5        H  u  p4US:X  d  M  U(       d  M  Sn  M.     M2     U R                  S:X  a'  U(       d   [
        R                  S[        5        [        $ U R                  $ )NFrepodata_fnsTzcurrent_repodata.jsonz>Ignoring repodata_fn='current_repodata.json', defaulting to %s)r   collect_allr|   r   r\   r   r   r   )rb   is_repodata_fn_setconfigkeyr  s        r=   r[   -LibMambaSolver._maybe_ignore_current_repodata  s    "))+224F$lln
.(UU)-& - 5
  77@RIIP    r<   c                   [         R                  R                  S5      n[        UR                  5      nU(       aA   [        U5      nUS:  a  [        SU S35      eXT:  a  [        R                  SUU5        U$ U$ UR                  R                  (       a  U(       a  [        U R                  U5      $ U$ ! [         a    [        SU S35      ef = f)N"CONDA_LIBMAMBA_SOLVER_MAX_ATTEMPTSz$CONDA_LIBMAMBA_SOLVER_MAX_ATTEMPTS='z'. Must be int.r"   z'. Must be >=1.zuCONDA_LIBMAMBA_SOLVER_MAX_ATTEMPTS='%s' is higher than the number of installed packages (%s). Using that one instead.)rY   environr   r   r   intrV   r   r   r  rg   r+  minMAX_SOLVER_ATTEMPTS_CAP)rb   ro   defaultfrom_env_varinstalled_countmax_attempts_from_envs         r=   r   LibMambaSolver._max_attempts  s    zz~~&JKh001(+L(9%
 %q(%:;P:QQ`a  '8G)#	 '&,,%%66? t33_EEN1  %:<.X s   B7 7Cc                N  ^ Uc  Uc  g[         R                  (       a  [         R                  (       a  gSnSn[        R                  R                  [        R                  R                  [         R                  [        5      5      n[        R                  R                  [         R                  S5      n[        [        [        5         [        R                  R                  U5      (       a  [        R                  " U5       H  nUR                  5       (       a  UR                  R!                  S5      (       ay  UR                  R#                  SS5      S   n	U	S:X  aL  [%        UR                  5       n
['        S0 [(        R*                  " U
R-                  5       5      D6nSSS5        OU	S	:X  a  S
nU(       d  M  Uc  M    O   SSS5        U(       d  gUR.                  R0                  nU[2        SSS4;   a  SnUR4                   Vs1 s H  n[7        USU5      iM     nnX;  a  gU S[8         3n[;        U5      m[=        U R>                  [         R@                  5      (       a  [C        U4S jU 5       5      (       a  gURE                  U5      nU(       aa  [G        US S9nSU S3nU(       a  U(       a  SnOUS-  n[I        [K        S[8         SURL                   SU S35      [N        RP                  S9  gg! , (       d  f       GNX= f! , (       d  f       GNP= fs  snf )a{  
We are overriding the base class implementation, which gets called in
Solver.solve_for_diff() once 'link_precs' is available. However, we
are going to call it before (in .solve_final_state(), right after the solve).
That way we can reuse the IndexHelper and SolverOutputState instances we have
around, which contains the channel and env information we need, before losing them.
NFz
conda-metaz.jsonrx  r   r   condaz
conda-selfT@z	<develop>pypidefaultsrJ   z::conda>c              3  F   >#    U  H  nTR                  U5      v   M     g 7frI   )r!  )rK   r   conda_newer_specs     r=   rM   8LibMambaSolver._notify_conda_outdated.<locals>.<genexpr>2  s      Lf#))&11s   !c                ,    [        U R                  5      $ rI   )r   r(  )xs    r=   <lambda>7LibMambaSolver._notify_conda_outdated.<locals>.<lambda>:  s    L<Sr<   )r  zconda update -n base -c z condazconda self updatez --override-frozenzq

                    ==> WARNING: A newer version of conda exists. <==
                        current version: z)
                        latest version: zP

                    Please update conda by running

                        $ z

                    )r   r;   ))r   notify_outdated_condaquietrY   r   existsr   root_prefixr   r   OSErrorrV   lexistsscandiris_filer   endswithr  openr   r   loadsreadr   rJ   r   rS   r   r  r   r   r`   conda_prefixanysearchmaxprintr	   r(  r  stderr)rb   
link_precsr   final_statecurrent_conda_prefix_recconda_self_installedconda_frozen_file_foundconda_meta_prefix_directoryentrypackage_namefchannel_namechnindex_channelsconda_newer_strconda_newer_recordsnewestconda_update_messager  s                     @r=   r   %LibMambaSolver._notify_conda_outdated  s    =[0 ,, $( $"$''..GGLL,,.@A#
 ')ggll73F3F&U#gz*ww:;;ZZ(CDE}}5::+>+>w+G+G',zz'8'8a'@'C'72!%ejj!1Q;G;_$**UVU[U[U]J^;_ 8 "2!1)\9370++0H0T E + ( /77FFOS+vFF%L JOX#'#'7=X- *N(>2BC$_5
 t{{G$8$899LLLL $ll?; ,2STF%=l^6#R &'+>((,@@(* +9)9 :))/(8 9 00 1
 ZZ M "2!1 +*2 Ys7   	B-L6.K>$L>LLL">
LL
L)ra   r\   r}   rB   )returnr_   )r`   r2   rS   Iterable[Channel | str]rB   Iterable[str]rC   Iterable[MatchSpec | str]rD   r  rE   r_   rF   zstr | _Null)rg   zUpdateModifier | _Nullrh   zDepsModifier | _Nullri   bool | _Nullrj   r  rk   r  r   boolr  IndexedSet[PackageRecord])r;   )rS   Iterable[Channel]rn   r  r  r_   )ro   r)   r  list[Channel]rI   )rm   zset[Channel] | Noner  r#  )
rS   r"  rn   r"  rB   r  ro   zSolverInputState | Noner  r$   )ro   r)   r   r*   r   r$   r  r!  )r"   )
ro   r)   r   r*   r   r$   r   r  r  z"tuple[bool, Solution | UnSolvable])ro   r)   r  zRequest.Flags)ro   r)   r   r*   r  zlist[Request.Job])ro   r)   r   r*   r  z$dict[Request, list[MatchSpec | str]])r   r$   r   r*   r   r    r  r*   )r/  r5   r   r$   r  r   )r  r4   r   r3   r  Mapping[str, MatchSpec])
r  r4   r   r$   r   r*   r  r$  r  None)r  r4   r   r3   r   r*   r  r_   )r  r$  r   r_   r  r%  )r  r%  )r  r   )r  MatchSpec | Noner  r&  )r  r   r  r  )r  r   r  r   )r  zstr | Sequence[str]r  r   )ro   r)   r  r  r  r  rt  )r
  zIterable[PackageRecord]r   zLibMambaIndexHelper | Noner  zIterable[PackageRecord] | Noner  r%  ),r  
__module____qualname____firstlineno__r  	_uses_sscstaticmethodr   r>   r   r   rX   r   rv   rs   rt   r   rw   ry   rz   r   r   r   r   r   r   r   rH  classmethodr  r   r   r  rp   r   r"  r  rC  r  r[   r   r   __static_attributes____classcell__)rc   s   @r=   r7   r7   P   s    I
S  S "$2457&#)
)
 *)
 	)

 0)
 3)
 )
 )
 )
Z 37.2"&*%)#(6/6 ,6 	6
 $6 #6 !6 
#6| 9;
#
 6
 
	
.&. %)! 
* x(# 0 	
 * 
 )6
% x(-"- %- #	-
 
#- )-h " % #	
  
,<&&" % 
	8D"D %D 
.	DL(5F	-4(5F	-$" % 	
 
*8
8
 #8
 
	8
~ K
 K
d 7;-- #- %	-
 4- 
-^$*2?P	< 2  
	@*
(((2   G G$!F -16:	h+h *h 4	h
 
h hr<   r7   )`__doc__
__future__r   r   r   rY   r  r  collectionsr   
contextlibr   	functoolsr   inspectr   	itertoolsr   textwrapr	   typingr
   r  r   r  conda.base.constantsr   r   r   r   conda.base.contextr   conda.common.constantsr   conda.common.ior   conda.common.pathr   conda.common.urlr   conda.core.solver   conda.exceptionsr   r   r   conda.models.channelr   conda.models.match_specr   conda.models.recordsr   r   conda.models.versionr   conda.reportersr   libmambapy.solverr   r    libmambapy.solver.libsolvr   libmambapy.specsr  r!   r  
exceptionsr#   r   r$   mamba_utilsr%   r&   r'   r(   stater)   r*   collections.abcr+   r,   r-   boltons.setutilsr.   conda.auxlibr/   r0   r1   r2   r3   r4   r5   	getLoggerr  r   r7   r;   r<   r=   <module>rO     s    #   	 	 
 #        /  ' ' ) ) + # 
 ) - < - ' / = ; '  2 &  7;;+" +>,&
+,AV Ar<   