+
    :1j<                   P   R t ^ RIHt ^ RIt^ RIHtHt ^ RIHt ^ RI	H
t
Ht ^ RIHt ^ RIHt ^ RIHt ^R	IHt ^R
IHtHtHt ^RIHt ^RIHt ^RIHtHt ^RIHt ^RI H!t!H"t"H#t#H$t$H%t%H&t& ^RI'H(t( ^RI)H*t* ^RI+H,t,H-t-H.t.H/t/ ^RI0H1t1 ^RI2H3t3H4t4 ^RI5H6t6 ^RI7H8t8 ^RI9H:t: ]'       d   ^ RI;H<t< ]! ]=4      t>]*P~                  ! RRR]! R4      RR7       ]/t@].t.]P                  ]#]P                  ]$]P                  ]%/tD]]P                  3R l4       tER  tF ! R! R"4      tGR# )#zuLow-level SAT solver wrapper/interface for the classic solver.

See conda.core.solver.Solver for the high-level API.
)annotationsN)defaultdictdeque)cache)DEBUG	getLogger)TYPE_CHECKING)
frozendict)tqdmmemoizemethod)MAX_CHANNEL_PRIORITYChannelPrioritySatSolverChoice)context)on_win)dashlisttime_recorder)groupby_to_dict)TRUEClausesPycoSatSolverPyCryptoSatSolverPySatSolverminimal_unsatisfiable_subset)toposort)
deprecated)CondaDependencyErrorInvalidSpecResolvePackageNotFoundUnsatisfiableError)Channel)
NoarchTypePackageType	MatchSpec)PackageRecord)VersionOrder)Iterablez26.9z27.3	stdoutlogzconda.stdoutlogz/Use `conda.gateways.streams.stdoutlog` instead.)addendumc                   R  p\         V ,          p V! V4       \        P                  RV 4       V#   \         d9   p\        P	                  RT 4       \        P                  RTRR7        Rp?MRp?ii ; i\         P                  4        FT  p T! T4       \        P                  RT 4       Tu #   \         d#   p\        P                  RT T4        Rp?KN  Rp?ii ; i	  \        R	4      h)
c                   \        V R 7      pVP                  4       VP                  4       0pVP                  ! VP                  .VO5!   \	        VP                  4       4      pVP                  V4      '       g   \        RV RV 24      hR# )
sat_solverzWrong SAT solution: z. Required: N)r   new_varRequireAndsetsatissubsetRuntimeError)r.   crequiredsolutions   &   -lib/python3.14/site-packages/conda/resolve.pytry_out_solver+_get_sat_solver_cls.<locals>.try_out_solverH   su    z*IIK-			!%%#(#quuw<  **!5hZ|H:VWW +    z Using SAT solver interface '%s'.z0Could not run SAT solver through interface '%s'.zSAT interface error due to: %sT)exc_infoNz*Falling back to SAT solver interface '%s'.z7Attempted SAT interface '%s' but unavailable due to: %sz@Cannot run solver. No functioning SAT implementations available.)_sat_solverslogdebug	Exceptionwarningvaluesr   )sat_solver_choicer:   r.   es   &   r9   _get_sat_solver_clsrF   F   s    X /0J	z" 			46GH  F>@Q	
 			2A	EE	F #))+

	:& IIBDUV  	III! 	 , J s,   2 A5.A00A5B22C=CCc                    VP                   ^8X  dT   V P                  V4      p^pV'       d7   V^ ,          P                   F  pV\        V4      P                   ,          pK!  	  V# VP                   pV# )zSorting key to emphasize packages that have more strict
requirements. More strict means the reduced index can be reduced
more, so we want to consider these more constrained deps earlier in
reducing the index.
)
strictnessfind_matchesdependsr%   )resolve_objmsprecvaluedeps   &&   r9   exactness_and_number_of_depsrP   l   se     
}}''+Aw3222 ' L Lr<   c                    a  ] tR t^}tR5R ltV 3R ltR6R ltR7R ltR7R ltR7R lt	R t
R tR	 tR6R
 ltR8R ltR tR6R ltR t]R 4       tR t]! ] R7      R9R l4       tR tR R ltR R ltR:R lt]R R l4       tR;R lt]R 4       t]R 4       tR t ]! ] R7      R 4       t!R  t"R! t#R" t$R# t%R$ t&R% t'R& t(R;R' lt)R( R) lt*R* t+R+ t,R, t-R- t.R7R. lt/R<R/ lt0R0 t1R1 t2]! ] R7      R=R2 R3 ll4       t3R4t4V ;t5# )>Resolvec                	   Wn         W0n        V'       d   V P                  V4      M/ V n        \        P
                  V n        \        P                  V n        \        R  VP                  4       4      p\        \        4      pV F  pWF,           Uu. uF  qwP                  '       g   K  VNK  	  ppV'       d   \        P                  RV4       WV&   R WF,           4       p	V	 F-  pVP                    F  p
WZ,          P#                  V4       K  	  K/  	  K  	  W@n        WPn        / V n        / V n        / V n        / V n        / V n        V Uu0 uF:  p\3        VR4      '       g   K  VP4                  \6        P8                  8X  g   K8  VkK<  	  upV n        V P$                  P=                  4        F)  w  rl\?        WP@                  RR7      V P$                  V&   K+  	  R# u upi u upi )c                    V P                   # Nnamexs   &r9   <lambda>"Resolve.__init__.<locals>.<lambda>   s    166r<   z(restricting to unmanageable packages: %sc              3  L   "   T F  qP                   '       g   K  Vx  K  	  R # 5irU   track_features.0rM   s   & r9   	<genexpr>#Resolve.__init__.<locals>.<genexpr>   s     M9L9Ls   $
$package_typeTkeyreverseN)!indexchannels_make_channel_priorities_channel_priorities_mapr   channel_priority_channel_prioritysolver_ignore_timestamps_solver_ignore_timestampsgroupbyrC   r   listis_unmanageabler?   r@   r^   appendgroupstrackers_cached_find_matchesms_depends__reduced_index_cache_pool_cache_strict_channel_cachehasattrrc   r#   VIRTUAL_SYSTEM_system_precsitemssortedversion_key)selfrg   	processedrh   rs   rt   rW   rM   unmanageable_precstf_precsfeature_name_groups   &&&&         r9   __init__Resolve.__init__~   s   
 7?D))(3R 	$ ")!9!9)0)I)I&)5<<>:t$D39<!X<4CWCW$$<!X!		DdK1tMMH $($7$7L*11$7 %8 !   $&!$&!%'" 
>*  NNk&@&@@	 A
  ;;,,.KD &u2B2BD QDKK /? "Y"
s   G(GG!$G!G!c                	d  < \         SV `  4       \        \        V P                  4      4      ,          \        \        V P                  4      4      ,          \        V P                  4      ,          \        V P                  4      ,          \        \        R  V P                  P                  4        4       4      4      ,          \        \        R V P                  P                  4        4       4      4      ,          \        \        R V P                  P                  4        4       4      4      ,          # )c              3  @   "   T F  w  rV\        V4      3x  K  	  R # 5irU   tupler`   kvs   &  r9   ra   #Resolve.__hash__.<locals>.<genexpr>   s     L8Kq%(m8K   c              3  @   "   T F  w  rV\        V4      3x  K  	  R # 5irU   r   r   s   &  r9   ra   r      s     N8Mq%(m8Mr   c              3  @   "   T F  w  rV\        V4      3x  K  	  R # 5irU   r   r   s   &  r9   ra   r      s     Q8Pq%(m8Pr   )super__hash__hash	frozensetrh   r	   rj   rl   rn   rs   r}   rt   rv   )r   	__class__s   &r9   r   Resolve.__hash__   s    G9T]]+,-:d::;<= 4))*+ 4112	3
 :L8I8I8KLLMN :N8K8K8MNNOP :Q8H8H8N8N8PQQRS		
r<   c                	`   Vf   / pMVP                  4        TP                  V P                  P                  4        Uu/ uF  p\        P
                  ! V4      RbK  	  up4       V'       d7   TP                  V Uu/ uF  p\        P
                  ! V4      RbK  	  up4       V# u upi u upi )NFT)clearupdatert   keysr&   feature)r   featuresfilterrW   s   &&& r9   default_filterResolve.default_filter   s    >FLLN<@MM<N<N<PQ<PD]""4(%/<PQ	
 MMR=006<RS	 R Ss    B&= B+c                N   a aaaa VV3R lpVV V3R loVV V3R loV! V4      pV# )a  Tests if a package, MatchSpec, or a list of both has satisfiable
dependencies, assuming cyclic dependencies are always valid.

Args:
    spec_or_prec: a package record, a MatchSpec, or an iterable of these.
    filter: a dictionary of (fkey,valid) pairs, used to consider a subset
        of dependencies, and to eliminate repeated searches.
    optional: if True (default), do not enforce optional specifications
        when considering validity. If False, enforce them.

Returns:
    True if the full set of dependencies can be satisfied; False otherwise.
    If filter is supplied and update is True, it will be updated with the
    search results.
c                P   < \        V \        4      '       d	   S! V 4      # S! V 4      # rU   
isinstancer%   )specv_fkey_v_ms_s   &r9   v_Resolve.valid.<locals>.v_   s"    ",T9"="=5;P74=Pr<   c                   < S;'       d    V P                   ;'       gY    \        ;QJ d.    V3R  lSP                  V 4       4       F  '       g   K   R# 	  R# ! V3R  lSP                  V 4       4       4      # )c              3  4   <"   T F  pS! V4      x  K  	  R # 5irU    )r`   fkeyr   s   & r9   ra   /Resolve.valid.<locals>.v_ms_.<locals>.<genexpr>   s     G1Fwt}}1F   TFoptionalanyrI   )rL   r   r   r   s   &r9   r   Resolve.valid.<locals>.v_ms_   sn        KKH H3G1B1B21FG33  G1B1B21FGGr<   c                  < SP                  V 4      pVfY   RSV &    SP                  V 4      p\        ;QJ d    V3R lV 4       F  '       d   K   RM	  RM! V3R lV 4       4      ;pSV &   V# V#   \         d    R;pST &    T# i ; i)NTc              3  4   <"   T F  pS! V4      x  K  	  R # 5irU   r   )r`   rL   r   s   & r9   ra   1Resolve.valid.<locals>.v_fkey_.<locals>.<genexpr>   s     ,I2U2YYr   F)get
ms_dependsallr   )rM   valrJ   r   r   r   s   &  r9   r   Resolve.valid.<locals>.v_fkey_   s    **T"C{#tJ"ood3G *-,I,I,I,I)IIC&,J3J	 # /)..C&, J	/s   A1 1BBr   )r   spec_or_precr   r   r   resultr   r   s   f&ff  @@r9   validResolve.valid   s$    "	Q	
	 L!r<   c                	\   a aaaa VV3R  lp\         VVV 3R l4       oVVV 3R loV! V4      # )c                P   < \        V \        4      '       d	   S! V 4      # S! V 4      # rU   r   )_spec_or_precis_valid_precis_valid_specs   &r9   is_valid Resolve.valid2.<locals>.is_valid   s&    -33$]33$]33r<   c                   < S;'       d    V P                   ;'       gY    \        ;QJ d.    V3R  lSP                  V 4       4       F  '       g   K   R# 	  R# ! V3R  lSP                  V 4       4       4      # )c              3  4   <"   T F  pS! V4      x  K  	  R # 5irU   r   )r`   _precr   s   & r9   ra   8Resolve.valid2.<locals>.is_valid_spec.<locals>.<genexpr>   s     R9Q}U++9Qr   TFr   )_specr   r   r   s   &r9   r   %Resolve.valid2.<locals>.is_valid_spec   sp      # #NNS S3R9J9J59QR33  R9J9J59QRRr<   c                d  < SP                  V 4      pVfw   RSV &    \        ;QJ d.    V3R lSP                  V 4       4       F  '       d   K   RM#	  RM! V3R lSP                  V 4       4       4      pV'       d   RMR;pSV &   V'       * # V'       * #   \         d    R;pST &    T'       * # i ; i)NFc              3  4   <"   T F  pS! V4      x  K  	  R # 5irU   r   )r`   rL   r   s   & r9   ra   8Resolve.valid2.<locals>.is_valid_prec.<locals>.<genexpr>  s      )4Ibb))4Ir   Tzinvalid depends specszinvalid dep specs)r   r   r   r   )rM   r   has_valid_deps
filter_outr   r   s   &  r9   r   %Resolve.valid2.<locals>.is_valid_prec   s    ..&C{#(
4 	%(S )48OOD4I)SSS )48OOD4I) &N "05LC*T* 7Ns7N # A-@@C*T*
 7NAs   
B #B 'B B/.B/r   )r   r   r   r   r   r   r   s   f&ff @@r9   valid2Resolve.valid2   s.    	4 
	 
		  %%r<   c                >   a aaa VVVV 3R loS! V\        4       4      # )a  Constructs a set of 'dependency chains' for invalid specs.

A dependency chain is a tuple of MatchSpec objects, starting with
the requested spec, proceeding down the dependency tree, ending at
a specification that cannot be satisfied.

Args:
    spec: a package key or MatchSpec
    filter: a dictionary of (prec, valid) pairs to be used when
        testing for package validity.

Returns:
    A tuple of tuples, empty if the MatchSpec is valid.
c              3    <"   V P                   V9   d   R # VP                  V P                   4       SP                  V SS4      '       d   R # SP                  V 4      pRp\	        4       pV FI  pSP                  V4       F1  pS
! Wa4       F  pRpV 3V,           x  K  	  VP                  V4       K3  	  KK  	  V'       gG   \        R V4      pVP                  4        F#  p	V 3\        P                  ! V	4      ,           x  K%  	  R # R # 5i)NFTc                    V P                   # rU   rV   rX   s   &r9   rZ   9Resolve.invalid_chains.<locals>.chains_.<locals>.<lambda>4  s    AFFr<   )
rW   addr   rI   r2   r   ro   rC   r%   union)r   namesprecsfoundconflict_depsrM   m2rY   conflict_groupsr   chains_r   r   r   s   &&        r9   r   'Resolve.invalid_chains.<locals>.chains_"  s     yyE!IIdii zz$11%%d+EEEM//$/B$R/ $#gk) 0 &))"- 0  ")*:M"J,335E'IOOE$::: 6 s   AD	A5D	AD	)r2   )r   r   r   r   r   s   f&ff@r9   invalid_chainsResolve.invalid_chains  s     	; 	;, tSU##r<   c                "  a  . p. p\        4       pV F@  pVP                  R4      pV'       d   VP                  V4       K/  VP                  V4       KB  	  VP	                  V 3R lV 4       4       V'       d   \        V4      h\        V4      V3# )a  Perform a quick verification that specs and dependencies are reasonable.

Args:
    specs: An iterable of strings or MatchSpec objects to be tested.

Returns:
    Nothing, but if there is a conflict, an error is thrown.

Note that this does not attempt to resolve circular dependencies.
r^   c              3     <"   T F5  pVP                   '       d   K  SP                  V4      '       d   K0  V3x  K7  	  R # 5irU   )r   rI   )r`   r   r   s   & r9   ra   'Resolve.verify_specs.<locals>.<genexpr>N  s6      
$MM *.*;*;D*A TG$s   A A A )r2   get_exact_valuer   rr   extendr   r   )r   specsnon_tf_specsbad_depsfeature_namesrL   _feature_namess   f&     r9   verify_specsResolve.verify_specs:  s     B//0@AN$$^4##B'  	 
$
 	

 (22\"M11r<   c                	  a R \        4       R\        4       R\        4       R\        4       /pT;'       g    .  Uu0 uF  p\        V4      kK  	  ppT;'       g    .  Uu0 uF  p\        V4      kK  	  ppV EFw  o\        S4      ^8  Edg   SR,          P                  R 8X  EdN   \        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       Eg   \        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   V Uu. uF%  qf^ ,          P                  R 8X  g   K  V^ ,          NK'  	  ppV'       d   V^ ,          p\        V P                  V4      4      \        V P                  SR,          4      4      ,          '       gK   VR ,          P                  \        S^ ,          SR,          .4      \        \        VRR	7      4      34       EKu  EKx  EK{  SR,          P                  P                  R
4      '       d   V P                   Uu. uF(  qfP                  SR,          P                  8X  g   K&  VNK*  	  p	pV	'       d   V	^ ,          P                  MRp
VR,          P                  \        S4      V
34       EK$  S^ ,          V9   d   RpV F`  pVP                  SR,          P                  8X  g   K'  VR,          P                  \        S4      \        \        VRR	7      4      34       RpKb  	  V'       gB   VR,          P                  \        S4      \        \        S^ ,          RR	7      4      34       EK  EK  \        S4      ^8  gD   \        ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      '       g   EK9  VR,          P                  \        S4      \        \        S^ ,          RR	7      4      34       EKz  	  VR ,          '       dT   VR,           Uu. uF<  pV^,          P                  R4      '       g   \        V^ ,          4      ^8  g   K:  VNK>  	  upVR&   V# u upi u upi u upi u upi u upi )pythonrequest_conflict_with_historydirectvirtual_packagec              3  >   "   T F  qP                   R 8H  x  K  	  R# 5i)r   NrV   r`   r   s   & r9   ra   -Resolve._classify_bad_deps.<locals>.<genexpr>g  s     E1FFh.s   TFc              3  f   "   T F'  q^ ,          P                   R8X  g   K  V^ ,          x  K)  	  R# 5i)    r   NrV   r   s   & r9   ra   r   h  s%     HhA$))x2G!hs   11N)target__znot availablec              3  v   <"   T F.  p\        V4      ^8  ;'       d    V^ ,          S^ ,          8H  x  K0  	  R# 5i)   Nlen)r`   r6   chains   & r9   ra   r     s4      )>FCFaK44AaDE!H$44hs   99zpython )r2   r%   r  rW   r   rI   r   r   str
startswithr|   version)r   r   specs_to_addhistory_specsstrict_channel_priorityclassesr   python_first_specspython_specr  virtual_package_versionmatchr   r  s   &&&&&        @r9   _classify_bad_depsResolve._classify_bad_depsW  s    ce+SUcesu	
 /;.@.@b.@A.@	!.@A/</B/B/BC/B!1/BCE E
Q"INNh.EEEEEECHhHCCCHhHHH4<%VHq!		X@UdaddH"%V%"4Q"7KD--k:;d//b	:;< <  )-- %uQxr&; < #Ik$$G H< & r**400&*&8&8U&8FFeBinn<T11&8U*1GAJ&& ( )*..e>U/VWq\))DyyE"INN2 ?@DD"5\3yd/K+LM !% * H%))us9U1Xd+K'LM 
 u:>SS )>F)SSS )>F) & & H%))us9U1Xd+K'LMY ` 8 !*!*AQ4??9--QqTQ *!GH
 s BC &W V8!s5   QQQ ;Q '#Q%Q%"Q*/Q*Q*c                	   a V P                  V4      pV'       g   V# V P                  VP                  4      o\        ;QJ d    . V3R  lV 4       F  NK  	  5# ! V3R  lV 4       4      # )c              3  `   <"   T F#  qP                   P                  S8X  g   K  Vx  K%  	  R # 5irU   channelrW   )r`   fsole_source_channel_names   & r9   ra   3Resolve.find_matches_with_strict.<locals>.<genexpr>  s!     V199>>=U+UQQs   .
.)rI   _get_strict_channelrW   r   )r   rL   r
  matchesr  s   &&& @r9   find_matches_with_strict Resolve.find_matches_with_strict  sR    ##B'&N#'#;#;BGG#D uVVuVuVVVVr<   c                	    \         P                  '       d5   \         P                  '       g   \        R 4       V P	                  WV4      pM/ p\         P
                  \        P                  8H  p\        WER7      h)zk
Found conflicts! Looking for incompatible packages.
This can take several minutes.  Press CTRL-C to abort.)strict)	r   unsatisfiable_hintsjsonprintbuild_conflict_maprk   r   STRICTr    )r   r   r  r	  r   r
  s   &&&&  r9   find_conflictsResolve.find_conflicts  s`    &&&<<<M ..uMRHH")":":o>T>T"T JJr<   c                  a . pVP                  V.4       . p. pV'       Ed   VP                  ^ 4      oSR,          pW9   d   K+  VP                  V4       VP                  V8X  d   \        V4      ^ 8X  d   VP                  S4       \        VR,          4      \        S4      8X  dA   \        P
                  ! SR,          VR,          R,          34      ^ ,          p	WR,          R&   MVP                  S4       \        V4      V8H  ;'       d;    \        ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      p
\        V4      ^ 8X  g	   V
'       d   V# TpS^ R  F  pW,          pK  	  VP                  V/ 4       Uu. uF  qNK  	  ppVf   EK  V FB  p\        V4      V8  g   K  \        S4      pVP                  V4       VP                  V4       KD  	  EK  V# u upi )z1Return shorted path from root_spec to target_namec              3  R   <"   T F  p\        V4      \        S4      8g  x  K  	  R # 5irU   r  )r`   r   paths   & r9   ra   =Resolve.breadth_first_search_for_dep_graph.<locals>.<genexpr>  s"      M16ACFc$i's   $'TFr  )	rr   poprW   r  r%   r   r   r   rp   )r   	root_spectarget_name	dep_graphnum_targetsqueuevisitedtarget_pathsnode	last_specfound_all_targets	sub_graphpr   childrenadjnew_pathr(  s   &&&&&            @r9   "breadth_first_search_for_dep_graph*Resolve.breadth_first_search_for_dep_graph  s    i[!e99Q<D8DNN4 yyK'|$) ''-|B'(CI5 )b<;KB;O0P QRS TI+4$R( ''-$'$5$D % % M16M M16M J! u:?&7''!I!BZ%L	  #,==r#:;#:a#:H;|${2#DzHOOC(LL*	  
  <s   
G-c                	$   V/ /p\        4       pV..pV'       d   VP                  ^ 4      pTpV F  pWg,          pK  	  VR,          pV P                  V4      p	V	 F  p
\        V
P                  4      ^ 8  g   K  V
P                   F  p\        V4      pVP                  V/ /4       VP                  V4       \        V4      pVP                  V4       \        V4      \        P                  8:  g   Kn  VP                  V4       K  	  K  	  K  W#3# )r   r  )r2   r*  rI   r  rJ   r%   r   r   rp   rr   r   unsatisfiable_hints_check_depth)r   r   r-  all_depsr/  r(  r5  r6  parent_noder  matinew_noder9  s   &&            r9   build_graph_of_depsResolve.build_graph_of_deps  s    2J	599Q<D!I%L	 r(K''4Gs{{#a' [[#,Q<!(((B8 X.#': 1x=G,S,SS!LL2 )  ""r<   c                  a \         P                  \        P                  8H  p\	        V4      T;'       g    \	        4       ,          pV Uu0 uF'  qUP
                  P                  R4      '       d   K%  VkK)  	  pp\        V4      ^8X  dU   V P                  \        \        V4      4      4      p\        V4      ^8X  d"   \	        V P                  V^ ,          4      4      pTP                  V P                   Uu0 uF  qwP                  4       kK  	  up4       V F  pV P                  V34       K  	  / p/ p	\!        \        V4      RR\         P"                  R7      ;_uu_ 4       p
V F  pV
P%                  RV 24       V
P                  4        V P'                  V4      w  rVP                  V4       V	P)                  VP
                  4      '       d#   WP
                  ,          P+                  V4       MV.WP
                  &   V FV  pV	P)                  VP
                  4      '       d$   WP
                  ,          P+                  V4       KG  V.WP
                  &   KX  	  K  	  RRR4       . p/ pV	P-                  4        F  w  op\/        V4      p\        V4      ^8  d6   VP)                  V4      f	   S.VV&   K<  VV,          P+                  S4       KV  SP                  R4      '       g   Ko  \0        ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      '       g   K  S.VV&   K  	  \!        \        V4      R	R\         P"                  R7      ;_uu_ 4       p
VP-                  4        EF  w  ppV
P%                  R
P3                  RP5                  R V 4       4      4      4       V
P                  4        V Uu. uF  qwNK  	  pp. pRp\/        V4      P7                  V Uu0 uF  qwP
                  kK  	  up4      pV'       d   TP+                  V Uu. uF  qwP
                  V9   g   K  VNK  	  up4       VR,          ^ ,          pV Fc  pVV^ ,          ^ ,          8w  g   K  VP
                  pV	V,          P9                  V4      pV P;                  VVVV4      pVP=                  V4       Ke  	  EKK  V F}  pV	V,          P9                  V^ ,          4      pV P;                  V^ ,          VVV4      pVP=                  V4       \        V4      ^ 8X  g   \        V4      \        V4      8  g   Ky  TpTpK  	  VR,           F@  pV	V,          P9                  V4      pV P;                  VVVV4      pVP=                  V4       KB  	  EK  	  RRR4       V P?                  WW44      pV# u upi u upi   + '       g   i     ELe; iu upi u upi u upi   + '       g   i     LQ; i)a  Perform a deeper analysis on conflicting specifications, by attempting
to find the common dependencies that might be the cause of conflicts.

Args:
    specs: An iterable of strings or MatchSpec objects to be tested.
    It is assumed that the specs conflict.

Returns:
    bad_deps: A list of lists of bad deps

Strategy:
    If we're here, we know that the specs conflict. This could be because:
    - One spec conflicts with another; e.g.
          ['numpy 1.5*', 'numpy >=1.6']
    - One spec conflicts with a dependency of another; e.g.
          ['numpy 1.5*', 'scipy 0.12.0b1']
    - Each spec depends on *the same package* but in a different way; e.g.,
          ['A', 'B'] where A depends on numpy 1.5, and B on numpy 1.6.
    Technically, all three of these cases can be boiled down to the last
    one if we treat the spec itself as one of the "dependencies". There
    might be more complex reasons for a conflict, but this code only
    considers the ones above.

    The purpose of this code, then, is to identify packages (like numpy
    above) that all of the specs depend on *but in different ways*. We
    then identify the dependency chains that lead to those packages.
r   zBuilding graph of depsF)totaldescleavedisablez
Examining Nc              3  L   <"   T F  qP                   S8w  g   K  Vx  K  	  R # 5irU   rV   )r`   sr   s   & r9   ra   -Resolve.build_conflict_map.<locals>.<genexpr><  s     +Lu!!AAu   $
$TzDetermining conflictszExamining conflict for {} c              3  8   "   T F  qP                   x  K  	  R # 5irU   rV   r   s   & r9   ra   rL  G  s     ?VPU1PU   :r   NNr  ) r   rk   r   r#  r2   rW   r  r  rI   nextiterr   r   r|   to_match_spec_get_package_poolr
   r   set_descriptionrC  r   rr   r}   r   r   formatjoinintersectioncountr:  r   r  ) r   r   r  r	  r
  r   r  r   r-  dep_listtdep_graph_for_specall_deps_for_specrO   chainsconflicting_pkgs_pkgsr   set_vrootsnodeslrootscurrent_shortest_chainshortest_noderequested_spec_unsatrootsearch_nodenum_occurancesr6   r2  r  r   r   s    &&&&                           @r9   r"  Resolve.build_conflict_map  s   < #*":":o>T>T"TE
l33ce4"'J%$yy/C/CD/I%Ju:?''T%[(9:G7|q DOOGAJ781C1CD1CAoo'1CDED""D7+  	e*)LL	
 

 !!Jtf"56
8<8P8PQU8V5"  !34<<		**YY'..t4+/&HYY',C||CHH-- *11$7.2V*	 - 
*  "NN$DAqaLE5zA~(,,U3;453)%0)%077:d##+Lu+L+Lu+L(L(L01s%e, % e*(LL	
 

  5 ; ; =u!!/66sxx?VPU?V7VW 
%*+U!U+)+& $'0'7'D'D%*+UVVU+($ (MMe"VevvAU7U11e"VW$*2JqMM %6!9Q</*7*<*<K-5k-B-H-H-NN $ G G $k9n!A #MM!, !& !&)1$)=)=fQi)H $ G G"1ItY! e,56!;s5zC2M @ 6;2,0M !& !'r

)1-)@)F)Ft)L CC -N a( !+E !>
^ **-
 A K
 E
 
 
\ , , #W%
 
sp   "V52V57V:#D V?(A"W"

W
W"2WW"W"$W;W.W"4CW"?AW"?W	W""W2	c                	   R p V P                   V,          pV#   \         d    YP                  9   d   T P                  T,           Uu0 uF  q3P                  P                  kK  	  Mu upi ppT Uu/ uF   pT P
                  P                  T^4      TbK"  	  Mu upi pp\        T4      ^ ,          pTT,          ;q P                   T&    T# i ; irU   )ry   KeyErrorrs   r  rW   rj   r   r~   )r   package_namechannel_namerM   all_channel_namescnby_cphighest_prioritys   &&      r9   r  Resolve._get_strict_channels  s    	55lCL    	{{*26++l2K%2K$LL%%2K%! %
 0/ 0044R;R?/  $*%=$  KP$K 99,G 	s'    0C	A('C3&B1CCc                V    V'       g   R# VP                   V^ ,          P                   8  # )zIPrevent introduction of matchspecs that broaden our selection of choices.F)rH   )r   rL   specs_by_names   &&&r9   _broaderResolve._broader  s$     }}}Q/::::r<   c                	$   \        V4      pWP                  9   d   V P                  V,          pV# V P                  V4      p\        R  V4      pVP	                  4        UUu/ uF  w  rEV\        V4      bK  	  pppW P                  V&   V# u uppi )c                    V P                   # rU   rV   rX   s   &r9   rZ   +Resolve._get_package_pool.<locals>.<lambda>  s    QVVr<   )r   rx   get_reduced_indexro   r}   r2   )r   r   poolgrouped_poolr   r   s   &&    r9   rT  Resolve._get_package_pool  s    % $$$##E*D 	 ))%0D"#3T:L*6*<*<*>?*>$!As1vI*>D?&*U# @s   "B)module_namec                	J  a aaaaaa a!a"a# \         P                  \        P                  8H  o"S"\	        V4      3pVS P
                  9   d   S P
                  V,          # \        P                  \        4      '       d0   \        P                  R \        \        R V 4       4      4      4       S P                  V4      w  rS P                  V4      P                  4        UUu/ uF  w  rgYg'       d   RMRbK  	  uppo\        4       o Ro#\        4       oV'       d   \        \!        V4      V 3R lRR7      p\	        V4      p/ oV FS  pSP#                  VP$                  \        4       4      \        S P'                  V4      4      ,          SVP$                  &   KU  	  VVVVV V V"V#3R lo\        4       p	\)        ^4       Fk  p
S P+                  4        \-        V4      pV'       g   K(  VP/                  4       pS! V.4      '       d   VP1                  V4       K<  V	P3                  V4       KO  	  V	'       d   V'       d   / # R	 V 4        Uu/ uF  qfVbK  	  upo/ pV F3  pVP#                  VP$                  . 4      V.,           WP$                  &   K5  	  V EF  p\        ;QJ d(    . VVV 3R
 lS P'                  V4       4       F  NK  	  5M!! VVV 3R
 lS P'                  V4       4       4      pS"'       d]   V'       dU   S P5                  V^ ,          P$                  4      o!\        ;QJ d    . V!3R lV 4       F  NK  	  5M! V!3R lV 4       4      pSP7                  R V 4       4       V EF  p\        4       pVP                  4        UUu/ uF  w  ppVVR,          bK  	  ppp\        S P9                  V4      4      pV Fq  pVP#                  VP$                  . 4      pVV9  d=   V'       d#   VP:                  V^ ,          P:                  8  d   VP=                  ^ V4       VVVP$                  &   Ks  	  V'       g   K  VP?                  4       pVP3                  V4       V3R lS P'                  V4       4        F  pS PA                  VS4      '       g   K  S"'       d7   S P5                  VP$                  4      VPB                  P$                  8X  g   K[  VSV&   \        S P9                  V4      4      V,
          pV Fi  pRV9  dO   S PE                  V\	        VP#                  VP$                  R4      4      4      '       g   VP3                  V4       KX  VP3                  V4       Kk  	  K  	  EK=  	  EK  	  \G        S4      oSS P
                  V&   S# u uppi u upi u uppi )zRetrieving packages for: %sc              3  8   "   T F  p\        V4      x  K  	  R # 5irU   r  r`   rK  s   & r9   ra   ,Resolve.get_reduced_index.<locals>.<genexpr>  s     ?1ArP  Fzfeature not enabledNc                <   < \        SV 4      V P                  4       3# rU   )rP   dist_str)rY   r   s   &r9   rZ   +Resolve.get_reduced_index.<locals>.<lambda>  s    ;D!DajjlSr<   Trd   c                .  < \        \        V 4      4      P                  pSP                  P	                  VR4      pV'       d]   S'       dU   VS9  dN   SP                  V4      pV F%  pVP                  P                  V8w  g   K   R SV&   K'  	  SP                  V4       ^ ;rVV EFW  pSP                  VR4      '       d   K  V^,          pSP                  W4      '       d&   SP	                  V4      '       d   VSV,          9  d   RS 2SV&   Km  \        4       pSP                  V4       F  pVP                  '       d   K  \        ;QJ d.    V3R lSP                  V4       4       F  '       g   K   RM#	  RM! V3R lSP                  V4       4       4      '       d   Kw  VP                  V4       K  	  V'       d.   RP                  RP!                  R V 4       4      4      SV&   EKI  RSV&   V^,          pEKZ  	  We8  p	V	'       d   \"        P%                  RWV3,          4       \        ;QJ d    R	 V  4       F  '       g   K   RM	  RM! R	 V  4       4      '       d   V	# V^ 8X  d   R
# V	'       g   VS9  d   SP                  V4       \'        R VV3R lV 4       4      p
V
P)                  RR
4       \+        V
P-                  4       R R7       F;  w  r\/        V4      V8  g   K  S! \        V4      4      pV'       d   Rp	K4  Ve   K:   R
# 	  V	# )z&removed due to strict channel priorityFz incompatible with required spec c              3  \   <"   T F!  pSP                  VR 4      '       d   K  Vx  K#  	  R# 5iFN)r   )r`   recr   s   & r9   ra   BResolve.get_reduced_index.<locals>.filter_group.<locals>.<genexpr>  s(      7'<#->>#u#=  C'<s   ,
,Tzunsatisfiable dependencies {}rN  c              3  8   "   T F  p\        V4      x  K  	  R # 5irU   r  r  s   & r9   ra   r    s     $M5LSVV5LrP  z%s: pruned from %d -> %dc              3  8   "   T F  qP                   x  K  	  R # 5irU   r   )r`   rL   s   & r9   ra   r    s     02;;rP  Nc                    V P                   # rU   rV   )rK  s   &r9   rZ   AResolve.get_reduced_index.<locals>.filter_group.<locals>.<lambda>   s    affr<   c              3     <"   T FM  pSP                  VR 4      '       d   K  SP                  V4       F  pVP                  '       d   K  Vx  K  	  KO  	  R# 5ir  )r   r   r   )r`   rM   dep_specr   r   s   &  r9   ra   r    sP      $)D)~~dE: ! )-(=H'00	 ! )> !$)s   A#A
A*c                    \         ;QJ d#    R  V ^,           4       F  '       g   K   R# 	  R# ! R  V ^,           4       4      # )c              3  8   "   T F  qP                   x  K  	  R # 5irU   r  r   s   & r9   ra   TResolve.get_reduced_index.<locals>.filter_group.<locals>.<lambda>.<locals>.<genexpr>  s     9Sd**drP  TFr   rX   s   &r9   rZ   r    s1    cc9SaPQd9Scc6Sc6Sc9SaPQd9S6Sr<   re   r   )rQ  rR  rW   rs   r   r  r  r   
setdefault	match_anyr2   r   r   r   rI   rV  rW  r?   r@   ro   r*  r~   r}   r  )_specsrW   r   r  rM   noldnnewunsatisfiable_dep_specsrL   reduced
_dep_specs	deps_namedepsrescp_filter_appliedexplicit_spec_package_poolfilter_groupr   r   snamesr
  top_level_specs   &             r9   r  /Resolve.get_reduced_index.<locals>.filter_group  s   V%**DKKOOD"-E 0TAR5R+/+C+CD+I(!D||((,DD+S
4( " "%%d+ OD!,,T599AID NN688266t<< (B4(HH ?~>NO #4( !.1e+"ood3!{{{33 7'+'8'8'<7333 7'+'8'8'<7 4 4
 477; 4 /+J+Q+QHH$M5L$MM,
4( !',Jt$AID3 6 kG		4D7IIJs00sss0000 $f,

4 $$$)	
 sD)'-$$&,S(OI 4yD(*3t95&*G [#'( Nr<   c              3  N   "   T F  p\         P                  ! V4      x  K  	  R # 5irU   )r&   r   )r`   rW   s   & r9   ra   r  -  s     #UHDM$9$9$$?$?Hs   #%c              3  n   <"   T F*  pVS9  g   K  SP                  VS4      '       g   K&  Vx  K,  	  R # 5irU   )r   )r`   rM   r   reduced_index2r   s   & r9   ra   r  3  s5      %<D~- 26++dJ2O <s   	55
5c              3  b   <"   T F$  pVP                   P                  S8X  g   K   Vx  K&  	  R # 5irU   r  )r`   rM   strict_channel_names   & r9   ra   r  <  s-      ) 0||((,?? D 0s   /
/c              3  (   "   T F  qV3x  K
  	  R # 5irU   r   r_   s   & r9   ra   r  A  s     !L;K4,;Ks   :NNNc              3  8   <"   T F  qS9  g   K  Vx  K  	  R # 5irU   r   )r`   r   r  s   & r9   ra   r  Z  s      $#8a^<S#8s   
r^   r   )$r   rk   r   r#  r   rw   r?   isEnabledForr   r@   r   r~   r   r   r}   r2   rp   r   rW   rI   ranger   r   popleftrr   r   r  r   r   rH   insertr*  r   r  rv  r	   )$r   explicit_specssort_by_exactnessexit_on_conflict	cache_keyr   rM   r   rK  pruned_to_zeror   slistspecs_by_name_seedexplicit_specadd_these_precs2pkg
seen_specsr   r   ru  	dep_specsrO   r   rL   dep_pkg	new_specsnew_msr  r  r  r   r  r  r  r
  r  s$   f&&&                       @@@@@@@@@r9   r{  Resolve.get_reduced_index  s    #*":":o>T>T"T+U>-BB	111,,Y77E""II-???@
 $(#4#4^#D  "00:@@B
B	 3%$99B

 E $^$SN ~.%'"A1K1O1O2D%%a()2*&qvv.  
S	 S	t qALLN.)E%MMO$$LLO"&&q)  .I $VH#U
#U4$J#U
  A);)?)?)Kqc)Qvv&  +M$u % --m<%uu % --m<%   '+;&*&>&>?OPQ?R?W?W&X##(5 ) 0)55 ) 0) $ 
 !!!L;K!LL'
 !U
5G5M5M5O P5OTQAaD5O P 45	$C)--chh;E%'!S^^uQx7J7J%JQ,.3M#((+ %  i #BNN2&$#'#4#4R#8$  ${{7J??$  7 44W\\B&334 7>N73 ),DOOG,D(E
(RI*3 $46#A$--$*$)-*;*;FKK*L$MK" K" %.MM&$9 %/NN6$:# +4!$/ (# ,d $N3/=!!),w
B
: !Qs    VV
V
c                	x   a \         ;QJ d    V3R  lV 4       F  '       g   K   R# 	  R# ! V3R  lV 4       4      # )c              3  D   <"   T F  qP                  S4      x  K  	  R # 5irU   r  )r`   rL   rM   s   & r9   ra   $Resolve.match_any.<locals>.<genexpr>  s     0Cb88D>>Cs    TFr  )r   mssrM   s   &&fr9   r  Resolve.match_any  s,    s0C0ss0s0s0C000r<   c                    V ^8  d   QhRRRR/# )   r   r%   returnztuple[PackageRecord]r   )rV  s   "r9   __annotate__Resolve.__annotate__  s       /C r<   c                	  a a S P                   P                  SR 4      pVe   V# SP                  R4      pV'       d   S P                  P                  VR4      pMlSP                  R4      '       d<   SP                  R4      p\        P
                  P                  V 3R lV 4       4      pMS P                  P                  4       p\        ;QJ d    . V3R lV 4       F  NK  	  5M! V3R lV 4       4      pVS P                   S&   V# )NrW   r^   c              3  \   <"   T F!  pSP                   P                  VR4      x  K#  	  R # 5i)Nr   )rt   r   )r`   r   r   s   & r9   ra   'Resolve.find_matches.<locals>.<genexpr>  s(      <HU!!,33s   ),c              3  Z   <"   T F   pSP                  V4      '       g   K  Vx  K"  	  R # 5irU   r  )r`   r6  r   s   & r9   ra   r    s     @!$**Q-AAs   +
+r   )
ru   r   r   rs   	itertoolsr  from_iterablerg   rC   r   )r   r   r  	spec_namecandidate_precsr   s   ff    r9   rI   Resolve.find_matches  s    ''++D$7?J((0	"kkooi<O!!"233 001ABM'oo;; <HU< O #jj//1Oe@@ee@@@*-!!$'
r<   c                    V ^8  d   QhRRRR/# )r  rM   r&   r  zlist[MatchSpec]r   )rV  s   "r9   r  r    s      }  r<   c                	    V P                   P                  V4      pVfU   VP                   Uu. uF  p\        V4      NK  	  ppVP	                  R VP
                   4       4       W P                   V&   V# u upi )Nc              3  :   "   T F  p\        VR 7      x  K  	  R# 5i)r]   Nr$   )r`   feats   & r9   ra   %Resolve.ms_depends.<locals>.<genexpr>  s     Q=4	66=s   )rv   r   combined_dependsr%   r   r   )r   rM   r  ds   &&  r9   r   Resolve.ms_depends  sl    ##D)<*.*?*?@*?QIaL*?D@KKQ4==QQ%)T" As   A6c                	   VP                   pV P                  P                  VP                  ^4      pV\        8  d   ^M^ p\        VP                  RR4      4      pVP                  R^ 4      pVP                  R4      p\        VP                  R8H  4      ) p	V P                  \        P                  8w  d   WT) WgV	.p
MWVV) Wy.p
V P                  '       d   V
P                  V4       V
# V
P                  VP                  R^ 4      V34       V
# )r   r   build_numberbuildnoarch	timestamp)r  rj   r   rW   r   r'   intsubdirrl   r   DISABLEDrn   rr   r   )r   rM   vtyper  rk   r   version_comparatorr  build_stringr  vkeys   &&&        r9   r   Resolve.version_key  s    ,,77;;LL!
 &(<<!)$((9b*ABxx2xx(dkkX-..!!_%=%==,.@PVWD0@/@,WD)))KK%  KK+q1<@Ar<   c                    V ^8  d   QhRRRR/# )r  rh   zIterable[Channel | str]r  zdict[str, int]r   )rV  s   "r9   r  r    s      +B ~ r<   c                	    / p R  V  4       p\        V4       F&  w  r4WA9   d   K  \        V\        ^,
          4      W&   K(  	  V# )c              3  p   "   T F,  p\        V4      P                   F  q"P                  x  K  	  K.  	  R # 5irU   )r!   rh   rW   )r`   rW   r  s   &  r9   ra   3Resolve._make_channel_priorities.<locals>.<genexpr>  s(      
%-TWT]=S=S'LL=SLXs   46)	enumerateminr   )rh   priorities_mapchannel_namespriority_counterrn  s   &    r9   ri    Resolve._make_channel_priorities  sZ    	 
%-
 /8.F*-+. "6":,N( /G r<   c                	    \        V4      pV P                  V4      pV'       g   V'       g   \        V3.4      h\        W0P                  R 7      # )r  )r%   rI   r   r~   r   )r   rL   emptyokr   s   &&& r9   get_pkgsResolve.get_pkgs  s@    r]!!"%W(2%11e!1!122r<   c                	    \        V \        4      '       d   V P                  4       # \        V \        4      '       d4   R \	        V 4      ,           V P
                  '       d	   R,           # R,           # \        4       h)z@s@?r  )r   r&   r  r%   r  r   NotImplementedError)r   s   &r9   to_sat_nameResolve.to_sat_name  sW     c=))<<>!Y''3s8#clllsCCCC%''r<   c                	    R V  RV 2# )z@fm@@r   )prec_dist_strr  s   &&r9   to_feature_metric_idResolve.to_feature_metric_id  s    m_AdV,,r<   c                	   \        V4      pV P                  V4      pVP                  V4      pVe   V# VP                  4       pVP	                  R4      p\        R R VP	                  R4      ;'       g    R 4        4       4      pV'       d   V P                  P                  V. 4      ;rMmV'       dI   \        V4      ^8w  d   \        h\        \        V4      4      p
V P                  P                  V
. 4      ;rMV P                  P                  4       ;rRpV'       g*   V Uu. uF  qP                  V4      '       g   K  VNK  	  p	p\        V	4      \        V4      8X  da   VP                   '       d   \"        pMGV'       g@   V'       d   \        VR7      M
\        V4      pVP                  V P%                  W4      4      pVf   V	 Uu. uF  qP                  V4      NK  	  ppVP                   '       dG   V'       d   \        VR7      M
\        V4      pVP'                  RV P                  V4      ,           4       VP)                  V4      pVP+                  WC4       V# u upi u upi )	NrW   c              3  :   "   T F  pV'       g   K  Vx  K  	  R # 5irU   r   )r`   _tfs   & r9   ra   )Resolve.push_MatchSpec.<locals>.<genexpr>  s      
X CXs   

c              3  @   "   T F  qP                  4       x  K  	  R # 5irU   )strip)r`   r  s   & r9   ra   r    s     X+Wa		+Wr   r^   Fr]   !r   )r%   r  	from_name
_is_singler   r   rs   r   r  r5   rQ  rR  rt   rg   r   r  r   r   push_MatchSpecrr   Anyname_var)r   Cr   sat_namemsimplenmtftgrouplibsr   r   ms2rM   	sat_namess   &&&            r9   r  Resolve.push_MatchSpec  s   ##D)KK!=O"!!&) 
X4+?+?@P+Q+W+WUW+WX
 
  KKOOB33FT2w!|""T"XA MM--a44FT JJOO--FF%+@VTzz$/?DDVD@t9F#}}}68ir2imKK 3 3A ;<9<@ADD))$/DIA}}}68ir2im  t'7'7'<!<=i A	

1 A Bs   &I#I#I(c           
     	   \        \        \        P                  4      R 7      pV P                  P                  4        F  w  r#V Uu. uF  q@P                  V4      NK  	  ppV F  pVP                  V4       K  	  VP                  V P                  \        V4      4      4      pVP                  VP                  W1P                  V4      .,           4       K  	  V P                  P                  4        F  pVP                  V P                  V4      4      pV P                  V4       FQ  pVP                  P!                  R4      '       d   K&  VP                  VP"                  WpP%                  W4      4       KS  	  K  	  \&        P)                  \*        4      '       d%   \&        P-                  RVP/                  4       4       V# u upi )r-   r   z+gen_clauses returning with clause count: %d)r   rF   r   r.   rs   r}   r  r/   r%   r0   
ExactlyOneNotrg   rC   r   rW   r  Orr  r?   r  r   r@   get_clause_count)	r   r  rW   r   rM   r  r  nkeyrL   s	   &        r9   gen_clausesResolve.gen_clauses  sT   273E3EFG;;,,.KD8=>%%d+E>!		(# " 		$**9T?;<A IIallEUU1XJ$67 / JJ%%'D55))$/0Dood+ww))$//IIaddD*=*=a*DE , ( E""II=q?Q?Q?S / ?s   Gc                	    V Uu. uF  q0P                  W4      3NK  	  pp\        P                  \        4      '       d%   \        P	                  R VP                  4       4       V# u upi )z9generate_spec_constraints returning with clause count: %d)r  r?   r  r   r@   r#  )r   r  r   rL   r   s   &&&  r9   generate_spec_constraints!Resolve.generate_spec_constraints7  s[    :?@%B&&q-/%@E""IIK""$  As   A&c           
     	   V P                   P                  4        Uu/ uF   pV P                  V\        VR 7      4      ^bK"  	  pp\        P                  \        4      '       d%   \        P                  RVP                  4       4       V# u upi )r]   z6generate_feature_count returning with clause count: %d)	rt   r   r  r%   r?   r  r   r@   r#  )r   r  rW   r   s   &&  r9   generate_feature_countResolve.generate_feature_count@  s     **,
, 9D#ABAE, 	 
 E""IIH""$ 
s   &B
c                	    V Uu/ uFM  q3P                   '       g   K  VP                  VP                   4      '       g   K9  R VP                   ,           ^bKO  	  up# u upi r  )r   r  r   r  r   rL   s   &&& r9   generate_update_countResolve.generate_update_countL  sI    ).
).2))BII@VC"))OQ
 	
 
s   AA Ac           	     	.   / pV P                   P                  4        F  w  r4V Uu/ uF'  qPP                  V4      \        VP                  4      bK)  	  pp\        P
                  ! VP                  4       !  P                  V P                  4      pV Fv  pV P                  V\        VR 7      4      p	VP                  4        FC  w  rW9  g   K  V P                  W4      pVP                  VP                  W4      V4       ^W,&   KE  	  Kx  	  K  	  V# u upi )r]   )rs   r}   r  r2   r   r   rC   rX  rt   r  r%   r  r  r1   )r   r  eqrW   r   rM   
prec_featsactive_featsr  clause_id_for_featureprec_sat_namer   feature_metric_ids   &&           r9   generate_feature_metricResolve.generate_feature_metricQ  s     ;;,,.KDQVWQV**40#dmm2DDQVJW99j&7&7&9:GGVL$(,(;(;y5)% 0:/?/?/A+M+,0,E,E)-) 

EE-G- 12- 0B	 % /" 	! Xs   -Dc                	r    V Uu/ uF&  pR V P                  WP                  4      ,           ^bK(  	  up# u upi r.  )r  rW   r/  s   &&& r9   generate_removal_countResolve.generate_removal_countk  s3    CHI5Rd))!WW55q85IIIs   ,4c                	    V Uu/ uF2  q3P                   '       g   K  V P                  WP                  4      ^bK4  	  up# u upi r   )r   r  rW   r/  s   &&& r9   generate_install_countResolve.generate_install_countn  s5    =BRUrkk2##Aww/2URRRs
   A  A c                	N    V Uu/ uF  q0P                  W4      ^bK  	  up# u upi r?  )r  )r   r  missingr  s   &&& r9   generate_package_countResolve.generate_package_countq  s(    8?@"##A*A-@@@s   "c                	  a / p/ p/ p/ p/ p/ p	V F*  p
\        V
4      p
V	P                  V
P                  . 4       K,  	  V	P                  4        EF  w  rV P                  P                  V. 4       Uu. uF  qP                  V4      V3NK  	  ppR pV EF  w  poV'       dC   \        ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      '       d   KQ  Vf   ^ ;p;p;p;ppMV^ ,          V^ ,          8w  g   V^,          V^,          8w  d   X^,          p^ ;p;p;ppMV^,          V^,          8w  d   X^,          p^ ;p;ppMtV^,          V^,          8w  d   X^,          p^ ;ppMQV^,          V^,          8w  d   X^,          p^ pM0V P                  '       g   V^,          V^,          8w  d
   X^,          pV P                  S4      pX'       g	   V'       d   VVV&   X'       g	   V'       d   VVV&   X'       g	   V'       d   VVV&   X'       g	   V'       d   VVV&   X'       g	   V'       d   VVV&   TpEK  	  EK  	  WEWgV3# u upi )Nc              3  .   <"   T F
  pSV8H  x  K  	  R # 5irU   r   )r`   r[  rM   s   & r9   ra   3Resolve.generate_version_metrics.<locals>.<genexpr>  s     ">g419gs   TF)
r%   r  rW   r}   rs   r   r   r   rn   r  )r   r  r   include0eqceqveqbeqaeqtsdictrK  rW   targetsr6  pkgspkeyr   icivibitiar7  rM   s   &&&&                   @r9   generate_version_metrics Resolve.generate_version_metricst  s,    A!AQVVR(  #[[]MD6:kkoodB6OP6O%%a(!,6ODPD &*!Tss">g">sss">g">>><-..B..b.2!WA.$q'[^2K!GB())B))b2!WA.!GB#$$B$b!WA.!GBKB!WA.!GBB777DG{ST~<U!GB $ 0 0 6)+C&)+C&)+C&)+C&)+C&"G &* +V 3&&U Qs   2Ic                    V ^8  d   QhRRRR/# )r  	must_havezdict[str, PackageRecord]r  list[PackageRecord]r   )rV  s   "r9   r  r    s     % %+% 
%r<   c                	   \        V\        4      '       g   \        R 4      h/ pVP                  4        FC  w  r4W@P                  9   g   K  V P                  V4       Uu0 uF  qUP                  kK  	  upW#&   KE  	  \        '       d   RV9   d   VP                  4        Fl  w  r6V P                  P                  X4      p\        VR4      '       g   K4  VP                  \        P                  8X  g   KU  W#,          P                  R4       Kn  	  \        V4      pVP                  4       pV U	u. uF  qV9   g   K  VP!                  V	4      NK  	  p
p	V
P#                  VP%                  4       4       V
# u upi u up	i )z'must_have' must be a dict.condar  )r   dict	TypeErrorr}   rg   r   rW   r   r   rz   r  r"   r   r   r   copyr*  r   rC   )r   r[  digraphrm  rM   rL   distrecordsorted_keysre   r   s   &&         r9   dependency_sortResolve.dependency_sort  s,    )T**9::"+//"3Lzz!;???4;P(Q;PR;P(Q% #4  6g(&/oo&7"-68,,*BSBS1S)--g6 '8
 w'NN$	 1<Pi?O$)--$Pi&&()7 )R0 Qs   E2-E7:E7c           
     	   \         P                  R 4       V'       g   R. 3# / p. pV FV  pWBV P                  V4      &   VP                  \	        VP
                   RVP                   RVP                   24      4       KX  	  \        V Uu/ uF  qDVbK  	  upRV P                  R7      pVP                  4       pVP                  Wc4      pVP                  V4      p\        V4      # u upi )1Checking if the current environment is consistentNrN  Trh   )r?   r@   r  rr   r%   rW   r  r  rR   rh   r%  r(  r3   bool)	r   	installedsat_name_mapr   rM   r2r  constraintsr8   s	   &&       r9   environment_is_consistent!Resolve.environment_is_consistent  s    		EF8OD37))$/0LLdii[$,,q#MNO  Y7YTDjY7VNN221<55%H~	 8s   C'c                	  aa	 V'       g   R# \        V4      \        V4      ,          pV P                  V4      pRVV	3R llpV'       d3   \        VRV P                  R7      o	S	P	                  4       oV! VR4      pMRpV'       d   RpV# \
        P                  '       dK   \        V P                  RV P                  R7      o	S	P	                  4       o\        \        WVR7      4      pV# RpV# )Fc                J   < SP                  SV 4      pSP                  W!4      # rU   r(  r3   r   add_ifro  r  rn  s   && r9   mysat,Resolve.get_conflicting_specs.<locals>.mysat  $    66q%@K55--r<   Trj  N)r3   r  r   F)
r2   r{  rR   rh   r%  r   r  rg   r   r   )
r   r   r  	all_specsreduced_indexrw  r8   final_unsat_specsr  rn  s
   &&&     @@r9   get_conflicting_specsResolve.get_conflicting_specs  s    IJ^!44	..y9	. 	. t}}EB AY-HH " !  (((TDMMBB A %,^! !  !%  r<   c           
     	b  a aaa \         P                  R 4       V'       g   R. 3# / o. pV FW  pVSS P                  V4      &   VP                  \	        VP
                   RVP                   RVP                   24      4       KY  	  SP                  4        Uu/ uF  qDVbK  	  ppV Uu/ uF  qfP
                  VbK  	  ppRV9   dQ   RV9  dJ   WWR,          ,          pRVP                  9   d*   VP                   U	u. uF  qR8w  g   K  V	NK  	  p
p	Wn	        \        VRS P                  R7      pVP                  4       oVP                  SV4      pSP                  V4      pR;rV'       d
   V'       Ed   VV 3R lo\        4       pVP!                  SV4      pSP#                  VSP                  4       4      w  ppVP%                  V3R lV3R	 lV 4        4       4       V F  pS! \	        V4      P
                  V4       K!  	  \'        V4      \'        S4      8  d\   TpSP)                  4        UUu. uF  w  ppVR
,          V9  g   K  VNK  	  ppp\         P                  RRP+                  V4      4       V'       d   \         P                  RV4       W3# u upi u upi u up	i u uppi )ri  NrN  r   pipTrj  c                   < W9  db   VP                  V 4       SP                  P                  V . 4       F.  pSP                  V4       F  pS! VP                  V4       K  	  K0  	  R # R # rU   )r   rs   r   r   rW   )rW   r  fnrL   get_r   s   &&  r9   r  #Resolve.bad_installed.<locals>.get_'  sT    %JJt$"kkoodB7"&//""5B &1 #6 8 &r<   c              3     <"   T F8  pV'       g   K  V^ ,          R8w  g   K  RV9  g   K&  SV,          R,          x  K:  	  R# 5i)r   r  r  rW   Nr   )r`   r  rm  s   & r9   ra   (Resolve.bad_installed.<locals>.<genexpr>4  sH       CH / (s 2 /7:(7J /X&v.. Cs   
AAAAc              3  F   <"   T F  pSP                  V4      x  K  	  R # 5irU   
from_indexr`   rK  r  s   & r9   ra   r  6  s      C(Qa(   !rW   z-Limiting solver to the following packages: %s, zPackages to be preserved: %s)r?   r@   r  rr   r%   rW   r  r  rC   rJ   rR   rh   r%  r(  r3   r2   r<  minimizer   r  r}   rW  )r   rl  r  r   rM   	new_indexr6  name_mappython_precr  new_depsrn  ro  r8   limitxtrar  eq_optional_cr   r   r  r  r  r  rm  s   f&&                   @@@r9   bad_installedResolve.bad_installed  sh   		EF8OD37L))$/0LLdii[$,,q#MNO  -9,?,?,AB,AD4Z,A	B'01y!FFAIy1xE$9#X$67K+++'2':':I':!5jAA':I&.#Yt}}=NN221e<55%442 UF55a?M**]AEEG<KHaMM  C( C  "Yt_))62 "6{S.. *6););)=)=#6{&0 C)=  
 		CTYYuEU II4d;{a C1
 J@s$   J*J!=J&
J&5J+J+c                	   a V'       d:   V Uu/ uF  q3P                   VbK  	  upoVP                  V3R  lV 4       4       R# R# u upi )c              3  L   <"   T F  qP                   S9  g   K  Vx  K  	  R # 5irU   rV   )r`   r6  rO  s   & r9   ra   &Resolve.restore_bad.<locals>.<genexpr>M  s     C8avvU/B8rM  N)rW   r   )r   rQ  preserverM   rO  s   &&& @r9   restore_badResolve.restore_badJ  s:    156YY_6EKKC8CC 6s   Ac                	,   \        \        \        V4      4      pV Uu0 uF  qDP                  kK  	  pp\        P                  R 4       V P                  W!4      w  rgV F  pWP                  9  d   K  VP                  VP                  VP                  rp	VP                  P                  pW9   g   Ve	   W9  d   K`  V'       d   \        WP                  4       R7      pM\        WWR7      pVP                  ^ V4       K  	  \        V4      V3# u upi )z*Checking satisfiability of current install)rW   r   )rW   r  r  r  )rp   mapr%   rW   r?   r@   r  rg   r  r  r  canonical_namer  r  r   )r   r   rl  update_depsrK  r  r  r  rM   rW   r  r  schannelr   s   &&&&          r9   install_specsResolve.install_specsO  s    SE*+"'(%Q&&%(		>?,,Y>D::%#'99dllDJJ5D||22H~!2t7H  d==?C e LLD!# $ U|X%%+ )s   Dc                	    T P                  Y;'       g    . V4      w  r. pV'       d   V P                  WR R7      pV P                  We4       V# )F)	returnall_remove)r  solver  )r   r   rl  r  r  r  rQ  s   &&&&&  r9   installResolve.installh  sI    ,,UOO[Q::e%:HD(r<   c           
     	d   . p\        \        V4       FT  pVP                  4       '       d    VP                  \        VR RR7      4       K8  VP                  \        VRR7      4       KV  	  V Uu0 uF"  qDP                  '       g   K  VP                  kK$  	  ppV P                  W#4      w  rg. pV Fv  p	V	P                  V	P                  rW9   d   K"  Ve   VP                  V	4       K9  TP                  \        T
V'       d
   RV,           MRRV	P                  4       R7      4       Kx  	  W83# u upi )r  T)r  r   r  Nz>=)rW   r  r   r   )r  r%   r  rr   rW   r  r  r  )r   r   rl  nspecsrK  r  r  r   r  rM   r  vers   &&&         r9   remove_specsResolve.remove_specsp  s     Y&A ||~~i3FGiD9: ' #)3&QFF&!&&&3%%i8Dii|"% .1s
t!%#}}	   ' 4s   /D-D-c                	t    V P                  W4      w  rV P                  VR R7      pV P                  WC4       V# )T)r  )r  r  r  )r   r   rl  r  rQ  s   &&&  r9   removeResolve.remove  s9    ++E=zz%z.(r<   c               $    V ^8  d   QhRRRRRR/# )r  r   rp   r  rk  r  r\  r   )rV  s   "r9   r  r    s-     z
 z
z
 z
 
z
r<   c           	     	  a=a>a?a@ V'       dJ   \        V^ ,          \        4      '       g-   \        ;QJ d    . R V 4       F  NK  	  5M! R V 4       4      p\        V4      p\        P                  \        4      '       d2   \        R \        V4       4       4      p\        P                  RV4       V'       g   R9# \        P                  R4       \        V4      pV P                  V\        P                  '       * R7      p	V	'       g   \        4       p
\        4       pV F[  pV P                  V4      '       d   K  VP                  V P                   9   d   VP#                  V4       KJ  V
P#                  V4       K]  	  V
'       d   \%        V
4      hV'       d   \'        V Uu. uF  q.NK  	  upRR7      hV'       d   \'        / 4      hV P)                  WV4       \        P                  R4       R:V=V@3R	 llpV=3R
 lo>V=V>3R lp\+        V	RV P,                  R7      o@S@P/                  4       o=V! VR4      pV'       g&   V'       d   \'        / 4      hV P)                  WV4       . p. p. p\        S@P                   4      p\        V4       F  w  ppVP                  V9   d   VP1                  VP                  4       VP2                  '       g/   VP4                  '       g   VV8  d   TMTP7                  V4       Kr  \9        S@P                  V4      4      '       g   K  \        VP                  RVP4                  R7      pVP7                  V4       VP7                  V4       K  	  VP;                  R V 4       4       \        P                  \        4      '       d   \        P                  R\        \=        R V 4       4      4      4       \        P                  R\        \=        R V 4       4      4      4       \        P                  R\        \=        R V 4       4      4      4       \        P                  R\        \=        R V 4       4      4      4       \        P                  R4       V'       d>   S@P?                  S=V4      pS=PA                  VV4      w  pp\        P                  RV4       \        P                  R4       S@PC                  S=V4      w  pppppS=PA                  VV4      w  ppS=PA                  VV4      w  pp\        P                  RVV4       \        P                  R4       S@PE                  S=4      pS=PA                  VV4      w  pp \        P                  RV 4       S@PG                  S=4      p!S=PA                  V!V4      w  pp"\        P                  RV"4       \        P                  R4       S=PA                  VV4      w  pp#\        P                  R V#4       \        P                  R!4       S=PA                  VV4      w  pp$\        P                  R"V$4       V'       gS   \        P                  R#4       S@PI                  S=V4      p%S=PA                  V%V4      w  pp&\        P                  R$V&4       \        P                  R%4       S@PK                  S=V4      p'S=PA                  V'V4      w  pp(\        P                  R&V(4       \        P                  R'4       S@PC                  S=V4      w  p)p*p+p,p-S=PA                  V)V4      w  pp.S=PA                  V*V4      w  pp/S=PA                  V+V4      w  pp0S=PA                  V,V4      w  pp1\        P                  R(V.V/V0V14       \        P                  R)4       S@PM                  S=V4      p)S=PA                  V)VRR*7      w  pp\        P                  R+V4       V! V4      '       g=   V-PO                  V4       S=PA                  V-V4      w  pp2\        P                  R,V24       \        P                  R-4       ^p3. p4S>! V4      p5V4P7                  V54        \        ;QJ d    . V=3R. lV5 4       F  NK  	  5M! V=3R. lV5 4       4      p6S=PQ                  V63R4      pVf   MAV3^,          p3V3^
8  d   \        P                  R/4       MS>! V4      p5V4P7                  V54       K  V3^8  d   \S        \U        \        V44      4      p7\        PV                  ! V7!  p8V7 U9u. uF  p9\=        \        V94      V8,
          4      NK   	  p:p9\        PX                  '       gB   ^R0I-H.p; T;! R1P_                  V3^
8  d   R2MT3\        R3 V: 4       4      V3^
8  d   R4MR54      4       V P`                  Pc                  4        U<u/ uF  p<V Pe                  V<4      V<bK  	  up<o?V'       d   \        V44      ^8  d   \g        4       h\=        V?3R6 lV4^ ,           4       R7 R87      # u upi u up9i u up<i );r   c              3  8   "   T F  p\        V4      x  K  	  R # 5irU   r$   r   s   & r9   ra    Resolve.solve.<locals>.<genexpr>  s     61)A,,rP  c              3  x   "   T F0  w  r\        R WVP                  VP                  3,          4      x  K2  	  R# 5i)z%i: %s target=%s optional=%sN)r  r   r   )r`   rA  rK  s   &  r9   ra   r    s6      ,DA 2aAHHajj5QQRR,s   8:zSolving for: %sz2Solve: Getting reduced index of compliant packages)r  F)r^  z!Solve: determining satisfiabilityc                J   < SP                  SV 4      pSP                  W!4      # rU   rt  ru  s   && r9   rw  Resolve.solve.<locals>.mysat  ry  r<   c                   < V3R  lV  4        Uu. uF(  pV'       g   K  V^ ,          R8w  g   K  RV9  g   K&  VNK*  	  up# u upi )c              3  F   <"   T F  pSP                  V4      x  K  	  R # 5irU   r  r  s   & r9   ra   /Resolve.solve.<locals>.clean.<locals>.<genexpr>  s     73a!,,q//3r  r  r  r   )solqr  s   & r9   cleanResolve.solve.<locals>.clean  sP     8377A 1 ),A 7  s   
AAAAc                   < S! V 4      p\         ;QJ d    . V3R lV 4       F  NK  	  5M! V3R lV 4       4      pSP                  V3RR7      f   R# R# )a=  Determine if the SAT problem has converged to a single solution.

This is determined by testing for a SAT solution with the current
clause set and a clause in which at least one of the packages in
the current solution is excluded. If a solution exists the problem
has not converged as multiple solutions still exist.
c              3  d   <"   T F%  pSP                  SP                  V4      4      x  K'  	  R # 5irU   r!  r  r`   r  r  s   & r9   ra   6Resolve.solve.<locals>.is_converged.<locals>.<genexpr>  %     E9aAEE!++a.119   -0F)	includeIfT)r   r3   )r8   	psolutionnclauser  r  s   &  r9   is_converged#Resolve.solve.<locals>.is_converged  sG     hIeE9EeeE9EEGuugZ5u19r<   Trj  )r   r   c              3  8   "   T F  p\        V4      x  K  	  R # 5irU   r$   r  s   & r9   ra   r    s     15aYq\\5rP  zRequested specs: %sc              3  8   "   T F  p\        V4      x  K  	  R # 5irU   r  r  s   & r9   ra   r  	       <SUSVVUrP  zOptional specs: %sc              3  8   "   T F  p\        V4      x  K  	  R # 5irU   r  r  s   & r9   ra   r  
  s     ;REqCFFErP  zAll other specs: %sc              3  8   "   T F  p\        V4      x  K  	  R # 5irU   r  r  s   & r9   ra   r    r  rP  zmissing specs: %sc              3  8   "   T F  p\        V4      x  K  	  R # 5irU   r  r  s   & r9   ra   r    s     :Q5a3q665rP  z Solve: minimize removed packageszPackage removal metric: %dz.Solve: maximize versions of requested packagesz-Initial package channel/version metric: %d/%dz#Solve: minimize track_feature countzTrack feature count: %dzPackage misfeature count: %dz3Solve: maximize build numbers of requested packagesz Initial package build metric: %dz5Solve: prefer arch over noarch for requested packageszNoarch metric: %dz0Solve: minimize number of optional installationsz#Optional package install metric: %dz,Solve: minimize number of necessary upgradeszDependency update count: %dzhSolve: maximize versions and builds of indirect dependencies.  Prefer arch over noarch where equivalent.zDAdditional package channel/version/build/noarch metrics: %d/%d/%d/%dz!Solve: prune unnecessary packages)trymaxzWeak dependency count: %dzTimestamp metric: %dzLooking for alternate solutionsc              3  d   <"   T F%  pSP                  SP                  V4      4      x  K'  	  R # 5irU   r  r  s   & r9   ra   r  j  r  r  zToo many solutions; terminating)r)   zP
Warning: {} possible package resolutions (only showing differing packages):{}{}z>10c              3  D   "   T F  pR P                  V4      x  K  	  R# 5i)r  N)rW  )r`   diffs   & r9   ra   r    s      CUT4Us    z
  ... and othersr  c              3  6   <"   T F  pSV,          x  K  	  R # 5irU   r   )r`   r  r  s   & r9   ra   r    s     ?XYx  s   c                    V P                   # rU   rV   rX   s   &r9   rZ   Resolve.solve.<locals>.<lambda>  s    qvvr<   r  r   rz  )4r   r%   r   r2   r?   r  r   r   r  r@   r  r{  r   r  rI   rW   rs   r   r   r    r$  rR   rh   r%  r  r   r   rr   r   r   r~   r<  r  rX  r+  r9  r@  r0  rD  r   r3   rp   r  rX  r   gateways.streamsr)   rV  rg   rC   r  r5   )Ar   r   r  r  r  r	  should_retry_solvedlistlen0r|  not_found_packageswrong_version_packagesrK  r  rw  r  r8   specospecrspecaspecmr   r  obj7eq_req_ceq_req_veq_req_beq_req_aeq_req_tobj3aobj3eq_feature_countobj1eq_feature_metricobj2obj4
noarch_objeq_optional_installobj49eq_uobj50eq_ceq_veq_beq_aeq_tobj5aobj5obj6obj6aobj6tnsol
psolutionsr  r  psols2commonr  diffsr)   rM   r  r  r  rn  sA   &&&&&&&                                                      @@@@r9   r  Resolve.solve  s'    E!Hi88E66EE666EE
E"" %e, E II'/I 			FG5z..(C(C$C / 
  "%%(U"((++vv,.2215*..q1  ",-?@@'("89"8QS"89%  " ),,##EG 			56	. 	.
		 ]D4==ANN%!(,,##EGBIIe$DAqvvQVV$:::(((a4iUBB1ER__Q'((afftAHHEQQ % 	1511E""II+Xf<SU<S6S-TUII*HV;RE;R5R,STII+Xf<SU<S6S-TUII)8F:Q5:Q4Q+RS 			4555a?MZZx@NHdII2D9 			BC;=;V;Vu<
8(Hh **Xx8%Hh7$		A5$O 			7844Q7$4h?$		+T2 66q9$5x@$		0$7 			GHHh7$		4d; 			IJ zz(H=*		%z2 IIHI"$";";Au"Ejj)<hGOHeII;UC 			@A''51**T84%		/7 			8	
 (*'B'B1e'L$dD$**T84%D(3$D(3$**T84%		R	
 			56((E2D(4@$		-t4H%%KK!jjx8OHeII,e4		34
(O	)$eE9EeeE9EEGuugZ.HAIDby		;<hIi(!8#c:./F%%v.F:@A&3VCHv-.&EA<<<7==CV!%  CU CC04r	,r> ?Cjj>O>O>QR>QdT%%d+T1>QR	:""n$ ?A?EU
 	
W :` B  Ss   "h $h!h
)ru   rj   rl   rx   rw   rn   ry   r|   rh   rs   rg   rv   rt   )Fr   )NN)Tr?  )TFrU   rz  )NTF)FFNNF)6__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r   r  r  r$  r:  rC  r"  r  r   rv  rT  r   r{  r  rI   r   r   staticmethodri   r  r  r  r  r%  r(  r+  r0  r9  r<  r@  rD  rX  rf  rp  r~  r  r  r  r  r  r  r  __static_attributes____classcell__)r   s   @r9   rR   rR   }   sx   .R`

(T&B&$P2:BHWK'R#.BH* ; ;	 x(k )kZ1((  :3 ( ( - -)V x( )8


4JSAA'F%N !D9vD
&2" H x(z
 )z
r<   rR   )H__doc__
__future__r   r  collectionsr   r   	functoolsr   loggingr   r   typingr   r	   r
   auxlib.decoratorsr   base.constantsr   r   r   base.contextr   common.compatr   	common.ior   r   common.iteratorsr   ro   common.logicr   r   r   r   r   r   common.toposortr   deprecationsr   
exceptionsr   r   r   r    models.channelr!   models.enumsr"   r#   models.match_specr%   models.recordsr&   models.versionr'   collections.abcr(   r  r?   constantUnsatisfiablePYCOSATPYCRYPTOSATPYSATr>   rF   rP   rR   r   r<   r9   <module>r(     s   
 #  *  $   !  , R R ! ! . 8  & $  $ 1 ( ) (( 
  

 > #/  ]!2; *9*A*A " "J"X
 X
r<   