fU DSSKrSSKrSSKrSSKrSSKrSSKrSSKJrJr SSK J r J r \ R"SS/S9 SSK 7 \R\RRS5S -r\R&"5SS r\"5S :XaS OS r\S:aS OS rS\R."54-rS\-rS\-rSS\4SS\4SS\4SS\4S/SQ\4S/SQ\4SS\ 4S S!S"-\4S#S$S%-\ 4S&S'\4/ r!\ "S(S)\RD55r#"S*S+\RD5r$"S,S-\$5r%\RL"\S.5"S/S0\$55r'\RL"\S15"S2S3\$55r(\)S4:Xa"\(d \*"S5S65 \RV"5 gg!\\4a SrGN2f=f)7N)machine win32_edition) cpython_only import_helperwinregwin) required_on)*z--remoteAMD64TF)r z Python Test Key [%d] - Delete Mez SOFTWARE\zSOFTWARE\Classes\z Int Value-z Qword Valuelw*M z String ValzA string value StringExpandzThe path is %path%z Multi-string)Lotsofstringvaluesz Multi-nul)rrrzRaw Datas binarydataz Big Stringxi?z Big Binaryxi@uJapanese 日本u 日本語c \rSrSrSrSrSrg) HeapTypeTests6cVUR[R"[55 gN) assertTruegc is_trackedHKEYTypeselfs 7/opt/alt/python313/lib64/python3.13/test/test_winreg.py test_have_gcHeapTypeTests.test_have_gc8s  h/0czUR[S5 S[lSSS5 g!,(df  g=f)N immutablebar)assertRaisesRegex TypeErrorr foor!s r#test_immutableHeapTypeTests.test_immutable;s%  # #I{ ; HL< ; ;s , :N)__name__ __module__ __qualname____firstlineno__r$r-__static_attributes__r/r&r#rr6s 1!r&rcV\rSrSrSrSrS\4SjrS\4Sjr S Sjr S Sjr S r S r g ) BaseWinregTests@c8UR[[5 gr) delete_treeHKEY_CURRENT_USER test_key_namer!s r#setUpBaseWinregTests.setUpBs *M:r&c[XS[5n[US5nUR X45 M ![a gf=f![a Of=f[ U5 [ X5 gNr)OpenKeyKEY_ALL_ACCESSOSErrorEnumKeyr9CloseKey DeleteKey)r"rootsubkeyhkey subsubkeys r#r9BaseWinregTests.delete_treeGsx 4N;D #D!,    T -        $s 4 A AA AAsub_keyc[U[[S5 U"U[5nURURS:g5 U"XB5n[ Hupgn[ XVSX5 M [U5upn URU SS5 URU SS5 [U5upn URU SS5 URU [[ 5S5 [U5n [U5 [U 5 URS5 [U5n UR5 [U 5 URS5 g![a NEf=f![a gf=f)N Default valuerr z"Not the correct number of sub keysz Not the correct number of valueszAIt appears the CloseKey() function does not close the actual key!zBIt appears the key.Close() function does not close the actual key!)SetValuer;REG_SZrhandle test_data SetValueEx QueryInfoKey assertEquallenintrDfailrBClose)r"root_key subkeystr CreateKeykeyrK value_name value_data value_typenkeysnvalues since_mod int_sub_keyint_keys r#_write_test_data BaseWinregTests._write_test_dataWsU =&/B-0  a(C+3< .JJ wAz F3<%1$5!  #GH !%GH$0$9!  #GH #i.; = 'l    % II2 3 c(    ! II7 8      s$3E+E EE E%$E%c[U[5nURUSS5 U"U[5nU"XR5nSn[Xg5nURU[ ;SS5 US-nM-![a Of=fURU[ [ 5S5 [ H7upn [Xi5upURXS5 URXS5 M9 SSS5 O!,(df  O=fWR5 [US5n URXS 5 [US5 URS 5 O![a Of=fUR5 g) NrMz+Registry didn't give back the correct valuerr Tz&Didn't read back the correct test dataz'Didn't read the correct number of itemsz!Could not directly read the valuezRead subkey value wrongz2Was able to get a second key when I only have one!) QueryValuer;rT EnumValuerBrQrU QueryValueExrXrCrW)r"rYrZr@valr\rKindexdatar]r^r_read_valread_typs r#_read_test_dataBaseWinregTests._read_test_datasa=1 oF Hh . S $E$W4D  !2D!IK    UC NF H7@2 %1'%F"  !DF  !DF 7@% $ $(  3? .GH  CO IIJ K    sAC$ A* !C$* A74C$6A77A$C$$ C2$E EEc$[U[S[5n[X2S[5n[HupVn[ XE5 M [ U5upn UR USS5 UR U SS5 UR5 [X25 [X25 URS5 UR5 [U[5 [U[5nURS5 g![a NOf=f![a gf=f)Nrzsubkey not empty before deletez Deleting the key twice succeededzCould open the non-existent key) r@r;rArQ DeleteValuerSrTrXrErWrB) r"rYrZr\rKr]r^r_r`rarbs r#_delete_test_data!BaseWinregTests._delete_test_datash q.A#!^<3< .JJ  ,3<%1$9!  #CD !%EF #!  c % II8 9 (M* (M2C II7 8      s$C2!D2 C?>C? DDcjURX5 URX5 URX5 gr)rerprt)r"rYrZs r# _test_allBaseWinregTests._test_alls, h2 X1 x3r&c [XS[S9nURURS:g5 SSS5 [ XS[S9nURURS:g5 SSS5 g!,(df  NE=f!,(df  g=f)Nr)r\rKreservedaccess) CreateKeyExrArrP OpenKeyEx)r"r\rKckeyokeys r#_test_named_args BaseWinregTests._test_named_argssw SA .037 OODKK1, -03!,.15 OODKK1, -.. 00..sA.A?. A<? B r/N)rK)r0r1r2r3r<r9r[rer@rprtrwrr4r/r&r#r6r6@s6;  4=#,(R3ILocalWinregTests.test_registry_works_extended_functions..s ;sQ#Or&)r[c$[XS[5$r?)r}KEY_READrs r#rrs 9S1h#Gr&)r@)rer:rprt)r"ckeokes r#&test_registry_works_extended_functions7LocalWinregTests.test_registry_works_extended_functionssFP /3?G .< 01r&c`UR[[5 [[[5 gr)rr:r;rEr!s r#test_named_arguments%LocalWinregTests.test_named_argumentss  /? #]3r&c[S[5nURURS5 UR 5 UR URS5 gr?)ConnectRegistryHKEY_LOCAL_MACHINEassertNotEqualrPrXrTr"hs r#,test_connect_registry_to_local_machine_works=LocalWinregTests.test_connect_registry_to_local_machine_workss@ D"4 5 AHHa(   1%r&c6SnUR[U5 g)Nc"[S[5$)N abcdefghijkl)rr:r/r&r#rCLocalWinregTests.test_nonexistent_remote_registry..s /.:KLr&) assertRaisesrB)r"connects r# test_nonexistent_remote_registry1LocalWinregTests.test_nonexistent_remote_registrysL '7+r&c[S5nUR[U5[5 URU[R SS-5 g)Nz %windir%\testwindirz\test)ExpandEnvironmentStringsrTtypestrosenviron)r"rs r#testExpandEnvironmentStrings-LocalWinregTests.testExpandEnvironmentStringss? $%5 6 a#& BJJx08; SSS5 Sm UR5 [[[ S-5 [[[ 5 g!,(df  NL=f!Sm UR5 [[[ S-5 [[[ 5 f=f)NFc">\rSrSrU4SjrSrg)>LocalWinregTests.test_changing_value..VeryActiveThreadi c>[[[5nSnSnT(d-U(aSOUnU(+n[US[U5 T(dM-SSS5 g!,(df  g=f)NTxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrchanging_value)r[r:r;rNrO)r"r\ use_short long_stringsdones r#runBLocalWinregTests.test_changing_value..VeryActiveThread.run sP0-@C $I"*K"#,C+(1M  &6B#dA@@s 7A A&r/N)r0r1r2r3rr4)rsr#VeryActiveThreadr s C Cr&rz\changing_valueirT) threadingThreadstartr[r:r;rangerSrirhjoinrE) r"rthreadr\_ num_subkeys num_valuestinamers @r#test_changing_value$LocalWinregTests.test_changing_values Cy// C"#  8,();;=@CtA1=c1B.KQ":.(0"3Q0/%=D KKM '7I)I J ' 7==D KKM '7I)I J ' 7s$C2A C!C2! C/+C22?D1c Sn[[[5n[X![S5 [ U5up4n[ US5 SSS5 [[SR[U455 [[[5 g!,(df  NH=f![[SR[U455 [[[5 f=f)Nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrr\) r[r:r;rNrOrSrCrEr)r"rr\rrrs r# test_long_keyLocalWinregTests.test_long_key&s 8,m<FC0-9#->* Q= 'M43H)I J ' 7 =< 'M43H)I J ' 7s"B,BB BB;Cc[[S5 [[S5 g![aEnUR[R[R 4;aUR S5 eSnAff=f)NrzMaccess denied to registry key (are you running in a non-interactive session?)r)riHKEY_PERFORMANCE_DATArBerrnoEPERMEACCESskipTestrj)r"es r#test_dynamic_key!LocalWinregTests.test_dynamic_key4s`  +Q / *B/  ww5;; 55 PQ   s# A2AA--A2)r zRequires Windows XPc8[[[5nURURS5 SSS5 [ [[5nURURS5 UR [5 [U5 SSS5 UR [5 [U5 SSS5 UR [5 [U5 SSS5 UR [5 [[[5 SSS5 [[[5 g!,(df  GN=f!,(df  N=f!,(df  N=f!,(df  N=f!,(df  Nh=f![[[5 f=fr?) r[r:r;rrPr@rNotImplementedErrorDisableReflectionKeyEnableReflectionKeyQueryReflectionKey DeleteKeyExrE)r"ckr\s r#test_reflection_unsupported,LocalWinregTests.test_reflection_unsupportedBs 8,m<##BIIq1=+];C    A .""#67$S)8""#67#C(8""#67"3'8""#67-}=8 ' 7=< 87777777 ' 7sFD-A F D? F) E5F E!F;E2F- D<7F? E  F EF! E/+F2 F<FFc[[[5nURURS5 [ USS[ S5 SSS5 [[[5 g!,(df  N#=f![[[5 f=f)Nr test_name)r[r:r;rrPrR REG_DWORDrEr"rs r#test_setvalueex_value_range,LocalWinregTests.test_setvalueex_value_rangeVsa  8,m<##BIIq12{D)ZH= ' 7 =< ' 7s"A40A#A4# A1-A44B c [[[5nUR[5 [ USS[ S5 [ USS[S5 SSS5 UR[[US5 UR[[US5 SSS5 [[[5 g!,(df  Nc=f!,(df  N4=f![[[5 f=f)Ntest_name_dwordtest_name_qword) r[r:r;r OverflowErrorrRr REG_QWORDFileNotFoundErrorrjrErs r#"test_setvalueex_negative_one_check3LocalWinregTests.test_setvalueex_negative_one_checkbs 8,m<&&}5r#4dIrJr#4dIrJ6!!"3\2GXY!!"3\2GXY = ' 765=< ' 7s:CC'B0ACC0 B> :C C CC(c[[[5nURURS5 Sn[ USS[ U5 [US5up4URU[ 5 URX25 SSS5 [[[5 g!,(df  N#=f![[[5 f=f)Nrrr) r[r:r;rrPrRrrjrTrEr"rtest_valret_valret_types r#test_queryvalueex_return_value/LocalWinregTests.test_queryvalueex_return_valuess 8,m<##BIIq1%2{D)XF$0[$A!  95  3 = ' 7=< ' 7#B+A'B=B+ B($B++Cc[[[5nURURS5 Sn[ USS[ U5 [US5up4URU[ 5 URX25 SSS5 [[[5 g!,(df  N#=f![[[5 f=f)Nrr) r[r:r;rrPrR REG_BINARYrjrTrErs r##test_setvalueex_crash_with_none_arg4LocalWinregTests.test_setvalueex_crash_with_none_args 8,m<##BIIq12{Az8D$0[$A!  :6  3 = ' 7=< ' 7rc[[[5nURURS5 Sn[ USS[ U5 [US5up4URU[ 5 URUS5 SSS5 [[[5 g!,(df  N#=f![[[5 f=f)NrzA string with a nullrzA string) r[r:r;rrPrRrOrjrTrErs r# test_read_string_containing_null1LocalWinregTests.test_read_string_containing_nulls 8,m<##BIIq152{Avx@$0[$A!  62  *5 = ' 7=< ' 7s#B,A(B>B, B)%B,,Cr/N)r0r1r2r3rrrrrrrrrrunittest skipUnlessWIN_VERrrrrrrr4r/r&r#rrsv; 24 &,= *8@ 8 06)+@A8B8& 88"8 8 8r&rzSkipping remote registry testsc\rSrSrSrSrg)RemoteWinregTestsicN[[[5nURU5 gr)r REMOTE_NAMEr:rw)r" remote_keys r#test_remote_registry_works,RemoteWinregTests.test_remote_registry_workss$[2CD  z"r&r/N)r0r1r2r3r r4r/r&r#r r s#r&r zx64 specific registry testsc\rSrSrSr\R "\"5S;S5S5r\R"\ S5S5r \R"\ S5S5r S r S rg ) Win64WinregTestsichUR[[5 [[[[SS9 g)Nr)r\rKr{rz)rr:r;rrAr!s r#r%Win64WinregTests.test_named_argumentss% /?)=)A 7r&)WindowsCoreHeadless IoTEdgeOSz)APIs not available on WindowsCoreHeadlessc([[S5nUR[U55 UR [ U55 UR [ U55 UR[U55 SSS5 g!,(df  g=f)NSoftware)r@rrr assertIsNonerr)r"r\s r#test_reflection_functions*Win64WinregTests.test_reflection_functionssi' 4 OO.s3 4   1#6 7   237 8 OO.s3 4 5 4 4s A)B BzOS doesn't support reflectionc[[[S[[-5nUR UR S5 [[[S[[-5nUR UR S5 SSS5 [USS[S5 SnUR[U5 SSS5 [[[S[[-5nUR UR S5 URS[US55 [USS[S5 SSS5 [[[S[[-5nURS[US55 SSS5 [![[[S5 g!,(df  GN=f!,(df  N=f!,(df  N=f!,(df  N]=f![![[[S5 f=f)Nrr32KEYcD[[[S[[-5$r?)r@r:test_reflect_key_namerKEY_WOW64_64KEYr/r&r#r2Win64WinregTests.test_reflection..sG,=,A1,4,F%Hr&64KEY)r|r:rrAKEY_WOW64_32KEYrrPr@rRrOrrBrrTrhrr)r" created_keyr\ open_fails r#test_reflection Win64WinregTests.test_reflections $ ,.0Eq+o=?BM##K$6$6:.0Eq+o=?BE'' A6? ;Avw?H !!'95#?(*,A1'/9;>A##CJJ2  *S"*=>3Avw7 ;*,A1!O358;  *S"*=>5 )+@' ,;?? ??(;;55 )+@' ,sk!G>F"!F>4F"2)GA F3')GG-G F F"" F0,G3 G=G GGG1c[[[S[[-5n[ U5nUR [U5[5 URU5 [U5 UR[ U55 SSS5 SnUR[U5 [[[S[[-5nUR!UR"S5 SSS5 [%[[[S5 g!,(df  N=f!,(df  N:=f![%[[[S5 f=f)NrcD[[[S[[-5$r?)r}r:rrrr/r&r#r:Win64WinregTests.test_disable_reflection..s *;*?*2_*D!Fr&)r|r:rrAr!rrTrbool assertFalserrrrBr}rrrPr)r"r"disabledr#r\s r#test_disable_reflection(Win64WinregTests.test_disable_reflections ,.0Eq+o=?BM-k:  h6  *$[1 2; ?@?FI   gy 1,.CQ#o57:=##CJJ27 )+@' ,/??&77 )+@' ,s<!D(A!DAD(D#D( DD( D%!D((EcUR[5n[[S5 SSS5 g!,(df  g=f)Nsome_value_that_does_not_exist)rrrhHKEY_CLASSES_ROOT)r"ctxs r#test_exception_numbers'Win64WinregTests.test_exception_numberss+   0 1S (*J K2 1 1s0 >r/N)r0r1r2r3rrskipIfrrrHAS_REFLECTIONr$r,r2r4r/r&r#rrs}7 __]_(LLNyz5{5)HI),J),V)HI,J,:Lr&r__main__z)Remote registry calls can be tested usingz('test_winreg.py --remote \\machine_name'),rrsysrrrplatformrr test.supportrr import_modulerargvrlr  IndexError ValueErrorgetwindowsversionr WIN64_MACHINEr5getpid test_key_baser;rrrrO REG_EXPAND_SZ REG_MULTI_SZrrQTestCaserr6rrr rr0printmainr/r&r#rGs +4H5':((388>>*5a78K    !"1 % W,% !6)u3biik^C }, - =byI(yI&vF*}M8|L&|L'zJc7mvFdElzJ V,  !H%%!!R.h''R.jF8F8R ["BC##D# ]$AB_L_LC_LD z  9: < MMO o JKs+F FF