
    dafY                        d dl mZ  ej                  d      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 d dlmZ d dlmZ  ej                   ddg	       d d
lmZmZmZmZmZmZmZmZmZ d Zd Zedd       Z ej<                  ej>                  jA                  d      d       G d d             Z! ejD                  e!e      \  Z#Z$ ej<                  ej>                  jA                  d      d       G d d             Z% ejD                  e%e      \  Z&Z' ej<                  ej>                  jA                  d      d       G d dejP                               Z)e*dk(  r ejV                          yy)    )utilzimportlib.machineryN)import_helper)contextmanager)temp_modulewinregwin)required_on)		CreateKeyHKEY_CURRENT_USERSetValueREG_SZKEY_ALL_ACCESSEnumKeyCloseKey	DeleteKeyOpenKeyc                  n   dddd} dt         j                  v r+t         j                  d   | v r| t         j                  d      S dt        j                  j	                         v rydt        j                  j	                         v rydt        j                  j	                         v ry	t        j
                  S )
Nwin32z	win-amd64z	win-arm32)x86x64armVSCMD_ARG_TGT_ARCHamd64z(arm)z(arm64)z	win-arm64)osenvironsysversionlowerplatform)TARGET_TO_PLATs    ;/root/Python-3.12.4/Lib/test/test_importlib/test_windows.pyget_platformr"      s     
N
 	

*


'(N:bjj)=>??	CKK%%'	'	CKK%%'	'	ckk'')	)||    c                     	 t        | |t              }	 	 t        |d      }t	        ||       # t        $ r Y y w xY w# t        $ r Y nw xY wt        |       t        | |       y )N)accessr   )r   r   OSErrorr   delete_registry_treer   r   )rootsubkeyhkey	subsubkeys       r!   r'   r'   '   sv    tVN; 	a(I 	T9-     		 TNdFs   / > 	;;	A
	A
c              #     K   | j                   j                  r| j                   j                  }n| j                   j                  }|j	                  |dt
        j                  d d z        }dj	                  t
        j                  j                  t
        j                  j                        }|j                         j                  |j                               sJ dj	                  ||             	 t        |d      5 }	 t        t        |       | j                   j                  r t        j                  j!                  |      }n|}t%        t        |      }||dz   }t'        |dt(        |       d  d d d        rt+        t        |       y y # t"        $ r |}Y Vw xY w# 1 sw Y   .xY w# rt+        t        |       w w xY ww)	Nz%d.%d   )fullnamesys_versionz Software\Python\PythonCore\{}.{}z$expected key '{}' to start with '{}'za = 1z.py )WindowsRegistryFinderDEBUG_BUILDREGISTRY_KEY_DEBUGREGISTRY_KEYformatr   version_infomajorminorcasefold
startswithr   r   r   r   pathdirnamer&   r
   r   r   r'   )		machinerynamer;   r(   keybase_keylocation
delete_keyr)   s	            r!   setup_modulerC   7   s    &&22..AA..;;
++t")C,<,<Ra,@"@  BC4;; 0 0 6 68H<<>$$X%6%6%89 F.55c8DF9@w' 	8&)8422>>!#!5J!$J 0#6F|%'VR.	  !2J?   &%
&	 	  !2J? s[   C1G4F0  F$AF
-F$7F0 ?GF!F$ F!!F$$F-)F0 0GGzrequires Windowsc                   ^    e Zd Zdj                   ej
                               Zd Zd Zd Z	y)WindowsRegistryFinderTestsz	spamham{}c                 p    | j                   j                  j                  d      }| j                  |       y )Nspam)r=   r1   	find_specassertIsNoneselfspecs     r!   test_find_spec_missingz1WindowsRegistryFinderTests.test_find_spec_missing]   s*    ~~33==fE$r#   c                     t        | j                  | j                        5  | j                  j                  j	                  | j                        }| j                  |       d d d        y # 1 sw Y   y xY wN)rC   r=   test_moduler1   rH   assertIsNotNonerJ   s     r!   test_module_foundz,WindowsRegistryFinderTests.test_module_founda   sY    $..$*:*:; 	'>>77AA$BRBRSD  &	' 	' 	's   AA++A4c                     t        | j                  | j                  d      5  | j                  j                  j	                  | j                        }| j                  |       d d d        y # 1 sw Y   y xY w)N.)r;   )rC   r=   rP   r1   rH   rI   rJ   s     r!   test_module_not_foundz0WindowsRegistryFinderTests.test_module_not_foundf   s[    $..$*:*:E 	$>>77AA$BRBRSDd#	$ 	$ 	$s   AA--A6N)
__name__
__module____qualname__r5   r   getpidrP   rM   rR   rU    r#   r!   rE   rE   W   s+     $$YRYY[1K '
$r#   rE   )r=   c                       e Zd Zd Zy)WindowsExtensionSuffixTestsc           	         | j                   j                  }dj                  t        j                  t        j                  ddt                           }	 |j                  d      }| j                  ||       |j                  |      }| j                  ||       y # t        $ r |j                  d      }d|z   }Y Ww xY w)Nz.cp{0.major}{0.minor}-{1}.pydz[^a-zA-Z0-9]_z.pydz_d.pyd_d)r=   EXTENSION_SUFFIXESr5   r   r6   resubr"   index
ValueErrorassertIn
assertLess)rK   suffixesexpected_tag
untagged_itagged_is        r!   test_tagged_suffixz.WindowsExtensionSuffixTests.test_tagged_suffixq   s    >>446==c>N>NFF>379	/!/J
 	lH- >>,/*-  	/!1J,.L	/s   B B>=B>N)rV   rW   rX   rk   rZ   r#   r!   r\   r\   o   s    .r#   r\   c                       e Zd Zd Zd Zy)WindowsBootstrapPathTestsc                     ddl m}  || }|j                         |j                         k(  ry | j                  ||       y )Nr   )
_path_join)importlib._bootstrap_externalro   r9   assertEqual)rK   expectedinputsro   actuals        r!   
check_joinz$WindowsBootstrapPathTests.check_join   s:    <V$&//"336*r#   c           	         | j                  dddd       | j                  dddddd       | j                  dddd       | j                  ddd       | j                  dd       | j                  d	d
d       | j                  d	dd
d       | j                  d	dd	       | j                  dddd       | j                  ddd       | j                  ddd       | j                  dddd       | j                  ddd       | j                  dddd       | j                  ddddd       | j                  dddddd       | j                  ddddddd       | j                  dddddd       | j                  dd       | j                  dd       | j                  dd d!       | j                  dd"d!       | j                  d#d#d!       | j                  d$d%d!       | j                  d$d&d!       y )'NzC:\A\BzC:\ABzD:\DzC:BzA\BzD:AzD:zC:\B\CzA\B\CCzB\CzA\B/CzB/CzA/zB\zA\../Cz../CzA.\.\BzA.rT   z\\Server\Share\A\B\Cz\\Server\Sharez\Az\\Server2\Share2z\\Serverz\Sharez\\Server\Share\\zC:\AzC:/Ar0   zC:/zC:z//Server/Share\z//Server/Share/z//Server/Share)ru   )rK   s    r!   test_path_joinz(WindowsBootstrapPathTests.test_path_join   s   	634	63SA	636	662	9-uc*y$4y&1#sC0#v.#u-$s3 		3/	4c2/1BCcR/1BCPSUXY/1Dc1BCc	S/icSVW)+<=+-@A 	,r*dB'*,=rB*,<bAr#   N)rV   rW   rX   ru   r{   rZ   r#   r!   rm   rm      s    +!Br#   rm   __main__rO   ),test.test_importlibr   	test_utilimport_importlibr=   r   ra   r   unittestwarningstest.supportr   
contextlibr   test.test_importlib.utilr   import_moduler   r
   r   r   r   r   r   r   r   r   r"   r'   rC   
skipUnlessr   r:   rE   	test_both!Frozen_WindowsRegistryFinderTests!Source_WindowsRegistryFinderTestsr\   "Frozen_WindowsExtensionSuffixTests"Source_WindowsExtensionSuffixTestsTestCaserm   rV   mainrZ   r#   r!   <module>r      s   1&I&&'<=	 	 	 
   & % 0   H5' :  &  @ @> S\\,,U35GH$ $ I$* Y3yI"" S\\,,U35GH. . I.& Y4	J## S\\,,U35GH)B 1 1 )B I)BV zHMMO r#   