
    sib                    R   S r SSKJr  SSKrSSKrSSKJr  SSK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  S	SKJrJrJrJr  S	SKJr  S	SKJ r J!r!  S	SK"J#r#J$r$  S	SK%J&r'  S	SK(J)r)J*r*  S	SK+J,r,J-r-J.r.J/r/  S	SK0J1r1  S	SK2J3r3  S	SK4J5r5  S	SK6J7r7  S	SK8J9r9  S	SK:J;r;  S	SK<J=r=  S	SK>J?r?  SSK@JArAJBrB  SSKCJDrDJErE  SS KFJGrG  SS!KHJIrI   SS"KJJJrJ  \(       a  SS#KMJNrN  S	S$KOJPrP  \	" \Q5      rR " S% S&5      rS " S' S(5      rTS,S) jrUS*\ 4 S-S+ jjrVg! \K a	    S	S"KLJJrJ   NMf = f).z"The classic solver implementation.    )annotationsN)chain)DEBUG	getLogger)dedent)TYPE_CHECKING)
IndexedSet   )
CondaError)__version__)memoizedproperty)dals)REPODATA_FNUNKNOWN_CHANNELDepsModifierUpdateModifier)context)NULLTRACE)dashlisttime_recorder)groupby_to_dict)get_major_minor_versionpaths_equal)NoChannelsConfiguredErrorPackagesNotFoundErrorSpecsConfigurationConflictErrorUnsatisfiableError)HistoryChannel)
NoarchType	MatchSpec)PrefixGraph)VersionOrder)get_spinner)Resolve   )IndexReducedIndex)PrefixSetupUnlinkLinkTransaction)
PrefixData)
SubdirData)
frozendict)Iterable)PackageRecordc                  2   \ rS rSr% SrS\S'   S\S'   SSSS\\4           SS	 jjr\\\\\\S
4S jr	\\\\\\S
4 SS jjr
\\\\\S
4S jrS rS rS r\" \ S9S 5       rS r\" \ S9S 5       rS rS rS r\" \ S9S 5       rS rS rSS jrSrg) Solver:   z
A high-level API to conda's solving logic. Three public methods are provided to access a
solution in various forms.

  * :meth:`solve_final_state`
  * :meth:`solve_for_diff`
  * :meth:`solve_for_transaction`
zReducedIndex | None_indexzResolve | None_rN c                   Xl         U=(       d    [        R                  U l        [	        S U R                   5       5      U l        [        S U=(       d    [        R                   5       5      U l        [        [        R                  " S U 5       5      5      U l
        [        S U R                   5       5      U l        [        [        R                  " S U 5       5      5      U l        SU l        Xpl        [        U R                  5      [        R                   -
  =n(       a   [#        S[%        ['        U5      5       35      eX`l        SU l        SU l        S	U l        0 U l        g)
a  
Args:
    prefix (str):
        The conda prefix / environment location for which the :class:`Solver`
        is being instantiated.
    channels (Sequence[:class:`Channel`]):
        A prioritized list of channels to use for the solution.
    subdirs (Sequence[str]):
        A prioritized list of subdirs to use for the solution.
    specs_to_add (set[:class:`MatchSpec`]):
        The set of package specs to add to the prefix.
    specs_to_remove (set[:class:`MatchSpec`]):
        The set of package specs to remove from the prefix.

c              3  8   #    U  H  n[        U5      v   M     g 7fNr    ).0cs     0lib/python3.13/site-packages/conda/core/solve.py	<genexpr>"Solver.__init__.<locals>.<genexpr>b   s     "F~!71::~   c              3  $   #    U  H  ov   M     g 7fr;   r8   r<   ss     r>   r?   r@   c   s     C(B1Q(B   c              3  $   #    U  H  ov   M     g 7fr;   r8   rC   s     r>   r?   r@   d   s     5NAarE   c              3  8   #    U  H  oR                   v   M     g 7fr;   namer<   _s     r>   r?   r@   e   s     +N<MqFF<MrA   c              3  $   #    U  H  ov   M     g 7fr;   r8   rC   s     r>   r?   r@   f   s     8TOqOrE   r8   zUnknown subdir(s):NF)prefixr   channels	_channelsr	   tuplesubdirs	frozensetr$   mergespecs_to_addspecs_to_add_namesspecs_to_removeneutered_specs_commandsetknown_subdirs
ValueErrorr   sorted_repodata_fnr6   r7   	_prepared_pool_cache)	selfrM   rN   rQ   rT   rV   repodata_fncommandunknown_subdirss	            r>   __init__Solver.__init__G   s   2 !5W%5%5""Ft~~"FFC(B7??(BCC%ioo5N5N&NO"++ND<M<M+N"N(8TO8T)TU !$,,/'2G2GGG?G1(6/;R2S1TUVV'    Fc           
        U R                   (       aj  U R                  (       a  [        U R                  5      S:X  a@  [        U R                    Vs/ s H!  oR                  (       d  M  UR                  PM#     snS9eU R
                  [        R                  :X  a  [        R                  (       a
  [        5       e[        R                  R                  U R                   U R                  5        U R                  UUUUUUU5      u  p[        R                  R                  U R                  U	U
5        U R!                  U
5        [#        [%        U R
                  U	U
U R                  U R                   U R&                  5      5      $ s  snf )a  Gives an UnlinkLinkTransaction instance that can be used to execute the solution
on an environment.

Args:
    deps_modifier (DepsModifier):
        See :meth:`solve_final_state`.
    prune (bool):
        See :meth:`solve_final_state`.
    ignore_pinned (bool):
        See :meth:`solve_final_state`.
    force_remove (bool):
        See :meth:`solve_final_state`.
    force_reinstall (bool):
        See :meth:`solve_for_diff`.
    should_retry_solve (bool):
        See :meth:`solve_final_state`.

Returns:
    UnlinkLinkTransaction:

r   packages)rT   rN   lenr   rI   rM   r   root_prefixenable_private_envsNotImplementedErrorplugin_managerinvoke_pre_solvesrV   solve_for_diffinvoke_post_solvesr]   _notify_conda_outdatedr-   r,   rW   )r`   update_modifierdeps_modifierpruneignore_pinnedforce_removeforce_reinstallshould_retry_solvespecunlink_precs
link_precss              r>   solve_for_transactionSolver.solve_for_transactionr   sF   > dmms4==7IQ7N+040A0AO0AYY)$))0AO  ;;'---'2M2M &'' 	00  	

 $(#6#6$
  	11	
 	##J/$$$!!##	
 		
G Ps   F'Fc                    U R                  UUUUUU5      n[        U R                  XR                  U5      u  p[	        S U	5      R                  S5      nU(       a  [        S[        S U 5       5       35      eX4$ )an  Gives the package references to remove from an environment, followed by
the package references to add to an environment.

Args:
    deps_modifier (DepsModifier):
        See :meth:`solve_final_state`.
    prune (bool):
        See :meth:`solve_final_state`.
    ignore_pinned (bool):
        See :meth:`solve_final_state`.
    force_remove (bool):
        See :meth:`solve_final_state`.
    force_reinstall (bool):
        For requested specs_to_add that are already satisfied in the environment,
            instructs the solver to remove the package and spec from the environment,
            and then add it back--possibly with the exact package instance modified,
            depending on the spec exactness.
    should_retry_solve (bool):
        See :meth:`solve_final_state`.

Returns:
    tuple[PackageRef], tuple[PackageRef]:
        A two-tuple of PackageRef sequences.  The first is the group of packages to
        remove from the environment, in sorted dependency order from leaves to roots.
        The second is the group of packages to add to the environment, in sorted
        dependency order from roots to leaves.

c                    U R                   $ r;   )is_unmanageable)precs    r>   <lambda>'Solver.solve_for_diff.<locals>.<lambda>   s
    D,@,@rf   Tz$Cannot unlink unmanageable packages:c              3  @   #    U  H  oR                  5       v   M     g 7fr;   )	record_idr<   r   s     r>   r?   (Solver.solve_for_diff.<locals>.<genexpr>   s     ?j]iUY@P@P]i   )solve_final_statediff_for_unlink_link_precsrM   rT   groupbygetRuntimeErrorr   )r`   rs   rt   ru   rv   rw   rx   ry   final_precsr{   r|   unmanageables               r>   rp   Solver.solve_for_diff   s    L ,,
 $>KK&7&7$
 
 @,OSS
 6x?j]i?j7j6kl  ''rf   c           	     v  ^  T R                   (       aj  T R                  (       a  [        T R                  5      S:X  a@  [        T R                    Vs/ s H!  owR                  (       d  M  UR                  PM#     snS9eU(       a  U[
        R                  :X  a  [        nU[        L a  [        R                  nO"[        [        U5      R                  5       5      nU[        L a  [        R                  nO"[        [        U5      R                  5       5      nU[        L a  [        R                  OUnU[        L a  [        R                  OUn[         R#                  ST R$                  T R&                  T R                   U5        [)        T S5      nU(       d#  [+        T R$                  UUUUUU5      n	U	T l        OT R,                  n	Xl	        X)l        Xil        T R&                  (       a_  U(       aX  T R                   (       a
  [1        5       e[3        U 4S jU	R4                   5       5      n
[7        [9        U
5      R:                  5      $ U[
        R<                  :X  a  T R&                  (       dn  U(       dg  T R                    H/  n[?        U	R@                  RC                  U5      S5      (       a  M/    O*   [7        [9        U	R4                  5      R:                  5      $ U	RD                  (       d3  [G        ST RH                   S35         T RK                  U	5      n	SSS5        U(       a  U[
        R                  :X  a  S	nO'T RH                  [L        :w  a  S
T RH                   S3nOSn[G        SUS9   T RO                  U	5      n	T RQ                  U	5      n	[R        RR                  " U	R4                  5      nT RU                  U	R4                  U	RV                  5      nT RY                  U	5      n	T R[                  U	5      n	T RU                  U	R4                  U	RV                  5      nU	R                  [
        R\                  :X  a]  T R_                  XU	R`                  Rc                  5       5      n[        U5      S:  a$  U H  nT Re                  XyR4                  5        M      U	Rf                  (       a  [i        U5      [i        U	R4                  5      -
  [i        U	Rf                  5      -
  nU	R4                   Vs/ s H  nUR                  PM     nnU	R4                  Rk                  U Vs/ s H3  nUR                  U	RV                  ;  d  M  UR                  U;  d  M1  UPM5     sn5        T Rm                  U	5      n	SSS5        [n        Rp                  " 5         [7        [9        U	R4                  5      R:                  5      U	l        [         R#                  ST R$                  SRs                  S U	R4                   5       5      5        U	R4                  $ s  snf ! , (       d  f       GN= fs  snf s  snf ! , (       d  f       N= f)a  Gives the final, solved state of the environment.

Args:
    update_modifier (UpdateModifier):
        An optional flag directing how updates are handled regarding packages already
        existing in the environment.

    deps_modifier (DepsModifier):
        An optional flag indicating special solver handling for dependencies. The
        default solver behavior is to be as conservative as possible with dependency
        updates (in the case the dependency already exists in the environment), while
        still ensuring all dependencies are satisfied.  Options include
        * NO_DEPS
        * ONLY_DEPS
        * UPDATE_DEPS
        * UPDATE_DEPS_ONLY_DEPS
        * FREEZE_INSTALLED
    prune (bool):
        If ``True``, the solution will not contain packages that were
        previously brought into the environment as dependencies but are no longer
        required as dependencies and are not user-requested.
    ignore_pinned (bool):
        If ``True``, the solution will ignore pinned package configuration
        for the prefix.
    force_remove (bool):
        Forces removal of a package without removing packages that depend on it.
    should_retry_solve (bool):
        Indicates whether this solve will be retried. This allows us to control
        whether to call find_conflicts (slow) in ssc.r.solve

Returns:
    tuple[PackageRef]:
        In sorted dependency order from roots to leaves, the package references for
        the solved state of the environment.

r   rh   zFsolving prefix %s
  specs_to_remove: %s
  specs_to_add: %s
  prune: %ssscc              3  v   >^#    U  H-  m[        U4S  jTR                   5       5      (       a  M)  Tv   M/     g7f)c              3  D   >#    U  H  oR                  T5      v   M     g 7fr;   match)r<   rz   r   s     r>   r?   5Solver.solve_final_state.<locals>.<genexpr>.<genexpr>b  s     M8L::d++8Ls    N)anyrV   )r<   r   r`   s    @r>   r?   +Solver.solve_final_state.<locals>.<genexpr>_  s.      .DM8L8LMM .s   (9	9NzCollecting package metadata ()zOunsuccessful initial attempt using frozen solve. Retrying with flexible solve.
z)unsuccessful attempt using repodata from z&, retrying with next repodata source.
zfailed
zSolving environment)fail_messagez/solved prefix %s
  solved_linked_dists:
    %s
z
    c              3  @   #    U  H  oR                  5       v   M     g 7fr;   )dist_strr   s     r>   r?   r     s     I6Hd--//6Hr   ):rT   rN   rj   r   rI   r   FREEZE_INSTALLEDr   r   rs   strlowerrt   r   rv   rw   logdebugrM   rV   hasattrSolverStateContainerr   ry   rm   rP   solution_precsr	   r%   graphSPECS_SATISFIED_SKIP_SOLVEnextprefix_dataqueryrr'   r]   _collect_all_metadatar   _remove_specs
_add_specscopyget_request_package_in_solution	specs_map_find_inconsistent_packages_run_satUPDATE_SPECSget_constrained_packagesindexkeysdetermine_constricting_specsadd_back_maprY   extend_post_sat_handlingr   
log_totalsjoin)r`   rs   rt   ru   rv   rw   ry   rz   retryingr   solutionr   r   pre_packagespost_packagesconstrainedorphan_precsrK   solution_prec_namess   `                  r>   r   Solver.solve_final_state   s   \ dmms4==7IQ7N+040A0AO0AYY)$))0AO  _(G(GG"Od"%55O,S-A-G-G-IJOD #11M(]);)A)A)CDM%2d%:G!! 	 0<t/Cw++		WKK  	
 4'&"C DH((C"1 -%7" L  )++ .. H
 k(399:: ~HHH(())COO11$7>> * "+c.@.@"A"G"GHHuu<T=N=N<OqQR005 S /^5T5T"T*  +-;D<M<M;N O0 0 
 &L.\J$$S)C//#&C!YYs'9'9:N??""CMML 2237C--$C @@""CMMM ""n&A&AA";; 1A {#a' +99$@R@RS !, '#,,-.#**+, 
 8;7I7I&J7I!qvv7I#&J"")) ".!-A666  FF*== !- ))#.CQ KT 	  "'C4F4F(G(M(MN		@KKMMIc6H6HII	
 !!!U PN SR\ 'KA KJsO   X	(X	X-FX*/X X* X%
X%
X%
X*
X 
X**
X8c                h  ^ U Vs/ s H3  o3R                   TR                   :X  d  M  [        UR                  5      PM5     snS   n/ nU GHQ  n[        U4S jUR                   5       5      (       d  M*  UR                   GH  n[        U5      nUR                   TR                   :X  d  M+  UR                  c  M:  UR                  R                  (       d  SUR                  R                  ;   d  Mq  SUR                  R                  ;   an  UR                  UR                  R                   V	s/ s H;  n	SU	R                  ;   d  M  UR                   [        UR                    SU	 35      4PM=     sn	5        M  UR                  UR                   U45        GM     GMT     U V
s/ s H#  oS   R                  R                  U::  d  M!  U
PM%     nn
[        U5      S:X  a  g [        STR                    S35        U H  n[        US    S	US    35        M     [        S
5        U$ s  snf s  sn	f s  sn
f )Nr   c              3  L   >#    U  H  nTR                   U;   d  M  Uv   M     g 7fr;   rH   )r<   jrz   s     r>   r?   6Solver.determine_constricting_specs.<locals>.<genexpr>  s     =ldii1n11l   $	$<, r)   z

Updating z is constricted by 
z -> requires z
If you are sure you want an update of your package either try `conda update --all` or install a specific version of the package you want using `conda install <pkg>=<version>`
)rI   r&   versionr   dependsr$   exact_valuerz   r   tupappend
matcher_vorj   print)r`   rz   r   sphighest_versionconstrictingr   depm_depvihard_constrictingconsts    `           r>   r   #Solver.determine_constricting_specs  s   /=
/=DIIAU$L$~

 "D=dll===<<C%cNE

dii/!MM5"]]66#ASAS:S%--"4"44(// .3]]->->!"->'*aff} %PTYY	UZZL!:M0N$O->!" )//E0BC! ( #* $
#!t||'>'>/'QA| 	 
  !Q&dii[(=>?&EU1XJmE!H:67 'G	

 ! M
!"
s"   H%H%.H**H*$ H/H/c                   0 nU R                    H  nUR                  nU Vs/ s HE  nUR                  U:X  d  M  UR                  c  M$  UR                  [        UR                  5      4PMG     snX5'   X5   R	                  UR                  5        VVs/ s H<  u  pxXu:X  d  M  UR                  c  M  UR                  [        UR                  5      4PM>     snn5        M     U$ s  snf s  snnf r;   )rT   rI   r   r   r   items)	r`   r   r   requested_packagespkgupdate_pkg_requestr   kr   s	            r>   r   &Solver.get_request_package_in_solution  s    $$C!$ (6'A66// )45II )QYY('62
 299 !* 1 1. -3499 -QVVS^, 1 %  "!6s"   C$C$	%C$C)"C)1%C)c                R  ^ [        5       nS nU" U5      (       d  U" U5      (       a  U$ U R                   Hl  mTR                  R                  S5      (       a  M%  [	        S UTR                      5       5      nU[	        U4S jU 5       5      :X  a  M_  X!:X  d  Mf  UT1-  nMn     U$ )Nc                X    U R                  5        H  u  p[        U5      S:X  d  M    g   g)Nr   TF)r   rj   )r   r   r   s      r>   empty_package_list;Solver.get_constrained_packages.<locals>.empty_package_list  s'    		q6Q; $ rf   __c              3  *   #    U  H	  oS    v   M     g7f)r)   Nr8   )r<   r   s     r>   r?   2Solver.get_constrained_packages.<locals>.<genexpr>  s     !G0F1A$0Fs   c              3  r   >#    U  H,  oR                   TR                   :X  d  M  UR                  v   M.     g 7fr;   rI   r   )r<   r   r   s     r>   r?   r     s'      &#-a3881C			:s   77)rY   rT   rI   
startswithmax)r`   r   r   
index_keysupdate_constrainedr   current_versionr   s          @r>   r   Solver.get_constrained_packages  s     U	 l++/A-/P/P%%$$Cxx""4((!!GSXX0F!GGO# &#-& #   0);se)C& % "!rf   )module_namec                6   UR                   (       a  1 U R                  kU R                  knGOUR                  R	                  UR
                  5        S HO  nX1R                  ;  d  M  UR                  R                  US 5      (       d  M7  [        U5      UR                  U'   MQ     [        5       R                  nUR                  5        Vs/ s H  oUR                  PM     nnU H,  nXqR                  ;  d  M  [        U5      UR                  U'   M.     UR                  R                  5        H  nUR
                  (       a9  [        UR                  5      [        R                  ;   d  UR                   S:X  d  MM  UR                  R	                  UR                  [        UR                  5      05        M     1 U R                  kU R                  kUR
                  R#                  5       knU R%                  U5      u  pUR'                  X5        U$ s  snf )N)anacondacondazconda-buildz
python.appconsole_shortcutpowershell_shortcutpypi)ru   rV   rT   r   updatespecs_from_history_mapr   r   r$   r*   system_packagesr   rI   iter_recordsr   aggressive_update_packagessubdirvalues_prepareset_repository_metadata)r`   r   prepared_specspkg_namevirtual_pkg_indexpvirtual_pkgsvirtual_pkgs_namer   r   r   s              r>   r   Solver._collect_all_metadata  s   99Ht33Hd6G6GHN MM  !;!;<
 ==0S__5H5Hd6 6 /8.ACMM(+ !& 7 7,=,B,B,DE,DqFF,DLE%1!$MM97@AR7SCMM"34 &2 446 22 +w/Q/QQ{{f,MM(($))Ytyy5I)JK! 7$%%"" ++224N ==0##E-
? Fs   Hc           	       ^ U R                   (       Ga:  S U R                    5       n[        [        R                  " S U 5       5      5      n[	        UR
                  UR                  R                  5       5      n/ m/ nU R                    HZ  n[        R                  [        SU5        UR                  U5      nU(       a  TR                  U5        MI  UR                  U5        M\     [        U4S jU 5       5      nU(       a$  [        [        [        S U 5       5      5      5      eT GH  n	[        U	R                   =(       d    S5      U-  n
U
(       a  U	R"                  UR$                  ;   a  UR                  R'                  U	R"                  [)        U	R"                  5      5      n[+        UR,                  R/                  5        VVs0 s H  u  pUS:w  d  M  X_M     snn5      Ul        XaR                  UR"                  '   M  UR                  R1                  U	R"                  S 5        GM     [        UR2                  5      Ul        U$ s  snnf )Nc              3  6   #    U  H  nS U;   d  M  Uv   M     g7ftrack_featuresNr8   r<   rz   s     r>   r?   'Solver._remove_specs.<locals>.<genexpr>S  s       !59IT9Q!5s   
	c              3  B   #    U  H  oR                  S 5      v   M     g7fr  )get_raw_valuer  s     r>   r?   r  W  s!      $EUT&&'788EUs   z*using PrefixGraph to remove records for %sc              3  b   >^#    U  H#  m[        U4S  jT 5       5      (       a  M  Tv   M%     g7f)c              3  F   >#    U  H  nTR                  U5      v   M     g 7fr;   r   r<   recrz   s     r>   r?   1Solver._remove_specs.<locals>.<genexpr>.<genexpr>n  s     J6Is4::c??6I   !N)r   )r<   rz   all_removed_recordss    @r>   r?   r  k  s)      .4DJ6IJJ 4s   /	/c              3  8   #    U  H  n[        U5      v   M     g 7fr;   r   rC   s     r>   r?   r  r  s      K1JAQ1JrA   r8   features)rV   rY   r   from_iterabler%   r   r   r  r   r   remove_specr   r   rP   r   r\   r  rI   r   r   r$   r0   _match_componentsr   popr   )r`   r   _track_fts_specsfeature_namesr   no_removed_records_specsrz   removed_recordsunmatched_specs_to_remover  rec_has_a_featurekeyvaluer  s                @r>   r   Solver._remove_specsL  s    !%!5!5   ## $EU$ M
   2 2CMM4H4H4JKE"$')$,, KTR"'"3"3D"9"'..?,33D9 - ). .4. )%
 )+& K1J KKL  + %((:$;m$K!$S5O5O)O==,,SXXy7JKD-7 /3.D.D.J.J.L.L
"j0 'CJ.L.D* 04MM$)),MM%%chh5 +" "'u{{!3C
s   IIc                  ^^ TR                   R                  TR                  S5      u  nmT(       aM  [        U4S jTR                   5       5      Tl        TR                   R                  TR                  S5      u  nm[        R                  [        5      (       a(  [        R                  ST(       a  [        T5      OS5        T(       Ga  [        [        S5      [        R                  S9  [        [        T5      [        R                  S9  T H  nTR                  R                  UR                  S 5      nX44TR                   UR                  '   [#        UR                  UR%                  5       S9TR                  UR                  '   UR                  S:X  d  M  U(       d  M  UTR                  S'   M     [        U4S	 jTR                   5       5      Tl        T$ )
Nr8   c              3  Z   >#    U  H   nTR                   R                  X5      v   M"     g 7fr;   )r   r   )r<   r   r   s     r>   r?   5Solver._find_inconsistent_packages.<locals>.<genexpr>  s#     &WDVqsyy}}Q':':DVs   (+zinconsistent precs: %sNonez
            The environment is inconsistent, please check the package plan carefully
            The following packages are causing the inconsistency:filetargetpythonc              3  6   >#    U  H  oT;  d  M
  Uv   M     g 7fr;   r8   )r<   r   inconsistent_precss     r>   r?   r.    s      '!3CU7U!3s   		)r   bad_installedr   rP   r   isEnabledForr   r   r   r   r   sysstderrr   r"  rI   r   r$   r   )r`   r   rK   r   rz   r6  s    `   @r>   r   "Solver._find_inconsistent_packages  sv   
 !$ 3 3C4F4F K "'&WCDVDV&W!WC$'EE$7$78J8JB$O!A!E""II(0B+, E
 ZZ (-.SZZ@*}}((D9/3l  + ,5TYYt}}+Wdii( 99(TT.2CMM(+ + "' '!$!3!3' "C 
rf   c                   UR                  UR                  5      nSnU(       a  US   nUR                  R                  R                  UR                  / 5       H[  nUR                  UR                  :  a  Sn  O>UR                  UR                  :X  d  M=  UR
                  UR
                  :  d  MY  Sn  O   U(       a)  [        UR                  WR                  UR
                  S9$ U$ )NFr   T)r   build_number)r   rI   r   groupsr   r=  r$   )r`   r   rz   installed_poolinstalled_prec
has_updater   s          r>   _package_has_updatesSolver._package_has_updates  s    '++DII6
+A.N((B7<<."8"88!%JLLN$:$::))N,G,GG!%J 8  diiDDUDUV	
 	
rf   c                    UR                   (       d  gUR                  [        R                  :w  a  gUR                  nXc;  =(       a    Xd;  =(       d    X$U   ;   nU$ )NF)r   rs   r   r   rI   )r`   r   target_precconflict_specsexplicit_poolr?  r  no_conflicts           r>   _should_freezeSolver._should_freeze  s_     ))."A"AA ##4 
)S[(<S-S 	 rf   c                  ^ ^^^^^ [        S TR                  R                  5       5      mTR                  R	                  T R
                  5      nTR                  (       a  SnO7TR                  R                  5        Vs/ s H  oDR                  5       PM     nnTR                  R                  UT R
                  5      =(       d
    [        5       nU Vs1 s H  ofR                  iM     nnTR                  R                  5        GHu  u  nm[        U4S jTR                   5       5      nU(       d  M/  [        U5      S:w  a)  [        [!        S5      UT[#        S U 5       SS94-  5      eUS	   n	U	R$                  (       a  U	R                  5       TR                  U'   M  ['        U5      [(        R*                  ;   a  ['        U5      TR                  U'   M  T R-                  TXUT5      (       a   U	R                  5       TR                  U'   GM  UTR.                  ;   a5  ['        TR.                  U   U	R1                  5       S
9TR                  U'   GMQ  ['        XyR1                  5       S
9TR                  U'   GMx     [3        5       mTR4                   GH
  n
U
R                  U;   d  M  U
R                  T R6                  ;  a4  TR8                  (       d#  ['        U
SS9TR                  U
R                  '   Md  X*R                     TR                  R	                  U
/5      R;                  U
R                  [3        5       5      -  (       a>  ['        U
SS9TR                  U
R                  '   TR=                  U
R                  5        M  [>        RA                  SU
5        GM     TRB                  [D        RF                  :X  a  TR                  R                  5        Vs/ s H   oR                  TR                  ;  d  M  UPM"     nnU Hv  nUR                  U;  a)  UR                  5       TR                  UR                  '   M<  ['        UR                  UR                  5       SS9TR                  UR                  '   Mx     [>        RI                  STR                  5        TRB                  [D        RJ                  :X  Ga.  TR.                  (       a  [M        U4S jTR.                   5       5      Tl        TR                  R                  5        HO  nURN                  S:X  d  M  TR                  RQ                  UR                  ['        UR                  5      05        MQ     GOTR                  R                  5        Vs0 s H]  nUR                  UR                  S TR4                   5       ;  a  ['        UR                  5      OTR                  UR                     _M_     snTl        GO-TRB                  [D        RR                  :X  Ga  UU4S jm[        UU UU4S jT R
                   5       5      nTR                  R                  [        S TR                  RU                  5        5       5      U5      nU=(       d    S H  nUR                  TR                  ;   d  M  ['        USS9TR4                  ;  d  TR8                  (       d  MJ  UR                  TR.                  ;  d  Mf  ['        UR                  5      TR                  UR                  '   M     [W        S TR                   5       5      n[W        S T R
                   5       5      nU(       Ga  U(       Gdw  TR                  R;                  S5      nTRB                  [D        RF                  :H  nSU;  a&  U(       a  UR                  5       TR                  S'   GOTR                  R;                  S['        S5      5      nUR;                  S5      (       d"  [Y        URZ                  5      S-   n['        UUS9nU4[        T R
                  5      -   nTR                  R                  UT R
                  5      (       ac  T R\                  S:w  d,  T R^                  [`        :X  a4  TRb                  (       a  U(       d  TR                  Re                  U5        O[g        0 5      eUTR                  S'   [(        Rh                  (       dL  [(        R*                   H8  mTR                  TR                  ;   d  M  TTR                  TR                  '   M:     TR                  RQ                  U4S jT R
                   5       5        STR                  ;   a  [k        T Rl                  [(        Rn                  5      (       a  TR                  R;                  S5      nU(       a  S URZ                   3n[W        S! T R
                   5       5      nTR                  S   nTR                  R;                  S0 5      R;                  S5      nU(       d
  ['        UUS9n[(        Rp                  (       a  U(       d  ['        SUS S"9nUTR                  S'   T$ s  snf s  snf s  snf s  snf )#Nc                    U R                   $ r;   rH   xs    r>   r   #Solver._add_specs.<locals>.<lambda>  s    166rf   r8   c              3  X   >#    U  H  nTR                  U5      (       d  M  Uv   M!     g 7fr;   r   )r<   r   rz   s     r>   r?   $Solver._add_specs.<locals>.<genexpr>  s"      %!3tzz$7G!3   *	*r)   a  
                    Conda encountered an error with your environment.  Please report an issue
                    at https://github.com/conda/conda/issues.  In your report, please include
                    the output of 'conda info' and 'conda list' for the active environment, along
                    with the command you invoked that resulted in this error.
                      pkg_name: %s
                      spec: %s
                      matches_for_spec: %s
                    c              3  8   #    U  H  n[        U5      v   M     g 7fr;   r  rC   s     r>   r?   rQ    s     %G6Fc!ff6FrA      )indentr   r2  FoptionalzFpinned spec %s conflicts with explicit specs.  Overriding pinned spec.T)r3  rW  zspecs_map with targets: %sc              3     >#    U  Hs  n[        U5      R                  S  TR                   5       ;  a  U[        U5      4O6[        U5      R                  TR                  [        U5      R                     4v   Mu     g7f)c              3  8   #    U  H  oR                   v   M     g 7fr;   rH   rJ   s     r>   r?   .Solver._add_specs.<locals>.<genexpr>.<genexpr>X  s     3UDTqFFDTrA   N)r$   rI   pinned_specsr   )r<   rz   r   s     r>   r?   rQ  V  sp      % !; !++3UCDTDT3UU 9T?+#D/..io>R>R0STU !;s   A;A>r   c              3  8   #    U  H  oR                   v   M     g 7fr;   rH   rJ   s     r>   r?   rQ  d  s     ,N=MVV=MrA   c                   >^  T R                   T;  =(       a7    [        U 4S jTR                   5       5      =(       a    TR                  (       + =(       d    T R                   TR                  ;   $ )Nc              3  V   >#    U  H  nTR                   UR                   :H  v   M      g 7fr;   rH   )r<   rK   rN  s     r>   r?   6Solver._add_specs.<locals>.<lambda>.<locals>.<genexpr>q  s      G6FAFFaff,6Fs   &))rI   r   r[  rv   r   )rN  pin_overridesr   s   `r>   r   rO  n  sW    FF-/ .Gc6F6FGG.---8
 66S7778rf   c              3  h   >#    U  H'  nT" U5      (       a  M  TR                  TUT5      v   M)     g 7fr;   )rB  )r<   rK   r?  r`   skipr   s     r>   r?   rQ  w  s4      !*AAw B))#q.AA*s   22c              3  8   #    U  H  n[        U5      v   M     g 7fr;   r#   rJ   s     r>   r?   rQ  ~  s     C,Bqill,BrA   c              3  >   #    U  H  oR                   S :H  v   M     g7fr4  NrH   rJ   s     r>   r?   rQ    s     J7I!66X-7I   c              3  >   #    U  H  oR                   S :H  v   M     g7fre  rH   rC   s     r>   r?   rQ    s     %TBSQff&8BSrf  r4  r   .*r   installc              3  b   >#    U  H$  oR                   T;  d  M  UR                   U4v   M&     g 7fr;   rH   )r<   rD   r`  s     r>   r?   rQ    s(      
!2AffM6QKQVVQK!2s   //r   z>=c              3  >   #    U  H  oR                   S :H  v   M     g7f)r   NrH   rC   s     r>   r?   rQ    s      1/@!FFg%/@rf  )r   r3  )9r   r   r   r   _get_package_poolrT   ru   to_match_specget_conflicting_specsrP   rI   r   r   r   rj   r   r   r   r   r$   r   r  rI  r   r   rY   r[  rU   rv   r   addr   warningrs   r   r   r   
UPDATE_ALLdictr  r   r   r  r   r   r   rX   r]   r   ry   find_conflictsr   offliner   rM   conda_prefixauto_update_conda) r`   r   rG  installed_specsrecordrF  rz   r  matches_for_specrE  rD   rK   precsr   rT   	conflictsconflictpy_in_prefixpy_requested_explicitlypython_prefix_recfreeze_installedpython_specpinned_versionspec_setconda_prefix_recversion_reqconda_requested_explicitly
conda_specconda_in_specs_to_add_versionr?  r`  rb  s    ``    `                      @@@r>   r   Solver._add_specs  sU    !!13??3O3O3QR //0A0AB99 O 69__5Q5Q5S5S6$$&5S  
 EE''9J9JKVuw 	 1??))?!mm113NHd$ %!$!3!3%    '(A-$
 % $%G6F%GPQR $ /q1...9.G.G.ICMM(+x(G,N,NN.7.ACMM(+((m^  /:.G.G.ICMM(+!;!;;.7228<*335/CMM(+
 /8 )=)=)?/CMM(+O 4V !!Avv&66!8!88ARAR,5a%,HCMM!&&)"66*SUU-D-DaS-I-M-MFFCE.  -6a%,HCMM!&&)!%%aff-KK2 ", ."A"AA??7799aVV3===X9   99N2/3/A/A/CCMM$)),/8		$*<*<*>0CMM$)),	  			.> .";";; )) $ % !$ : :	% !  OO88:D{{f,,,dii4999M-NO ; !$ < < >! !? II99,NS=M=M,NN "$)), ]]49956
 !?!   N$?$??D ! !**! L 33CCMM,@,@,BCC\I &OO MMS]]2 "(T:#BRBRR,,, S-G-GG3<X]]3KCMM(--0 , Js7I7IJJ"%%T$BSBS%T"T 7 # 3 3H ="22n6U6UU~-2B*;*I*I*Kh' "mm//)H:MN"y11/0A0I0IJTQ # #,K"PK'>E$2C2C,DD55..x9J9JKK}}	1))[8!$!7!7?O ,,X6044*5h' ::99-/3CMM$)), ; 	 
!%!2!2
 	
 cmm#DKKAUAU(V(V"227; "#3#;#;"<=-0 1/3/@/@1 .* !]]73
030A0A'20N0R0R1- 5!*:{!KJ,,5O!*7KPT!UJ)3g&
q @JB!s   i8i=!jjA$jc           
     v	  ^^ [        / TR                  R                  5       QTR                  Q75      nTR                  R                  5        Vs/ s H'  nTR                  R                  U5      (       a  M%  UPM)     nnU(       a  [        U5      e[        TR                  R                  [        U5      U R                  5      =(       d    / 5      nU(       Ga8  Sn[        R                  [        5      (       a&  [        R                  S[        S U 5       5      5        [        TR                  R                  5       5      m[!        U4S jU5      n[!        U4S jU5      nUR#                  S5      (       a  UR#                  SS5      n	UR#                  SS5      n
[        U	5      [        U R                  5      -  [        U
5      -
  n[%        ['        S U 5       5      ['        S	 U
 Vs1 s H  o3iM     sn 5       5      U R(                  5      eU H  nUR*                  (       d  M  UR,                  (       a  M)  SnUR/                  U5        UR#                  S
5      (       a  [1        UR2                  UR4                  S9nO[1        UR2                  5      nUR7                  U5        UTR                  UR2                  '   M     U(       a9  [        TR                  R                  [        U5      U R                  5      5      nOO
U(       a  GM8  [        R                  [        5      (       a/  [        R                  S[        ['        S U 5       5      5      5        U(       a  [8        R:                  (       aI  TR                  R=                  [        U5      U R                  TR>                  TR@                  S9Tl!        O[E        0 5      e[        U4S jTR                  RG                  5        5       5      U l$        TRJ                  (       a  TRJ                  RG                  5        Hq  u  nu  pU(       a  M  TRB                   Vs/ s H  nUR2                  U:w  d  M  UPM     snTl!        TRB                  RM                  U5        UR7                  U5        Ms     UTl'        T$ s  snf s  snf s  snf )NFzconflicting specs: %sc              3  J   #    U  H  oR                   =(       d    Uv   M     g 7fr;   r2  rC   s     r>   r?   "Solver._run_sat.<locals>.<genexpr>  s     F4EqXX]]4Es   !#c                   > U T;   $ r;   r8   )rD   specs_map_sets    r>   r   !Solver._run_sat.<locals>.<lambda>  s
    a=.@rf   c                2   > [        U SS9TR                  ;   $ )NTrV  )r$   r[  )rD   r   s    r>   r   r    s    )A59I9IIrf   Tr8   c              3  @   #    U  H  oR                  5       v   M     g 7fr;   __str__rC   s     r>   r?   r    s     M0L199;;0Lr   c              3  @   #    U  H  oR                  5       v   M     g 7fr;   r  rC   s     r>   r?   r    s     N0M199;;0Mr   r   ri  zfinal specs to add: %sc              3  8   #    U  H  n[        U5      v   M     g 7fr;   r  rC   s     r>   r?   r  '  s     H0G1A0GrA   )rT   history_specsry   c              3     >#    U  HD  u  pUTR                   ;   d  M  UR                  TR                   U   R                  :  d  M@  Uv   MF     g 7fr;   )r   
strictness)r<   r   r   r   s      r>   r?   r  7  sN      $
-C...  s99!<GGG A-s   A%A	A)(r	   r   r  track_features_specsr   find_matchesr   rY   ro  rP   rT   r   r8  r   r   r   r   r   r   r\   rM   r3  rW  remover$   rI   r   rp  r   unsatisfiable_hintssolver   ry   r   r   r   rW   r   r   final_environment_specs)r`   r   r  rD   absent_specsconflicting_specsspecs_modifiedgrouped_specsconflicting_pinned_specsin_specs_mappinned_conflictsin_specs_map_or_specs_to_addrz   neutered_specrI   r   rK   r  s    `               @r>   r   Solver._run_sat  s   ",%%'))#
 $'==#7#7#9W#9aASASTUAV#9W'55  EE''-.0A0A  	
  "N&&		+F4EFF   4 4 67M#$@BSTM
 (/I!($
 (++D11,00r:#;#?#?b#I %D,=,=(>>()0*, 6M0LMMN<L0M<Lq<L0MNNKK 
 *;;;t}}}%)N+2248xx	**(1$))T\\(R(1$))(<+//>/<CMM$)), * $'EE//568I8I%! g  l E""II(H0GHHI !G$?$?!$-.!..!88#&#9#9	 "- "C %R((# $
++-$
 
 &)&6&6&<&<&>"lt t $'#5#5*#5a4#5*C& &&--d3+//5 '? '>#
m Xh 1Nv*s   $R,9R,-R1R6%R6c           	     	  ^^^ TR                   nTR                  [        R                  :X  a  [	        TR
                  R                  5       5      nU R                   VVs1 s H'  nU  H  nUR                  U5      (       d  M  UiM     M)     nnnX6-  nU R                   VVs1 s H1  nTR                    H  nUR                  U5      (       d  M  UiM     M3     nnnU Vs1 s H  oUR                  iM     snm[	        U4S jU 5       5      nX7-  nUTl
        GO`TR                  [        R                  :X  Ga[  TR                  [        R                  :w  Ga<  [!        TR                  U R                  5      nUR#                  5       n	[%        U R                  5      U l	        U	 HX  nUR&                   HE  n
[)        U
5      n
U
R                  TR*                  ;  d  M*  U R                  R-                  U
5        MG     MZ     [/        U R                  5      U l	        U R                   Vs1 s H  oDR                  iM     snm[1        UU4S jU	 5       5      n[1        [!        / UR2                  Q[5        S U5      Q75      R2                  5      Tl
        GOTR                  [        R                  :X  Ga  [!        TR                  5      n[%        5       nU R                   HE  nUR7                  UR                  5      nUR9                  S UR;                  U5       5       5        MG     U Vs0 s H  o[)        U5      _M     nnTR<                   H  nUR?                  UR                  S 5        M!     SU;   aX  TR
                  RA                  S5      nSRC                  URD                  RG                  S5      S S 5      S-   n[)        SUS9US'   UR9                  U R                   Vs0 s H  oDR                  U_M     sn5        [1        URI                  5       5      nUU l	        U RK                  [        RL                  TR                  TRN                  TRP                  TRR                  S	9Tl
        S
Tl'        TRN                  (       a@  [!        TR                  U5      nURO                  5         [1        UR2                  5      Tl
        T$ s  snnf s  snnf s  snf s  snf s  snf s  snf )Nc              3  L   >#    U  H  nUR                   T;  d  M  Uv   M     g 7fr;   rH   )r<   r   remove_before_adding_backs     r>   r?   ,Solver._post_sat_handling.<locals>.<genexpr>j  s'      +-D99$== -r   c              3     >#    U  H=  nUR                   T;  d  M  TR                  R                  UR                   S 5      v   M?     g 7fr;   )rI   r   r   )r<   nodespecs_to_remove_namesr   s     r>   r?   r    s?      )D99$99 5##DIIt44)s
   A-Ac              3  8   #    U  H  oR                   v   M     g 7fr;   rH   )r<   
ancest_recs     r>   r?   r    s      $6O
OO6OrA   r4  .r
   rh  r   )rs   rt   ru   rv   rw   F)*r  rt   r   NO_DEPSr	   r   r   rV   r   rT   r   rI   	ONLY_DEPSrs   r   UPDATE_DEPSr%   +remove_youngest_descendant_nodes_with_specsrY   r   r$   r   rp  rR   rP   r   filterget_node_by_namer   all_ancestorsr[  r"  r   r   r   splitr  r   r   ru   rv   rw   )r`   r   r  _no_deps_solutionrz   r   only_remove_theseonly_add_theser   removed_nodesr   add_backupdate_namesr  rI   r   
python_recpy_vernew_specs_to_addr  r  s    `                 @@r>   r   Solver._post_sat_handlingP  sF   "%"="= 4 44 !+3??+G+G+I J !00!0D-D::d# - 0  ! 2 !---D..D::d# . -   @N(N~t~(N% * +-+ !
 /!2C
 !7!77##~'A'AA   2 2D4E4EFE!MMOM #D$5$5 6D%<<C#C.Cxxs}}4))--c2 ( & !*$*;*; <D <@;O;O$P;O4YY;O$P! ) H
 "'CekkCF4,BCDJJ"C   N$>$>>   2 23E5L))--dii8## $6;6I6I$6O$  *
 <HH<4y.<IH ((dii. )9$ __00:
*"4"4":":3"?"CDtK&/Xv&N	(#$:K:KL:K$iio:KLM$Y%5%5%78 !1D!%!7!7 . ; ;!//ii!// -- "8 "C CI99 2 24KLEKKM!&u{{!3C
[! )OJ %Q: I Ms0     S
S$*S
S#S+S!.S&+S+c                  ^ [         R                  (       a  [         R                  (       a  g [        [         R                  5      R                  SS 5      nU(       Ga  UR                  R                  nU[        :X  a  Sn[        U S[         35      m[        U R                  [         R                  5      (       a  [        U4S jU 5       5      (       a  g [        [        R                   " TU R"                  U R$                  U R&                  S9S S9nU(       aB  US   R(                  n[+        [-        S	[         S
U SU SU S3	5      [.        R0                  S9  g g g )Nr   defaultsz::conda>c              3  F   >#    U  H  nTR                  U5      v   M     g 7fr;   r   )r<   r   conda_newer_specs     r>   r?   0Solver._notify_conda_outdated.<locals>.<genexpr>  s      K
'--d33
r  )ra   c                ,    [        U R                  5      $ r;   )r&   r   rM  s    r>   r   /Solver._notify_conda_outdated.<locals>.<lambda>  s    l1995rf   r)  zg

                ==> WARNING: A newer version of conda exists. <==
                  current version: z#
                  latest version: z`

                Please update conda by running

                    $ conda update -n base -c z conda

                Or to minimize the number of packages updated during conda update use

                     conda install conda=z

                r0  )r   notify_outdated_condaquietr.   rv  r   channelcanonical_namer   r$   CONDA_VERSIONr   rM   r   r\   r/   	query_allrN   rQ   r]   r   r   r   r9  r:  )r`   r|   current_conda_prefix_recchannel_nameconda_newer_precslatest_versionr  s         @r>   rr   Solver._notify_conda_outdated  sD   ,,#-g.B.B#C#G#GQU#V #3;;JJL.)  )L>-)QR4;;(<(<==K
KKK &$$$MMLL $ 1 1	 6
! !!22!6!>!> $ %2? 3##1"2 3/ 0<n =* +9)9 :" %	 !/ $rf   c                   U R                   (       a'  XR                  :X  a  U R                  U R                  4$ [	        U S5      (       a;  U R                  (       a*  Xl        [        U R                  U R                  S9U l        O[        5       nU R                   H7  nUR                  S5      nU(       d  M  UR                  [        U5      5        M9     U R                  R                  U5        Xl        [        UU R                  SU R                  SSU R                  U R                   SS9	=U l        n[        XPR                  S9U l        SU l         U R                  U R                  4$ )Nr6   )rN   r  FT)rN   prependrQ   	use_local	use_cacherM   ra   
use_system)r^   _prepared_specsr6   r7   r   r(   rN   rY   rT   get_exact_valuerp  r!   r   r+   rQ   rM   r]   )r`   r  additional_channelsrz   r  reduced_indexs         r>   r  Solver._prepare  s!    >>n0D0DD;;''4""t{{#1 dkkDMMBDG #&%))..y97'++GG,<=	 * MM  !45#1 *6{{ --
+ 
DK- mmmDDG{{DGG##rf   )rO   rX   r6   r_   r^   r  r7   r]   rN   rW   rM   rT   rU   rV   r   rQ   )rM   r   rN   zIterable[Channel] | NonerQ   zIterable[str]rT   Iterable[MatchSpec]rV   r  ra   r   returnz;tuple[tuple[PackageRecord, ...], tuple[PackageRecord, ...]])r  ztuple[ReducedIndex, Resolve])__name__
__module____qualname____firstlineno____doc____annotations__r   r   rd   r}   rp   r   r   r   r   r   r   r   r   rB  rI  r   r   r   rr   r  __static_attributes__r8   rf   r>   r4   r4   :   sS     
 .2!#,./1&)) +) 	)
 *) -) )Z  M
b  ;( 
E;(~  z"x'!R"("2 x(9 )9v;z x(+ )+Z
.$l\ x( )Bxt2h)$rf   r4   c                  l    \ rS rSrS r\S 5       r\S 5       r\S 5       r\S 5       r	S r
S rS	 rS
rg)r   i*  c                    X l         X0l        X@l        XPl        X`l        Xpl        Xl        S U l        S U l        0 U l	        S U l
        U R                  5         0 U l        S U l        g r;   )rs   rt   ru   rv   rw   ry   rM   r   r   r   r   _init_solution_precsr   r  )r`   rM   rs   rt   ru   rv   rw   ry   s           r>   rd   SolverStateContainer.__init__.  sk    $  /*
*("4  
 "!!#'+$rf   c                ,    [        U R                  5      $ r;   )r.   rM   r`   s    r>   r    SolverStateContainer.prefix_dataY  s    $++&&rf   c                H    [        U R                  5      R                  5       $ r;   )r   rM   get_requested_specs_mapr  s    r>   r   +SolverStateContainer.specs_from_history_map]  s    t{{#;;==rf   c                B    [        S [        R                   5       5      $ )Nc              3  >   #    U  H  n[        US -   5      v   M     g7f)@Nr#   )r<   rN  s     r>   r?   <SolverStateContainer.track_features_specs.<locals>.<genexpr>c  s     H1GAYq3w''1Grf  )rP   r   r  r  s    r>   r  )SolverStateContainer.track_features_specsa  s    H1G1GHHHrf   c                R    U R                   (       a  S$ [        U R                  5      $ )Nr8   )rv   get_pinned_specsrM   r  s    r>   r[  !SolverStateContainer.pinned_specse  s    ''rJ-=dkk-JJrf   c                     XsU l         U l        g r;   )r   r   )r`   r   r   s      r>   r  ,SolverStateContainer.set_repository_metadatai  s    "
DFrf   c                    U R                   (       a  [        5       U l        g [        U R                  R	                  5       5      U l        g r;   )ru   rP   r   r   r   r  s    r>   r  )SolverStateContainer._init_solution_precsl  s/    ::"''D"'(8(8(E(E(G"HDrf   c                N    0 U l         U R                  5         0 U l        S U l        g r;   )r   r  r   r  r  s    r>   working_state_reset(SolverStateContainer.working_state_resets  s%    !!#'+$rf   )r   rt   r  rw   rv   r   rM   ru   r   ry   r   r   rs   N)r  r  r  r  rd   r   r   r   r  r[  r  r  r  r  r8   rf   r>   r   r   *  sl    ),V ' ' > > I I K K&I,rf   r   c                x    [        S [        R                   5       5      n[        U S9nXR	                  5       -   $ )z<Find pinned specs from file and return a tuple of MatchSpec.c              3  6   #    U  H  n[        US S9v   M     g7f)TrV  Nr#   r  s     r>   r?   #get_pinned_specs.<locals>.<genexpr>|  s      $3J4	$&3Js   )prefix_path)rP   r   pinned_packagesr.   r  )rM   context_pinned_packagesr   s      r>   r  r  z  s>    # $3:3J3J$  0K"%A%A%CCCrf   r8   c           	       ^^	^
^^^^ [        T[        5      (       d8  [        TS5      (       d  [        S5      e[        TS5      (       d  [        S5      e[        [	        [        U 5      R                  5       5      R                  5      mU[        L a  [        R                  OUnTT-
  mTT-
  m	U	U
UU4S jnU(       a<  U H6  m[        U4S jT 5       S 5      m
T
(       d  [        ST 35      eU" T
5        M8     [        S5      m[        U4S	 jT 5       S 5      n[        U4S
 jT 5       S 5      n[        nU(       aG  U(       a@  U" UR                  5      U" UR                  5      :w  a  S T 5       nU H  m
U" T
5        M     [        [!        [#        TU4S jS95      5      m[        [#        T	U4S jS95      m	[%        T5      [%        T	5      4$ )N__getitem__z&final_precs must support list indexing__sub__z'final_precs must support set differencec                X   > TR                  U 5        TT;   a  TR                  U 5        g g r;   )rp  )r  r|   r   previous_recordsr{   s    r>   _add_to_unlink_and_link;diff_for_unlink_link_precs.<locals>._add_to_unlink_and_link  s+    s##S! $rf   c              3  X   >#    U  H  nTR                  U5      (       d  M  Uv   M!     g 7fr;   r   r  s     r>   r?   -diff_for_unlink_link_precs.<locals>.<genexpr>  s     Gtzz#rR  zCould not find record for spec r4  c              3  X   >#    U  H  nTR                  U5      (       d  M  Uv   M!     g 7fr;   r   r<   r  r  s     r>   r?   r    s"     C(K,=,=c,B(rR  c              3  X   >#    U  H  nTR                  U5      (       d  M  Uv   M!     g 7fr;   r   r  s     r>   r?   r    s      M{k6G6G6L{rR  c              3  d   #    U  H&  oR                   [        R                  :X  d  M"  Uv   M(     g 7fr;   )noarchr"   r4  )r<   r	  s     r>   r?   r    s!     W+QZEVEV9Vqq+s   !0	0c                &   > TR                  U 5      $ r;   r   )rN  r  s    r>   r   ,diff_for_unlink_link_precs.<locals>.<lambda>  s    4D4J4J14Mrf   r  c                &   > TR                  U 5      $ r;   r  )rN  r   s    r>   r   r    s    [=N=Nq=Qrf   )
isinstancer	   r   	TypeErrorr%   r.   r   r   r   r   rx   r   r   r$   r   r   reversedr\   rP   )rM   r   rT   rx   r  prev_pythoncurr_pythongmmnoarch_python_precsr|   r   r  r  rz   r{   s    `       @@@@@@r>   r   r     s    k:..{M22DEE{I..EFF!+j.@.M.M.O"P"V"VW#2d#:  $k1L//J" "  DGGND"%DTF#KLL#D)	 ! H%KC(CTK M{MtTK
!C##$K,?,?(@@W+W'D#D) ( *MNOL F:3QRSJj 111rf   )rM   r   r  ztuple[MatchSpec]r  )Wr  
__future__r   r   r9  	itertoolsr   loggingr   r   textwrapr   typingr   boltons.setutilsr	    r   r   r  auxlib.decoratorsr   
auxlib.ishr   base.constantsr   r   r   r   base.contextr   common.constantsr   r   	common.ior   r   common.iteratorsr   r   common.pathr   r   
exceptionsr   r   r   r   historyr   models.channelr!   models.enumsr"   models.match_specr$   models.prefix_graphr%   models.versionr&   	reportersr'   resolver(   r   r*   r+   linkr,   r-   r   r.   subdir_datar/   r0   ImportErrorauxlib.collectioncollections.abcr1   models.recordsr2   r  r   r4   r   r  r   r8   rf   r>   <module>rD     s    ) "  
  $    '  + 0  W W " * / 9 >   $ % ) - ) #  & 4 # #/% (.m$ m$`'M, M,`D 	72
 A72i*  /./s   D D&%D&