
    .e+                        d dl mZmZ d dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
mZ ddlmZmZ ddlmZ ddlmZ dd	lmZmZ ej        j        j        Zej        ge_         G d
 dej                  Z ej        d          Ze                    ej                     ej!                    Z"e"                    ej#                    e            Z$e$                    ej                    e%                    e$           e%                    e"           d Z&ddZ' ej(                    fdZ) ej(                    fdZ* e)e          Z+de+v re,                    de+           d Z- G d de.          Z/d Z0d Z1 G d de.          Z2dS )    )absolute_importunicode_literalsN)existsisdirjoin   )dirs_srcfolder_path)create_shortcut)DEFAULT_BASE_PREFIX   )rm_empty_dirrm_rfc                       e Zd Zd ZdS )DbgViewHandlerc                 J    t          |                     |                     d S N)OutputDebugStringformat)selfrecords     6lib/python3.11/site-packages/menuinst/_legacy/win32.pyemitzDbgViewHandler.emit   s"    $++f--.....    N)__name__
__module____qualname__r    r   r   r   r      s#        / / / / /r   r   menuinst_win32c                 b    |                      d          } | d         dv r| S d| v sd| v rd| z  S | S )z'
    quotes a string if necessary.
    "r   )- r#   /"%s")strip)ss    r   quotedr(   '   sG    
 	
At|qyyDAII{r   _c                 R    | r| d         | d         cxk    r|k    rn n| S || |S )zG

    Examples:
        >>> ensure_pad('conda')
        '_conda_'

    r   r   )namepads     r   
ensure_padr.   6   sM      +47d2h----#-----3cc**r   c                 X    |sd}t          | d          r|                     |          } | S )Nutf-8decode)hasattrr1   varcodecs     r   
to_unicoder6   D   s7     sH  jjJr   c                     t          | t                    r| S |sd}t          | d          r|                     |          } | S )Nr0   encode)
isinstancebytesr2   r8   r3   s     r   to_bytesr;   L   sN    #u 
 sH  jjJr   z\envs\z$menuinst called from non-root env %sc                 d   t           j        d         }dt          j        z  }t	          |d                   }t	          |d                   }t	          |           } t	          |d                   }d|fd|fdt
          j                            |          d	         fd
t
          j                            t          |d                    
                    dd          fdt          |d          fd|d         fd|d         fd|fdd|z  fdd|z  ff
D ]\  }}|r| 
                    ||          } | S )Nr      prefixroot_prefixenv_namez	${PREFIX}z${ROOT_PREFIX}z${DISTRIBUTION_NAME}r+   z${PYTHON_SCRIPTS}Scripts\r$   z${MENU_DIR}Menuz${PERSONALDIR}	documentsz${USERPROFILE}profilez${ENV_NAME}z	${PY_VER}z%dz${PLATFORM}z(%s-bit))sysversion_infotuple__itemsize__r6   ospathsplitnormpathr   replace)	textdirpy_major_ver
py_bitness
env_prefixr?   r@   abs	            r   substitute_env_variablesrV   [   sH    #A&LU''JCM**JS/00KdD#j/**H 
z"	K(	 "'--"<"<R"@A GT*j99::BB5$OO	
 
j'223	C,-	C	N+	"	u-.	z12 & &1  	&<<1%%DKr   c                   0    e Zd ZeddefdZd Zd Zd ZdS )rC    Nc                 H   t          |          | _        t          |          | _        |r|n%t          t	          | j        d                    rdnd}t
                              d|d| j        d|d|d|d	|d
           	 |                     || j        |||           dS # t          $ rq dt          v rJ|dk    rDt
          
                    d           	 |                     || j        |d           Y dS #  Y Y dS xY wt
                              d           Y dS w xY w)z
        Prefix is the system prefix to be used -- this is needed since
        there is the possibility of a different Python's packages being managed.
        z	.nonadminusersystemzMenu: name: 'z', prefix: 'z', env_name: 'z
', mode: 'z', used_mode: 'z', root_prefix: ''zMInsufficient permissions to write menu folder.  Falling back to user locationz%Unable to create AllUsers menu folderN)r6   r>   r?   r   r   loggerdebugset_dirWindowsErrorr	   warnfatal)r   r,   r>   r@   moder?   	used_modes          r   __init__zMenu.__init__|   sh    !((%k22_DDT[,0O0O)P)P^vvV^ 	 	ttT[[[(((DDD)))[[[J	
 	
 	
	FLLt{HiMMMMM 	F 	F 	F
 !!i8&;&;4  LLt{HfEEEEEEDDDDEEEEEE	Fs*   B& &3D!C::D <D! D! D!c                    || _         t                      | _        d}t          |                                         D ]\  }}t          |||          | j        |<   || j        d<   || j        d<   || j        d<   t          || j                  }	t          | j        d         |	          | _        | 	                                 d S )NFr>   r?   r@   start)
rc   dictrP   r	   itemsr
   rV   r   rK   create)
r   r,   r>   r@   rc   r?   check_other_modekvfolder_names
             r   r_   zMenu.set_dir   s    	66 !TN((** 	A 	ADAq &d,<a@@DHQKK#"-'.tTX>>'*K88	r   c                 d    t          | j                  st          j        | j                   d S d S r   )r   rK   rJ   mkdirr   s    r   rj   zMenu.create   s6    TY 	 HTY	  	 r   c                 .    t          | j                   d S r   )r   rK   rq   s    r   removezMenu.remove   s    TYr   )r   r   r   unicode_root_prefixre   r_   rj   rs   r   r   r   rC   rC   {   sh         #'(F (F (F (FT  *              r   rC   c                     	 |                      |d                    n# t          $ r Y nw xY w	 |                     |d                    d S # t          $ r Y d S w xY w)Nscriptargumentscriptarguments)appendKeyErrorextend)argsshortcuts     r   extend_script_argsr}      s    H-.////   H./00000   s    
++A 
AAc           	         t          |           dk    rd| d                                         v sd| d                                         v r| d                                         dk    s| d                                         dk    rit          d | dd          D                       rHt          | d         d	          | d         d
d                    d | dd          D                       z  g} nd | D             } | S )Nr   zCMD.EXEr   z	%COMSPEC%r   z/Kz/Cc              3      K   | ]}d |v V  	dS )r#   Nr   .0args     r   	<genexpr>zquote_args.<locals>.<genexpr>   s&      //ss
//////r   r!   r%   r#   c              3   6   K   | ]}t          |d           V  dS )r!   N)r.   r   s     r   r   zquote_args.<locals>.<genexpr>   s,      HHz#s33HHHHHHr   c                 ,    g | ]}t          |          S r   )r(   r   s     r   
<listcomp>zquote_args.<locals>.<listcomp>   s    ,,,s,,,r   )lenupperanyr.   r   )r{   s    r   
quote_argsr      s    
 	D		A$q'--//))[DGMMOO-K-K!W]]__$$Q4(?(?//d122h///// )@ tAw$$GchhHHtABBxHHHHHI
 -,t,,,Kr   c                   "    e Zd Zd Zd ZddZdS )ShortCutc                 "    || _         || _        d S r   )menur|   )r   r   r|   s      r   re   zShortCut.__init__   s    	 r   c                 2    |                      d           d S )NT)rs   )rj   rq   s    r   rs   zShortCut.remove   s    4     r   Fc           
      6	    g }dg} j         j                            dd          } j         j                            dd          }t	          |d          }t	          |d          }t	          |d          }t	          |d          }	|t	          |d          ||g}
|t	          |d          ||	g}d j        v r6|}t          |          g}| j        d                                         z  }nd j        v r5|
}t          |          g}| j        d                                         z  }nd	 j        v r|d
d	d j        d	         g}nd j        v r[|t	          |d          |g}t          |          g}| j        d                                         z  }t          | j                   nUd j        v r5 j        d                                         }t          | j                   nt          d j        z             fd|D             }|D ]!}||                             dd          ||<   "t          |          }|d         }|dd          }t                              d|d|            j                            dd          } j                            dd          }t          | j         j                  }t          | j         j                  }|                    dd          }|                    dd          }|r$t!          |          st#          j        |           nd} j         j        g} j                            d          r%|                     j         j        d                     j                            d          r3d j         j        v r%|                     j         j        d                     j         j        d         r%d                     j         j        d                   nd}|D ]}t           j        d          j         j                  }t	          |||z   dz             }|rt-          |           Ot/          d|z   d|z   |z   d|z   d                    d |D                       d|z   d|z              d S )Nr   r$   rB   z
python.exezpythonw.exezcwp.py	pywscriptpyscript
webbrowserz-mz-tscriptr[   zNothing to do: %rc                 D    g | ]}t          |j        j                  S r   )rV   r   rP   )r   r   r   s     r   r   z#ShortCut.create.<locals>.<listcomp>  s(    MMM(dim<<MMMr   r   zShortcut cmd is z, args are workdirrX   iconz
%HOMEPATH%desktopquicklaunchr@   z ({})r,   z.lnkr#   c              3      K   | ]}|V  d S r   r   r   s     r   r   z"ShortCut.create.<locals>.<genexpr>B  s"      22cc222222r   )r   r>   rN   r?   r   r|   r   rL   r}   	Exceptionr   r]   r^   getrV   rP   r   rJ   makedirsrK   rx   r   r   r   )r   rs   r{   fix_win_slashesr>   rt   root_pyroot_pywenv_pyenv_pywcwp_pycwp_pywfwscmdr   r   dst_dirsname_suffixdst_dirr,   dsts   `                    r   rj   zShortCut.create   s   #!))#t44"i3;;CFF*M::+^<<fm,,v~..4 3Y??PT"5yAA67S$-''D"4yykODM+.44666DD4=((D"4yykODM*-33555DDT]**dL$l8STDD&& T"5yAA6JD"4yykODM(+11333DtT]3333&&=*0022DtT]3333/$-?@@@MMMMMMM" 	5 	5CS	))#t44DII$1gABBx###ttDEEE-##Ir22}  ,,*7DIMBB'dim<< //#t,,||C&&  	#>> %G$$$"G IN# =Y'' 	6OODIM)4555 =]++ 	:0N0NOODIM-8999 :>z9RZGNN49=4555XZ 	   	 	G+DM&,A49=QQDw{ 2V ;<<C c



  #I$J,#III22T22222'M$J   	 	r   N)F)r   r   r   re   rs   rj   r   r   r   r   r      sL        ! ! !! ! ![ [ [ [ [ [r   r   )r)   )3
__future__r   r   ctypeslocaleloggingrJ   rF   os.pathr   r   r    platforms.win_utils.knownfoldersr	   r
   platforms.win_utils.winshortcutr   utilsr   r   r   windllkernel32OutputDebugStringWr   	c_wchar_pargtypesHandlerr   	getLoggerr]   setLevelDEBUGStreamHandlerstream_handlerWARNINGdbgview
addHandlerr(   r.   getpreferredencodingr6   r;   rt   warningrV   objectrC   r}   r   r   r   r   r   <module>r      s  
 9 8 8 8 8 8 8 8    				 



 ' ' ' ' ' ' ' ' ' ' D D D D D D D D = = = = = = ' ' ' ' ' ' & & & & & & & & M*= $./  / / / / /W_ / / /
 
	+	,	,    &&((    ( ( (
.

         '      . ! ! !  + + + + 6&577     4355     !j!455 %%%
NN9;NOOO  @E  E  E  E  E 6 E  E  E P    (c c c c cv c c c c cr   