
    9i+                     2   S SK JrJr  S SKrS SKrS SKrS SKrS SKrS SKJ	r	J
r
Jr  SSKJrJr  SSKJr  SSKJr  SS	KJrJr  \R*                  R,                  R.                  r\R2                  /\l         " S
 S\R6                  5      r\R:                  " S5      r\R?                  \R@                  5        \RB                  " 5       r"\"R?                  \RF                  5        \" 5       r$\$R?                  \R@                  5        \RK                  \$5        \RK                  \"5        S r&SS jr'\RP                  " 5       4S jr)\RP                  " 5       4S jr*\)" \5      r+S\+;   a  \RY                  S\+5        S r- " S S\.5      r/S r0S r1 " S S\.5      r2g)    )absolute_importunicode_literalsN)existsisdirjoin   )dirs_srcfolder_path)create_shortcut)DEFAULT_BASE_PREFIX   )rm_empty_dirrm_rfc                       \ rS rSrS rSrg)DbgViewHandler   c                 8    [        U R                  U5      5        g N)OutputDebugStringformat)selfrecords     6lib/python3.13/site-packages/menuinst/_legacy/win32.pyemitDbgViewHandler.emit   s    $++f-.     N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   r   r      s    /r   r   menuinst_win32c                 `    U R                  S5      n U S   S;   a  U $ SU ;   d  SU ;   a  SU -  $ U $ )z
quotes a string if necessary.
"r   )- r'   /"%s")strip)ss    r   quotedr,   '   s>    
 	
At|qyDAI{r   c                 Z    U (       a  U S   U S   s=:X  a  U:X  a   U $   OU $ U< U < U< 3$ )z7

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

r   r   )namepads     r   
ensure_padr1   6   s7     47d2h-#- .c**r   c                 \    U(       d  Sn[        U S5      (       a  U R                  U5      n U $ )Nutf-8decode)hasattrr4   varcodecs     r   
to_unicoder9   D   s*    sHjjJr   c                     [        U [        5      (       a  U $ U(       d  Sn[        U S5      (       a  U R                  U5      n U $ )Nr3   encode)
isinstancebytesr5   r;   r6   s     r   to_bytesr>   L   s<    #u
sHjjJr   z\envs\z$menuinst called from non-root env %sc                    [         R                  S   nS[        R                  -  n[	        US   5      n[	        US   5      n[	        U 5      n [	        US   5      nSU4SU4S[
        R                  R                  U5      S	   4S
[
        R                  R                  [        US5      5      R                  SS5      4S[        US5      4SUS   4SUS   4SU4SSU-  4SSU-  44
 H  u  pxU(       d  M  U R                  Xx5      n M!     U $ )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__r9   ospathsplitnormpathr   replace)	textdirpy_major_ver
py_bitness
env_prefixrB   rC   abs	            r   substitute_env_variablesrY   [   s)    ##A&LU'''JCM*JS/0KdD#j/*H 
z"	K(	 "''--"<R"@A GGT*j9:BB5$O	
 
j'23	C,-	C	N+	"	u-.	z12 1<<%D!" Kr   c                   8    \ rS rSr\SS\4S jrS rS rS rSr	g)	rF   {    Nc                 6   [        U5      U l        [        U5      U l        U(       a  UO'[        [	        U R                  S5      5      (       a  SOSn[
        R                  SU< SU R                  < SU< SU< SU< S	U< S
35         U R                  XR                  X6U5        g! [         ae    S[        ;   aC  US:X  a=  [
        R                  S5         U R                  XR                  US5         g!     g= f[
        R                  S5         gf = f)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)r9   rA   rB   r   r   loggerdebugset_dirWindowsErrorr	   warningfatal)r   r/   rA   rC   moderB   	used_modes          r   __init__Menu.__init__|   s     !(%k2DT[[,0O)P)PvV^ 	 	T[[(D)[J	
	FLL{{HM 	F
 !i8&;4LL{{HfEDE	Fs*   B) )/DC88C=:D=DDc                 ~   X@l         [        5       U l        Sn[        U   R	                  5        H  u  px[        XFU5      U R                  U'   M      X R                  S'   XPR                  S'   X0R                  S'   [        XR                  5      n	[        U R                  S   U	5      U l        U R                  5         g )NFrA   rB   rC   start)
rg   dictrS   r	   itemsr
   rY   r   rN   create)
r   r/   rA   rC   rg   rB   check_other_modekvfolder_names
             r   rc   Menu.set_dir   s    	6 !TN((*DA &da@DHHQK + $"-'.tXX>'*K8	r   c                 z    [        U R                  5      (       d!  [        R                  " U R                  5        g g r   )r   rN   rM   mkdirr   s    r   ro   Menu.create   s&    TYYHHTYY  r   c                 .    [        U R                  5        g r   )r   rN   rw   s    r   removeMenu.remove   s    TYYr   )rS   rg   rN   rA   rB   )
r   r   r    r!   unicode_root_prefixri   rc   ro   rz   r"   r   r   r   rF   rF   {   s&     #'(FT*  r   rF   c                      U R                  US   5         U R                  US   5        g ! [         a     N"f = f! [         a     g f = f)Nscriptargumentscriptarguments)appendKeyErrorextend)argsshortcuts     r   extend_script_argsr      sW    H-./H./0    s   , < 
99
A	A	c           	         [        U 5      S:  a  SU S   R                  5       ;   d  SU S   R                  5       ;   a{  U S   R                  5       S:X  d  U S   R                  5       S:X  aM  [        S U SS   5       5      (       a3  [        U S   S	5      U S   S
SR	                  S U SS   5       5      -  /n U $ U  Vs/ s H  n[        U5      PM     n nU $ s  snf )Nr   zCMD.EXEr   z	%COMSPEC%r   z/Kz/Cc              3   ,   #    U  H
  nS U;   v   M     g7f)r'   Nr   .0args     r   	<genexpr>quote_args.<locals>.<genexpr>   s     /hss
hs   r%   r)   r'   c              3   :   #    U  H  n[        US 5      v   M     g7f)r%   N)r1   r   s     r   r   r      s     Hxz#s33xs   )lenupperanyr1   r   r,   )r   r   s     r   
quote_argsr      s    
 	D	A$q'--/)[DGMMO-K!W]]_$Q4(?/d12h/// tAw$GchhHtABxHHI
 K (,,tst,K -s   =Cc                   *    \ rS rSrS rS rSS jrSrg)ShortCut   c                     Xl         X l        g r   menur   )r   r   r   s      r   ri   ShortCut.__init__   s    	 r   c                 "    U R                  SS9  g )NT)rz   )ro   rw   s    r   rz   ShortCut.remove   s    4 r   c           
      	   / nS/nU R                   R                  R                  SS5      nU R                   R                  R                  SS5      n[	        US5      n[	        US5      n[	        US5      n[	        US5      n	U[	        US5      XH/n
U[	        US5      XI/nSU R
                  ;   a/  Un[        U5      /nX R
                  S   R                  5       -  nGOSU R
                  ;   a.  U
n[        U5      /nX R
                  S   R                  5       -  nOS	U R
                  ;   a  US
S	SU R
                  S	   /nOSU R
                  ;   aP  U[	        US5      U/n[        U5      /nX R
                  S   R                  5       -  n[        X R
                  5        O[SU R
                  ;   a3  U R
                  S   R                  5       n[        X R
                  5        O[        SU R
                  -  5      eU Vs/ s H"  n[        XR                   R                  5      PM$     nnU H  nX-   R                  SS5      X-'   M     [        U5      nUS   nUSS  n[        R                  SU< SU< 35        U R
                  R                  SS5      nU R
                  R                  SS5      n[        XR                   R                  5      n[        UU R                   R                  5      nUR                  SS5      nUR                  SS5      nU(       a'  [!        U5      (       d  ["        R$                  " U5        OSnU R                   R&                  /nU R
                  R                  S5      (       a(  UR)                  U R                   R                  S   5        U R
                  R                  S5      (       aB  SU R                   R                  ;   a(  UR)                  U R                   R                  S   5        U R                   R                  S   (       a(  SR+                  U R                   R                  S   5      OSnU H  n[        U R
                  S   U R                   R                  5      n[	        UUU-   S-   5      nU(       a  [-        U5        MV  [/        SU-   SU-   U-   SU-   SR	                  S U 5       5      SU-   SU-   5        M     g s  snf )Nr   r(   rE   z
python.exezpythonw.exezcwp.py	pywscriptpyscript
webbrowserz-mz-tscriptr_   zNothing to do: %rr   zShortcut cmd is z, args are workdirr\   iconz
%HOMEPATH%desktopquicklaunchrC   z ({})r/   z.lnkr'   c              3   $   #    U  H  ov   M     g 7fr   r   r   s     r   r   "ShortCut.create.<locals>.<genexpr>B  s     2TccTs   )r   rA   rQ   rB   r   r   r   rO   r   	ExceptionrY   rS   r   ra   rb   getr   rM   makedirsrN   r   r   r   r   )r   rz   r   fix_win_slashesrA   r|   root_pyroot_pywenv_pyenv_pywcwp_pycwp_pywr   fwscmdr   r   dst_dirsname_suffixdst_dirr/   dsts                         r   ro   ShortCut.create   s   #!!))#t4"ii33;;CF*M:+^<fm,v~.4 3Y?PT"5yA6S$--'D"4ykOMM+.4466D4==(D"4ykOMM*-3355DT]]*dL$l8STD& T"5yA6JD"4ykOMM(+1133Dt]]3&==*002Dt]]3/$--?@@HLM(iimm<M"C	))#t4DI # $1gABx#tDE--##Ir2}}  ,*7IIMMB'diimm< //#t,||C& >>G$"G IINN# ==Y''OODIIMM)45 ==]++0NOODIIMM-89 :>z9RGNN499==45XZ 	  G+DMM&,A499==QDw{ 2V ;<Cc
  #I$J,#III2T22'M$J  Q Ns   )S&r   N)F)r   r   r    r!   ri   rz   ro   r"   r   r   r   r   r      s    !![r   r   )_)3
__future__r   r   ctypeslocaleloggingrM   rI   os.pathr   r   r    platforms.win_utils.knownfoldersr	   r
   platforms.win_utils.winshortcutr   utilsr   r   r   windllkernel32OutputDebugStringWr   	c_wchar_pargtypesHandlerr   	getLoggerra   setLevelDEBUGStreamHandlerstream_handlerWARNINGdbgview
addHandlerr,   r1   getpreferredencodingr9   r>   r|   re   rY   objectrF   r   r   r   r   r   r   <module>r      sb  
 9    	 
 ' ' D = ' & MM**== $../  /W__ /
 
		+	,  &&(    (

       '    . !+ !557  335  !!45 %%
NN9;NO@E 6 E P(cv cr   