
    9i                       S r SSKJr  SSKrSSKrSSKrSSKrSSK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JrJrJrJr  \" \5      r/ S
QrSS jr   S         SS jjr\SSSS.         SS jj5       r\SSSS.         SS jj5       r\SSSSS.         SS jj5       r\SSSSS.         SS jj5       r    S           SS jjr \r!S\4SS jjr"g)     )annotationsN)	getLogger)Path)CallableUnion   )MenuMenuItem)DEFAULT_BASE_PREFIXDEFAULT_PREFIX_UserOrSystemelevate_as_neededuser_is_admin)installremoveinstall_all
remove_allc                    [        5       (       d  g[        US5      R                  5       (       a  g[        U S5      R                  5       $ )NFz	.nonadminT)r   r   is_file)base_prefixtarget_prefixs     ,lib/python3.13/site-packages/menuinst/api.py_maybe_try_userr   !   s;    ??M;'//11[)1133    userc                \   U=(       d    [         nU=(       d    [        n[        U [        [        45      (       a+  [        U 5       n[        R                  " U5      nS S S 5        OU n[        WS   XU5      nUS    Vs/ s H  n[        Xg5      PM     nnXh4$ ! , (       d  f       N?= fs  snf )N	menu_name
menu_items)
r   r   
isinstancestrr   openjsonloadr
   r   )	metadata_or_pathr   r   _modefmetadatamenuitemr   s	            r   _loadr+   )   s     "3^M4!4K"S$K00"#qyy|H $# $%}5ID3;L3IJ3I4(4&3IJJ $#
 Ks   B>B)
B&)r   r   r&   c               V   U=(       d    [         nU=(       d    [        n[        XX#5      u  pE[        S U 5       5      (       d6  [        R
                  " SUR                   S[        R                   35        / $ / nXdR                  5       -  nU H  nXgR                  5       -  nM     U$ )Nc              3  @   #    U  H  oR                  5       v   M     g 7fNenabled_for_platform.0r*   s     r   	<genexpr>install.<locals>.<genexpr>F        Bzt((**z   Metadata for  is not enabled for )
r   r   r+   anywarningswarnnamesysplatformcreater%   r   r   r&   r)   r   paths	menu_items           r   r   r   ;   s     "3^M4!4K-kQDBzBBBdii[0DS\\NST	E	[[]E	!!##   Lr   c                  U=(       d    [         nU=(       d    [        n[        XX#5      u  pE[        S U 5       5      (       d6  [        R
                  " SUR                   S[        R                   35        / $ / nU H  nXgR                  5       -  nM     XdR                  5       -  nU(       dL  [        X5      (       a<  [        XUS5      u  pEU H  nXgR                  5       -  nM     XdR                  5       -  nU$ )Nc              3  @   #    U  H  oR                  5       v   M     g 7fr.   r/   r1   s     r   r3   remove.<locals>.<genexpr>]   r5   r6   r7   r8   r   )r   r   r+   r9   r:   r;   r<   r=   r>   r   r   r@   s           r   r   r   R   s     "3^M4!4K-kQDBzBBBdii[0DS\\NST	E	!!##  	[[]E_]@@ !1+vV#I%%''E $Lr   r   r   filterr&   c                `    U =(       d    [         n U=(       d    [        n[        [        XX#5      $ r.   )r   r   _process_allr   rF   s       r   r   r   o   s(     "3^M4!4KVKKr   c                `    U =(       d    [         n U=(       d    [        n[        [        XX#5      $ r.   )r   r   rI   r   rF   s       r   r   r   |   s(     "3^M4!4KFJJr   c           	         U=(       d    [         nU=(       d    [        n[        U5      S-  R                  S5      n/ nU H/  nUc  M  U" U5      (       d  M  UR	                  U " XqX$5      5        M1     U$ )Nr
   z*.json)r   r   r   globappend)functionr   r   rG   r&   jsonsresultspaths           r   rI   rI      sj     "3^M4!4K- 6)//9EG&,,NN8DLM  Nr   Fc                   [         R                  S:X  a  U R                  SS5      n [         R                  R	                  X 5      n[        U5       n[        R                  " U5      nSSS5        SW;  aw  SU;  aq  SSKJ	n  [         R                  S:X  aA  UR                  S	UR                  S
[        5      5        US	   c	  [        US	'   U" U4XS.UD6  g[        R                  S5        gUR                  S
UR                  S	[        5      5        US
   c	  [        US
'   U(       a  [        U4SU0UD6  g[        U4SU0UD6  g! , (       d  f       N= f)zp
This function is only here as a legacy adapter for menuinst v1.x.
Please use `menuinst.api` functions instead.
nt/\Nz$schemaz$idr	   )r   root_prefixr   )r   prefixzymenuinst._legacy is only supported on Windows. Switch to the new-style menu definitions for cross-platform compatibility.r   )osr<   replacerQ   joinr"   r#   r$   _legacyr   
setdefaultpopr   logwarning_api_remove)rQ   r   rW   kwargs	json_pathr'   r(   _legacy_installs           r   _install_adapterrd      s   
 
ww$||C&V*I	iA99Q< 
 U(%:777d?mVZZGZ-[\m$,(;}%INfNvNKK4 	-MCV)WX- ($7F=!AA&AH=F=f=1 
s   E
E)r   r!   r   r!   returnbool)NNr   )
r%   zos.PathLike | dictr   
str | Noner   rg   r&   r   re   ztuple[Menu, list[MenuItem]])
r%   zUnion[os.PathLike, dict]r   rg   r   rg   r&   r   re   zlist[os.PathLike])
r   rg   r   rg   rG   Callable | Noner&   r   re   list[tuple[os.PathLike]])NNNr   )rN   z^Callable[[Union[os.PathLike, dict], str | None, str | None, _UserOrSystem], list[os.PathLike]]r   rg   r   rg   rG   rh   r&   r   re   ri   )rQ   r!   r   rf   rW   r!   )#__doc__
__future__r   r#   rX   r=   r:   loggingr   pathlibr   typingr   r   	platformsr
   r   utilsr   r   r   r   r   __name__r^   __all__r   r+   r   r   r   r   rI   r`   rd    r   r   <module>rt      s5    "  	 
    " %  4 !%"!	(  	
 !$  !%"!.  	
   ,  !%"!.  	
   8  !%""!	L	L 	L 		L
 	L 	L 	L  !%""!	K	K 	K 		K
 	K 	K 	K  !%""! 	
    &  05N  >r   