
    .e                     2   d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl	m
Z
mZmZmZmZmZ ddlmZmZ ddlmZmZmZmZ  ee          Zg d	Z	 	 	 ddeej        ef         deej                 deej                 dedeeee         f         f
dZeddd
ddeej        ef         deej                 deej                 dedeej                 f
d            Zeddd
ddeej        ef         deej                 deej                 dedeej                 f
d            Zedddd
ddeej                 deej                 deedf         dedeeej                          f
d            Z edddd
ddeej                 deej                 deedf         dedeeee!ej        f                           f
d            Z"	 	 	 	 d dedeej                 deej                 deedf         dedee
         fdZ#eZ$defdej        de%dej        fdZ&dS )!
    N)	getLogger)Path)AnyCallableListOptionalTupleUnion   )MenuMenuItem)DEFAULT_BASE_PREFIXDEFAULT_PREFIX_UserOrSystemelevate_as_needed)installremoveinstall_all
remove_allusermetadata_or_pathtarget_prefixbase_prefix_modereturnc                 <   |pt           }|pt          }t          | t          t          f          r<t          |           5 }t          j        |          }d d d            n# 1 swxY w Y   n| }t          |d         |||          fd|d         D             }|fS )N	menu_namec                 0    g | ]}t          |          S  )r   ).0itemmenus     ,lib/python3.11/site-packages/menuinst/api.py
<listcomp>z_load.<locals>.<listcomp>(   s#    JJJ4(4&&JJJ    
menu_items)	r   r   
isinstancestrr   openjsonloadr   )r   r   r   r   fmetadatar'   r#   s          @r$   _loadr/      s     "3^M4!4K"S$K00 $"## 	$qy||H	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ $%}k5IIDJJJJ8L3IJJJJs   A  A$'A$)r   r   r   c                F   |pt           }|pt          }t          | |||          \  }}t          d |D                       s+t	          j        d|j         dt          j                    dS g }||	                                z  }|D ]}||	                                z  }|S )Nc              3   >   K   | ]}|                                 V  d S Nenabled_for_platformr!   r"   s     r$   	<genexpr>zinstall.<locals>.<genexpr>7   .      BBtt((**BBBBBBr&   Metadata for  is not enabled for r    )
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-}k5QQD*BBzBBBBB SdiSSS\SSTTTrE	T[[]]E $ $	!!###Lr&   c                F   |pt           }|pt          }t          | |||          \  }}t          d |D                       s+t	          j        d|j         dt          j                    dS g }|D ]}||	                                z  }||	                                z  }|S )Nc              3   >   K   | ]}|                                 V  d S r2   r3   r5   s     r$   r6   zremove.<locals>.<genexpr>N   r7   r&   r8   r9   r    )
r   r   r/   r:   r;   r<   r=   r>   r?   r   rA   s           r$   r   r   C   s     "3^M4!4K-}k5QQD*BBzBBBBB SdiSSS\SSTTTrE $ $	!!###	T[[]]ELr&   r   r   filterr   rG   c                 V    | pt           } |pt          }t          t          | |||          S r2   )r   r   _process_allr   rF   s       r$   r   r   Z   s/     "3^M4!4KVUKKKr&   c                 V    | pt           } |pt          }t          t          | |||          S r2   )r   r   rI   r   rF   s       r$   r   r   g   s/     "3^M4!4K{FEJJJr&   functionc           	          |pt           }|pt          }t          |          dz                      d          }g }|D ]0}|, ||          r!|                     | ||||                     1|S )Nr   z*.json)r   r   r   globappend)rK   r   r   rG   r   jsonsresultspaths           r$   rI   rI   t   s     "3^M4!4K-  6)//99EG N N&&,,NN88D-eLLMMMNr&   FrQ   r   prefixc                    t           j        dk    r|                     dd          } t           j                            ||           }t          |          5 }t          j        |          }ddd           n# 1 swxY w Y   d|vrddlm	} t           j        dk    rO|
                    d|                    d	t                               |d         
t          |d<    ||f||d
| dS t                              d           dS |
                    d	|                    dt                               |d	         
t          |d	<   |rt          |fd|i| dS t          |fd|i| dS )z|
    This function is only here as a legacy adapter for menuinst v1.x.
    Please use `menuinst.api` functions instead.
    nt/\Nz$idr   )r   root_prefixr   )r   rR   zymenuinst._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   logr<   _api_remove)rQ   r   rR   kwargs	json_pathr-   r.   _legacy_installs           r$   _install_adapterrc      s    
w$||C&&VT**I	i  A9Q<<                             H7777777d??mVZZGZ-[-[\\\m$,(;}%OINfVNNvNNNNNHH4     	-MCV)W)WXXX- ($7F=! 	>AAA&AAAAAH==F=f=====s   A77A;>A;)NNr   )NNNr   )'__doc__r+   rX   r>   r;   loggingr   pathlibr   typingr   r   r   r	   r
   r   	platformsr   r   utilsr   r   r   r   __name__r^   __all__PathLikedictr/   r   r   r   r)   r   rI   r_   boolrc   r    r&   r$   <module>ro      sl     				 



              > > > > > > > > > > > > > > > > % % % % % % % % X X X X X X X X X X X Xi   ,0)-!	 BK-.BK( "+& 	
 4h    $  ,0)-!  BK-. BK( "+&	
  
"+   ,  ,0)-!  BK-. BK( "+&	
  
"+   ,  ,0)-$(!	L 	L 	LBK(	L "+&	L (D.!		L
 	L 
$r{
	L 	L 	L 	L  ,0)-$(!	K 	K 	KBK(	K "+&	K (D.!		K
 	K 
$uS"+%&
'(	K 	K 	K 	K ,0)-$(! BK( "+& (D.!	
  
#Y   "  ',>"> ">
+">#">57["> "> "> "> "> ">r&   