+
    )jz(                       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 ^ RIHt ^ RIHt ^ RIHtHtHt ^R	IHtHtHtHtHtHtHtHt ]	! ]4      tR
t ! R R4      t  ! R R4      t!]PD                  3R R llt#]PH                  ! ]! ]%4      PL                  ^,          R,          R] R2,          PO                  4       4      R,          ^ ,          t(R# ) )annotationsN)deepcopy)	getLogger)Path)check_output)NamedTemporaryFile)AnyIterableMapping)DEFAULT_BASE_PREFIXDEFAULT_PREFIX_UserOrSystem	data_pathdeep_update
logged_runread_menuinst_tomlslugifyz1-1-3c                      ] tR t^t]]R3R R lltR R ltR R ltRR	 R
 llt	R R lt
]R R l4       tR R lt]R R l4       tR R ltRR R lltR R ltRtR# )Menuuserc               (    V ^8  d   QhRRRRRRRR/# )   namestrprefixbase_prefixmoder    )formats   "7lib/python3.14/site-packages/menuinst/platforms/base.py__annotate__Menu.__annotate__   s2     - -- - 	-
 -    c                	    VR9   g   Q RV R24       hW@n         Wn        \        V4      V n        \        V4      V n        V P                  P                  V P                  4      '       d
   RV n        R# V P                  P                  V n        R# )r   zmode=z must be `user` or `system`baseN)r   system)r   r   r   r   r   samefileenv_name)selfr   r   r   r   s   &&&&&r    __init__Menu.__init__   sw     ))TU4&8S+TT)		6l,;; 0 011"DM KK,,DMr#   c                   V ^8  d   QhRR/# r   returnztuple[os.PathLike]r   )r   s   "r    r!   r"   1        " "* "r#   c                	    \         hNNotImplementedErrorr)   s   &r    createMenu.create1       !!r#   c                   V ^8  d   QhRR/# r-   r   )r   s   "r    r!   r"   4   r/   r#   c                	    \         hr1   r2   r4   s   &r    removeMenu.remove4   r7   r#   Nc               (    V ^8  d   QhRRRRRRRR/# )r   valuer	   slugboolextrazdict | Noner.   r   )r   s   "r    r!   r"   7   s)      C t K SV r#   c                	   \        VR 4      '       g   V# V'       d   / V P                  CVCpMV P                  pVP                  4        F%  w  rVVP                  RV,           R,           V4      pK'  	  V'       d   \	        V4      pV# )replacez{{ z }})hasattrplaceholdersitemsrB   r   )r)   r=   r>   r@   rD   placeholderreplacements   &&&&   r    renderMenu.render7   sx    ui((L9d//959L,,L(4(:(:(<$KMM%+"5"={KE )=ENEr#   c                   V ^8  d   QhRR/# r   r.   r   r   )r   s   "r    r!   r"   D   s     % % %r#   c                    \         P                  P                  R4      ;p'       d   V# \        V P                  4      pVP                  R4      ;p'       d   V# V P                  P
                  # )z
Get distribution name with resolution order:
1. MENUINST_DISTRIBUTION_NAME env var
2. $BASE_PREFIX/Menu/menuinst.toml
3. base_prefix.name (fallback)
MENUINST_DISTRIBUTION_NAMEdistribution_name)osenvirongetr   r   r   )r)   r   datas   &  r    _get_distribution_nameMenu._get_distribution_nameD   s^     ::>>">??4?K!$"2"2388/0040K$$$r#   c                   V ^8  d   QhRR/# r   r.   zdict[str, str]r   )r   s   "r    r!   r"   U   s     
 
n 
r#   c                   R\        V P                  4      RV P                  4       R\        V P                  R,          R,          4      R\        V P                  4      RV P                  R\        V P                  R,          R,          4      R	\        V P                  R
,          4      R\        V P                  R,          4      RRR\
        P                  P                  R4      RR/# )z
Additional placeholders added at runtime:
- MENU_ITEM_LOCATION -> *MenuItem().location

Subclasses may extend this dictionary!
BASE_PREFIXDISTRIBUTION_NAMEBASE_PYTHONbinpythonPREFIXENV_NAMEPYTHONMENU_DIRr   BIN_DIRPY_VERzN.AHOME~ICON_EXTpng)r   r   rS   r   r(   rO   path
expanduserr4   s   &r    rD   Menu.placeholdersT   s     3t//0!<!<!>3t//%7(BCc$++&c$++-89DKK&01s4;;./eBGG&&s+
 	
r#   c                   V ^8  d   QhRR/# )r   r.   ztuple[Path, ...]r   )r   s   "r    r!   r"   j   s     

 

,< 

r#   c                	   V P                   R ,          V P                   R,          \        \        P                  P	                  RR4      4      V P                   R,          R,          V P                   R,          R,          \        \        P                  P	                  RR4      4      V P                   R,          R,          V P                   R,          R,          3# )	
_conda.exe	conda.exe	CONDA_EXEz /oops/a_file_that_does_not_existcondabincondar[   	MAMBA_EXE
micromamba)r   r   rO   rP   rQ   r4   s   &r    _conda_exe_path_candidatesMenu._conda_exe_path_candidatesj   s    |+{*-OPQz)G3u$w.-OPQz)L8u$|3	
 		
r#   c                   V ^8  d   QhRR/# r   r.   r   r   )r   s   "r    r!   r"   w   s     	 	4 	r#   c                	    \         P                  P                  R 4      '       d   \        \         P                  4      # V P	                  4        F  pVP                  4       '       g   K  Vu # 	  \        R4      # )rm   rp   )sys
executableendswithr   rs   is_file)r)   rg   s   & r    	conda_exeMenu.conda_exev   sU    >>"";//''335D||~~ 6 G}r#   c                    V ^8  d   QhRRRR/# )r   exer   r.   r?   r   )r   s   "r    r!   r"      s      $ 4 r#   c                	    R VP                   9   d   R# VP                   R9   d   \        \        V4      R.RR7      pRV9   # R# )rr   Tinfo)universal_newlineszmicromamba versionF)rm   rl   )r   r   r   )r)   r   outs   && r    _is_micromambaMenu._is_micromamba   sA    388#8822C&1dKC'3..r#   c                    V ^8  d   QhRRRR/# )r   r   zPath | str | Noner.   r   r   )r   s   "r    r!   r"      s     
, 
,%6 
,$ 
,r#   c                    \         P                  R8X  d   \        hVf   V P                  p\	        V4      R,          p\        R VP                  R4       4       VR,          4      pVR,          # )z:
Locate the python site-packages location on unix systems
ntlibc              3  T   "   T F  qP                  4       '       g   K  Vx  K   	  R # 5ir1   )is_dir).0ps   & r    	<genexpr>&Menu._site_packages.<locals>.<genexpr>   s     H&9XXZ11&9s   (
(zpython*z	pythonN.Azsite-packages)rO   r   r3   r   r   nextglob)r)   r   r   
lib_pythons   &&  r    _site_packagesMenu._site_packages   s]     77d?%%>[[F6lU"Hchhy&9H#P[J[\
O++r#   c                   V ^8  d   QhRR/# r   r.   zIterable[os.PathLike]r   )r   s   "r    r!   r"           " "- "r#   c                    \         h)zd
This method should return the paths created by the menu
so they can be removed upon uninstallation
r2   r4   s   &r    _pathsMenu._paths   
    
 "!r#   )r   r(   r   r   r   FNr1   )__name__
__module____qualname____firstlineno__r   r   r*   r5   r:   rH   rS   propertyrD   rs   r|   r   r   r   __static_attributes__r   r#   r    r   r      sg     %.$-$""%  
 
*

 	 	
," "r#   r   c                     ] tR t^tR R lt]R R l4       tR R ltR R lt]R	 R
 l4       t	]R R l4       t
RR R lltRR R lltR tR R lt]R R l4       t]]P$                  3R R ll4       t]P$                  3R R lltRtR# )MenuItemc                    V ^8  d   QhRRRR/# )r   menur   metadataMapping[str, Any]r   )r   s   "r    r!   MenuItem.__annotate__   s     ) )T )-> )r#   c                	   Wn         V P                  V4      V n        V P                  V P                  4      V n        \        V P                  R ,          \        4      '       d   V P                   P                  P                  V P                   P                  4      '       d%   V P                  R ,          P                  RR4      pM#V P                  R ,          P                  RR4      pV'       g   \        R4      hW0P                  R &   R# R# )r   target_environment_is_baser   target_environment_is_not_basez3Cannot parse `name` from dictionary representation.N)r   _initialize_on_defaults_data_flatten_for_platformr   
isinstancedictr   r'   r   rQ   
ValueError)r)   r   r   r   s   &&& r    r*   MenuItem.__init__   s    	11(;
224::>dmmF+T22yy(()>)>??}}V,001MrR}}V,001QSUV !VWW$(MM&! 3r#   c                   V ^8  d   QhRR/# rv   r   )r   s   "r    r!   r      s     " "$ "r#   c                    \         h)zPPath to the main menu item artifact (file or directory, depends on the platform)r2   r4   s   &r    locationMenuItem.location   s
     "!r#   c                   V ^8  d   QhRR/# r   r   )r   s   "r    r!   r           " "- "r#   c                	    \         hr1   r2   r4   s   &r    r5   MenuItem.create   r7   r#   c                   V ^8  d   QhRR/# r   r   )r   s   "r    r!   r      r   r#   c                	    \         hr1   r2   r4   s   &r    r:   MenuItem.remove   r7   r#   c                   V ^8  d   QhRR/# rV   r   )r   s   "r    r!   r      s     
 
n 
r#   c                	0    R \        V P                  4      /# )MENU_ITEM_LOCATION)r   r   r4   s   &r    rD   MenuItem.placeholders   s     !#dmm"4
 	
r#   c                   V ^8  d   QhRR/# rK   r   )r   s   "r    r!   r      s      3 r#   c                	r    V P                   P                  pV P                  R 4      pV'       d   V RV 2pV# )r   z->)r   r   
render_key)r)   r   	item_names   &  r    	_log_nameMenuItem._log_name   s5    yy~~OOF+	V2i[)Dr#   Nc               (    V ^8  d   QhRRRRRRRR/# )	r   keyr   r>   r?   r@   dict[str, str] | Noner.   r	   r   )r   s   "r    r!   r      s*     : :c : :>S :_b :r#   c                	^    V P                   P                  V4      pV P                  WBVR 7      # ))r>   r@   )r   rQ   rH   )r)   r   r>   r@   r=   s   &&&& r    r   MenuItem.render_key   s)    !!#&{{55{99r#   c               (    V ^8  d   QhRRRRRRRR/# )r   r=   r	   r>   r?   r@   r   r.   r   )r   s   "r    r!   r      s0     D DC Dt D<Q D]` Dr#   c           
     	   VR9   d   V# RTRVe   TMV P                   /p\        V\        4      '       d   V P                  P                  ! V3/ VB # \        VR4      '       d@   VP                  4        UUu/ uF"  w  rQWPP                  P                  ! V3/ VB bK$  	  upp# V Uu. uF  q`P                  P                  ! V3/ VB NK!  	  up# u uppi u upi )Nr>   r@   rE   )NTF)rD   r   r   r   rH   rC   rE   )r)   r=   r>   r@   kwargsr   items   &&&&   r    rH   MenuItem.render   s    ''LDe/UT5F5F
 eS!!99##E4V445'""MR[[][]zsC))%:6::][[=BCUT		  00UCC \Cs   8(C(%Cc                   \         P                  R8X  d   \        hV P                  R4      pV'       g   R# \	        RRR7      ;_uu_ 4       pVP                  V4       RRR4       VP                  R4      '       d0   \         P                  ! XP                  R4       VP                  .pMR	XP                  .p\        VR
R7       \         P                  ! VP                  4       R#   + '       g   i     L; i)z5
Logic to run before the shortcut files are created.
r   	precreateNFw)deleter   z#!i  bashT)check)
rO   r   r3   r   r   write
startswithchmodr   unlink)r)   precreate_codetmpcmds   &   r    
_precreateMenuItem._precreate   s     77d?%%5u3773IIn% 8$$T**HHSXXu%88*C388$C3d#
		#(( 87s   C))C9	c                   V ^8  d   QhRR/# r   r   )r   s   "r    r!   r      r   r#   c                    \         h)zd
This method should return the paths created by the item
so they can be removed upon uninstallation
r2   r4   s   &r    r   MenuItem._paths   r   r#   c                   V ^8  d   QhRR/# )r   r.   r   r   )r   s   "r    r!   r      s      ): r#   c                	   \        \        R \         R24      4      ;_uu_ 4       p\        P                  ! V4      R,          ^ ,          pRRR4       \        V P                  4       4      p\        XV 4      p V P                  R/ 4      P                  4        UUu/ uF/  w  rEVP                  R/ 4      P                  V4      R9  g   K-  WEbK1  	  uppV R&   V #   + '       g   i     L; iu uppi )	menuinst-.default.json
menu_itemsN	platforms)NF)
openr   SCHEMA_VERSIONjsonloadr   copyr   rQ   rE   )rR   fdefaultsoriginalplatformr=   s   &     r    r    MenuItem._initialize_on_defaults   s    )i'7}EFGG1yy|L1!4H HDIIK(8T* $(88K#<#B#B#D
#D||K,00:-O HO#D
[
  HG

s   %C*C+	C+C(	c               $    V ^8  d   QhRRRRRR/# )r   rR   r   r   r   r.   r   )r   s   "r    r!   r      s$      +.	r#   c                   \        V 4      pVP                  R/ 4      pVP                  \        V4      R4      pV'       dG   VP                  4        F1  w  rVWR9  d   WbV&   K  Vf   K  \        P                  RWV4       WbV&   K3  	  MW2R&   V R,          P                  4        UUu. uF  w  rVVf   K  VNK  	  uppVR&   V# u uppi )z>
Merge platform keys with global keys, overwriting if needed.
r   Nz+Platform value %s=%s overrides global value)r   popplatform_keyrE   logdebug)rR   r   	flattenedall_platformsthis_platformr   r=   s   &&     r    r   MenuItem._flatten_for_platform   s     TN	!k26%)),x*@$G+113
'%*cN& IIKSX%*cN 4 &3k"
 #'{"3"9"9";"
";JCuCC";"
	+ "
s   %C2Cc                    V ^8  d   QhRRRR/# )r   r   r   r.   r?   r   )r   s   "r    r!   r     s     O OS OD Or#   c                	\    V P                   R ,          P                  \        V4      4      RJ# )r   N)r   rQ   r   )r)   r   s   &&r    enabled_for_platformMenuItem.enabled_for_platform  s&    zz+&**<+AB$NNr#   )r   r   r   r   )r   r   r   r   r*   r   r   r5   r:   rD   r   r   rH   r   r   staticmethodr   rx   r   r   r  r   r   r#   r    r   r      s    ) " """ 
 

  :D("   14 : 47<< O Or#   r   c                    V ^8  d   QhRRRR/# )r   r   r   r.   r   )r   s   "r    r!   r!   !  s     > >3 ># >r#   c                v    V R 8X  d   R# V R8X  d   R# V P                  R4      '       d   R# \        RV  R24      h)win32windarwinosxlinuxz	Platform z is not supported)r   r   )r   s   &r    r   r   !  sA    787##
y
*;<
==r#   rR   r   r   r   ))__doc__
__future__r   r   rO   rx   r   r   loggingr   pathlibr   
subprocessr   tempfiler   typingr	   r
   r   utilsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   loads__file__parents	read_textmenuitem_defaultsr   r#   r    <module>r     s     "  	 
    # ' ) )	 	 	 }" }"@@O @OF "% > JJ	(^A'In5E]*SS^^` r#   