
     [1f                     <   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j6                  ef   deej6                     deej6                     dedeeee   f   f
dZeddd
ddeej6                  ef   deej6                     deej6                     dedeej6                     f
d       Zeddd
ddeej6                  ef   deej6                     deej6                     dedeej6                     f
d       Zedddd
ddeej6                     deej6                     deedf   dedeeej6                        f
d       Z edddd
ddeej6                     deej6                     deedf   dedeeee!ej6                  f         f
d       Z"	 	 	 	 d dedeej6                     deej6                     deedf   dedee
   fdZ#eZ$defdej6                  de%dej6                  fdZ&y)!
    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                 2   |xs t         }|xs t        }t        | t        t        f      r*t        |       5 }t        j                  |      }d d d        n| }t        d   |||      }|d   D cg c]  }t        ||       }}||fS # 1 sw Y   :xY wc c}w )N	menu_name
menu_items)
r   r   
isinstancestrr   openjsonloadr   r   )	r   r   r   r   fmetadatamenuitemr   s	            ,lib/python3.12/site-packages/menuinst/api.py_loadr*      s     "3^M4!4K"S$K0"# 	$qyy|H	$ 	$ $%}k5ID3;L3IJ4(4&JJJ	$ 	$
 Ks   B/BB)r   r   r   c                :   |xs t         }|xs t        }t        | |||      \  }}t        d |D              s4t	        j
                  d|j                   dt        j                          yg }||j                         z  }|D ]  }||j                         z  } |S )Nc              3   <   K   | ]  }|j                           y wNenabled_for_platform.0r(   s     r)   	<genexpr>zinstall.<locals>.<genexpr>7        Btt((*B   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-}k5QD*BzBBdii[0DS\\NSTE	T[[]E $	!!##$ L    c                :   |xs t         }|xs t        }t        | |||      \  }}t        d |D              s4t	        j
                  d|j                   dt        j                          yg }|D ]  }||j                         z  } ||j                         z  }|S )Nc              3   <   K   | ]  }|j                           y wr-   r.   r0   s     r)   r2   zremove.<locals>.<genexpr>N   r3   r4   r5   r6   r7   )
r   r   r*   r8   r9   r:   r;   r<   r=   r   r?   s           r)   r   r   C   s     "3^M4!4K-}k5QD*BzBBdii[0DS\\NSTE $	!!##$	T[[]ELrB   r   r   filterr   rF   c                 P    | xs t         } |xs t        }t        t        | |||      S r-   )r   r   _process_allr   rE   s       r)   r   r   Z   s,     "3^M4!4KVUKKrB   c                 P    | xs t         } |xs t        }t        t        | |||      S r-   )r   r   rH   r   rE   s       r)   r   r   g   s,     "3^M4!4K{FEJJrB   functionc           	          |xs t         }|xs t        }t        |      dz  j                  d      }g }|D ](  }| ||      s|j	                   | ||||             * |S )Nr   z*.json)r   r   r   globappend)rJ   r   r   rF   r   jsonsresultspaths           r)   rH   rH   t   ss     "3^M4!4K- 6)//9EG N&,NN8D-eLMN NrB   FrP   r   prefixc                    t         j                  dk(  r| j                  dd      } t         j                  j	                  ||       }t        |      5 }t        j                  |      }ddd       dvrpddlm	} t         j                  dk(  rA|j                  d|j                  d	t                     |d   	t        |d<    ||f||d
| yt        j                  d       y|j                  d	|j                  dt                     |d	   	t        |d	<   |rt        |fd|i| yt        |fd|i| y# 1 sw Y   xY w)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   rQ   zymenuinst._legacy is only supported on Windows. Switch to the new-style menu definitions for cross-platform compatibility.r   )osr;   replacerP   joinr"   r#   r$   _legacyr   
setdefaultpopr   logr:   _api_remove)rP   r   rQ   kwargs	json_pathr%   r&   _legacy_installs           r)   _install_adapterrb      s$    
ww$||C&VT*I	i  A99Q< H777d?mVZZGZ-[\m$,(;}%INfVNvNHH4 	-MCV)WX- ($7F=!AA&AH=F=f=1   s   D77E )NNr   )NNNr   )'__doc__r#   rW   r<   r9   loggingr   pathlibr   typingr   r   r   r	   r
   r   	platformsr   r   utilsr   r   r   r   __name__r]   __all__PathLikedictr*   r   r   r   r!   r   rH   r^   boolrb   r7   rB   r)   <module>rn      sE    	 
    > > % X X ,0)-!	BKK-.BKK( "++& 	
 4h $  ,0)-!BKK-. BKK( "++&	
  
"++ ,  ,0)-!BKK-. BKK( "++&	
  
"++ ,  ,0)-$(!	LBKK(	L "++&	L (D.!		L
 	L 
$r{{
	L 	L  ,0)-$(!	KBKK(	K "++&	K (D.!		K
 	K 
$uS"++%&
'(	K 	K ,0)-$(!BKK( "++& (D.!	
  
#Y"  ',>">
++">#">57[[">rB   