Nuitka-winsvc 2.4.7__cp311-cp311-win_amd64.whl → 2.4.10__cp311-cp311-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of Nuitka-winsvc might be problematic. Click here for more details.

Files changed (31) hide show
  1. {Nuitka_winsvc-2.4.7.dist-info → Nuitka_winsvc-2.4.10.dist-info}/METADATA +1 -1
  2. {Nuitka_winsvc-2.4.7.dist-info → Nuitka_winsvc-2.4.10.dist-info}/RECORD +31 -31
  3. {Nuitka_winsvc-2.4.7.dist-info → Nuitka_winsvc-2.4.10.dist-info}/WHEEL +1 -1
  4. nuitka/Options.py +17 -7
  5. nuitka/Version.py +1 -1
  6. nuitka/build/SconsCompilerSettings.py +3 -3
  7. nuitka/build/include/nuitka/allocator.h +1 -1
  8. nuitka/build/static_src/CompiledFunctionType.c +1 -1
  9. nuitka/build/static_src/CompiledMethodType.c +4 -1
  10. nuitka/build/static_src/HelpersAllocator.c +4 -4
  11. nuitka/build/static_src/HelpersComparisonEqUtils.c +1 -0
  12. nuitka/build/static_src/HelpersConstantsBlob.c +6 -2
  13. nuitka/build/static_src/HelpersMatching.c +1 -1
  14. nuitka/build/static_src/MainProgram.c +7 -2
  15. nuitka/build/static_src/OnefileBootstrap.c +0 -2
  16. nuitka/build/static_src/OnefileSplashScreen.cpp +33 -8
  17. nuitka/freezer/DependsExe.py +8 -1
  18. nuitka/freezer/DllDependenciesMacOS.py +28 -15
  19. nuitka/freezer/IncludedDataFiles.py +3 -2
  20. nuitka/freezer/Standalone.py +4 -0
  21. nuitka/importing/ImportResolving.py +4 -0
  22. nuitka/plugins/standard/standard.nuitka-package.config.yml +88 -15
  23. nuitka/reports/Reports.py +4 -0
  24. nuitka/tools/testing/Common.py +1 -1
  25. nuitka/utils/FileOperations.py +14 -2
  26. nuitka/utils/Utils.py +16 -0
  27. {Nuitka_winsvc-2.4.7.data → Nuitka_winsvc-2.4.10.data}/scripts/nuitka-run.cmd +0 -0
  28. {Nuitka_winsvc-2.4.7.data → Nuitka_winsvc-2.4.10.data}/scripts/nuitka.cmd +0 -0
  29. {Nuitka_winsvc-2.4.7.dist-info → Nuitka_winsvc-2.4.10.dist-info}/LICENSE.txt +0 -0
  30. {Nuitka_winsvc-2.4.7.dist-info → Nuitka_winsvc-2.4.10.dist-info}/entry_points.txt +0 -0
  31. {Nuitka_winsvc-2.4.7.dist-info → Nuitka_winsvc-2.4.10.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: Nuitka-winsvc
3
- Version: 2.4.7
3
+ Version: 2.4.10
4
4
  Summary: Nuitka but support compile as Windows service
5
5
  Home-page: https://github.com/tabris17/Nuitka-winsvc
6
6
  Author: tabris17
@@ -1,5 +1,5 @@
1
- Nuitka_winsvc-2.4.7.data/scripts/nuitka-run.cmd,sha256=ymcs9S9XtjCwZ7-oOj1gLisLaIj8uIxn-1mb0mTxWUI,924
2
- Nuitka_winsvc-2.4.7.data/scripts/nuitka.cmd,sha256=G-3yCOmURvmaYtciOLW4cMRGEcutzcsea4qDJqfezg0,1061
1
+ Nuitka_winsvc-2.4.10.data/scripts/nuitka-run.cmd,sha256=ymcs9S9XtjCwZ7-oOj1gLisLaIj8uIxn-1mb0mTxWUI,924
2
+ Nuitka_winsvc-2.4.10.data/scripts/nuitka.cmd,sha256=G-3yCOmURvmaYtciOLW4cMRGEcutzcsea4qDJqfezg0,1061
3
3
  nuitka/Builtins.py,sha256=IPBD00YlX9eNfKyKxyGRukVmwtoiaeJ4YLNdm1LoLOo,7560
4
4
  nuitka/BytecodeCaching.py,sha256=KFVx1wDKEG8bydgerI6k2YK6VXIZLmTfMxgZmUhkBWo,5787
5
5
  nuitka/Bytecodes.py,sha256=BFKfgzCHUb8-qs1VZcjaKpCwBMt7UKgkT8POEsYljLQ,3891
@@ -10,7 +10,7 @@ nuitka/HardImportRegistry.py,sha256=a6kBsQICBQdxcnrJ-dArbUtMlYFNvlA32MHyvgpnlJg,
10
10
  nuitka/MainControl.py,sha256=hZ3_6zYI01j_xIUMONklCMxhnZR6ahJk7JaR_SWbibY,39044
11
11
  nuitka/ModuleRegistry.py,sha256=z1kdwF6DABgfu06I_KjoUmNHOx4PYd0rQpUwNYp92Fk,9122
12
12
  nuitka/OptionParsing.py,sha256=9vQP7BQbw9S30CWfg4ruqTi5hYu0KYV6IlCU2DfAIfc,65672
13
- nuitka/Options.py,sha256=0ACts_2GAAswzlvH-zr8vOSsuT9G9B_dpMAMBVK-Loo,81508
13
+ nuitka/Options.py,sha256=_T2JCrJX23zyFDuAp8XBb7Ui9gZE8ZoWJvx3ZLRf2a0,81849
14
14
  nuitka/OutputDirectories.py,sha256=sBX7_B7QogcKTHlTRY2Bfv7O9oi4EpYB2EcXyNRTiXM,5560
15
15
  nuitka/PostProcessing.py,sha256=VPZ6lBsTvMvLEHsWxOZw6ewo9gVEUF8C5LYZL5N04_Q,15373
16
16
  nuitka/Progress.py,sha256=aAbGYqGtLuMsJ0_VdrllglCvaK2IP_ySR-cq-gmPK70,6855
@@ -22,7 +22,7 @@ nuitka/SourceCodeReferences.py,sha256=quGcd9Kg3FjYwsSDDv49MWi_Yec2AurRp-cVspo5qq
22
22
  nuitka/Tracing.py,sha256=OVxuhIVm78EWZtY9cl031a7DCei6uTbFOi2LBrZDiOY,13558
23
23
  nuitka/TreeXML.py,sha256=KGsCEB9Tu1HUNQd10AMWoYX82Qxso_DUfoiet4AiRoc,3654
24
24
  nuitka/Variables.py,sha256=53u-p0l58lrBg8nNSYd5DjR3AOGezMayUM7C05vANVM,15470
25
- nuitka/Version.py,sha256=9ur8BSQRHPfMNknzBJHrWpCbbuM95Az_x8wRLhTZvDM,2466
25
+ nuitka/Version.py,sha256=1jhxEsVTAruzo3jpDxHHIwlQlC1IH-HKaHtR3RIWQuU,2467
26
26
  nuitka/__init__.py,sha256=TkW50aBd9haxBi-DXHM71oVA31d5oPeL06ZwuBSkPqo,865
27
27
  nuitka/__main__.py,sha256=dp8HcyiviRrEVm1OWjffOIy0DvkT4iW8R9wCjGpxwT8,7810
28
28
  nuitka/__past__.py,sha256=c9HaNn4DHQU3x1ip7aVSzdQqNAzDojYmr2KfMHbqmSQ,5739
@@ -31,14 +31,14 @@ nuitka/build/CCompilerVersion.scons,sha256=Rs68LndV5ItFvA6W1_aEE9fXumAMXjUfP35kE
31
31
  nuitka/build/DataComposerInterface.py,sha256=xWrgCLG6PXoZsFjuTxc0f4XCSu80CDwYXmLJevp9VTw,3486
32
32
  nuitka/build/Onefile.scons,sha256=bGIq7NAR81aB_Rhnwn7vdMgjFF0E6BggGoUyf8TAOXY,17908
33
33
  nuitka/build/SconsCaching.py,sha256=XfPJxt2K1SqKwR_docnXw3pWijcoQZW02Xk-o0BBfJQ,15449
34
- nuitka/build/SconsCompilerSettings.py,sha256=NS6-Xko6qQ_JbDXxGqDZHdeof1i_zwiItahKaPkqVzY,36447
34
+ nuitka/build/SconsCompilerSettings.py,sha256=MoqUX4mRU4RYczvaXPn-BO6smONmvE4Wt0DNPdi-gEY,36456
35
35
  nuitka/build/SconsHacks.py,sha256=KvcjESBRMRcwAWZN5S09JbZNs9WAc7HvPXIiRRgJE0c,5802
36
36
  nuitka/build/SconsInterface.py,sha256=LmudNBGDrOLY1aRy8md6XBq-6hh9gMvRYf8HHGRMms4,18650
37
37
  nuitka/build/SconsProgress.py,sha256=Zc0Gp2meURGXDK9RMcTb3MBH0wRW51625__y7u8fFa8,2703
38
38
  nuitka/build/SconsSpawn.py,sha256=g2BzLuCeIMpt5OHYK7jelyRgm8QlHQxoCKA33mg3y4g,13210
39
39
  nuitka/build/SconsUtils.py,sha256=nW4L4ymMpgaq3rJk2ZAjxok_EBi7p-UtpmCX3q6ouHE,27487
40
40
  nuitka/build/__init__.py,sha256=TkW50aBd9haxBi-DXHM71oVA31d5oPeL06ZwuBSkPqo,865
41
- nuitka/build/include/nuitka/allocator.h,sha256=V0gqsawp3qU6AY7jQUL7L4cr8C6OziJHgG5AUjbfo9U,10847
41
+ nuitka/build/include/nuitka/allocator.h,sha256=dexX6Y6mmHJ8LiGxgo-2Dp6X3zjCKHBOYcs-h8Wdano,10839
42
42
  nuitka/build/include/nuitka/builtins.h,sha256=QhRpXRaFLANnurU3yqbgj_pmdgmze5ThItnV4RpR8Xs,3499
43
43
  nuitka/build/include/nuitka/calling.h,sha256=IGp__zOY87L09AAuX250Evl-OV9PYl4HuOYDd-ht1Ko,5203
44
44
  nuitka/build/include/nuitka/checkers.h,sha256=hfSyh4-YAxsK8Ebl8AxCA0sPy9RoB0xHppuIB8SgF3Y,2006
@@ -420,11 +420,11 @@ nuitka/build/static_src/CompiledCellType.c,sha256=NhSxR56c645TLauoBqA_W6DqphNMr5
420
420
  nuitka/build/static_src/CompiledCodeHelpers.c,sha256=URXN9Q-oycNLRKUj_Xra6_-ukCkmnK65KHh4mrbJ_NE,59730
421
421
  nuitka/build/static_src/CompiledCoroutineType.c,sha256=njZmPFdVSYqCBJ25o5N-VwWD9i3W0Oi7QiM2SuXGrsA,72298
422
422
  nuitka/build/static_src/CompiledFrameType.c,sha256=RntldgQBSFRCU6FdXGATPL4B_AJ8MbvbC4ocW4r4maQ,42851
423
- nuitka/build/static_src/CompiledFunctionType.c,sha256=W-apafWkZq7qbZBxayW4NtRLlVNd9wAx2ny6fZYcJuU,113606
423
+ nuitka/build/static_src/CompiledFunctionType.c,sha256=YK5y4QhOb6aIRbCyNg2cdh83UAPO86DNlIeJEIHw-gY,113607
424
424
  nuitka/build/static_src/CompiledGeneratorType.c,sha256=cwM9_yu6IRPxQMqKcg3Thia8TQVXf7HaKe4fbPbMPCk,67879
425
425
  nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c,sha256=73uz7jzMoyCjnMWcHplbK3WTZFpdIcNTuAM64MaUWHg,56209
426
- nuitka/build/static_src/CompiledMethodType.c,sha256=bKPdPfHQ5CJrVxX4jtvqcZVWpZ4w0SGTL9r0N2aHPrQ,22538
427
- nuitka/build/static_src/HelpersAllocator.c,sha256=-wtp21Q7cZAYQbwg2-_LddaKV-wmunOHZ2fgBYmlojA,20728
426
+ nuitka/build/static_src/CompiledMethodType.c,sha256=fZP-ynQN0vBHT_1Bddo6zzgLp3F5sAWscjCt-LN1VOs,22649
427
+ nuitka/build/static_src/HelpersAllocator.c,sha256=pEW_kxHcsSVpU_0oP_9fstTfwbGRMs-FGFaEad7fzK4,20746
428
428
  nuitka/build/static_src/HelpersAttributes.c,sha256=yjGvAz1jvp6XuDk1EnorNmP3M3cavFWYh8ylYDOFK5Q,37636
429
429
  nuitka/build/static_src/HelpersBuiltin.c,sha256=ojXzdmZXbHH4suCrQieQhCm26CxyrUP9ZnKbsL218e0,24033
430
430
  nuitka/build/static_src/HelpersBuiltinTypeMethods.c,sha256=8KT1Naoot64WipECnnE9iGxFsy4QdEKlLRidJYcxrdI,114017
@@ -434,14 +434,14 @@ nuitka/build/static_src/HelpersCallingGenerated.c,sha256=9nHqNa17Smhc4ZdwWQkgT9v
434
434
  nuitka/build/static_src/HelpersChecksumTools.c,sha256=DLJWSvRYuC-hU7coVPqU6r3EljoCh-rJNM8YecFUnbE,2065
435
435
  nuitka/build/static_src/HelpersClasses.c,sha256=UiATEtqIy03LSG1PKpjfZjXdmxOOIE6FKcSJx_orw90,3051
436
436
  nuitka/build/static_src/HelpersComparisonEq.c,sha256=_7wR19FvapQ9BzggLTw7h4PGgTHyeb406lhpIy5m37M,322180
437
- nuitka/build/static_src/HelpersComparisonEqUtils.c,sha256=ohVlfjFPjg_F1yZwryS7DLxeIxtrVcfpsT0IL53h0tg,4821
437
+ nuitka/build/static_src/HelpersComparisonEqUtils.c,sha256=vLG_xfzyMKOziBUIdPT7IJOdvMm-08ej-iv5pUuOAaU,4864
438
438
  nuitka/build/static_src/HelpersComparisonGe.c,sha256=_84HNwYbNiTqdyvg9i1Tqyp_UwwLEQ2hzRt__KvNgDY,317300
439
439
  nuitka/build/static_src/HelpersComparisonGt.c,sha256=g8XBKKuX2-eR7gNhS7YDi2_dpRzpASUEHi_BB916Brg,316702
440
440
  nuitka/build/static_src/HelpersComparisonLe.c,sha256=NfBvAILavbH-u0QT3ByjS_K_Kd0OsKh-36Ar5cYsE0w,320514
441
441
  nuitka/build/static_src/HelpersComparisonLt.c,sha256=tTYmfmy0XM6FqUvHwkiILX62At7GTyDu_gruTBnHAd8,319916
442
442
  nuitka/build/static_src/HelpersComparisonNe.c,sha256=-MaZEqvl-ShUWOeFOn9V63L0nF3C0Qmi2YJ97ES4h7U,318928
443
443
  nuitka/build/static_src/HelpersConsole.c,sha256=qZekWa9oHODPOPPgEzvBeYDQgS5-YLbs1Dt1YY-LRwg,3864
444
- nuitka/build/static_src/HelpersConstantsBlob.c,sha256=ok-LpURJTophxocrnfZThBZQ_KmbIZ-pYlNXopJMeGo,35782
444
+ nuitka/build/static_src/HelpersConstantsBlob.c,sha256=8-PVEZRtI8qdP-rWavA2J4qOpkPUKwjA-lDqPHC2B0w,35952
445
445
  nuitka/build/static_src/HelpersDeepcopy.c,sha256=PRgzmXzB_pf_ie6g0GDNTfJSBwQVCRf-KrUNSdiaT7w,20361
446
446
  nuitka/build/static_src/HelpersDictionaries.c,sha256=U54zFBw693bp9mxdR01Sa9seYBJoPz339qIZs_I-PO8,40258
447
447
  nuitka/build/static_src/HelpersDictionariesGenerated.c,sha256=cwPsX9pZ-eLZuqtIoRguN_XBBUp7MCU6q2-IdAYCxDI,27988
@@ -459,7 +459,7 @@ nuitka/build/static_src/HelpersJitSources.c,sha256=0vNnbQYGnmSqE7Uj3SkLNbqKFDxY5
459
459
  nuitka/build/static_src/HelpersLists.c,sha256=j53DiTeduWJ9Gc7QtHdExCPLxu3LeW8ydgVPKfFrL9w,21632
460
460
  nuitka/build/static_src/HelpersListsGenerated.c,sha256=6rbjOglwf_xlKEUgJOH-tC6mUHDhS-PV8fBikoohYwQ,14316
461
461
  nuitka/build/static_src/HelpersMappings.c,sha256=f3s_pCQGKeMiWD7AmdZEXGgLRvT3r-Fzgos2Yr9Gqvg,1669
462
- nuitka/build/static_src/HelpersMatching.c,sha256=_mpgp6oINb5ET8TjzZMTDePVGm4P3emEfQP_W-1-8Jw,6234
462
+ nuitka/build/static_src/HelpersMatching.c,sha256=G9CYDr609bFe4EKNw8el14AxRggXeCTQMSY0cwyr81E,6235
463
463
  nuitka/build/static_src/HelpersOperationBinaryAdd.c,sha256=WtBB3PsJ1VYu_IEhRHPhpAUy_Q9DQzrPNje7_xKrOu4,183706
464
464
  nuitka/build/static_src/HelpersOperationBinaryAddUtils.c,sha256=NESdxee6EkQWAuccUalFeCkAub4W2G9LvZLypJc0R6c,19943
465
465
  nuitka/build/static_src/HelpersOperationBinaryBitand.c,sha256=iHZm_xT3a2Gluz_RG0zMqbdOWVHEgZequA_MNaBlfHY,78269
@@ -505,13 +505,13 @@ nuitka/build/static_src/HelpersStrings.c,sha256=-WLwXGcKdErdMLNNPT8seMdm9LOTLW2o
505
505
  nuitka/build/static_src/HelpersTuples.c,sha256=9yVThC0PIcHYadFLyPdf16Bs204TmE2gzTClKClvM8w,4481
506
506
  nuitka/build/static_src/HelpersTypes.c,sha256=vpGmy_oIY-Q19aSSsaYMur5orvkCWsL5rBP6BJ1OdXg,6916
507
507
  nuitka/build/static_src/InspectPatcher.c,sha256=mQ0U_CyOC8I06X7DJ4qeDimFEljb2WHngB-Kf-qDwQ0,14752
508
- nuitka/build/static_src/MainProgram.c,sha256=9ZqsMt-hF1w0cWupY_zXxqBskwtoTIXe0BPXqbm7a08,57450
508
+ nuitka/build/static_src/MainProgram.c,sha256=A14ydsmyjnyd95HGEM2X2xi9HA-OA13H-KLNWz4Wz5k,57590
509
509
  nuitka/build/static_src/MetaPathBasedLoader.c,sha256=5vQfHpj84_fIb5grJpvVyepOv9706mARJsBVviwsXhY,67088
510
510
  nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c,sha256=Ja17tBwGgt6jVF8Hr8Wvhx0NKarqJ6IL7d149latRR0,5082
511
511
  nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c,sha256=K5zaC-z7r47DZiQbn4-aYvmm0AEYd3hCAeXw8Xtw9ew,6651
512
512
  nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c,sha256=-Jd5ixaJcRbywWlkeLiGjBYwcXXq2KMiTzWngeuaF6Y,22875
513
- nuitka/build/static_src/OnefileBootstrap.c,sha256=bQRAVpDwoN5TYlPUjtIs0didVnkxAjlywMdzwMwA3rw,40142
514
- nuitka/build/static_src/OnefileSplashScreen.cpp,sha256=SkDvJ9AqdiZvqHHuNxRFMvdMpnynGwaB0oDG4JaG4bs,8050
513
+ nuitka/build/static_src/OnefileBootstrap.c,sha256=7QHOwrnmYBsekBX2E2rq4k21TRCBVH767KTF9EBHrq0,40089
514
+ nuitka/build/static_src/OnefileSplashScreen.cpp,sha256=WMJ8kWaFpsooTcHt2fJE3ztfVCXL-dpSwKB-ePJHdtc,9138
515
515
  nuitka/code_generation/AsyncgenCodes.py,sha256=WoPhZ374EZ_VY4ioTTDGqoASL4Y--7WC8u9LDVxoruo,6491
516
516
  nuitka/code_generation/AttributeCodes.py,sha256=9rp8iBP4lV33xde5eJmomF2rfmGddR3LRqTjAT8WHu0,10948
517
517
  nuitka/code_generation/BinaryOperationHelperDefinitions.py,sha256=VUcpFH-ZMf9jZ8WXm5VLtTGLDk4ehTi8DyYHUQyBc1c,21926
@@ -647,20 +647,20 @@ nuitka/distutils/__init__.py,sha256=TkW50aBd9haxBi-DXHM71oVA31d5oPeL06ZwuBSkPqo,
647
647
  nuitka/finalizations/Finalization.py,sha256=NE7mn3W5PzgCKXTHrptcztVG7EgXwMVM9bYC58-PhfI,1258
648
648
  nuitka/finalizations/FinalizeMarkups.py,sha256=vjhI4fVEAglPb_z-e6YtTzgVSBpt5R2NQUC2mbaQx7o,5465
649
649
  nuitka/finalizations/__init__.py,sha256=TkW50aBd9haxBi-DXHM71oVA31d5oPeL06ZwuBSkPqo,865
650
- nuitka/freezer/DependsExe.py,sha256=lgurnQsnAiwG0pbh2SnuGk-hdTyH8bKoXawqsm-GFrM,8019
650
+ nuitka/freezer/DependsExe.py,sha256=WN-VORHEs7-jDy62dWmUqOxk6Rfg7iXCr3TplUTy7l8,8258
651
651
  nuitka/freezer/DllDependenciesCommon.py,sha256=uZkJ4tpvzZ_vHDud0sOuI-GiqWu0R-Y0w64uqKrmgxE,3268
652
- nuitka/freezer/DllDependenciesMacOS.py,sha256=oNJLqFnVaoGAHmRzLKsyABN0b_LU0jAESPJSJhA-i-o,15071
652
+ nuitka/freezer/DllDependenciesMacOS.py,sha256=zy2mjYgvZnxfh1vXxMJdarQGfPIRc6VdxIdTt64FajU,15590
653
653
  nuitka/freezer/DllDependenciesPosix.py,sha256=FKzKDuVAViqI00CfADzqgYAJZqB416VaSS-MtApjjJs,7468
654
654
  nuitka/freezer/DllDependenciesWin32.py,sha256=K5_NGi_tl8_Oky9T198YlkbFjrPylzFPe7W-3kVfbZU,6837
655
655
  nuitka/freezer/ImportDetection.py,sha256=zJtJk-8rmHW-BngN5W6WPhQu6vHLsX9nbDSysytp_0k,11999
656
- nuitka/freezer/IncludedDataFiles.py,sha256=dFdZim30aD6TPaYHYMOa2a1DZlLDSqpsB4TwWWZbCIk,19771
656
+ nuitka/freezer/IncludedDataFiles.py,sha256=dnAwfCHMg8ejtmgF5pixaTZaqujOQmO6z1ZxG63jFDw,19800
657
657
  nuitka/freezer/IncludedEntryPoints.py,sha256=GRlGRaKHSOalp7tuWEgd8dC-Iaay8GpEI90phCd1Gww,12137
658
658
  nuitka/freezer/Onefile.py,sha256=GMEQysedmlLyn2sSkPrId13RY1sNY3n87qEn7LVCd7Y,10551
659
- nuitka/freezer/Standalone.py,sha256=hUz9ocsBTVyxjAgBEhV0WxiZlRJJB6yDuMG6QbbGTaI,13155
659
+ nuitka/freezer/Standalone.py,sha256=sYgXFr9yI5QcB3ovO2pvwsxScD7EYbhqfrjmruEpcsk,13284
660
660
  nuitka/freezer/__init__.py,sha256=TkW50aBd9haxBi-DXHM71oVA31d5oPeL06ZwuBSkPqo,865
661
661
  nuitka/importing/IgnoreListing.py,sha256=sDR37R5N1zgqA92G0GxcXJf_b-H4eLMeinYpUu1c4Qs,11040
662
662
  nuitka/importing/ImportCache.py,sha256=qyg3yHj6lepcy1hgLpZTWL7CUpDvMlsp2XoZxwgTI3Y,2989
663
- nuitka/importing/ImportResolving.py,sha256=I1aUiZqhoIMnRLIuKZpjYusH0NbW_tEGWgCj5P2FY1k,7784
663
+ nuitka/importing/ImportResolving.py,sha256=ptblxaLqlDm-YRmi3w2UaCsdtnhtsuxNdaR103UtqfA,7957
664
664
  nuitka/importing/Importing.py,sha256=zoCer8D4xoHxoNn8GhwHisN5TKPFetNvP6jothoSCd0,33809
665
665
  nuitka/importing/PreloadedPackages.py,sha256=VHlzoXRgWHu1tOX-06mNa_qXW-llkPSz4ZQZnU1UDo4,4869
666
666
  nuitka/importing/Recursion.py,sha256=Bo4UF1JhMCanuNPOOjG4gZgoTMake4OVt8Fp2GxuvDI,18935
@@ -809,14 +809,14 @@ nuitka/plugins/standard/TransformersPlugin.py,sha256=6Ex9lNg5OupnXhFPKq5ozDOikIb
809
809
  nuitka/plugins/standard/TrioPlugin.py,sha256=fIz_UTQfwBnl6MY4-XI4eKHPPsMeksPWYjnJU10mOb8,1107
810
810
  nuitka/plugins/standard/UpxPlugin.py,sha256=1I3WouiEmKQAvTkzhgmJ2FRjDKHC0oH9onENntmFphg,5668
811
811
  nuitka/plugins/standard/__init__.py,sha256=TkW50aBd9haxBi-DXHM71oVA31d5oPeL06ZwuBSkPqo,865
812
- nuitka/plugins/standard/standard.nuitka-package.config.yml,sha256=ns2lttBNDkBiSuxdZFWA7KHXtvYT37-vW27b7z_Y5AM,254532
812
+ nuitka/plugins/standard/standard.nuitka-package.config.yml,sha256=i8r6fL24oypof1eLCBPEUx3j8dHcESJ3KubyoVF-S7I,257064
813
813
  nuitka/plugins/standard/stdlib2.nuitka-package.config.yml,sha256=DRazC20zLXbc71ZMRu9kEA8N4Xe8Iry2sHNsUlbx4FE,2357
814
814
  nuitka/plugins/standard/stdlib3.nuitka-package.config.yml,sha256=scSfWrwREBDcZhG-ehdw1ZQeI-YoYby-oIQGjIdJlg8,13646
815
815
  nuitka/plugins/standard/DillPlugin/DillPlugin.c,sha256=RbyX_UPvVZ00nN2bnIBVFoZ8xSZZ5YFJqVB6Qwg9GSo,1688
816
816
  nuitka/plugins/standard/DillPlugin/dill-postLoad.py,sha256=WICFdsvx5ZZKqgfX-GuYWqsuL7avFDqxlFk6UA3qihk,9826
817
817
  nuitka/reports/CompilationReportReader.py,sha256=9MRNyEpfu7gf5jDlhz53ZBBERGXTvps1sV2P_hutWf8,2286
818
818
  nuitka/reports/LicenseReport.rst.j2,sha256=CPxGcCfBlYXRDHUOOuzVs-bcVj8IQ5kA4GAn5ayRIzc,2089
819
- nuitka/reports/Reports.py,sha256=zILzwfCZNQuM1EnRm387wgzvcmsTjgn1eTNnQULJeIA,30435
819
+ nuitka/reports/Reports.py,sha256=hNnp_FWNCIZnbtebgRh4XRfSjkM1-jqICw3uxuVLxqk,30634
820
820
  nuitka/reports/__init__.py,sha256=TkW50aBd9haxBi-DXHM71oVA31d5oPeL06ZwuBSkPqo,865
821
821
  nuitka/specs/BuiltinBytesOperationSpecs.py,sha256=IHSeni5fD47sh2mlPOlFRIBU5BYYgB8jRIDATtLse0I,5943
822
822
  nuitka/specs/BuiltinDictOperationSpecs.py,sha256=QY7acLh6R9HgWhiAc82qWB1LULJ4DQF5-SdsCIV98wE,2818
@@ -858,7 +858,7 @@ nuitka/tools/specialize/Common.py,sha256=HFjFyVl1rwOwM9pfyA7Ns76t-v3zkIThgOHhkbb
858
858
  nuitka/tools/specialize/SpecializeC.py,sha256=QW217C0KRsFs7foSBaqi6auO-tSkeDjR1jk5OFvw1rg,39747
859
859
  nuitka/tools/specialize/SpecializePython.py,sha256=KVQzBx7fpeWG_TtgVLgvLL1QOwRriee0X1kwlb4B-U4,37080
860
860
  nuitka/tools/specialize/__init__.py,sha256=TkW50aBd9haxBi-DXHM71oVA31d5oPeL06ZwuBSkPqo,865
861
- nuitka/tools/testing/Common.py,sha256=20yNu6Wo0VBstityRnyAlobPJGPKyPvxt7hhgtxlq_M,57406
861
+ nuitka/tools/testing/Common.py,sha256=a9y0ycQ_5I0vqRM1YVKDebSoVE_-CTh-5KjMDKWfl3I,57434
862
862
  nuitka/tools/testing/Constructs.py,sha256=zHyVi7g3Gn3kLKvZW_OGFrskf5OIvCf7nK1GX2sJXy4,1516
863
863
  nuitka/tools/testing/OutputComparison.py,sha256=WquPChaxgx1wyuP_9nB0v4_zH1QnEtZEb0k40f5s60k,10129
864
864
  nuitka/tools/testing/Pythons.py,sha256=ydchEs7aFNwYq9KT8ni1S3y55IRUSMqGOCriwkuacw4,1310
@@ -921,7 +921,7 @@ nuitka/utils/CommandLineOptions.py,sha256=eUc6cRetHxL07xppAn9MlWcSEUuEDyp6tJ3ihg
921
921
  nuitka/utils/Distributions.py,sha256=FLe2NgLElmU1Y2sUP6E3l0EjrKZ6KB3qahq6vFOXEVM,16874
922
922
  nuitka/utils/Download.py,sha256=yOTdRU2EvXgs6a149mHOhv2TL6gt38Ep2rb965zFfiE,6714
923
923
  nuitka/utils/Execution.py,sha256=qo1yojRME2Ilgntle5RMUZnR7CVptdEUNr7jXD2wBwc,13799
924
- nuitka/utils/FileOperations.py,sha256=XY5NSlpjqI27obnvJGoFFSfm22cSGfCdY8em4QACT9w,44354
924
+ nuitka/utils/FileOperations.py,sha256=o8mF747-GD8qggB9bnVyo7nwssRA3dbNmSiH-EJVZ2E,44662
925
925
  nuitka/utils/Hashing.py,sha256=vOFVzPNqAJw7NNZ1Hxe0rllnKO-HGwd6n5N3R_2WgQM,3753
926
926
  nuitka/utils/Images.py,sha256=HitRj3qvpRXs2hV3V20cavcc2YZZNiyo5KawtcUCMTs,2547
927
927
  nuitka/utils/Importing.py,sha256=rVJ7L35ShEwJy_Is-tnYwn11BvZbZTzrVFTehWV4WI4,10843
@@ -941,14 +941,14 @@ nuitka/utils/SlotMetaClasses.py,sha256=lVJokq-0XqDaNHTt9rfE_khZCQSi_BWMfDDwdwudw
941
941
  nuitka/utils/StaticLibraries.py,sha256=KPSm7zcFljGThkPpAykTfaeqIouBD8kexAKVR2gIiuM,6582
942
942
  nuitka/utils/ThreadedExecutor.py,sha256=MeByXD8Rn56zdFHta8gYfn7vAgvv13R1vYsJQUAhEGY,2634
943
943
  nuitka/utils/Timing.py,sha256=-2IKhHHg-zoW76ue71SuItJO3NUncDuZABdNO1pllIc,2816
944
- nuitka/utils/Utils.py,sha256=s5f5UsHqvtamf0wUqV3kT7x1-NySR72gH306MWSB3yk,13279
944
+ nuitka/utils/Utils.py,sha256=1hs6G2FtaupTt32O_a097coDmMtJvRkc1gcmncPQBMw,13677
945
945
  nuitka/utils/WindowsFileUsage.py,sha256=S6zm_4JQzaSyVmOoLdZDEq--SObR-CHofH4cvs__fsc,10642
946
946
  nuitka/utils/WindowsResources.py,sha256=npt3jbcTgh1M5G6jyEv6uFqiZIf84XEea3wXQ_sXGdM,19837
947
947
  nuitka/utils/Yaml.py,sha256=osd2K6G4XxSpzzTA-KzYoN8n2OF11zgB-4QxgJOig8M,7206
948
948
  nuitka/utils/__init__.py,sha256=TkW50aBd9haxBi-DXHM71oVA31d5oPeL06ZwuBSkPqo,865
949
- Nuitka_winsvc-2.4.7.dist-info/LICENSE.txt,sha256=ZWq74m8T3pVbRFjCBu74q_4GyW11rCqtYB_1vZ4rQ88,11348
950
- Nuitka_winsvc-2.4.7.dist-info/METADATA,sha256=WP0Foq6Iqh4wIJ_ygqrGnnXKzUa7FRIsGwuRHOeLb_s,4959
951
- Nuitka_winsvc-2.4.7.dist-info/WHEEL,sha256=dCuJ4f0faaLdEJehgDqauYbxfYcPtrcUnDoQw-il14k,101
952
- Nuitka_winsvc-2.4.7.dist-info/entry_points.txt,sha256=jeBnijqxZ4U0WpNEdtaogpNMNlv5jw8H7yMOsf2isFc,308
953
- Nuitka_winsvc-2.4.7.dist-info/top_level.txt,sha256=TRrfKxSYukbo1yzTGfwyH7wVzhDpKlwQsLjhIr15yqY,7
954
- Nuitka_winsvc-2.4.7.dist-info/RECORD,,
949
+ Nuitka_winsvc-2.4.10.dist-info/LICENSE.txt,sha256=ZWq74m8T3pVbRFjCBu74q_4GyW11rCqtYB_1vZ4rQ88,11348
950
+ Nuitka_winsvc-2.4.10.dist-info/METADATA,sha256=NhUy0x0khV3jNhfYkKp35hdZWaK3ukzVYH7Tj4WQtdM,4960
951
+ Nuitka_winsvc-2.4.10.dist-info/WHEEL,sha256=tE2EWZPEv-G0fjAlUUz7IGM64246YKD9fpv4HcsDMkk,101
952
+ Nuitka_winsvc-2.4.10.dist-info/entry_points.txt,sha256=jeBnijqxZ4U0WpNEdtaogpNMNlv5jw8H7yMOsf2isFc,308
953
+ Nuitka_winsvc-2.4.10.dist-info/top_level.txt,sha256=TRrfKxSYukbo1yzTGfwyH7wVzhDpKlwQsLjhIr15yqY,7
954
+ Nuitka_winsvc-2.4.10.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (72.2.0)
2
+ Generator: setuptools (75.2.0)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp311-cp311-win_amd64
5
5
 
nuitka/Options.py CHANGED
@@ -53,6 +53,7 @@ from nuitka.PythonVersions import (
53
53
  )
54
54
  from nuitka.utils.Execution import getExecutablePath
55
55
  from nuitka.utils.FileOperations import (
56
+ getNormalizedPath,
56
57
  isLegalPath,
57
58
  isPathExecutable,
58
59
  openTextFile,
@@ -121,7 +122,7 @@ def checkPathSpec(value, arg_name, allow_disable):
121
122
  )
122
123
 
123
124
  # This changes the '/' to '\' on Windows at least.
124
- value = os.path.normpath(value)
125
+ value = getNormalizedPath(value)
125
126
 
126
127
  if "\n" in value or "\r" in value:
127
128
  Tracing.options_logger.sysexit(
@@ -1571,7 +1572,7 @@ _shall_use_static_lib_python = None
1571
1572
 
1572
1573
 
1573
1574
  def _shallUseStaticLibPython():
1574
- # return driven, pylint: disable=too-many-return-statements
1575
+ # many cases and return driven, pylint: disable=too-many-branches,too-many-return-statements
1575
1576
 
1576
1577
  if shallMakeModule():
1577
1578
  return False, "not used in module mode"
@@ -1604,11 +1605,20 @@ def _shallUseStaticLibPython():
1604
1605
 
1605
1606
  # For Anaconda default to trying static lib python library, which
1606
1607
  # normally is just not available or if it is even unusable.
1607
- if isAnacondaPython() and not isWin32Windows():
1608
- return (
1609
- True,
1610
- "Nuitka on Anaconda needs package for static libpython installed. Execute 'conda install libpython-static'.",
1611
- )
1608
+ if isAnacondaPython():
1609
+ if isMacOS():
1610
+ # TODO: Maybe some linker options can make it happen.
1611
+ return (
1612
+ False,
1613
+ "Anaconda on macOS exports not all symbols when using it.",
1614
+ )
1615
+ elif not isWin32Windows():
1616
+ return (
1617
+ True,
1618
+ """\
1619
+ Nuitka on Anaconda needs package for static libpython installed. \
1620
+ Execute 'conda install libpython-static'.""",
1621
+ )
1612
1622
 
1613
1623
  if isPyenvPython():
1614
1624
  return True, "Nuitka on pyenv should not use '--enable-shared'."
nuitka/Version.py CHANGED
@@ -20,7 +20,7 @@
20
20
  """
21
21
 
22
22
  version_string = """\
23
- Nuitka V2.4.7
23
+ Nuitka V2.4.10
24
24
  Copyright (C) 2024 Kay Hayen."""
25
25
 
26
26
 
@@ -111,13 +111,13 @@ def _enableC11Settings(env):
111
111
 
112
112
  if c11_mode:
113
113
  if env.gcc_mode:
114
- env.Append(CCFLAGS=["-std=c11"])
114
+ env.Append(CFLAGS=["-std=c11"])
115
115
  elif env.msvc_mode:
116
- env.Append(CCFLAGS=["/std:c11"])
116
+ env.Append(CFLAGS=["/std:c11"])
117
117
 
118
118
  if env.msvc_mode and c11_mode:
119
119
  # Windows SDK shows this even in non-debug mode in C11 mode.
120
- env.Append(CCFLAGS=["/wd5105"])
120
+ env.Append(CCFLAGS=["/wd5105", "/wd4391"])
121
121
 
122
122
  if not c11_mode:
123
123
  env.Append(CPPDEFINES=["_NUITKA_NON_C11_MODE"])
@@ -139,7 +139,7 @@ static inline void Nuitka_Py_NewReference(PyObject *op) {
139
139
  #else
140
140
  op->ob_tid = _Py_ThreadId();
141
141
  op->_padding = 0;
142
- op->ob_mutex = (struct _PyMutex){0};
142
+ op->ob_mutex = (PyMutex){0};
143
143
  op->ob_gc_bits = 0;
144
144
  op->ob_ref_local = 1;
145
145
  op->ob_ref_shared = 0;
@@ -1161,7 +1161,7 @@ Nuitka_Function_CreateFunctionViaCodeIndex(PyObject *module, PyObject *function_
1161
1161
 
1162
1162
  PyCodeObject *code_object =
1163
1163
  MAKE_CODE_OBJECT(filename, line_int, flags_int, function_name, function_qualname, arg_names,
1164
- NULL, // freevars
1164
+ NULL, // free_vars
1165
1165
  arg_count_int, kw_only_count_int, pos_only_count_int);
1166
1166
  if (unlikely(code_object == NULL)) {
1167
1167
  return NULL;
@@ -125,7 +125,10 @@ static PyObject *Nuitka_Method_deepcopy(struct Nuitka_MethodObject *method, PyOb
125
125
  return NULL;
126
126
  }
127
127
 
128
- return Nuitka_Method_New(method->m_function, object, method->m_class);
128
+ PyObject *result = Nuitka_Method_New(method->m_function, object, method->m_class);
129
+ // Nuitka_Method_New took a reference to the object.
130
+ Py_DECREF(object);
131
+ return result;
129
132
  }
130
133
 
131
134
  static PyMethodDef Nuitka_Method_methods[] = {
@@ -673,11 +673,11 @@ void Nuitka_PyObject_GC_Link(PyObject *op) {
673
673
  gc->_gc_next = 0;
674
674
  gc->_gc_prev = 0;
675
675
 
676
- gcstate->young.count++;
677
- gcstate->heap_size++;
676
+ gcstate->generations[0].count++;
678
677
 
679
- if (gcstate->young.count > gcstate->young.threshold && gcstate->enabled && gcstate->young.threshold &&
680
- !_Py_atomic_load_int_relaxed(&gcstate->collecting) && !_PyErr_Occurred(tstate)) {
678
+ if (gcstate->generations[0].count > gcstate->generations[0].threshold && gcstate->enabled &&
679
+ gcstate->generations[0].threshold && !_Py_atomic_load_int_relaxed(&gcstate->collecting) &&
680
+ !_PyErr_Occurred(tstate)) {
681
681
  Nuitka_Py_ScheduleGC(tstate);
682
682
  }
683
683
  #endif
@@ -39,6 +39,7 @@ void _initSlotCompare(void) {
39
39
  PyDict_SetItem(kw_args, const_str_plain___init__, (PyObject *)Py_TYPE(Py_None));
40
40
 
41
41
  // Create the type.
42
+ CHECK_OBJECT(const_str_plain___cmp__);
42
43
  PyTypeObject *c = (PyTypeObject *)PyObject_CallFunctionObjArgs((PyObject *)&PyType_Type, const_str_plain___cmp__,
43
44
  pos_args, kw_args, NULL);
44
45
  Py_DECREF(pos_args);
@@ -774,7 +774,9 @@ static unsigned char const *_unpackBlobConstant(PyThreadState *tstate, PyObject
774
774
  PyObject *u = PyUnicode_FromStringAndSize((const char *)data, 1);
775
775
  data += 1;
776
776
 
777
- #if PYTHON_VERSION >= 0x300
777
+ #if PYTHON_VERSION >= 0x3c7
778
+ _PyUnicode_InternImmortal(tstate->interp, &u);
779
+ #elif PYTHON_VERSION >= 0x300
778
780
  PyUnicode_InternInPlace(&u);
779
781
  #else
780
782
  insertToDictCache(unicode_cache, &u);
@@ -828,7 +830,9 @@ static unsigned char const *_unpackBlobConstant(PyThreadState *tstate, PyObject
828
830
  #endif
829
831
  data += size + 1;
830
832
 
831
- #if PYTHON_VERSION >= 0x300
833
+ #if PYTHON_VERSION >= 0x3c7
834
+ _PyUnicode_InternImmortal(tstate->interp, &u);
835
+ #elif PYTHON_VERSION >= 0x300
832
836
  if (c == 'a') {
833
837
  PyUnicode_InternInPlace(&u);
834
838
  }
@@ -130,7 +130,7 @@ PyObject *MATCH_CLASS_ARGS(PyThreadState *tstate, PyObject *matched, PyObject *m
130
130
  if (unlikely(arg_value == NULL)) {
131
131
  DROP_ERROR_OCCURRED(tstate);
132
132
 
133
- Py_DECREF(match_args);
133
+ Py_XDECREF(match_args);
134
134
  Py_DECREF(result);
135
135
 
136
136
  Py_INCREF_IMMORTAL(Py_None);
@@ -1114,7 +1114,7 @@ static void changeStandardHandleTarget(FILE *std_handle, filename_char_t const *
1114
1114
  static void Nuitka_at_exit(void) { NUITKA_PRINT_TIMING("Nuitka_at_exit(): Called by C exit()"); }
1115
1115
  #endif
1116
1116
 
1117
- #if !defined(_NUITKA_DEPLOYMENT_MODE) && !defined(_NUITKA_NO_DEPLOYMENT_SEGFAILT)
1117
+ #if !defined(_NUITKA_DEPLOYMENT_MODE) && !defined(_NUITKA_NO_DEPLOYMENT_SEGFAULT)
1118
1118
  #include <signal.h>
1119
1119
  static void nuitka_segfault_handler(int sig) {
1120
1120
  puts("Nuitka: A segmentation fault has occurred. This is highly unusual and can");
@@ -1132,6 +1132,11 @@ extern wchar_t const *getBinaryFilenameWideChars(bool resolve_symlinks);
1132
1132
  extern char const *getBinaryFilenameHostEncoded(bool resolve_symlinks);
1133
1133
  #endif
1134
1134
 
1135
+ // No longer in header files, but still usable.
1136
+ #if PYTHON_VERSION >= 0x3d0
1137
+ PyAPI_FUNC(void) PySys_AddWarnOption(const wchar_t *s);
1138
+ #endif
1139
+
1135
1140
  #ifdef _NUITKA_WINMAIN_ENTRY_POINT
1136
1141
  int __stdcall wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, wchar_t *lpCmdLine, int nCmdShow) {
1137
1142
  /* MSVC, MINGW64 */
@@ -1146,7 +1151,7 @@ int main(int argc, char **argv) {
1146
1151
  #endif
1147
1152
 
1148
1153
  // Installer a segfault handler that outputs a helpful message.
1149
- #if !defined(_NUITKA_DEPLOYMENT_MODE) && !defined(_NUITKA_NO_DEPLOYMENT_SEGFAILT)
1154
+ #if !defined(_NUITKA_DEPLOYMENT_MODE) && !defined(_NUITKA_NO_DEPLOYMENT_SEGFAULT)
1150
1155
  signal(SIGSEGV, nuitka_segfault_handler);
1151
1156
  #endif
1152
1157
 
@@ -1156,8 +1156,6 @@ int main(int argc, char **argv) {
1156
1156
  static filename_char_t first_filename[1024] = {0};
1157
1157
 
1158
1158
  #if _NUITKA_ONEFILE_SPLASH_SCREEN
1159
- NUITKA_PRINT_TIMING("ONEFILE: Splash screen.");
1160
-
1161
1159
  initSplashScreen();
1162
1160
  #endif
1163
1161
 
@@ -2,16 +2,22 @@
2
2
 
3
3
  // Creates a stream object initialized with the data from an executable resource.
4
4
 
5
- #ifdef __MINGW32__
6
- #error "No support for splash screens with MinGW64 yet, only works with MSVC. Somebody please make it portable."
7
- #endif
8
-
9
5
  #include <shlwapi.h>
10
6
  #include <wincodec.h>
11
7
  #include <windows.h>
12
8
 
13
9
  #include <assert.h>
14
10
 
11
+ // Some handy macro definitions, e.g. unlikely and NUITKA_MAY_BE_UNUSED
12
+ #include "nuitka/hedley.h"
13
+ #define likely(x) HEDLEY_LIKELY(x)
14
+ #define unlikely(x) HEDLEY_UNLIKELY(x)
15
+ #ifdef __GNUC__
16
+ #define NUITKA_MAY_BE_UNUSED __attribute__((__unused__))
17
+ #else
18
+ #define NUITKA_MAY_BE_UNUSED
19
+ #endif
20
+
15
21
  #ifndef _NUITKA_NON_C11_MODE
16
22
  extern "C" {
17
23
  #endif
@@ -138,6 +144,7 @@ HWND createSplashWindow(HBITMAP splash_bitmap) {
138
144
 
139
145
  HWND splash_window = CreateWindowExA(WS_EX_LAYERED, wc.lpszClassName, NULL,
140
146
  WS_POPUP | WS_VISIBLE | WS_EX_TOOLWINDOW, 0, 0, 0, 0, 0, NULL, 0, NULL);
147
+ assert(splash_window != NULL);
141
148
 
142
149
  // get the size of the bitmap
143
150
 
@@ -145,6 +152,8 @@ HWND createSplashWindow(HBITMAP splash_bitmap) {
145
152
  GetObject(splash_bitmap, sizeof(bitmap), &bitmap);
146
153
  SIZE sizeSplash = {bitmap.bmWidth, bitmap.bmHeight};
147
154
 
155
+ // Monitor selection and dimensions.
156
+ // spell-checker: ignore HMONITOR,MONITORINFO,MONITOR_DEFAULTTOPRIMARY
148
157
  POINT zero = {0};
149
158
  HMONITOR handle_monitor = MonitorFromPoint(zero, MONITOR_DEFAULTTOPRIMARY);
150
159
  MONITORINFO monitorinfo = {0};
@@ -156,12 +165,17 @@ HWND createSplashWindow(HBITMAP splash_bitmap) {
156
165
  ptOrigin.x = monitorinfo.rcWork.left + (monitorinfo.rcWork.right - monitorinfo.rcWork.left - sizeSplash.cx) / 2;
157
166
  ptOrigin.y = monitorinfo.rcWork.top + (monitorinfo.rcWork.bottom - monitorinfo.rcWork.top - sizeSplash.cy) / 2;
158
167
 
168
+ #if _NUITKA_TRACE
169
+ printf("Onefile: Splash screen origin %d %d for sizes %d %d\n", ptOrigin.x, ptOrigin.y, sizeSplash.cx,
170
+ sizeSplash.cy);
171
+ #endif
159
172
  // Create a DC with splash bitmap
160
173
  HDC handle_screen = GetDC(NULL);
161
174
  HDC handle_memory = CreateCompatibleDC(handle_screen);
162
175
  HBITMAP handle_old_bitmap = (HBITMAP)SelectObject(handle_memory, splash_bitmap);
163
176
 
164
177
  // Set image alpha channel for blending.
178
+ // spell-checker: ignore BLENDFUNCTION
165
179
  BLENDFUNCTION blend = {0};
166
180
  blend.BlendOp = AC_SRC_OVER;
167
181
  blend.SourceConstantAlpha = 255;
@@ -183,28 +197,35 @@ static wchar_t splash_indicator_path[4096] = {0};
183
197
  bool splash_active = false;
184
198
 
185
199
  extern "C" void initSplashScreen(void) {
200
+ NUITKA_PRINT_TIMING("ONEFILE: Initialize splash screen.");
201
+
186
202
  CoInitialize(NULL);
187
203
  IStream *image_stream = createImageStream();
188
- if (image_stream == NULL) {
204
+ if (unlikely(image_stream == NULL)) {
205
+ NUITKA_PRINT_TIMING("ONEFILE: Failed to create image stream.");
189
206
  return;
190
207
  }
191
208
  IWICBitmapSource *image_source = getBitmapFromImageStream(image_stream);
192
209
  image_stream->Release();
193
- if (image_source == NULL) {
210
+ if (unlikely(image_source == NULL)) {
211
+ NUITKA_PRINT_TIMING("ONEFILE: Failed to get image source from stream.");
194
212
  return;
195
213
  }
196
214
  HBITMAP splash_bitmap = CreateHBITMAP(image_source);
197
215
  image_source->Release();
198
- if (splash_bitmap == NULL) {
216
+ if (unlikely(splash_bitmap == NULL)) {
217
+ NUITKA_PRINT_TIMING("ONEFILE: Failed to get bitmap.");
199
218
  return;
200
219
  }
201
220
 
202
221
  splash_window = createSplashWindow(splash_bitmap);
203
222
 
223
+ // TODO: This probably should be user provided.
204
224
  wchar_t const *pattern = L"{TEMP}\\onefile_{PID}_splash_feedback.tmp";
205
225
  BOOL bool_res =
206
226
  expandTemplatePathW(splash_indicator_path, pattern, sizeof(splash_indicator_path) / sizeof(wchar_t));
207
- if (bool_res == false) {
227
+ if (unlikely(bool_res == false)) {
228
+ NUITKA_PRINT_TIMING("Failed expand indicator path.");
208
229
  return;
209
230
  }
210
231
 
@@ -218,6 +239,8 @@ extern "C" void initSplashScreen(void) {
218
239
  }
219
240
 
220
241
  static void closeSplashScreen(void) {
242
+ NUITKA_PRINT_TIMING("ONEFILE: Check splash screen indicator file.");
243
+
221
244
  if (splash_window) {
222
245
  DestroyWindow(splash_window);
223
246
  splash_window = 0;
@@ -226,6 +249,8 @@ static void closeSplashScreen(void) {
226
249
 
227
250
  extern "C" bool checkSplashScreen(void) {
228
251
  if (splash_active) {
252
+ NUITKA_PRINT_TIMING("ONEFILE: Check splash screen indicator file.");
253
+
229
254
  if (!PathFileExistsW(splash_indicator_path)) {
230
255
  closeSplashScreen();
231
256
  splash_active = false;
@@ -9,6 +9,7 @@ We use depends.exe to investigate needed DLLs of Python DLLs.
9
9
 
10
10
  import os
11
11
 
12
+ from nuitka.__past__ import WindowsError
12
13
  from nuitka.containers.OrderedSets import OrderedSet
13
14
  from nuitka.Options import assumeYesForDownloads
14
15
  from nuitka.Tracing import inclusion_logger
@@ -132,7 +133,13 @@ def _parseDependsExeOutput2(lines):
132
133
  continue
133
134
 
134
135
  dll_filename = os.path.abspath(dll_filename)
135
- dll_filename = getWindowsLongPathName(dll_filename)
136
+
137
+ # Ignore errors trying to resolve the filename. Sometimes Chinese
138
+ # directory paths do not resolve to long filenames.
139
+ try:
140
+ dll_filename = getWindowsLongPathName(dll_filename)
141
+ except WindowsError:
142
+ pass
136
143
 
137
144
  dll_name = os.path.basename(dll_filename)
138
145
 
@@ -16,6 +16,7 @@ from nuitka.PythonVersions import python_version
16
16
  from nuitka.Tracing import inclusion_logger
17
17
  from nuitka.utils.FileOperations import (
18
18
  areSamePaths,
19
+ changeFilenameExtension,
19
20
  getReportPath,
20
21
  isFilenameBelowPath,
21
22
  )
@@ -144,6 +145,9 @@ def _getNonVersionedDllFilenames2(filename):
144
145
  if getArchitecture() == "arm64":
145
146
  yield match.group(1) + "_arm64.dylib"
146
147
 
148
+ if filename.endswith(".so"):
149
+ yield changeFilenameExtension(filename, ".dylib")
150
+
147
151
 
148
152
  def _getNonVersionedDllFilenames(dll_filename, package_name):
149
153
  for filename in _getNonVersionedDllFilenames2(dll_filename):
@@ -257,30 +261,39 @@ def _resolveBinaryPathDLLsMacOS(
257
261
  break
258
262
 
259
263
  # Sometimes self-dependencies are on a numbered version, but deployed is
260
- # one version without it. The macOS just ignores that, and so we do.
264
+ # one version without it. Also be tolerant about changing suffixes
265
+ # internally. The macOS just ignores that, and so we do.
261
266
  if not os.path.exists(resolved_path):
262
267
  if os.path.basename(resolved_path) == os.path.basename(binary_filename):
263
268
  resolved_path = binary_filename
264
269
  else:
265
- match = re.match(r"^(.*?)(\.\d+)+\.dylib$", resolved_path)
270
+ for suffix1, suffix2 in (
271
+ (".dylib", ".dylib"),
272
+ (".so", ".so"),
273
+ (".dylib", ".so"),
274
+ (".so", ".dylib"),
275
+ ):
276
+ pattern = r"^(.*?)(\.\d+)*%s$" % re.escape(suffix1)
266
277
 
267
- if match:
268
- candidate = match.group(1) + ".dylib"
278
+ match = re.match(pattern, resolved_path)
269
279
 
270
- if os.path.exists(candidate):
271
- resolved_path = candidate
272
- else:
273
- candidate = os.path.join(
274
- original_dir, os.path.basename(candidate)
275
- )
280
+ if match:
281
+ candidate = match.group(1) + suffix2
276
282
 
277
283
  if os.path.exists(candidate):
278
284
  resolved_path = candidate
279
- elif os.path.basename(candidate) == os.path.basename(
280
- binary_filename
281
- ):
282
- # Versioned dependency on itself in non-existent path.
283
- resolved_path = binary_filename
285
+ else:
286
+ candidate = os.path.join(
287
+ original_dir, os.path.basename(candidate)
288
+ )
289
+
290
+ if os.path.exists(candidate):
291
+ resolved_path = candidate
292
+ elif os.path.basename(candidate) == os.path.basename(
293
+ binary_filename
294
+ ):
295
+ # Versioned dependency on itself in non-existent path.
296
+ resolved_path = binary_filename
284
297
 
285
298
  if not os.path.exists(resolved_path):
286
299
  acceptable, plugin_name = Plugins.isAcceptableMissingDLL(
@@ -35,6 +35,7 @@ from nuitka.utils.FileOperations import (
35
35
  getFileList,
36
36
  getFilenameExtension,
37
37
  getFileSize,
38
+ getNormalizedPath,
38
39
  isFilenameBelowPath,
39
40
  isLegalPath,
40
41
  isRelativePath,
@@ -98,9 +99,9 @@ class IncludedDataFile(object):
98
99
 
99
100
  self.kind = kind
100
101
  self.source_path = source_path
101
- self.dest_path = os.path.normpath(dest_path)
102
+ self.dest_path = getNormalizedPath(dest_path)
102
103
 
103
- is_legal, illegal_reason = isLegalPath(dest_path)
104
+ is_legal, illegal_reason = isLegalPath(self.dest_path)
104
105
  if not is_legal:
105
106
  general.sysexit(
106
107
  "Error, cannot add data file with '%s' path, as '%s'"
@@ -32,6 +32,7 @@ from nuitka.PythonFlavors import (
32
32
  getHomebrewInstallPath,
33
33
  isAnacondaPython,
34
34
  isHomebrewPython,
35
+ isMSYS2MingwPython,
35
36
  )
36
37
  from nuitka.PythonVersions import getSystemPrefixPath
37
38
  from nuitka.Tracing import general, inclusion_logger
@@ -236,6 +237,9 @@ def _reduceToPythonPath(used_dlls):
236
237
  if isHomebrewPython():
237
238
  inside_paths.insert(0, getHomebrewInstallPath())
238
239
 
240
+ if isMSYS2MingwPython():
241
+ inside_paths.insert(0, os.path.join(getSystemPrefixPath(), "bin"))
242
+
239
243
  def decideInside(dll_filename):
240
244
  return any(
241
245
  isFilenameBelowPath(path=inside_path, filename=dll_filename)
@@ -165,6 +165,10 @@ def resolveModuleName(module_name):
165
165
  return module_name.relocateModuleNamespace(
166
166
  "importlib_resources", "importlib.resources"
167
167
  )
168
+ elif module_name.hasNamespace("tensorflow.keras"):
169
+ return module_name.relocateModuleNamespace(
170
+ "tensorflow.keras", "keras._tf_keras.keras"
171
+ )
168
172
  else:
169
173
  return module_name
170
174
 
@@ -173,14 +173,17 @@
173
173
  - depends:
174
174
  - 'apt_pkg'
175
175
 
176
- - module-name: 'arcade' # checksum: 7cb50c0c
176
+ - module-name: 'arcade' # checksum: d7d0718b
177
177
  data-files:
178
178
  - dirs:
179
179
  - 'resources/system'
180
+ - patterns:
181
+ - 'VERSION'
180
182
  anti-bloat:
181
183
  - no-auto-follow:
182
- 'examples': 'Arcade examples are not be available unless you do "--include-module=acade.examples"'
183
- 'experimental': 'Experimental features of Arcade will not be available unless you do "--include-module=acade.experimental"'
184
+ 'examples': 'Arcade examples are not available unless you do "--include-module=arcade.examples"'
185
+ 'experimental': 'Experimental features of Arcade will not be available unless you do "--include-module=arcade.experimental"'
186
+ 'future': 'Upcoming features of Arcade will not be available unless you do "--include-module=arcade.future"'
184
187
 
185
188
  - module-name: 'aspose' # checksum: 1ffc48f1
186
189
  data-files:
@@ -1118,18 +1121,18 @@
1118
1121
  - dirs:
1119
1122
  - 'locale/en'
1120
1123
 
1121
- - module-name: 'django.core.management' # checksum: 261e0447
1124
+ - module-name: 'django.core.management' # checksum: 18979466
1122
1125
  parameters:
1123
1126
  - 'name': 'settings-module'
1124
1127
  'values': 'checkModuleName(value)'
1125
1128
  variables:
1126
1129
  setup_code:
1127
1130
  - 'import os, importlib'
1128
- - 'settings = importlib.import_module(os.getenv("PARAMETER_SETTINGS_MODULE"))'
1131
+ - 'settings = importlib.import_module(os.getenv("PARAMETER_SETTINGS_MODULE")) if os.getenv("PARAMETER_SETTINGS_MODULE") else None'
1129
1132
  declarations:
1130
- 'django_installed_apps': 'settings.INSTALLED_APPS'
1133
+ 'django_installed_apps': 'settings.INSTALLED_APPS if settings else ()'
1131
1134
  environment:
1132
- 'PARAMETER_SETTINGS_MODULE': 'get_parameter("settings-module", None)'
1135
+ 'PARAMETER_SETTINGS_MODULE': 'get_parameter("settings-module", "")'
1133
1136
  anti-bloat:
1134
1137
  # This makes exceptions to the "*" dependency in the
1135
1138
  # implicit-imports section below.
@@ -1178,6 +1181,12 @@
1178
1181
  - depends:
1179
1182
  - 'django.template.loader_tags'
1180
1183
 
1184
+ - module-name: 'django.views.debug' # checksum: 466f47d3
1185
+ anti-bloat:
1186
+ - description: 'workaround columns not available from compiled frame execution'
1187
+ replacements_plain:
1188
+ 'if PY311:': 'if False:'
1189
+
1181
1190
  - module-name: 'dns.rdtypes' # checksum: 119feab4
1182
1191
  implicit-imports:
1183
1192
  - depends:
@@ -2072,10 +2081,11 @@
2072
2081
  - depends:
2073
2082
  - 'keyring.backends.*'
2074
2083
 
2075
- - module-name: 'keyring.backends.Windows' # checksum: 2531fce0
2084
+ - module-name: 'keyring.backends.Windows' # checksum: a414afda
2076
2085
  implicit-imports:
2077
2086
  - depends:
2078
2087
  - 'win32timezone'
2088
+ - 'win32ctypes.core.ctypes.*'
2079
2089
 
2080
2090
  - module-name: 'kivy' # checksum: 648dc799
2081
2091
  data-files:
@@ -3699,6 +3709,12 @@
3699
3709
  - description: 'workaround __new__ decorator issue'
3700
3710
  append_plain: 'SharedRegistryObject.__new__ = staticmethod(SharedRegistryObject.__new__)'
3701
3711
 
3712
+ - module-name: 'pip._vendor' # checksum: 49920604
3713
+ anti-bloat:
3714
+ - description: 'allow pydoc inside pip vendored modules'
3715
+ no-auto-follow:
3716
+ 'pydoc': 'ignore'
3717
+
3702
3718
  - module-name: 'pip._vendor.rich.jupyter' # checksum: b346e77
3703
3719
  # See rich.jupyter
3704
3720
  anti-bloat:
@@ -3850,6 +3866,11 @@
3850
3866
  - 'plyer.platforms.android.*'
3851
3867
  when: 'android'
3852
3868
 
3869
+ - module-name: 'polars' # checksum: d072aa03
3870
+ implicit-imports:
3871
+ - depends:
3872
+ - 'numpy.core.multiarray'
3873
+
3853
3874
  - module-name: 'polars.lazyframe.frame' # checksum: e9afa6bc
3854
3875
  anti-bloat:
3855
3876
  - description: 'remove IPython reference'
@@ -4047,10 +4068,20 @@
4047
4068
  - dirs:
4048
4069
  - '.'
4049
4070
 
4050
- - module-name: 'pygame' # checksum: 8c9db0be
4071
+ - module-name: 'pygame' # checksum: face0a9
4051
4072
  data-files:
4052
4073
  - patterns:
4053
4074
  - 'freesansbold.ttf'
4075
+ - patterns:
4076
+ - 'pygame_icon_mac.bmp'
4077
+ when: 'macos'
4078
+ - patterns:
4079
+ - 'pygame_icon.bmp'
4080
+ when: 'not macos'
4081
+
4082
+ implicit-imports:
4083
+ - depends:
4084
+ - 'pygame.*'
4054
4085
 
4055
4086
  options:
4056
4087
  checks:
@@ -4395,7 +4426,7 @@
4395
4426
  - find-dlls-near-module:
4396
4427
  - 'shiboken2'
4397
4428
 
4398
- - module-name: 'PySide6' # checksum: a87b6b1
4429
+ - module-name: 'PySide6' # checksum: 219aba79
4399
4430
  implicit-imports:
4400
4431
  - post-import-code:
4401
4432
  - |
@@ -4448,6 +4479,9 @@
4448
4479
  - 'libquick3dspatialaudioplugin'
4449
4480
  - 'libqtvkbcomponentsplugin'
4450
4481
  - 'libqtvkbsettingsplugin'
4482
+ - 'libqsqlodbc'
4483
+ - 'libpq.5'
4484
+ - 'libffmpegmediaplugin'
4451
4485
 
4452
4486
  - module-name: 'PySide6.QtCore' # checksum: be0d99ac
4453
4487
  implicit-imports:
@@ -6296,7 +6330,7 @@
6296
6330
  'notebook': "'(lambda: None)'"
6297
6331
  when: 'not use_ipython'
6298
6332
 
6299
- - module-name: 'tensorflow' # checksum: 13d6e6a5
6333
+ - module-name: 'tensorflow' # checksum: 7bd997cd
6300
6334
  dlls:
6301
6335
  - from_filenames:
6302
6336
  relative_path: 'core/platform'
@@ -6317,6 +6351,8 @@
6317
6351
  'from tensorflow._api.v1 import test': 'test = None'
6318
6352
  'from ._api.v2 import test': 'test = None'
6319
6353
  'from tensorflow._api.v2 import test': 'test = None'
6354
+ replacements:
6355
+ '_os.environ.get("TF_USE_LEGACY_KERAS", None)': 'repr(os.getenv("TF_USE_LEGACY_KERAS", None))'
6320
6356
  append_plain: |
6321
6357
  import sys
6322
6358
  sys.modules["tensorflow.compat"] = compat
@@ -6336,13 +6372,21 @@
6336
6372
  - depends:
6337
6373
  - 'tensorboard'
6338
6374
  - 'tensorflow_estimator'
6375
+ - depends:
6339
6376
  - 'keras.api._v2.keras'
6377
+ when: 'version("keras") < (3,)'
6378
+ - depends:
6379
+ - 'keras._tf_keras.keras'
6380
+ when: 'version("keras") >= (3,)'
6340
6381
 
6341
6382
  options:
6342
6383
  checks:
6343
6384
  - description: "'tensorflow' is not fully supported before version 2.16"
6344
6385
  support_info: 'warning'
6345
6386
  when: 'version("tensorflow") < (2,16)'
6387
+ - description: "'tensorflow' is not fully supported with legacy keras"
6388
+ support_info: 'warning'
6389
+ when: 'os.getenv("TF_USE_LEGACY_KERAS", None) is not None'
6346
6390
 
6347
6391
  - module-name: 'tensorflow._api.v1.compat.v1' # checksum: 3e84bd8b
6348
6392
  anti-bloat:
@@ -6737,13 +6781,13 @@
6737
6781
  change_function:
6738
6782
  '_copy_fn': "'(lambda fn: fn)'"
6739
6783
 
6740
- - module-name: 'tensorflow.python.util.lazy_loader' # checksum: f4d18284
6784
+ - module-name: 'tensorflow.python.util.lazy_loader' # checksum: b554bf0
6741
6785
  anti-bloat:
6742
6786
  - description: 'reduce keras usage'
6743
6787
  replacements_re:
6744
6788
  '(package_name = "(.*?)")': '\1; import \2'
6745
6789
  replacements:
6746
- 'os.environ.get("TF_USE_LEGACY_KERAS", None)': 'repr(os.environ.get("TF_USE_LEGACY_KERAS", None))'
6790
+ 'os.environ.get("TF_USE_LEGACY_KERAS", None)': 'repr(os.getenv("TF_USE_LEGACY_KERAS", None))'
6747
6791
  'keras.__version__': 'repr(version_str("keras"))'
6748
6792
 
6749
6793
  - module-name: 'tensorflow.python.util.tf_inspect' # checksum: 8e3a3cbf
@@ -6874,6 +6918,16 @@
6874
6918
  - depends:
6875
6919
  - 'tiktoken_ext.*'
6876
6920
 
6921
+ - module-name: 'time_machine' # checksum: b038bd8
6922
+ anti-bloat:
6923
+ - description: 'remove pytest reference'
6924
+ no-auto-follow:
6925
+ 'pytest': 'ignore'
6926
+ when: 'not use_pytest'
6927
+ - description: 'allow unittest'
6928
+ bloat-mode-overrides:
6929
+ 'unittest': 'allow'
6930
+
6877
6931
  - module-name: 'timm.models.hrnet' # checksum: fdbe0e63
6878
6932
  anti-bloat:
6879
6933
  - replacements_plain:
@@ -6971,7 +7025,7 @@
6971
7025
  - include-metadata:
6972
7026
  - 'toga-gtk'
6973
7027
 
6974
- - module-name: 'toga_winforms' # checksum: 378cf0f6
7028
+ - module-name: 'toga_winforms' # checksum: 618ee1e0
6975
7029
  data-files:
6976
7030
  - dirs:
6977
7031
  - 'resources'
@@ -6979,16 +7033,31 @@
6979
7033
  - 'toga-winforms'
6980
7034
  dlls:
6981
7035
  - from_filenames:
7036
+ relative_path: 'libs/WebView2/runtimes/win-arm64/native'
7037
+ prefixes:
7038
+ - 'WebView2Loader'
7039
+ when: 'win32 and arch_arm64'
7040
+ - from_filenames: # older toga_winforms only
6982
7041
  relative_path: 'libs/WebView2/arm64'
6983
7042
  prefixes:
6984
7043
  - 'WebView2Loader'
6985
7044
  when: 'win32 and arch_arm64'
6986
7045
  - from_filenames:
7046
+ relative_path: 'libs/WebView2/runtimes/win-x86/native'
7047
+ prefixes:
7048
+ - 'WebView2Loader'
7049
+ when: 'win32 and arch_x86'
7050
+ - from_filenames: # older toga_winforms only
6987
7051
  relative_path: 'libs/WebView2/x86'
6988
7052
  prefixes:
6989
7053
  - 'WebView2Loader'
6990
7054
  when: 'win32 and arch_x86'
6991
7055
  - from_filenames:
7056
+ relative_path: 'libs/WebView2/runtimes/win-x64/native'
7057
+ prefixes:
7058
+ - 'WebView2Loader'
7059
+ when: 'win32 and arch_amd64'
7060
+ - from_filenames: # older toga_winforms only
6992
7061
  relative_path: 'libs/WebView2/x64'
6993
7062
  prefixes:
6994
7063
  - 'WebView2Loader'
@@ -7582,11 +7651,15 @@
7582
7651
  '"IPython" in sys.modules': 'False'
7583
7652
  when: 'not use_ipython'
7584
7653
 
7585
- - module-name: 'trio._core._run' # checksum: 44a998aa
7654
+ - module-name: 'trio._core._run' # checksum: 8aed5b01
7586
7655
  anti-bloat:
7587
7656
  - description: 'workaround for trio compatibility'
7588
7657
  replacements_plain:
7589
7658
  'coro.cr_frame.f_locals.setdefault(LOCALS_KEY_KI_PROTECTION_ENABLED, system_task)': ''
7659
+ - description: 'workaround for trio compatibility'
7660
+ replacements_plain:
7661
+ 'assert coro.cr_frame is not None, "Coroutine frame should exist"': ''
7662
+ when: 'version("trio") >= (0,26,1)'
7590
7663
 
7591
7664
  - module-name: 'tsdownsample._rust' # checksum: d072aa03
7592
7665
  implicit-imports:
nuitka/reports/Reports.py CHANGED
@@ -205,6 +205,9 @@ def _getReportInputData(aborted):
205
205
  os_name = getOS()
206
206
  arch_name = getArchitecture()
207
207
 
208
+ # Record system encoding, spell-checker: ignore getfilesystemencoding
209
+ filesystem_encoding = sys.getfilesystemencoding()
210
+
208
211
  if isWin32OrPosixWindows():
209
212
  os_release = str(getWindowsRelease())
210
213
  elif isLinux():
@@ -712,6 +715,7 @@ def writeCompilationReport(report_filename, report_input_data, diffable):
712
715
  os_name=report_input_data["os_name"],
713
716
  os_release=report_input_data["os_release"],
714
717
  arch_name=report_input_data["arch_name"],
718
+ filesystem_encoding=report_input_data["filesystem_encoding"],
715
719
  )
716
720
 
717
721
  search_path = getPackageSearchPath(None)
@@ -593,7 +593,7 @@ def snapObjRefCntMap(before):
593
593
  k = "str_overload_" + x.__class__.__name__ + str(x)
594
594
  elif type(x) is dict:
595
595
  if "__builtins__" in x:
596
- k = "<module dict %s>" % x["__name__"]
596
+ k = "<module dict %s>" % x.get("__name__", "<maybe not a module>")
597
597
  elif "__spec__" in x and "__name__" in x:
598
598
  k = "<module dict %s>" % x["__name__"]
599
599
  else:
@@ -101,8 +101,8 @@ def areSamePaths(path1, path2):
101
101
  if path1 == path2:
102
102
  return True
103
103
 
104
- path1 = os.path.abspath(os.path.normpath(path1))
105
- path2 = os.path.abspath(os.path.normpath(path2))
104
+ path1 = os.path.abspath(getNormalizedPath(path1))
105
+ path2 = os.path.abspath(getNormalizedPath(path2))
106
106
 
107
107
  if os.path.exists(path1) and os.path.exists(path2):
108
108
  path1 = getExternalUsePath(path1)
@@ -1533,6 +1533,18 @@ def getParentDirectories(path):
1533
1533
  yield path
1534
1534
 
1535
1535
 
1536
+ def getNormalizedPath(path):
1537
+ """Return normalized path that is also a native path, i.e. only legal characters.
1538
+
1539
+ Needed, because MSYS2 likes to keep "/" in normalized paths.
1540
+ """
1541
+ path = os.path.normpath(path)
1542
+ if isWin32Windows():
1543
+ path = path.replace("/", "\\")
1544
+
1545
+ return path
1546
+
1547
+
1536
1548
  # Part of "Nuitka", an optimizing Python compiler that is compatible and
1537
1549
  # integrates with CPython, but also works on its own.
1538
1550
  #
nuitka/utils/Utils.py CHANGED
@@ -128,6 +128,22 @@ def getWindowsRelease():
128
128
  if not isWin32OrPosixWindows():
129
129
  return None
130
130
 
131
+ if isPosixWindows():
132
+ from .FileOperations import getFileContents
133
+
134
+ build_number = int(
135
+ getFileContents("/proc/version").split(" ")[0].rsplit("-")[-1]
136
+ )
137
+
138
+ if build_number >= 21996:
139
+ return 11
140
+ elif build_number >= 10240:
141
+ return 10
142
+ elif build_number >= 9200:
143
+ return 8
144
+ else:
145
+ return 7
146
+
131
147
  class OsVersionInfoEx(ctypes.Structure):
132
148
  _fields_ = [
133
149
  ("dwOSVersionInfoSize", ctypes.c_ulong),