Nuitka-winsvc 2.4.8__cp311-cp311-win_amd64.whl → 2.4.11__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 (29) hide show
  1. {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.4.11.dist-info}/METADATA +1 -1
  2. {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.4.11.dist-info}/RECORD +29 -29
  3. {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.4.11.dist-info}/WHEEL +1 -1
  4. nuitka/OptionParsing.py +1 -1
  5. nuitka/Options.py +17 -7
  6. nuitka/Version.py +1 -1
  7. nuitka/build/SconsCaching.py +8 -2
  8. nuitka/build/SconsCompilerSettings.py +3 -3
  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/freezer/DependsExe.py +8 -1
  16. nuitka/freezer/IncludedDataFiles.py +4 -3
  17. nuitka/freezer/IncludedEntryPoints.py +3 -2
  18. nuitka/freezer/Standalone.py +4 -0
  19. nuitka/importing/Recursion.py +8 -0
  20. nuitka/plugins/standard/TkinterPlugin.py +0 -56
  21. nuitka/plugins/standard/standard.nuitka-package.config.yml +164 -11
  22. nuitka/tools/testing/Common.py +1 -1
  23. nuitka/utils/FileOperations.py +26 -17
  24. nuitka/utils/Utils.py +16 -0
  25. {Nuitka_winsvc-2.4.8.data → Nuitka_winsvc-2.4.11.data}/scripts/nuitka-run.cmd +0 -0
  26. {Nuitka_winsvc-2.4.8.data → Nuitka_winsvc-2.4.11.data}/scripts/nuitka.cmd +0 -0
  27. {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.4.11.dist-info}/LICENSE.txt +0 -0
  28. {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.4.11.dist-info}/entry_points.txt +0 -0
  29. {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.4.11.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.8
3
+ Version: 2.4.11
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.8.data/scripts/nuitka-run.cmd,sha256=ymcs9S9XtjCwZ7-oOj1gLisLaIj8uIxn-1mb0mTxWUI,924
2
- Nuitka_winsvc-2.4.8.data/scripts/nuitka.cmd,sha256=G-3yCOmURvmaYtciOLW4cMRGEcutzcsea4qDJqfezg0,1061
1
+ Nuitka_winsvc-2.4.11.data/scripts/nuitka-run.cmd,sha256=ymcs9S9XtjCwZ7-oOj1gLisLaIj8uIxn-1mb0mTxWUI,924
2
+ Nuitka_winsvc-2.4.11.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
@@ -9,8 +9,8 @@ nuitka/Errors.py,sha256=Yw8-RTf7SEel-0ddEQAcvM9MwF6Es-l1X9wOkPRuEQg,2570
9
9
  nuitka/HardImportRegistry.py,sha256=a6kBsQICBQdxcnrJ-dArbUtMlYFNvlA32MHyvgpnlJg,12050
10
10
  nuitka/MainControl.py,sha256=hZ3_6zYI01j_xIUMONklCMxhnZR6ahJk7JaR_SWbibY,39044
11
11
  nuitka/ModuleRegistry.py,sha256=z1kdwF6DABgfu06I_KjoUmNHOx4PYd0rQpUwNYp92Fk,9122
12
- nuitka/OptionParsing.py,sha256=9vQP7BQbw9S30CWfg4ruqTi5hYu0KYV6IlCU2DfAIfc,65672
13
- nuitka/Options.py,sha256=0ACts_2GAAswzlvH-zr8vOSsuT9G9B_dpMAMBVK-Loo,81508
12
+ nuitka/OptionParsing.py,sha256=UFzLADkrM-38ZP0eKHXW2zIe-ai6M3lhlFoGds21SrI,65673
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=XS8EKSxAmykoVYDdKyImt4wxbanAtiWLGRU69kbnLU0,2466
25
+ nuitka/Version.py,sha256=j3ZHbxNiw8TwSricI--IjOmKcUZOwacI2cughKYQbWQ,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
@@ -30,8 +30,8 @@ nuitka/build/Backend.scons,sha256=C7gVOIVLJygXlBVmjlF4maF9l_PPk8bUI1TKu9ECmpo,36
30
30
  nuitka/build/CCompilerVersion.scons,sha256=Rs68LndV5ItFvA6W1_aEE9fXumAMXjUfP35kE1ma6Gg,8562
31
31
  nuitka/build/DataComposerInterface.py,sha256=xWrgCLG6PXoZsFjuTxc0f4XCSu80CDwYXmLJevp9VTw,3486
32
32
  nuitka/build/Onefile.scons,sha256=bGIq7NAR81aB_Rhnwn7vdMgjFF0E6BggGoUyf8TAOXY,17908
33
- nuitka/build/SconsCaching.py,sha256=XfPJxt2K1SqKwR_docnXw3pWijcoQZW02Xk-o0BBfJQ,15449
34
- nuitka/build/SconsCompilerSettings.py,sha256=MoqUX4mRU4RYczvaXPn-BO6smONmvE4Wt0DNPdi-gEY,36456
33
+ nuitka/build/SconsCaching.py,sha256=p6FLuSnDIiYz9Ttnx8qsDcYpKM2tcCzHKSUX3cXQUGk,15850
34
+ nuitka/build/SconsCompilerSettings.py,sha256=-799ddhRZVErefMcPNLNGlX6oIWfTA8RGD--n5cde84,36468
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
@@ -423,8 +423,8 @@ nuitka/build/static_src/CompiledFrameType.c,sha256=RntldgQBSFRCU6FdXGATPL4B_AJ8M
423
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,7 +505,7 @@ 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
@@ -647,23 +647,23 @@ 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
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
657
- nuitka/freezer/IncludedEntryPoints.py,sha256=GRlGRaKHSOalp7tuWEgd8dC-Iaay8GpEI90phCd1Gww,12137
656
+ nuitka/freezer/IncludedDataFiles.py,sha256=EwZpwn9qX1gCnyjt9KmnO8vMLSffbdufj12_He8kMiA,19801
657
+ nuitka/freezer/IncludedEntryPoints.py,sha256=6BtJZt-olpVCtw9Jdg1mu2-UsfZcqWgrCSbr5UWxa3I,12162
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
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
- nuitka/importing/Recursion.py,sha256=Bo4UF1JhMCanuNPOOjG4gZgoTMake4OVt8Fp2GxuvDI,18935
666
+ nuitka/importing/Recursion.py,sha256=z7bJlbNAK1D356l9uUbB05md6Ix6H-zACjfj8Qdpl54,19317
667
667
  nuitka/importing/StandardLibrary.py,sha256=HIZLeSUf1dc-5_KTbOUIGV7Ms0H-r1Kicswnqb4DWGA,12918
668
668
  nuitka/importing/__init__.py,sha256=TkW50aBd9haxBi-DXHM71oVA31d5oPeL06ZwuBSkPqo,865
669
669
  nuitka/nodes/AsyncgenNodes.py,sha256=GxcHEzw4Gl3-3pashdjPnvnlE9hY23iN0wrFQv3tcwk,3670
@@ -803,13 +803,13 @@ nuitka/plugins/standard/PySidePyQtPlugin.py,sha256=3b56_0QLA_QHZngfzbdHX0DwqhTHA
803
803
  nuitka/plugins/standard/PywebViewPlugin.py,sha256=CjFFrY0OxYGd845S7xA6Imy46Jk21SZlnwO0NBJKFVQ,3020
804
804
  nuitka/plugins/standard/SpacyPlugin.py,sha256=aVek-cDsAMX__qVrJpCsx-zdc1-MSf5TJWfJ0G9ZLFw,5173
805
805
  nuitka/plugins/standard/TensorflowPlugin.py,sha256=MPcLVye9_gDiU_lWnhNdYIeKkUGjYzjCjc5UV_XNP3E,1194
806
- nuitka/plugins/standard/TkinterPlugin.py,sha256=sHbZEAG0c4l8hOzWyTxe1FO5A6k8ITppc3eDD9nVXww,13878
806
+ nuitka/plugins/standard/TkinterPlugin.py,sha256=b0CO1HOilWOmgMLGs72IRmN51DEP9shoOQpRfupv0M4,11939
807
807
  nuitka/plugins/standard/TorchPlugin.py,sha256=oFyDyz5qfWwRl6JUS-7WAReDF4TazgQQH52xq2J7zj8,1174
808
808
  nuitka/plugins/standard/TransformersPlugin.py,sha256=6Ex9lNg5OupnXhFPKq5ozDOikIbE8GhlH5LUxTKfULg,12838
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=d8mSIZ2BnxP69GeWJrrVgDRKe59Xdk_kWjt-4aft6uQ,255360
812
+ nuitka/plugins/standard/standard.nuitka-package.config.yml,sha256=H7cWvy2bZGkf_rCmnQq6lTkKD6XS7Auv4t_9cxLQql0,260634
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
@@ -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=zERUXBHv4kQW04Zxz9nOLOiSmdeonbp57RntLkZFIBE,44602
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.8.dist-info/LICENSE.txt,sha256=ZWq74m8T3pVbRFjCBu74q_4GyW11rCqtYB_1vZ4rQ88,11348
950
- Nuitka_winsvc-2.4.8.dist-info/METADATA,sha256=PZ8JI3vSZA5Xw0ATlsngFTA30WnygCinVy0PexEls7Q,4959
951
- Nuitka_winsvc-2.4.8.dist-info/WHEEL,sha256=yNCBXpt7EYM4XWkQWwdIjv6aROYfg72vYtkZaa0M7Y4,101
952
- Nuitka_winsvc-2.4.8.dist-info/entry_points.txt,sha256=jeBnijqxZ4U0WpNEdtaogpNMNlv5jw8H7yMOsf2isFc,308
953
- Nuitka_winsvc-2.4.8.dist-info/top_level.txt,sha256=TRrfKxSYukbo1yzTGfwyH7wVzhDpKlwQsLjhIr15yqY,7
954
- Nuitka_winsvc-2.4.8.dist-info/RECORD,,
949
+ Nuitka_winsvc-2.4.11.dist-info/LICENSE.txt,sha256=ZWq74m8T3pVbRFjCBu74q_4GyW11rCqtYB_1vZ4rQ88,11348
950
+ Nuitka_winsvc-2.4.11.dist-info/METADATA,sha256=_ENO8MUsxNHB0fkUAbEkLgP4CN9kHxri4YzwjrPyt9M,4960
951
+ Nuitka_winsvc-2.4.11.dist-info/WHEEL,sha256=tE2EWZPEv-G0fjAlUUz7IGM64246YKD9fpv4HcsDMkk,101
952
+ Nuitka_winsvc-2.4.11.dist-info/entry_points.txt,sha256=jeBnijqxZ4U0WpNEdtaogpNMNlv5jw8H7yMOsf2isFc,308
953
+ Nuitka_winsvc-2.4.11.dist-info/top_level.txt,sha256=TRrfKxSYukbo1yzTGfwyH7wVzhDpKlwQsLjhIr15yqY,7
954
+ Nuitka_winsvc-2.4.11.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (74.0.0)
2
+ Generator: setuptools (75.2.0)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp311-cp311-win_amd64
5
5
 
nuitka/OptionParsing.py CHANGED
@@ -401,7 +401,7 @@ allowed forms. With '--include-data-files=/path/to/file/*.txt=folder_name/some.t
401
401
  will copy a single file and complain if it's multiple. With
402
402
  '--include-data-files=/path/to/files/*.txt=folder_name/' it will put
403
403
  all matching files into that folder. For recursive copy there is a
404
- form with 3 values that '--include-data-files=/path/to/scan=folder_name=**/*.txt'
404
+ form with 3 values that '--include-data-files=/path/to/scan=folder_name/=**/*.txt'
405
405
  that will preserve directory structure. Default empty.""",
406
406
  )
407
407
 
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.8
23
+ Nuitka V2.4.11
24
24
  Copyright (C) 2024 Kay Hayen."""
25
25
 
26
26
 
@@ -279,7 +279,11 @@ def _getCcacheStatistics(ccache_logfile):
279
279
  # can be matched against it.
280
280
  commands = {}
281
281
 
282
- for line in getFileContentByLine(ccache_logfile):
282
+ # Due to upstream issues, lines in the log might have different encodings.
283
+ # All command and result lines use the platform's default encoding,
284
+ # so we follow this to ensure these lines are correct.
285
+ # Unrecognized characters are replaced by byte values, e.g. "\xde\xad"
286
+ for line in getFileContentByLine(ccache_logfile, errors="backslashreplace"):
283
287
  match = re_command.match(line)
284
288
 
285
289
  if match:
@@ -313,7 +317,9 @@ def _getCcacheStatistics(ccache_logfile):
313
317
 
314
318
  all_text = []
315
319
 
316
- for line2 in getFileContentByLine(ccache_logfile):
320
+ for line2 in getFileContentByLine(
321
+ ccache_logfile, errors="backslashreplace"
322
+ ):
317
323
  match = re_anything.match(line2)
318
324
 
319
325
  if match:
@@ -379,9 +379,9 @@ For Python version %s MSVC %s or later is required, not %s which is too old."""
379
379
  % (compiler_path,)
380
380
  )
381
381
 
382
- # This also will trigger using it to use our own gcc in branch below.
383
- compiler_path = None
384
- env["CC"] = None
382
+ # This also will trigger using it to use our own gcc in branch below.
383
+ compiler_path = None
384
+ env["CC"] = None
385
385
 
386
386
  if compiler_path is None and msvc_version is None:
387
387
  scons_details_logger.info(
@@ -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
 
@@ -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
 
@@ -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'"
@@ -538,7 +539,7 @@ def _reportDataFiles():
538
539
 
539
540
 
540
541
  def _checkPathConflict(dest_path, standalone_entry_points):
541
- assert os.path.normpath(dest_path) == dest_path
542
+ assert getNormalizedPath(dest_path) == dest_path
542
543
 
543
544
  while dest_path:
544
545
  for standalone_entry_point in standalone_entry_points:
@@ -17,6 +17,7 @@ from nuitka.Options import getShallNotIncludeDllFilePatterns, isShowInclusion
17
17
  from nuitka.Tracing import general, inclusion_logger
18
18
  from nuitka.utils.FileOperations import (
19
19
  areSamePaths,
20
+ getNormalizedPath,
20
21
  getReportPath,
21
22
  hasFilenameExtension,
22
23
  haveSameFileContents,
@@ -51,7 +52,7 @@ def _makeIncludedEntryPoint(
51
52
  assert type(executable) is bool, executable
52
53
 
53
54
  # Make sure outside code uses sane paths only.
54
- assert source_path == os.path.normpath(source_path), source_path
55
+ assert source_path == getNormalizedPath(source_path), source_path
55
56
 
56
57
  # Avoid obvious mistakes, these files won't be binaries or DLL ever, right?
57
58
  assert not hasFilenameExtension(path=source_path, extensions=(".qml", ".json"))
@@ -60,7 +61,7 @@ def _makeIncludedEntryPoint(
60
61
  logger=logger,
61
62
  kind=kind,
62
63
  source_path=source_path,
63
- dest_path=os.path.normpath(dest_path),
64
+ dest_path=getNormalizedPath(dest_path),
64
65
  module_name=module_name,
65
66
  package_name=package_name,
66
67
  executable=executable,
@@ -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)
@@ -345,6 +345,14 @@ def _addIncludedModule(module, package_only):
345
345
  module_package=module.getFullName(),
346
346
  package_only=False,
347
347
  )
348
+ else:
349
+ for suffix in getSharedLibrarySuffixes():
350
+ if sub_path.endswith(suffix):
351
+ checkPluginSinglePath(
352
+ sub_path,
353
+ module_package=module.getFullName(),
354
+ package_only=False,
355
+ )
348
356
 
349
357
  elif module.isCompiledPythonModule() or module.isUncompiledPythonModule():
350
358
  ModuleRegistry.addRootModule(module)
@@ -11,7 +11,6 @@ from nuitka.Options import isStandaloneMode, shallCreateAppBundle
11
11
  from nuitka.plugins.PluginBase import NuitkaPluginBase
12
12
  from nuitka.PythonFlavors import isHomebrewPython
13
13
  from nuitka.PythonVersions import getSystemPrefixPath, getTkInterVersion
14
- from nuitka.utils.FileOperations import listDllFilesFromDirectory, relpath
15
14
  from nuitka.utils.Utils import isMacOS, isWin32Windows
16
15
 
17
16
  # spell-checker: ignore tkinterdnd,tkdnd,tcltk
@@ -135,34 +134,6 @@ override it here. Default is automatic detection.""",
135
134
  The Tcl library dir. See comments for Tk library dir.""",
136
135
  )
137
136
 
138
- @staticmethod
139
- def _getTkinterDnDPlatformDirectory():
140
- # From their code:
141
- import platform
142
-
143
- if platform.system() == "Darwin":
144
- return "osx64"
145
- elif platform.system() == "Linux":
146
- return "linux64"
147
- elif platform.system() == "Windows":
148
- return "win64"
149
- else:
150
- return None
151
-
152
- def _considerDataFilesTkinterDnD(self, module):
153
- platform_rep = self._getTkinterDnDPlatformDirectory()
154
-
155
- if platform_rep is None:
156
- return
157
-
158
- yield self.makeIncludedPackageDataFiles(
159
- package_name="tkinterdnd2",
160
- package_directory=module.getCompileTimeDirectory(),
161
- pattern=os.path.join("tkdnd", platform_rep, "**"),
162
- reason="Tcl needed for 'tkinterdnd2' usage",
163
- tags="tcl",
164
- )
165
-
166
137
  def _getTclCandidatePaths(self):
167
138
  # Check typical locations of the dirs
168
139
  yield os.getenv("TCL_LIBRARY")
@@ -234,12 +205,6 @@ The Tcl library dir. See comments for Tk library dir.""",
234
205
  IncludedDataFile objects.
235
206
  """
236
207
 
237
- # Extra TCL providing module go here:
238
- if module.getFullName() == "tkinterdnd2.TkinterDnD":
239
- yield self._considerDataFilesTkinterDnD(module)
240
-
241
- return
242
-
243
208
  if not _isTkInterModule(module) or self.files_copied:
244
209
  return
245
210
 
@@ -301,27 +266,6 @@ that works, report a bug."""
301
266
 
302
267
  self.files_copied = True
303
268
 
304
- def getExtraDlls(self, module):
305
- if module.getFullName() == "tkinterdnd2.TkinterDnD":
306
- platform_rep = self._getTkinterDnDPlatformDirectory()
307
-
308
- if platform_rep is None:
309
- return
310
-
311
- module_directory = module.getCompileTimeDirectory()
312
-
313
- for filename, _dll_filename in listDllFilesFromDirectory(
314
- os.path.join(module_directory, "tkdnd", platform_rep)
315
- ):
316
- dest_path = relpath(filename, module_directory)
317
- yield self.makeDllEntryPoint(
318
- source_path=filename,
319
- dest_path=os.path.join("tkinterdnd2", dest_path),
320
- module_name="tkinterdnd2",
321
- package_name="tkinterdnd2",
322
- reason="tkinterdnd2 package DLL",
323
- )
324
-
325
269
  def onModuleCompleteSet(self, module_set):
326
270
  if str is bytes:
327
271
  plugin_binding_name = "Tkinter"
@@ -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:
@@ -1739,6 +1748,11 @@
1739
1748
  'from torch.utils.cpp_extension import _get_build_directory, load': ''
1740
1749
  when: 'not use_setuptools'
1741
1750
 
1751
+ - module-name: 'gssapi.raw' # checksum: f8e7301e
1752
+ implicit-imports:
1753
+ - depends:
1754
+ - 'gssapi.raw._enum_extensions.*'
1755
+
1742
1756
  - module-name: 'gtk._gtk' # checksum: 4fb4a03b
1743
1757
  implicit-imports:
1744
1758
  - depends:
@@ -2072,10 +2086,11 @@
2072
2086
  - depends:
2073
2087
  - 'keyring.backends.*'
2074
2088
 
2075
- - module-name: 'keyring.backends.Windows' # checksum: 2531fce0
2089
+ - module-name: 'keyring.backends.Windows' # checksum: a414afda
2076
2090
  implicit-imports:
2077
2091
  - depends:
2078
2092
  - 'win32timezone'
2093
+ - 'win32ctypes.core.ctypes.*'
2079
2094
 
2080
2095
  - module-name: 'kivy' # checksum: 648dc799
2081
2096
  data-files:
@@ -2112,13 +2127,16 @@
2112
2127
  - depends:
2113
2128
  - 'kivy.graphics.compiler'
2114
2129
 
2115
- - module-name: 'kivymd' # checksum: 1fda13e6
2130
+ - module-name: 'kivymd' # checksum: b3f15565
2116
2131
  data-files:
2117
2132
  - dirs:
2118
2133
  - 'fonts'
2119
2134
  - 'images'
2120
2135
  - 'data'
2121
2136
  - 'uix'
2137
+ implicit-imports:
2138
+ - depends:
2139
+ - 'kivymd.icon_definitions'
2122
2140
 
2123
2141
  - module-name: 'kiwisolver' # checksum: a0fc11a6
2124
2142
  dlls:
@@ -3699,6 +3717,12 @@
3699
3717
  - description: 'workaround __new__ decorator issue'
3700
3718
  append_plain: 'SharedRegistryObject.__new__ = staticmethod(SharedRegistryObject.__new__)'
3701
3719
 
3720
+ - module-name: 'pip._vendor' # checksum: 49920604
3721
+ anti-bloat:
3722
+ - description: 'allow pydoc inside pip vendored modules'
3723
+ no-auto-follow:
3724
+ 'pydoc': 'ignore'
3725
+
3702
3726
  - module-name: 'pip._vendor.rich.jupyter' # checksum: b346e77
3703
3727
  # See rich.jupyter
3704
3728
  anti-bloat:
@@ -3850,6 +3874,11 @@
3850
3874
  - 'plyer.platforms.android.*'
3851
3875
  when: 'android'
3852
3876
 
3877
+ - module-name: 'polars' # checksum: d072aa03
3878
+ implicit-imports:
3879
+ - depends:
3880
+ - 'numpy.core.multiarray'
3881
+
3853
3882
  - module-name: 'polars.lazyframe.frame' # checksum: e9afa6bc
3854
3883
  anti-bloat:
3855
3884
  - description: 'remove IPython reference'
@@ -4405,7 +4434,7 @@
4405
4434
  - find-dlls-near-module:
4406
4435
  - 'shiboken2'
4407
4436
 
4408
- - module-name: 'PySide6' # checksum: a87b6b1
4437
+ - module-name: 'PySide6' # checksum: 27df3ea2
4409
4438
  implicit-imports:
4410
4439
  - post-import-code:
4411
4440
  - |
@@ -4458,6 +4487,12 @@
4458
4487
  - 'libquick3dspatialaudioplugin'
4459
4488
  - 'libqtvkbcomponentsplugin'
4460
4489
  - 'libqtvkbsettingsplugin'
4490
+ - 'libqsqlodbc'
4491
+ - 'libpq.5'
4492
+ - 'libffmpegmediaplugin'
4493
+ - 'libqtquickcontrols2fluentwinui3styleimplplugin'
4494
+ - 'libqtquickcontrols2fluentwinui3styleplugin'
4495
+ - 'libqtwebviewquickplugin'
4461
4496
 
4462
4497
  - module-name: 'PySide6.QtCore' # checksum: be0d99ac
4463
4498
  implicit-imports:
@@ -5048,6 +5083,14 @@
5048
5083
  executable: 'yes'
5049
5084
  when: 'win32'
5050
5085
 
5086
+ - module-name: 'selenium_driverless' # checksum: bdcb049
5087
+ data-files:
5088
+ - dirs:
5089
+ - '.'
5090
+ implicit-imports:
5091
+ - depends:
5092
+ - 'websockets.legacy.*'
5093
+
5051
5094
  - module-name: 'selenium_stealth' # checksum: 26b9c88c
5052
5095
  data-files:
5053
5096
  - dirs:
@@ -6894,6 +6937,16 @@
6894
6937
  - depends:
6895
6938
  - 'tiktoken_ext.*'
6896
6939
 
6940
+ - module-name: 'time_machine' # checksum: b038bd8
6941
+ anti-bloat:
6942
+ - description: 'remove pytest reference'
6943
+ no-auto-follow:
6944
+ 'pytest': 'ignore'
6945
+ when: 'not use_pytest'
6946
+ - description: 'allow unittest'
6947
+ bloat-mode-overrides:
6948
+ 'unittest': 'allow'
6949
+
6897
6950
  - module-name: 'timm.models.hrnet' # checksum: fdbe0e63
6898
6951
  anti-bloat:
6899
6952
  - replacements_plain:
@@ -6923,6 +6976,91 @@
6923
6976
  - 'libextrafont'
6924
6977
  when: 'win32'
6925
6978
 
6979
+ - module-name: 'tkinterdnd2.TkinterDnD' # checksum: 401c1500
6980
+ data-files:
6981
+ - dirs:
6982
+ - 'tkdnd/win64'
6983
+ when: 'use_tkinter and win32 and version("tkinterdnd2") < (0,4)'
6984
+ - dirs:
6985
+ - 'tkdnd/linux64'
6986
+ when: 'use_tkinter and linux and version("tkinterdnd2") < (0,4)'
6987
+ - dirs:
6988
+ - 'tkdnd/osx64'
6989
+ when: 'use_tkinter and macos and version("tkinterdnd2") < (0,4)'
6990
+ - dirs:
6991
+ - 'tkdnd/win-arm64'
6992
+ when: 'use_tkinter and win32 and arch_arm64 and version("tkinterdnd2") >= (0,4)'
6993
+ - dirs:
6994
+ - 'tkdnd/win-x64'
6995
+ when: 'use_tkinter and win32 and arch_amd64 and version("tkinterdnd2") >= (0,4)'
6996
+ - dirs:
6997
+ - 'tkdnd/win-x86'
6998
+ when: 'use_tkinter and win32 and arch_x86 and version("tkinterdnd2") >= (0,4)'
6999
+ - dirs:
7000
+ - 'tkdnd/linux-arm64'
7001
+ when: 'use_tkinter and linux and arch_arm64 and version("tkinterdnd2") >= (0,4)'
7002
+ - dirs:
7003
+ - 'tkdnd/linux-x64'
7004
+ when: 'use_tkinter and linux and arch_amd64 and version("tkinterdnd2") >= (0,4)'
7005
+ - dirs:
7006
+ - 'tkdnd/osx-arm64'
7007
+ when: 'use_tkinter and macos and arch_arm64 and version("tkinterdnd2") >= (0,4)'
7008
+ - dirs:
7009
+ - 'tkdnd/osx-x64'
7010
+ when: 'use_tkinter and macos and arch_amd64 and version("tkinterdnd2") >= (0,4)'
7011
+ dlls:
7012
+ - from_filenames:
7013
+ relative_path: 'tkdnd/win64'
7014
+ prefixes:
7015
+ - ''
7016
+ when: 'use_tkinter and win32 and version("tkinterdnd2") < (0,4)'
7017
+ - from_filenames:
7018
+ relative_path: 'tkdnd/linux64'
7019
+ prefixes:
7020
+ - ''
7021
+ when: 'use_tkinter and linux and version("tkinterdnd2") < (0,4)'
7022
+ - from_filenames:
7023
+ relative_path: 'tkdnd/osx64'
7024
+ prefixes:
7025
+ - ''
7026
+ when: 'use_tkinter and macos and version("tkinterdnd2") < (0,4)'
7027
+
7028
+ - from_filenames:
7029
+ relative_path: 'tkdnd/win-arm64'
7030
+ prefixes:
7031
+ - ''
7032
+ when: 'use_tkinter and win32 and arch_arm64 and version("tkinterdnd2") >= (0,4)'
7033
+ - from_filenames:
7034
+ relative_path: 'tkdnd/win-x64'
7035
+ prefixes:
7036
+ - ''
7037
+ when: 'use_tkinter and win32 and arch_amd64 and version("tkinterdnd2") >= (0,4)'
7038
+ - from_filenames:
7039
+ relative_path: 'tkdnd/win-x86'
7040
+ prefixes:
7041
+ - ''
7042
+ when: 'use_tkinter and win32 and arch_x86 and version("tkinterdnd2") >= (0,4)'
7043
+ - from_filenames:
7044
+ relative_path: 'tkdnd/linux-arm64'
7045
+ prefixes:
7046
+ - ''
7047
+ when: 'use_tkinter and linux and arch_arm64 and version("tkinterdnd2") >= (0,4)'
7048
+ - from_filenames:
7049
+ relative_path: 'tkdnd/linux-x64'
7050
+ prefixes:
7051
+ - ''
7052
+ when: 'use_tkinter and linux and arch_amd64 and version("tkinterdnd2") >= (0,4)'
7053
+ - from_filenames:
7054
+ relative_path: 'tkdnd/osx-arm64'
7055
+ prefixes:
7056
+ - ''
7057
+ when: 'use_tkinter and macos and arch_arm64 and version("tkinterdnd2") >= (0,4)'
7058
+ - from_filenames:
7059
+ relative_path: 'tkdnd/osx-x64'
7060
+ prefixes:
7061
+ - ''
7062
+ when: 'use_tkinter and macos and arch_amd64 and version("tkinterdnd2") >= (0,4)'
7063
+
6926
7064
  - module-name: 'tkinterweb' # checksum: 5de6ded8
6927
7065
  data-files:
6928
7066
  - dirs:
@@ -6991,7 +7129,7 @@
6991
7129
  - include-metadata:
6992
7130
  - 'toga-gtk'
6993
7131
 
6994
- - module-name: 'toga_winforms' # checksum: 378cf0f6
7132
+ - module-name: 'toga_winforms' # checksum: 618ee1e0
6995
7133
  data-files:
6996
7134
  - dirs:
6997
7135
  - 'resources'
@@ -6999,16 +7137,31 @@
6999
7137
  - 'toga-winforms'
7000
7138
  dlls:
7001
7139
  - from_filenames:
7140
+ relative_path: 'libs/WebView2/runtimes/win-arm64/native'
7141
+ prefixes:
7142
+ - 'WebView2Loader'
7143
+ when: 'win32 and arch_arm64'
7144
+ - from_filenames: # older toga_winforms only
7002
7145
  relative_path: 'libs/WebView2/arm64'
7003
7146
  prefixes:
7004
7147
  - 'WebView2Loader'
7005
7148
  when: 'win32 and arch_arm64'
7006
7149
  - from_filenames:
7150
+ relative_path: 'libs/WebView2/runtimes/win-x86/native'
7151
+ prefixes:
7152
+ - 'WebView2Loader'
7153
+ when: 'win32 and arch_x86'
7154
+ - from_filenames: # older toga_winforms only
7007
7155
  relative_path: 'libs/WebView2/x86'
7008
7156
  prefixes:
7009
7157
  - 'WebView2Loader'
7010
7158
  when: 'win32 and arch_x86'
7011
7159
  - from_filenames:
7160
+ relative_path: 'libs/WebView2/runtimes/win-x64/native'
7161
+ prefixes:
7162
+ - 'WebView2Loader'
7163
+ when: 'win32 and arch_amd64'
7164
+ - from_filenames: # older toga_winforms only
7012
7165
  relative_path: 'libs/WebView2/x64'
7013
7166
  prefixes:
7014
7167
  - 'WebView2Loader'
@@ -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:
@@ -10,6 +10,7 @@ stuff. It will also frequently add sorting for determinism.
10
10
 
11
11
  from __future__ import print_function
12
12
 
13
+ import codecs
13
14
  import errno
14
15
  import fnmatch
15
16
  import glob
@@ -101,8 +102,8 @@ def areSamePaths(path1, path2):
101
102
  if path1 == path2:
102
103
  return True
103
104
 
104
- path1 = os.path.abspath(os.path.normpath(path1))
105
- path2 = os.path.abspath(os.path.normpath(path2))
105
+ path1 = os.path.abspath(getNormalizedPath(path1))
106
+ path2 = os.path.abspath(getNormalizedPath(path2))
106
107
 
107
108
  if os.path.exists(path1) and os.path.exists(path2):
108
109
  path1 = getExternalUsePath(path1)
@@ -787,19 +788,22 @@ def withTemporaryFile(suffix="", mode="w", delete=True, temp_path=None):
787
788
  yield temp_file
788
789
 
789
790
 
790
- def getFileContentByLine(filename, mode="r", encoding=None):
791
+ def getFileContentByLine(filename, mode="r", encoding=None, errors=None):
791
792
  # We read the whole, to keep lock times minimal. We only deal with small
792
793
  # files like this normally.
793
- return getFileContents(filename, mode, encoding=encoding).splitlines()
794
+ return getFileContents(
795
+ filename, mode, encoding=encoding, errors=errors
796
+ ).splitlines()
794
797
 
795
798
 
796
- def getFileContents(filename, mode="r", encoding=None):
799
+ def getFileContents(filename, mode="r", encoding=None, errors=None):
797
800
  """Get the contents of a file.
798
801
 
799
802
  Args:
800
803
  filename: str with the file to be read
801
804
  mode: "r" for str, "rb" for bytes result
802
805
  encoding: optional encoding to used when reading the file, e.g. "utf8"
806
+ errors: optional error handler decoding the content, as defined in `codecs`
803
807
 
804
808
  Returns:
805
809
  str or bytes - depending on mode.
@@ -807,7 +811,7 @@ def getFileContents(filename, mode="r", encoding=None):
807
811
  """
808
812
 
809
813
  with withFileLock("reading file %s" % filename):
810
- with openTextFile(filename, mode, encoding=encoding) as f:
814
+ with openTextFile(filename, mode, encoding=encoding, errors=errors) as f:
811
815
  return f.read()
812
816
 
813
817
 
@@ -829,18 +833,11 @@ def getFileFirstLine(filename, mode="r", encoding=None):
829
833
  return f.readline()
830
834
 
831
835
 
832
- def openTextFile(filename, mode, encoding=None):
833
- if encoding is not None:
834
- import codecs
835
-
836
- return codecs.open(filename, mode, encoding=encoding)
837
- else:
838
- # Avoid deprecation warning, is now the default.
839
- if python_version >= 0x370:
840
- mode = mode.replace("U", "")
836
+ def openTextFile(filename, mode, encoding=None, errors=None):
837
+ if python_version >= 0x3B0:
838
+ mode = mode.replace("U", "")
841
839
 
842
- # Encoding was checked to be not needed.
843
- return open(filename, mode) # pylint: disable=unspecified-encoding
840
+ return codecs.open(filename, mode, encoding=encoding, errors=errors)
844
841
 
845
842
 
846
843
  def putTextFileContents(filename, contents, encoding=None):
@@ -1533,6 +1530,18 @@ def getParentDirectories(path):
1533
1530
  yield path
1534
1531
 
1535
1532
 
1533
+ def getNormalizedPath(path):
1534
+ """Return normalized path that is also a native path, i.e. only legal characters.
1535
+
1536
+ Needed, because MSYS2 likes to keep "/" in normalized paths.
1537
+ """
1538
+ path = os.path.normpath(path)
1539
+ if isWin32Windows():
1540
+ path = path.replace("/", "\\")
1541
+
1542
+ return path
1543
+
1544
+
1536
1545
  # Part of "Nuitka", an optimizing Python compiler that is compatible and
1537
1546
  # integrates with CPython, but also works on its own.
1538
1547
  #
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),