+
    :1j[                       R t ^ RIHt ^ RIt^ RIt^ RI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Ht ^ RIHt ^ R	IHt ^ RIt^R
IHt ^RIHt ^RIHt ^RIH t  ^RI!H"t" ^RI#H$t$ ^RI%H&t& ^RI'H(t( ^RI)H*t* ^RI+H,t, ^RI-H.t.H/t/ ^RI0H1t1 ]Pd                  Pg                  R]! ]! ]! ]44      RRRR4      4      4      t5]! ]! ]5R4      4      ;t6t7]! ]! ]5R4      4      t8]! RR7      t9Rt:R t;RHR  lt<]RIR" l4       tRJR# lt=RJR$ lt>RJR% lt?R& t@R' tA]R( 4       tBR) tCR* tDR+ R, ltER- R. ltFRHR/ ltGR0 tH]P                  R1R13R2 ltJ]P                  R!R13R3 ltK]	]P                  R!R13R4 l4       tL]	]P                  R!R13R5 l4       tM]	]P                  R1R13R6 l4       tN]	]P                  R!R13R7 l4       tO]P                  R!R13R8 ltPRKR9 ltQRLR: ltR]RLR; l4       tS]RLR< l4       tT]RLR= l4       tU]RLR> l4       tV]RLR? l4       tW]RLR@ l4       tX]RLRA l4       tY]RLRB l4       tZRC t[]P                  ! 4       RD 4       t]RE t^RF RG lt_R# )Mz3Collection of helper functions used in conda tests.)annotationsN)contextmanager)cache)abspathdirnamejoin)Path)
gettempdirmkdtemp)patch)uuid4)REPODATA_FN)context)captured)json)
PrefixData)
SubdirData)rm_rf)lexists)History)Channel)PackageRecordPrefixRecord)ResolveCONDA_TEST_DATA_DIRz..testsdataconda_format_repobase_url_channelz-test-conda-channels)suffixz6Using Anaconda Cloud api site https://api.anaconda.orgc                    \         '       d<   V P                  \         4      '       d!   V \        \         4      R  P                  4       p V # N)expected_error_prefix
startswithlenlstrip)stderrs   &5lib/python3.14/site-packages/conda/testing/helpers.pystrip_expectedr(   -   s:    !2!23H!I!I1245<<>M    c                     V! 4       p\        RT 24      h  T  d8   pT'       d   Y$P                   ^ ,          9   g   Q h\        T4        Rp?R# Rp?ii ; i)    NTzdid not raise, gave )argsprint	Exception)	exceptionfuncstringaes   &&&  r'   raisesr4   3   sV    F *1#.
//  VVAY&&&a	s    A,AATc              #    "    \        4       ;_uu_ 4       pVx  R R R 4       \        XP                  4      Vn        V '       d-   VP                  '       d   \        RVP                   24      hR # R #   + '       g   i     L`; i  \        XP                  4      Tn        T '       d,   TP                  '       d   \        RTP                   24      hi i ; i5i)NzGot stderr output: )common_io_capturedr(   r&   r.   )disallow_stderrcs   & r'   r   r   >   s     >!!QG " "!((+qxxx1!((<==  (?	 "! "!((+qxxx1!((<==  (?s=   CB A3B 3CC3B	>B 4C;CCc                    V P                  4       : R VP                  4       : 2R,           V,           pV P                  4       VP                  4       8X  g   Q V4       hR# )z != z

Nlowerr2   boutputs   &&&r'   assert_equalsr?   J   sG    	}D.7&@F779	!)6)!r)   c                    V P                  4       VP                  4       9  g.   Q V R V P                  4       : RVP                  4       : 24       hR# ) z should not be found in Nr:   r<   s   &&&r'   assert_not_inrB   O   sD    779AGGI% (!AGGI= 8F%r)   c                    V P                  4       VP                  4       9   g.   Q V R V P                  4       : RVP                  4       : 24       hR# )rA   z cannot be found in Nr:   r<   s   &&&r'   	assert_inrD   U   sD    779	! (!AGGI= 4QWWYMB!r)   c                    V P                  R 4      w  rVR,           \        P                  ,           pR P                  W.4      # )::/)splitr   subdirr   )dist_stringchannel_strpackage_strs   &  r'   
add_subdirrM   [   s:    *006K#gnn4K99k/00r)   c                   \        V \        4      '       d/   V P                  4        UUu/ uF  w  r\        V4      VbK  	  upp# \        V \        4      '       d   \	        \        \        V 4      4      # \        V \        4      '       d   \        \        \        V 4      4      # \        V \        4      '       d   \        \        \        V 4      4      # \        R 4      hu uppi )z/Unable to add subdir to object of unknown type.)	
isinstancedictitemsrM   listmapsettupler.   )iterablekvs   &  r'   add_subdir_to_iterrY   a   s    (D!!-5^^-=>-=TQ
1q -=>>	Hd	#	#C
H-..	Hc	"	"3z8,--	He	$	$SX.//IJJ ?s   Cc               #  "  "   \        4       p \        \        4       4      R ,          p\        W4      p \        P
                  ! V4       Vx  \        V4      '       d   \        V4       R# R#   \        T4      '       d   \        T4       i i ; i5i):N   NN)r	   strr   r   osmakedirsr   r   )
tempdirdirr   prefixs      r'   tempdirra   n   sf     J%'l2G*&F
F6??&M 76??&M s   0BA-  B-BBc                j   VR ,          pVP                  R4      pVP                  R4      pVP                  R4      pV'       g!   RP                  VR,          VR,          4      pVP                  pVR,          P                  4        F'  w  r\        P
                  ! V
V	VVVVVVR7      pWV&   K)  	  R# )infoarchplatformrI   z{}-{}packages)fnrd   re   channelrI   priorityauthN)getformatrj   rQ   r   from_objects)indexrepodatarh   ri   repodata_inford   re   rI   rj   rg   rc   recs   &&&&        r'   supplement_index_with_repodatarr   {   s    V$MV$D  ,Hx(Fj 9=;PQ<<DZ(..0((
 c
 1r)   c                    \        4       pV P                  4        F2  pVP                  '       g   K  VP                  VP                  4       K4  	  V F  p\        P
                  ! V4      pW V&   K  	  R # r!   )rT   valuestrack_featuresupdater   feature)rn   all_featuresrq   feature_names   &   r'   add_feature_records_legacyrz      s\    5L||~ 2 23  %##L1c
 %r)   c                   V ^8  d   QhRR/#    subdir_datar    )rl   s   "r'   __annotate__r      s     * * *r)   c                Z   V P                   pV P                  P                  p/ p/ pV P                  4        F  pVP                  '       d   RVP
                  R,          n        VP                  4       pVR8X  d#   \        VRR4      '       d   RVR&   R;VR&   VR&   RV9   d   VR,          VR	&   VR VP                  P                  R
4      '       d   WdVP                  &   K  WcVP                  &   K  	  RVR,          RVR,          RVR,          RVR,          RVR,          RRV/RVRV/# )
This function is only temporary and meant to patch wrong / undesirable
testing behaviour. It should end up being replaced with the new class-based,
backend-agnostic solver tests.
T	timestampnoarchNrI   re   rd   featuresru   .conda_cache_control_etag_mod_url_add_piprc   rf   zpackages.conda)_internal_staterh   rI   iter_recordsr   
__fields___in_dumpdumpgetattrrg   endswith)r~   staterI   rf   packages_condapkgr   s   &      r'   _export_subdir_data_to_repodatar      s8    ''E  ''FHN'')=== 48CNN;'0xxzX'#x">">%DN.22DtF| &**%5D!"Z 66??8$$%)366"#SVV) *, 	% 01wffE*%f
 	H. r)   c                   V ^8  d   QhRR/# r|   r   )rl   s   "r'   r   r      s      z r)   c           	        \        \        4      V P                  P                  ,          pWP                  P                  ,          pVP                  RRR7       \        VR,          R4      ;_uu_ 4       p\        P                  ! \        V 4      V^RR7       VP                  4        \        P                  ! VP                  4       4       RRR4       R#   + '       g   i     R# ; i)r   T)parentsexist_okrepodata.jsonw)indent	sort_keysN)r   EXPORTED_CHANNELS_DIRrh   namerI   mkdiropenr   r   r   flushr]   fsyncfileno)r~   basesubdir_pathfs   &   r'   _sync_channel_to_diskr      s     %&)<)<)A)AAD,,333KdT2	kO+S	1	1Q		+K8!AQU	
 	
	
 
2	1	1	1s   5ACC(	c                   Vf=   \        V 4      P                  RR7      R3p\        P                  P	                  V4      pV'       d<   \        \
         RV  24      pV\        P                  VP                  RR7      R3&   R# R# )r   NTwith_credentialsr   rG   )r   urlr   _cache_rk   r   )r   r~   	cache_keylocal_proxy_channels   &&  r'   4_alias_canonical_channel_name_cache_to_file_prefixedr      s     DM%%t%<oM	 ((,,Y7%)>(?q&GH  	 $$d$;_M	
 r)   c                R    \        W4       \        V4       \        R4      Vn        R# )r   infN)r   r   float_mtime)r   r~   s   &&r'   _patch_for_local_exportsr      s"     9K +&uKr)   Fc                   \        V \        \        P                  34      '       dB   \	        \        \        V 4      4      ;_uu_ 4       p\        P                  ! V4      pR R R 4       M$\        V \        4      '       d   T pM\        R4      hV/ R/ /pV'       d   XWr&   M^XP                  4        FJ  w  rV	P                  R4      R8X  g   V	P                  R4      '       d   WR,          V&   K?  WV,          V&   KL  	  . p
. pVP                  4        F  w  rR^RRVR\        P                  R\        P                  RR	V R
V 2/RV/p\!        R	V R
V 24      pVP#                  V4       \%        V4      pV
P#                  V4       \        P&                  ! RV4      ;_uu_ 4        VP)                  \        P*                  ! V4      4       R R R 4       RVn        V\$        P.                  VP1                  RR7      \2        3&   \5        VV4       EK  	  / pV
 F3  pTP7                  VP9                  4        Uu/ uF  pVVbK  	  up4       K5  	  \;        VVR7      pVV3#   + '       g   i     EL; i  + '       g   i     L; iu upi )Nz1'json_filename_or_data' must be path-like or dictr   rI   repodata_versionrc   rd   re   base_urlzhttps://conda.anaconda.org/rG   rf   add_pip_as_python_dependencyTr   )channels)rO   r\   r]   PathLiker   r   TEST_DATA_DIRr   loadrP   
ValueErrorrQ   rk   r   	arch_namere   r   appendr   	_override_process_raw_repodata_strdumps_loadedr   r   r   r   rv   r   r   )json_filename_or_packageschannel_namerI   add_pipmerge_noarchfiall_packagesrf   keyr   subdir_datasr   
subchannelsubchannel_pkgsro   rh   sdrn   precrs   &&&&&               r'   _get_index_r_baser      sC    +c2;;-?@@$}&?@AAR99R=L BA	-t	4	40LMMHb)H'$**,HCwwx H,0A0A*-"3'(+ %	 - LH'/~~'7#
*))G,,9,qU	 	
 7~QzlST  B=wGG((H)=> H 
PR
GKKK>LM r2- (82 ER__->?->TdDj->?@ )A!8Oc BAAH HG @s   I %&I48J
 I1	4Jc                "    \        R RV VVR7      # z
index.json	channel-1rI   r   r   r   r   s   &&&r'   get_index_r_1r   <      ! r)   c                "    \        R RV VVR7      # )zindex2.json	channel-2r   r   r   s   &&&r'   get_index_r_2r   F      ! r)   c                "    \        R RV VVR7      # )zindex4.json	channel-4r   r   r   s   &&&r'   get_index_r_4r   Q  r   r)   c                "    \        R RV VVR7      # )zindex5.json	channel-5r   r   r   s   &&&r'   get_index_r_5r   \  r   r)   c                6   R RRR^ RRR.RRR	R
RRRR/RRRR^ RRR.RRR	R
RR/RRRR^ R. RRR	RRRRR/RRRR^ R. RRR	RRRRR/RRRR^ R. RRR	RRRRR/RRRR^ R. RRR	RRR RR/R!RRR^ RRR.RR"R	R#RR$RR/R%RRR^ RR&R.RR'R	R#RR(RR//p\        VR)V VVR*7       R+# ),zfoobar-1.0-0.tar.bz2build0build_numberdependszlibbar 2.0.*zlibfoo 1.0.*md5 11ec1194bcc56b9a53c127142a272772r   foobarr   l   -MCversion1.0zfoobar-2.0-0.tar.bz2zlibfoo 2.0.* f8eb5a7fa1ff6dead4e360631a6cd048z2.0zlibbar-1.0-0.tar.bz2 f51f4d48a541b7105b5e343704114f0flibbarl   KCzlibbar-2.0-0.tar.bz2 27f4e717ed263f909074f64d9cbf935dl   LCzlibfoo-1.0-0.tar.bz2 ad7c088566ffe2389958daedf8ff312clibfool   i6HCzlibfoo-2.0-0.tar.bz2 daf7af7086d8f22be49ae11bdc41f332l   SJCzqux-1.0-0.tar.bz2 18604cbe4f789fe853232eef4babd4f9quxl   WCzqux-2.0-0.tar.bz2zlibbar 1.0.* 892aa4b9ec64b67045a46866ef1ea488l   [Cchannel-freezer   Nr   )rI   r   r   ro   s   &&& r'   get_index_must_unfreezer   g  s    	SA75Hu!
 	SA75Hu!
 	SAr5Hu!
 	SAr5Hu!
 	SAr5Hu!
 	SAr5Hu!
 	SA75Eu
 	SA75Eu
HHR !r)   c                "    \        R RV VVR7      # r   r   r   s   &&&r'   get_index_cudar     r   r)   c                ~    VP                  R V  RV RV R24       \        R
RT RTRT;'       g    . RVRVRVR	V/VB # )rg   -r   r   r   r   r   r   r   rh   r   )
setdefaultr   )r   r   r   r   r   r   rh   kwargss   &&&&&&&,r'   recordr    s     dtfAgYawf=> 			 2	 		
 "	 	 	 	 	r)   c              #  t  "   VP                   p\        V4      pV U	u/ uF#  qP                  \        P                  ! V	4      bK%  	  up	Vn        V U
u/ uF  qP                  V
bK  	  pp
V R 8X  d;   \        \        P                  Wg4       \        R 4       \        \         R24      3pEM.V R8X  d;   \        \        P                  Wg4       \        R4       \        \         R24      3pEMV R8X  d;   \        \        P                  Wg4       \        R4       \        \         R24      3pEMV R8X  d;   \        \        P                  Wg4       \        R4       \        \         R24      3pEMkV R8X  dp   \        \        P                  Wg4       \        \        P                  Wg4       \        R4       \        R4       \        \         R24      \        \         R24      3pMV R	8X  dp   \        \        P                  Wg4       \        \        P                  Wg4       \        R4       \        R4       \        \         R24      \        \         R24      3pMV R
8X  d:   \        \        P                  Wg4       \        R4       \        \         R24      3pM?V R8X  d9   \!        \        P                  Wg4       \        R 4       \        \         R24      3pV'       d   \        P                  3M\        P                  R3p\        P"                  ! RV4      ;_uu_ 4        \$        P&                  ! \(        RVR7      ;_uu_ 4        \        P*                  P-                  4       ! VXVVVR7      x  RRR4       RRR4       R# u up	i u up
i   + '       g   i     L$; i  + '       g   i     R# ; i5i)r   z
/channel-1r   z
/channel-2r   z
/channel-4r   z
/channel-5aggregate-1aggregate-2must-unfreezer   z/channel-freezecudar   r   get_requested_specs_map)return_value)specs_to_addspecs_to_removeN)strpathr   r   r   rm   _PrefixData__prefix_recordsr   r   rI   r   r   r   r   r   r   r   r   r   r   objectr   plugin_managerget_solver_backend)
channel_idtmpdirr	  r
  prefix_recordshistory_specsr   r   pdrq   specspec_mapr   subdirss   &&&&&&&&      r'   _get_solver_baser    s     ^^F	F	B<J&<JS,++C00N&B" -::MD		4MH:[ gnng<<[I45Z@AC	{	"gnng<<[I45Z@AC	{	"gnng<<[I45Z@AC	{	"gnng<<[I45Z@AC	}	$gnng<gnng<<[I<[I,-Z89,-Z89
 
}	$gnng<gnng<<[I<[I ,-Z89,-Z89
 
	&F<=MN45_EFH	v	w~~w=<[I45Z@AC#/w~~gnnh5OG			97	C	C\\'#<8TT ((;;=) / 	 U 
D	Ce& ;` UT 
D	C	CsT   N8)NN8N(I8N8!AN8#&N$	,N	5N$=N8N!N$$N5	/	N8c              #  H   "   \        R V VVVVVVR7       Rj  xL
  R#  L5i)r   r	  r
  r  r  r   r   Nr  r  r	  r
  r  r  r   r   s   &&&&&&&r'   
get_solverr  )  1       !'%#!	 	 	   " "c              #  H   "   \        R V VVVVVVR7       Rj  xL
  R#  L5i)r   r  Nr  r  s   &&&&&&&r'   get_solver_2r!  ?  r  r  c              #  H   "   \        R V VVVVVVR7       Rj  xL
  R#  L5i)r   r  Nr  r  s   &&&&&&&r'   get_solver_4r#  U  r  r  c              #  H   "   \        R V VVVVVVR7       Rj  xL
  R#  L5i)r   r  Nr  r  s   &&&&&&&r'   get_solver_5r%  k  r  r  c              #  H   "   \        R V VVVVVVR7       Rj  xL
  R#  L5i)r  r  Nr  r  s   &&&&&&&r'   get_solver_aggregate_1r'    1       !'%#!	 	 	r  c              #  H   "   \        R V VVVVVVR7       Rj  xL
  R#  L5i)r  r  Nr  r  s   &&&&&&&r'   get_solver_aggregate_2r*    r(  r  c              #  H   "   \        R V VVVVVVR7       Rj  xL
  R#  L5i)r  r  Nr  r  s   &&&&&&&r'   get_solver_must_unfreezer,    s1       !'%#!	 	 	r  c              #  H   "   \        R V VVVVVVR7       Rj  xL
  R#  L5i)r  r  Nr  r  s   &&&&&&&r'   get_solver_cudar.    s1       !'%#!	 	 	r  c                Z    \         ;QJ d    . R  V  4       F  NK  	  5# ! R  V  4       4      # )c              3  D   "   T F  qP                  R R7      x  K  	  R# 5i)F)canonical_nameN)dist_str).0r   s   & r'   	<genexpr>&convert_to_dist_str.<locals>.<genexpr>  s     Je44s    )rU   )solutions   &r'   convert_to_dist_strr7    s$    5JJ5J5JJJJr)   c                 >    \         P                  P                  4       # r!   )r   r  r  r   r)   r'   solver_classr9    s    !!4466r)   c                 @    \        \        P                  ! R 4      4      # )_RERUN_IN_SUBPROCESS)boolr]   getenvr   r)   r'   in_subprocessr>    s    		0122r)   c                   V ^8  d   QhRR/# )r}   returnz"subprocess.CompletedProcess | Noner   )rl   s   "r'   r   r     s      'r)   c                   \        4       '       d   R # T;'       g    R	p\        P                  P                  4       pRVR&   VP	                  VP                  R/ 4      4       \        P                  ! \        P                  RR.VOV P                  P                   RV P                  P                   2N3RVP                  RR4      RV/VB # )
N1r;  envz-mpytestrF   checkT)z--no-headerz--disable-warningsz
--color=noz-vvv)r>  r]   environcopyrv   pop
subprocessrunsys
executablenodepathr   )requestcli_argssubprocess_kwargsr,   rC  s   &*,  r'   forward_to_subprocessrR    s        D **//
C"%CJJ $$UB/0>>NN	
 		

 ||  !GLL$5$5#67	
  ##GT2   r)   r!   )T) )r2   r   Nr   r+   r+   N)r   r   r   r   FF)`__doc__
__future__r   r]   rI  rK  
contextlibr   	functoolsr   os.pathr   r   r   pathlibr   tempfiler	   r
   unittest.mockr   uuidr   rD  base.constantsr   base.contextr   	common.ior   r6   common.serializer   core.prefix_datar   core.subdir_datar   gateways.disk.deleter   gateways.disk.readr   historyr   models.channelr   models.recordsr   r   resolver   rF  rk   __file__r   CHANNEL_DIRCHANNEL_DIR_V1CHANNEL_DIR_V2r   r"   r(   r4   r?   rB   rD   rM   rY   ra   rr   rz   r   r   r   r   rI   r   r   r   r   r   r   r   r  r  r  r!  r#  r%  r'  r*  r,  r.  r7  fixturer9  r>  rR  r   r)   r'   <module>rn     s   : " 	  
 %  * *  (    ( " 6 # ) ) ( (  $ 8  

74(94wPV#WX  'tM;N'OP Pnm-?@A'=>  Q 0 > >*
1
K 	 	0*Z""&* >>9z !E   E    E    U   #*>>4e P Ph "..$U .IX  *  *  *  *  *  *  *  *K 7 73r)   