+
    :1j0                    r   R t ^ RIHt ^ RIt^ RIt^ RI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 ^RIHtHt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$H%t% ^RI&H't'H(t( ^RI)H*t* ^RI+H,t, ^RI-H.t.H/t/H0t0H1t1H2t2 ^RI3H4t4 ^RI5H6t6H7t7H8t8 ^RI9H:t:H;t; ^RI<H=t= ]'       d   ^ RI>H?t?H@t@ ^ RIHAtA ^RIBHCtCHDtD ]! ]E4      tFR0R ltG],P                  ! RRR]P                  ! R4      RR7       R  R! ltJR" R# ltKR1R$ R% lltLR2R& R' lltMR( R) ltNR* R+ ltOR3R, ltPR0R- ltQR4R. ltRR/ tSR# )5z Miscellaneous utility functions.)annotationsN)	getLogger)abspathdirnameisdirisfilejoinrelpath)TYPE_CHECKING)EXPLICIT_MARKER)context)on_macon_win	open_utf8)dashlist)expand)is_urljoin_urlpath_to_url)Index)PrefixSetupUnlinkLinkTransaction)PackageCacheDataProgressiveFetchExtract)
PrefixData)
deprecated)DisallowedPackageError
DryRunExitPackagesNotFoundInChannelsError
ParseErrorSpecNotFoundInPackageCache)rm_rf)islinkreadlinksymlink)ChannelMatch	MatchSpec)PrefixGraph)IterableSequence)Any)PackageCacheRecordPackageRecordc           	         \        4       p\        V 4      P                  4        F>  pV'       d
   RV9   d   K  VP                  \        VP	                  RR4      4      4       K@  	  V# )zV
Return the set of files which have been installed (using conda) into
a given prefix.
	file_hashfiles )setr   iter_recordsupdateget)prefixexclude_self_buildresmetas   &&  *lib/python3.14/site-packages/conda/misc.pyconda_installed_filesr:   /   sS    
 %C6"//1+"5

3txx,-. 2 J    z26.9z27.3url_patz(?:(?P<url_p>.+)(?:[/\\]))?(?P<fn>[^/\\#]+(?:\.conda|\.tar\.bz2))(?:#((?P<md5>[0-9a-f]{32})|((sha256:)?(?P<sha256>[0-9a-f]{64}))))?$z,Use `conda.misc._get_url_pattern()` instead.)addendumc                   V ^8  d   QhRR/# )   returnz
re.Patternr0   )formats   "r9   __annotate__rB   L   s      * r;   c                     \         P                  P                  4       P                  4       p RP	                  \        \        P                  V 4      4      p\        P                  ! RV R24      # )zEBuild URL pattern dynamically based on registered package extensions.|z-(?:(?P<url_p>.+)(?:[/\\]))?(?P<fn>[^/\\#]+(?:zE))(?:#((?P<md5>[0-9a-f]{32})|((sha256:)?(?P<sha256>[0-9a-f]{64}))))?$)	r   plugin_managerget_package_extractorskeysr   mapreescapecompile)
extensionsext_patterns     r9   _get_url_patternrN   L   s]    ''>>@EEGJ((3ryy*56K::	)] +	 r;   c                    V ^8  d   QhRRRR/# )r?   specsIterable[str]r@   zIterable[MatchSpec]r0   )rA   s   "r9   rB   rB   Z   s     * *m *8K *r;   c              #    "   \        4       pV  F  pV\        8X  d   K  \        V4      '       g    \        \	        V4      4      pVP                  V4      pVf   \        RV 24      hVP                  R4      VP                  R4      rT\        WE4      p/ pVP                  R4      ;p'       d   WR&   VP                  R4      ;p	'       d   WR&   \        V3/ VB x  K  	  R # 5i)NzCould not parse explicit URL: url_pfnmd5sha256)
rN   r   r   r   r   matchr   groupr   r&   )
rP   r<   specmrS   rT   url	checksumsrU   rV   s
   &         r9   _match_specs_from_explicitr]   Z   s      G?"d|| vd|,D MM$9=dVDEEGGG$aggdmru!	''%. 3 "eWWX&&6&"(h)y))9 s   C	C$C$c               4    V ^8  d   QhRRRRRRRRRR	R
RRR/# )r?   rP   rQ   r5   strverboseboolforce_extractindexr*   requested_specsSequence[str] | Noner@   Noner0   )rA   s   "r9   rB   rB   {   sN        	
  * 
r;   c                8    \        V 4      p\        VVVR 7       R# ))package_cache_recordsr5   rd   N)!get_package_records_from_explicitinstall_explicit_packages)rP   r5   r`   rb   rc   rd   rh   s   &&&&&& r9   explicitrk   {   s      >eD3'r;   c               $    V ^8  d   QhRRRRRR/# )r?   rh   zlist[PackageRecord]r5   r_   rd   re   r0   )rA   s   "r9   rB   rB      s&     ) ).)) *)r;   c                   \         ;QJ d    . R V  4       F  NK  	  5M! R V  4       4      p. p\        V4      p\        V4       F  w  pw  rx\        WxP                  R7      p	WV,          ^ &   VP                  VP                  R4      p
V
'       g   KO  \        VP                  V	4      R4      '       d   RW6,          ^ &   K}  VP                  V
4       K  	  V'       d.   \         ;QJ d    . R V 4       F  NK  	  5M! R V 4       4      pM,\         ;QJ d    . R V 4       F  NK  	  5M! R V 4       4      p\        TT\         ;QJ d    . R V 4       F  NK  	  5M! R V 4       4      RVR4      p\        V4      p\        P                  '       g'   \        P                  '       g   VP                  4        VP                  4        R# )z.Install a list of PackageRecords into a prefixc              3  D   "   T F  qP                  4       V.x  K  	  R # 5iN)to_match_spec).0recs   & r9   	<genexpr>,install_explicit_packages.<locals>.<genexpr>   s     U?T++-s3?Ts    nameNc              3  8   "   T F  p\        V4      x  K  	  R # 5iro   r&   rq   rY   s   & r9   rs   rt      s     (U_T4_   c              3  T   "   T F  q^ ,          '       g   K  V^ ,          x  K   	  R# 5i    Nr0   rq   sps   & r9   rs   rt      s     (O2AA   ((c              3  T   "   T F  q^ ,          '       g   K  V^,          x  K   	  R# 5ir|   r0   r~   s   & r9   rs   rt      s     4leeebeelr   r0   )tupler   	enumerater&   rv   r4   nextqueryappendr   r   r   jsonquietprint_transaction_summaryexecute)rh   r5   rd   specs_pcrecsprecs_to_removeprefix_dataqrY   pcrecnew_specprecupdate_specs_for_historystptxns   &&&           r9   rj   rj      sX    5U?TU55U?TUULOV$K%l3=DT

3%Quzz404K%%h/66%)"&&t, 4 #(5(U_(U55(U_(U#U #(5(O(O55(O(O#O 
4l44l44
 
C  
$C<<<%%'KKMr;   c                    V ^8  d   QhRRRR/# )r?   rP   	list[str]r@   Iterable[PackageCacheRecord]r0   )rA   s   "r9   rB   rB      s     , ,) ,8T ,r;   c                ~   \         ;QJ d    . R V  4       F  NK  	  5M! R V  4       4      pV UUu. uF  w  r#Ve   K  \        V4      NK  	  pppV'       dD   \        V4      \        V4      8X  d   \        R4      hRP	                  V4      p\        RV 24      hV Uu. uF  qf^,          NK  	  up# u uppi u upi )z{Given a list of specs, find the corresponding PackageCacheRecord. If
some PackageCacheRecords are missing, raise an error.
c              3  d   "   T F&  q\        \        P                  ! V4      R 4      .x  K(  	  R # 5iro   )r   r   	query_allry   s   & r9   rs   1_get_package_record_from_specs.<locals>.<genexpr>   s)      INt$..t4d;<s   .0zNo package cache records foundz, z#Missing package cache records for: )r   r_   lenr    r   )rP   r   rY   r   specs_with_missing_pcrecsmissing_precs_listrr   s   &      r9   _get_package_record_from_specsr      s     5 IN55 IN L &2!%1kdU	D	\  ! !()S->>,-MNN!%+D!E,56H5IJ  ++lsFFl++! ,s   B4B4 B:c                    V ^8  d   QhRRRR/# )r?   linesr   r@   r   r0   )rA   s   "r9   rB   rB      s     7 7Y 7;W 7r;   c                    \        \        V 4      4      p\        P                  '       d   \	        4       h\        V4      pVP                  4        \        V4      # )zGiven the lines from an explicit.txt, create the PackageRecords for each of the
specified packages. This may require downloading the package, if it does not already
exist in the package cache.
)listr]   r   dry_runr   r   r   r   )r   fetch_specspfes   &  r9   ri   ri      sG     1%89Kl "+
.CKKM *+66r;   c                8   \        4       p\        V 4      p 0 Rmp0 Rmp\        '       d   VP                  RR04       R \        P
                  ! V 4       4        EF  pV'       d	   Wd9   d   K  \        \        W4      4      '       d   VP                  V4       KA  \        P                  ! \        W4      4       F  w  rxp	T;'       d    V\        V R4      8H  p
V	 F7  pV
'       d	   W9   d   K  VP                  \        \        W{4      V 4      4       K9  	  V F;  p\        W|4      p\        V4      '       g   K!  VP                  \        W4      4       K=  	  K  	  EK  	  \        '       d*   V'       d"   V Uu0 uF  qP                  RR4      kK  	  up# V# u upi )	z8Return the set of all files in a given prefix directory.z
python.appzLauncher.appc              3  8   "   T F  qP                   x  K  	  R # 5iro   ru   )rq   entrys   & r9   rs   walk_prefix.<locals>.<genexpr>   s     :'9ezz'9rz   bin\/>   envsinfopkgsusers.index.unionfs	.nonadmin	conda-bld
conda-meta.conda_lockLICENSE.txtconda-recipes>   condaactivate
deactivate)r1   r   r   r3   osscandirr   r   addwalkr	   r"   r   replace)r5   ignore_predefined_fileswindows_forward_slashesr7   ignore	binignorerT   rootdirsr/   should_ignorefn2dnpaths   &&&           r9   walk_prefixr      s9   
%CV_FF 4Iv|^45:rzz&'9:"r|$v"##GGBK!#f)9!:D3SSVU@S8SM S%5T89  D~$<<GGGD12  "; ;" v)478CDT3'C88
 9s   8Fc                (   \        W4      p\        V 4      V,
           Uu0 uFf  pVP                  R4      '       d   K  \        '       d   VP                  R4      '       d   KA  VP                  R4      '       d   VRR V9   d   Kd  VkKh  	  up# u upi )z;Return (the set) of all untracked files for a given prefix.~z	.DS_Storez.pycN)r:   r   endswithr   )r5   r6   conda_filesr   s   &&  r9   	untrackedr     s    'CK  '+5
5DMM# 	 vk* 	 }}V$$Sb	[( 	5
 
 
s"   BB
B#B:BBc                	  aa \        V 4      p\        V 4      P                  4        Uu0 uF  qfkK  	  pp/ pV Uu. uF  qfP                  R4      '       d   K  VNK  	  p	p. p
V	'       Ed1   T;'       g    / pVP	                  R4      VR&   \        R/ VB pV	 F  o\        SP                  SP                  SP                  R7      o\        ;QJ d%    . V3R lVP                  4        4       F  NK  	  5M! V3R lVP                  4        4       4      pV'       g   V
P                  S4       K  \        V4      ^8  d.   VP                  S4       VP                  \!        V4      4       K  VP                  S4       VP                  V^ ,          4       EK  	  V
'       d1   V'       d   VP                  R4      ;'       g    RMRp\#        W4      h/ pV F  oSR,          VS&   K  	  \        \%        V4      P&                  4      pV Uu. uF  qmV,          NK  	  pp\        ;QJ d"    . R \(        P*                   4       F  NK  	  5M! R \(        P*                   4       4      pV FN  o\,        ;QJ d    V3R lV 4       F  '       g   K   RM	  R	M! V3R lV 4       4      '       g   KE  \/        S4      h	  V'       d7   \1        R
\        V4      ,          4       \1        R\        V4      ,          4       \(        P2                  '       d   \5        4       hV EFH  p\7        W4      p\7        W4      p\9        V4      p\;        V4      '       g   \=        V4      '       d   \?        V4       \A        V4      '       g   \B        PD                  ! V4       \;        V4      '       d   \G        \I        V4      V4       K   \K        VR4      ;_uu_ 4       pVPM                  4       pRRR4        XPQ                  R4      pTPS                  Y4      pTPU                  R4      p\K        TR4      ;_uu_ 4       pTPY                  X4       RRR4       \Z        P\                  ! TT4       EKK  	  \_        VVV'       * VR	R7      pVV3# u upi u upi u upi   + '       g   i     L; i  \N         d     EK  i ; i  \V         d     Li ; i  + '       g   i     L; i)z(Clone existing prefix1 into new prefix2.r[   channel_urlschannels)rv   versionbuildc              3  Z   <"   T F   pSP                  V4      '       g   K  Vx  K"  	  R # 5iro   rW   )rq   r   rY   s   & r9   rs   clone_env.<locals>.<genexpr>-  s     N>4TZZ=M$$>s   +
+c              3  8   "   T F  p\        V4      x  K  	  R # 5iro   rx   )rq   ss   & r9   rs   r   D  s     I-Hy||-Hrz   c              3  D   <"   T F  qP                  S4      x  K  	  R # 5iro   r   )rq   dr   s   & r9   rs   r   F  s     1jwwt}}js    TFzPackages: %dz	Files: %drbNzutf-8wb)r`   rc   rb   r0   )0r   r   r2   r4   popr   r&   rv   r   r   r   valuesr   r   remover   _get_best_prec_matchr   r'   graphr   disallowed_packagesanyr   printr   r   r   r   r"   r   r!   r   r   makedirsr$   r#   r   readOSErrordecoder   encodeUnicodeDecodeErrorwriteshutilcopystatrk   )prefix1prefix2r`   r   
index_argsuntracked_filesr   drecsrc   unknownsnotfoundprecsr   urls
disallowedfsrcdstdst_dirfidatar   foactionsrY   s   &&&&& `                 @r9   	clone_envr    s   (O(1>>@A@dT@EA E!&>hhuoH>Hx%%2
!+!?
:#
#D$))T\\TDEN5<<>NEEN5<<>NNE%UaT"		.u56T"		%(#   >H
z288bR-hEE D%[T
  +d#))*E#()54JJ5D)IW-H-HIIW-H-HIIJ31j13331j111(..  ns5z)*kC001l77#,'??fWoo'NW~~KK #;;HSM3'	3%%wwy &
	G$A		'+A88G$D sD!!RHHTN "S!7 : 	G O##i B ?< *6 &% 		 " 		 "!sd   
RRRR=R#R"R#+3R62SR R# R##R32R36SSSc                :  a V '       g   \        R 4      h\        P                   FJ  p\        V4      o\        ;QJ d    . V3R lV  4       F  NK  	  5M! V3R lV  4       4      pV'       g   KJ   M	  T p\
        P                  R\        V4      4       V^ ,          # )z'precs' cannot be empty.c              3     <"   T F4  pSP                  VP                  P                  4      '       g   K0  Vx  K6  	  R # 5iro   )rW   channelrv   )rq   r   channel_matchers   & r9   rs   '_get_best_prec_match.<locals>.<genexpr>|  s-      
"To&;&;DLL<M<M&NDDUs   -?
?zMultiple packages found: %s)
ValueErrorr   r   r%   r   logwarningr   )r   r  prec_matchesr  s   &  @r9   r   r   w  s    344##&w/u 
"
uu 
"
 
 < $ KK-x/EF?r;   )F)FTNNro   )TT)TFN)T__doc__
__future__r   r   rI   r   loggingr   os.pathr   r   r   r   r   r	   typingr
   base.constantsr   base.contextr   common.compatr   r   r   	common.ior   common.pathr   
common.urlr   r   r   
core.indexr   	core.linkr   r   core.package_cache_datar   r   core.prefix_datar   deprecationsr   
exceptionsr   r   r   r   r    gateways.disk.deleter!   gateways.disk.linkr"   r#   r$   models.match_specr%   r&   models.prefix_graphr'   collections.abcr(   r)   r*   models.recordsr+   r,   __name__r  r:   constantrK   rN   r]   rk   rj   r   ri   r   r   r  r   r0   r;   r9   <module>r'     s    ' " 	 	   B B   + ! 4 4   5 5  9 N ( $  ( 9 9 6 ,2A 
   

JJ	 < *B )X,.7&)X W$tr;   