Nuitka-winsvc 2.1.1__cp311-cp311-win_amd64.whl → 2.1.3__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.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: Nuitka-winsvc
3
- Version: 2.1.1
3
+ Version: 2.1.3
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.1.1.data/scripts/nuitka-run.bat,sha256=zzCZ6CymZcBcI_BMB1RwNIegL0JcACGwKTMeIW-aaOU,924
2
- Nuitka_winsvc-2.1.1.data/scripts/nuitka.bat,sha256=G-3yCOmURvmaYtciOLW4cMRGEcutzcsea4qDJqfezg0,1061
1
+ Nuitka_winsvc-2.1.3.data/scripts/nuitka-run.bat,sha256=zzCZ6CymZcBcI_BMB1RwNIegL0JcACGwKTMeIW-aaOU,924
2
+ Nuitka_winsvc-2.1.3.data/scripts/nuitka.bat,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=7kFpFEWpyL9clv1LIHtIhYPJi0psItCcn0RYf4paEuA,3800
@@ -9,7 +9,7 @@ nuitka/Errors.py,sha256=cUzzWhvemFoumoYpBDacJSydfDivm-rweWVXk2ELUVo,2479
9
9
  nuitka/HardImportRegistry.py,sha256=mquDn6znusONCBZkd1qSSIIseNG2B9EWc62AWIZ0ufQ,10335
10
10
  nuitka/MainControl.py,sha256=MpUcKFw16tiXmOKtrnLArHNlp3XEjinQjwalK7Ozp1Q,38348
11
11
  nuitka/ModuleRegistry.py,sha256=lIElF9BCVa2JmmhsBjyjAt6MSFo2vusJ71RUrkaMAQo,8616
12
- nuitka/OptionParsing.py,sha256=iL4oJrHVZhbgom8ARBjG8oYntWjdJo0_b2DnZILFbJ4,63815
12
+ nuitka/OptionParsing.py,sha256=ofKRnuwNLL-hDI7wA8kUDozbTkgi74xtKGr_x1jJFS0,64040
13
13
  nuitka/Options.py,sha256=bNDx2h_ZNHTU7bO-9e2hyFyZrDBMeMHOKoXoYViPnPc,75543
14
14
  nuitka/OutputDirectories.py,sha256=7hM8zVNoclTVup6StkxUuhRJ8IEHjhaKXX3lb03BmcY,5276
15
15
  nuitka/PostProcessing.py,sha256=8IeVz3GNx4OkgEaP2HALSbZi1bFdaIicioD10l5_n3o,14940
@@ -22,7 +22,7 @@ nuitka/SourceCodeReferences.py,sha256=quGcd9Kg3FjYwsSDDv49MWi_Yec2AurRp-cVspo5qq
22
22
  nuitka/Tracing.py,sha256=7BE6sDP5XmOWzoQnjC05ll2b5i38KLzXr2V5zI4eXX4,13335
23
23
  nuitka/TreeXML.py,sha256=SKL4lL6Tcfu7Uetq-KaFo3q0-M18bp6Szc4eMrNwrfw,3513
24
24
  nuitka/Variables.py,sha256=53u-p0l58lrBg8nNSYd5DjR3AOGezMayUM7C05vANVM,15470
25
- nuitka/Version.py,sha256=qBco6039xf0njl2ucDFmo3_Kpexgap2J6MFkBo5gen8,2466
25
+ nuitka/Version.py,sha256=sWCe4Jb2CJGmTg7D7BrBkV9GcPWs2QYz16s1Mz-tRfc,2466
26
26
  nuitka/__init__.py,sha256=TkW50aBd9haxBi-DXHM71oVA31d5oPeL06ZwuBSkPqo,865
27
27
  nuitka/__main__.py,sha256=HZFjEt3fdlQLqcreBI6dlUvA53IqQMnZE4Aj5FPwu1s,6373
28
28
  nuitka/__past__.py,sha256=x9W6PDKU2SOY2Qbeu5kgiwgJ5edjG4BUPhdA-6qQ7mY,5604
@@ -36,7 +36,7 @@ nuitka/build/SconsHacks.py,sha256=uK_fTLqNrRwC6G6JJDsRoHhJxST13EmObiApOdeAvxo,55
36
36
  nuitka/build/SconsInterface.py,sha256=_RUO06b97KtcH1w9rT48TFqQfKyuL4Yke2E1C-sgj84,15933
37
37
  nuitka/build/SconsProgress.py,sha256=KoJDqgKxDRPjX00rB9a48YIij_oA1dwobBD1LMCpJ9k,2704
38
38
  nuitka/build/SconsSpawn.py,sha256=g2BzLuCeIMpt5OHYK7jelyRgm8QlHQxoCKA33mg3y4g,13210
39
- nuitka/build/SconsUtils.py,sha256=48txghK3cKDLzOPXM-V9mXS5fR57IOAjjN8C05TjFUs,26956
39
+ nuitka/build/SconsUtils.py,sha256=vVMu5C8Pf7edz_1G39ulm6mBnYP0KmU_0_63TUcBp00,26957
40
40
  nuitka/build/__init__.py,sha256=TkW50aBd9haxBi-DXHM71oVA31d5oPeL06ZwuBSkPqo,865
41
41
  nuitka/build/include/nuitka/allocator.h,sha256=9kww_KyeLT0C1N25lMTjKje6aja6sYTMKrq5YyvoUdg,8001
42
42
  nuitka/build/include/nuitka/builtins.h,sha256=QhRpXRaFLANnurU3yqbgj_pmdgmze5ThItnV4RpR8Xs,3499
@@ -426,7 +426,7 @@ nuitka/build/static_src/HelpersEnvironmentVariables.c,sha256=NFeGsWd6Z8TgvtbAWAI
426
426
  nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c,sha256=gH3eizvT_9-hagDwFkHl5I2lxxIVa4G7GQkRJQSY7yY,2979
427
427
  nuitka/build/static_src/HelpersExceptions.c,sha256=LF_wD4iuiBxOJ4knEQlaMsXU6u7e6CsdjM0JiLPSURM,7145
428
428
  nuitka/build/static_src/HelpersFiles.c,sha256=th2W88Qgfz7BtYVx-J273JS74mavLFyHxJDv-O4RTWA,8018
429
- nuitka/build/static_src/HelpersFilesystemPaths.c,sha256=WlF8JWsZPJ18TMnt3h0IvyMThJyMFH03rPN-9K3lZu8,28501
429
+ nuitka/build/static_src/HelpersFilesystemPaths.c,sha256=b9guvQ9KsV5I0xEt8dP7RxavXmXDeXnsTWY1Q7gIJic,28522
430
430
  nuitka/build/static_src/HelpersFloats.c,sha256=prn_PJ6OW408oVNSuRAVgUBeGh_6VmLcbImrpm_LmTQ,2455
431
431
  nuitka/build/static_src/HelpersHeapStorage.c,sha256=MAnXlbBSrKR5hMBqEQnNOUfcDS7v0rhxcC7awaFUErw,1803
432
432
  nuitka/build/static_src/HelpersImport.c,sha256=By3gv6XUaX6V5WeGuW11s3OJ-Q404hngLaQW4dVDU-o,16080
@@ -470,7 +470,7 @@ nuitka/build/static_src/HelpersOperationInplacePow.c,sha256=1-X0lSTpsjHpi-1FYqtN
470
470
  nuitka/build/static_src/HelpersOperationInplaceRshift.c,sha256=OURy7FnAKkkUmnCCR_PElUTK39dy3NpDsCxB4xRV4KY,45341
471
471
  nuitka/build/static_src/HelpersOperationInplaceSub.c,sha256=A4DP2OjlFsQFP4lEuaAZU69JXVC1Ygnan4IVSIWWVx0,82871
472
472
  nuitka/build/static_src/HelpersOperationInplaceTruediv.c,sha256=ZUakGR_slGnhs2GCg2I2MyhpFyLiXNPlkbTDhu6PkXA,76950
473
- nuitka/build/static_src/HelpersProfiling.c,sha256=8WK3sJ0h52mQ-IEVncEoFHXLv0UuIYKluDVbt6hV9lM,3328
473
+ nuitka/build/static_src/HelpersProfiling.c,sha256=vtPFWMfPv14uxbu1mlYizN2hUGp-_qsyBvzAGQDQrfs,3394
474
474
  nuitka/build/static_src/HelpersPythonPgo.c,sha256=knEuVNnJg-H8oXQbvu_9YqVg0uIA1rkWKi4Ebk6WvJ8,3840
475
475
  nuitka/build/static_src/HelpersRaising.c,sha256=GJy7hqMQBO732V4agnqlylM9-_Mgl6_VgKajZJPuHK8,15663
476
476
  nuitka/build/static_src/HelpersSafeStrings.c,sha256=Uo24UHxgCtmaKpr0qhJayqdutIL0bubVBpP5NHsEruw,3868
@@ -562,7 +562,7 @@ nuitka/code_generation/c_types/CTypePyObjectPointers.py,sha256=ByZl4gMX2YczpiM9g
562
562
  nuitka/code_generation/c_types/CTypeVoids.py,sha256=VEwcj1bXAE-GcnAkozePYqNpl23hmJLWLQDlgg0U3-k,2885
563
563
  nuitka/code_generation/c_types/__init__.py,sha256=TkW50aBd9haxBi-DXHM71oVA31d5oPeL06ZwuBSkPqo,865
564
564
  nuitka/code_generation/templates/CodeTemplatesAsyncgens.py,sha256=exms_JURf6hjfkNU4O1d8DTXsjOqArLcZrNXX-oEXoI,2948
565
- nuitka/code_generation/templates/CodeTemplatesConstants.py,sha256=UfPpg9SSv6Woj6_Ik2Hg0hBjJL1niuwue9PaSlxDW1c,8907
565
+ nuitka/code_generation/templates/CodeTemplatesConstants.py,sha256=xfMmx1yXDbakG4qTCT0N7lkHMcacXo7MKlA21QoDLDI,8928
566
566
  nuitka/code_generation/templates/CodeTemplatesCoroutines.py,sha256=ETCq5cbhvOxm5qZ5reynszi5TfzAuPx0BgNMPVgLOlE,3040
567
567
  nuitka/code_generation/templates/CodeTemplatesExceptions.py,sha256=Q9H_6sPGO5scugMj0-suKAY6OX5yVBMr27hwUCAFcHc,2358
568
568
  nuitka/code_generation/templates/CodeTemplatesFrames.py,sha256=QP6fABpLbYYiPpuvyjOX6Ke9k49_dWVoO33VjAbfcpw,6483
@@ -744,10 +744,10 @@ nuitka/optimizations/ValueTraces.py,sha256=m_d8JbsGWFbnxuV58sOPVPtnU-Rh6Br3pAAtA
744
744
  nuitka/optimizations/__init__.py,sha256=TkW50aBd9haxBi-DXHM71oVA31d5oPeL06ZwuBSkPqo,865
745
745
  nuitka/pgo/PGO.py,sha256=9oSnX1hXeuECPOujz4vadlGI6-wFYICWjdTBrE04G9c,4932
746
746
  nuitka/pgo/__init__.py,sha256=TkW50aBd9haxBi-DXHM71oVA31d5oPeL06ZwuBSkPqo,865
747
- nuitka/plugins/PluginBase.py,sha256=sU04GxeVb1fNmmJujUqjg6LdGhZlD8yvf0GsFN1_fLA,56166
748
- nuitka/plugins/Plugins.py,sha256=CRYf5YCAbaN10Qu2U_wL9Ta6xJX1BK4SUVBXoIM7X_g,59248
747
+ nuitka/plugins/PluginBase.py,sha256=4Zd7nXjeLYzadBFKozPhDXto7Ol4G1AsXn3jdwSv8bI,56670
748
+ nuitka/plugins/Plugins.py,sha256=6wOakwXv24G0rnvEyzafZF5xLT84Y_gx5fp5ToOwxEI,59723
749
749
  nuitka/plugins/__init__.py,sha256=TkW50aBd9haxBi-DXHM71oVA31d5oPeL06ZwuBSkPqo,865
750
- nuitka/plugins/standard/AntiBloatPlugin.py,sha256=LQ7QC_uaHm-pz2uYyfiytAO92YCVMsujeq6XaLwUVGY,28471
750
+ nuitka/plugins/standard/AntiBloatPlugin.py,sha256=cgEC5sM5yXVBnScn7kXvq_wIxrNP8HoGqJ6I2aQ52hg,30408
751
751
  nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py,sha256=wcMzzFP5rOcJAaJCR-nB4lE76gTiU_iUZj_2O6Y4uvc,3510
752
752
  nuitka/plugins/standard/DataFilesPlugin.py,sha256=EKpn58Sr6tQjeAr31t8V3HNGk5KuSWoXYjhEyEXp0eo,10754
753
753
  nuitka/plugins/standard/DelvewheelPlugin.py,sha256=LMH36X8CWgimaIOQU224JTnH75XHchmWt1P30_CbgRE,5080
@@ -776,11 +776,11 @@ nuitka/plugins/standard/TransformersPlugin.py,sha256=9MAbtousSksrIzHbYjW-UPlsIXf
776
776
  nuitka/plugins/standard/TrioPlugin.py,sha256=5tIrmbLsuEn_koP4S9F2CuOEw6kyAQ7NyOESPtsF54Q,1106
777
777
  nuitka/plugins/standard/UpxPlugin.py,sha256=1I3WouiEmKQAvTkzhgmJ2FRjDKHC0oH9onENntmFphg,5668
778
778
  nuitka/plugins/standard/__init__.py,sha256=TkW50aBd9haxBi-DXHM71oVA31d5oPeL06ZwuBSkPqo,865
779
- nuitka/plugins/standard/standard.nuitka-package.config.yml,sha256=Jxs4-miz6dNFiwvuKJm0EPyWXmNs8X8AR3KyITowa04,224697
779
+ nuitka/plugins/standard/standard.nuitka-package.config.yml,sha256=ire0ManiZO2mdS09VaOAioTRKe4IxMPNygVQXXNKhDQ,232908
780
780
  nuitka/plugins/standard/stdlib2.nuitka-package.config.yml,sha256=AUjtaX5pUWpvPru9WiTjvKDFeISY4XXv-UDO25MdrAM,2352
781
781
  nuitka/plugins/standard/stdlib3.nuitka-package.config.yml,sha256=Y_vbnb_R_q3sHjtUUgOkxpIi1cBaS9DAX38gTb7yk68,12392
782
782
  nuitka/plugins/standard/DillPlugin/DillPlugin.c,sha256=XEr9N_2U2vKOEhTnth3UyIHTYowgKWfin_8jS1jaMXA,1646
783
- nuitka/plugins/standard/DillPlugin/dill-postLoad.py,sha256=czPPuN6xQ-RxKmzfDNOZL6m-qPeA7MCzIZOzROdsz0s,9661
783
+ nuitka/plugins/standard/DillPlugin/dill-postLoad.py,sha256=WICFdsvx5ZZKqgfX-GuYWqsuL7avFDqxlFk6UA3qihk,9826
784
784
  nuitka/reports/CompilationReportReader.py,sha256=0tviyGwsHIw-qxGRnCxCNIJshir61KdGMMCA3hYaIXk,2287
785
785
  nuitka/reports/LicenseReport.rst.j2,sha256=CPxGcCfBlYXRDHUOOuzVs-bcVj8IQ5kA4GAn5ayRIzc,2089
786
786
  nuitka/reports/Reports.py,sha256=tVZy9pAzfLNV_DblOtSrk-kbPX3JzL9QzqVISvIv_yo,27389
@@ -855,8 +855,8 @@ nuitka/tree/ReformulationAssertStatements.py,sha256=QLHdt3hn0BSD5AmDNIBrqHyafQZT
855
855
  nuitka/tree/ReformulationAssignmentStatements.py,sha256=hB0gs9-MhCaev_dkaTJQIG5TObgh8ObXxnyw1R5jh24,43101
856
856
  nuitka/tree/ReformulationBooleanExpressions.py,sha256=CDr39t7MMCapxVOi7K1KMZ15ixfK3yeylVffZpCuHOI,2981
857
857
  nuitka/tree/ReformulationCallExpressions.py,sha256=dLZl54nxTaliwwbz1PhUUutUqCMsfDCkl83Qcl9ClBQ,11746
858
- nuitka/tree/ReformulationClasses.py,sha256=RV-bcZopht29Ey5KPyqxrlrtgV_cehzrMATL8qI2MTk,15255
859
- nuitka/tree/ReformulationClasses3.py,sha256=tf-0AIGkaQOnJ8aVf6zRu05ZczJaeHBSasbeQTN6Fj0,38044
858
+ nuitka/tree/ReformulationClasses.py,sha256=zDr3V159pyeBiJxUg7hkpXNZ2CjUeBJTw9mZmRC6DP8,15446
859
+ nuitka/tree/ReformulationClasses3.py,sha256=HV2rrWaneRDa-u3PyFNhvKApOVH4GiUxSGD6DR9SRVA,38235
860
860
  nuitka/tree/ReformulationComparisonExpressions.py,sha256=uBs7JGSndDEGqqe4aZra4kkcyOwPCKttYOP16TKCbUo,6523
861
861
  nuitka/tree/ReformulationContractionExpressions.py,sha256=1i82b0xbEvRec63KRfRHYBGOkWRMsab5vNKlQrEvN9s,22175
862
862
  nuitka/tree/ReformulationDictionaryCreation.py,sha256=ij6RTNUZcSA5VBWtKtC28Xumz-lF-eUdY8TZcaMwbuc,11196
@@ -896,7 +896,7 @@ nuitka/utils/InstanceCounters.py,sha256=0exppiVjIcdQvw_4o0ZedPs-ZEYc3lUqMNefUoE1
896
896
  nuitka/utils/Jinja2.py,sha256=IitTCo5DDy4U9z-yV1B_aHxGhTp5zMZYOnDX_9yWtqc,4586
897
897
  nuitka/utils/Json.py,sha256=8tOXO-qE1JH1_9CJBknFZxWwlc_3OPX1pwsRctj5axU,1271
898
898
  nuitka/utils/MacOSApp.py,sha256=XmxhWvR7IQgqtw23p6CeEbmowHt8mRn0M2ckXGk0P_I,4477
899
- nuitka/utils/MemoryUsage.py,sha256=4iqF0ObA6UNUV30fbrz6y1XMA03oEvlJWtM98S7oURE,5073
899
+ nuitka/utils/MemoryUsage.py,sha256=QeanxAep9aOvtYvhL4viCHrlRqN3i9OcgfmcV0dhq1c,5092
900
900
  nuitka/utils/ModuleNames.py,sha256=bLtm5e3ojZ_F0GuPbXFbFG4q2vTQXdO-OvMuiSoUO5I,9951
901
901
  nuitka/utils/ReExecute.py,sha256=iFwFyfyfASWkWZfcgtM-sKnPoND-obcBaaNxJU4yfN4,4588
902
902
  nuitka/utils/Rest.py,sha256=zP9jjG6pOSuLKVuZbbj_Wwq1CLZ6hk16wdhHkR_m2oE,1889
@@ -912,9 +912,9 @@ nuitka/utils/WindowsFileUsage.py,sha256=UglAr8IbR1IGOysHMEuBUT-tnwF3tTcR80fNGSMl
912
912
  nuitka/utils/WindowsResources.py,sha256=npt3jbcTgh1M5G6jyEv6uFqiZIf84XEea3wXQ_sXGdM,19837
913
913
  nuitka/utils/Yaml.py,sha256=aeYsCj6mM8uYiMSg0TIkVSKsa-8lYzJXmfpbyLRsMi4,7014
914
914
  nuitka/utils/__init__.py,sha256=TkW50aBd9haxBi-DXHM71oVA31d5oPeL06ZwuBSkPqo,865
915
- Nuitka_winsvc-2.1.1.dist-info/LICENSE.txt,sha256=ZWq74m8T3pVbRFjCBu74q_4GyW11rCqtYB_1vZ4rQ88,11348
916
- Nuitka_winsvc-2.1.1.dist-info/METADATA,sha256=Cl2HE1Z5wCD9k3sd_IExhAd_npgFETb0mMyCedeIqyE,4909
917
- Nuitka_winsvc-2.1.1.dist-info/WHEEL,sha256=nSybvzWlmdJnHiUQSY-d7V1ycwEVUTqXiTvr2eshg44,102
918
- Nuitka_winsvc-2.1.1.dist-info/entry_points.txt,sha256=jeBnijqxZ4U0WpNEdtaogpNMNlv5jw8H7yMOsf2isFc,308
919
- Nuitka_winsvc-2.1.1.dist-info/top_level.txt,sha256=TRrfKxSYukbo1yzTGfwyH7wVzhDpKlwQsLjhIr15yqY,7
920
- Nuitka_winsvc-2.1.1.dist-info/RECORD,,
915
+ Nuitka_winsvc-2.1.3.dist-info/LICENSE.txt,sha256=ZWq74m8T3pVbRFjCBu74q_4GyW11rCqtYB_1vZ4rQ88,11348
916
+ Nuitka_winsvc-2.1.3.dist-info/METADATA,sha256=xNeevHxQE_tPkL-G_ECDItFTU87IfSGy9q_ARLZmnZ0,4909
917
+ Nuitka_winsvc-2.1.3.dist-info/WHEEL,sha256=nSybvzWlmdJnHiUQSY-d7V1ycwEVUTqXiTvr2eshg44,102
918
+ Nuitka_winsvc-2.1.3.dist-info/entry_points.txt,sha256=jeBnijqxZ4U0WpNEdtaogpNMNlv5jw8H7yMOsf2isFc,308
919
+ Nuitka_winsvc-2.1.3.dist-info/top_level.txt,sha256=TRrfKxSYukbo1yzTGfwyH7wVzhDpKlwQsLjhIr15yqY,7
920
+ Nuitka_winsvc-2.1.3.dist-info/RECORD,,
nuitka/OptionParsing.py CHANGED
@@ -36,15 +36,18 @@ from nuitka.Version import getCommercialVersion, getNuitkaVersion
36
36
 
37
37
  # Indicator if we were called as "nuitka-run" in which case we assume some
38
38
  # other defaults and work a bit different with parameters.
39
- is_nuitka_run = os.path.basename(sys.argv[0]).lower().endswith("-run")
39
+ _nuitka_binary_name = os.path.basename(sys.argv[0])
40
+ if _nuitka_binary_name == "__main__.py":
41
+ _nuitka_binary_name = "%s -m nuitka" % os.path.basename(sys.executable)
42
+ is_nuitka_run = _nuitka_binary_name.lower().endswith("-run")
40
43
 
41
44
  if not is_nuitka_run:
42
- usage = "usage: %prog [--module] [--run] [options] main_module.py"
45
+ usage_template = "usage: %s [--module] [--run] [options] main_module.py"
43
46
  else:
44
- usage = "usage: %prog [options] main_module.py"
47
+ usage_template = "usage: %s [options] main_module.py"
45
48
 
46
49
 
47
- parser = makeOptionsParser(usage=usage)
50
+ parser = makeOptionsParser(usage=usage_template % _nuitka_binary_name)
48
51
 
49
52
  parser.add_option(
50
53
  "--version",
@@ -2001,6 +2004,7 @@ def _considerGithubWorkflowOptions(phase):
2001
2004
  "enable-plugins",
2002
2005
  "disable-plugin",
2003
2006
  "disable-plugins",
2007
+ "user-plugin",
2004
2008
  )
2005
2009
 
2006
2010
  def filterByName(key):
nuitka/Version.py CHANGED
@@ -20,7 +20,7 @@
20
20
  """
21
21
 
22
22
  version_string = """\
23
- Nuitka V2.1.1
23
+ Nuitka V2.1.3
24
24
  Copyright (C) 2024 Kay Hayen."""
25
25
 
26
26
 
@@ -609,7 +609,7 @@ def scanSourceDir(env, dirname, plugins):
609
609
 
610
610
  # Only C files are of interest here.
611
611
  if not hasFilenameExtension(
612
- filename_base, (".c", "cpp")
612
+ filename_base, (".c", ".cpp")
613
613
  ) or not filename_base.startswith(("module.", "__", "plugin.")):
614
614
  continue
615
615
 
@@ -836,7 +836,7 @@ bool expandTemplatePath(char *target, char const *source, size_t buffer_size) {
836
836
  char var_name[1024];
837
837
  char *w = NULL;
838
838
 
839
- bool var_started = false;
839
+ NUITKA_MAY_BE_UNUSED bool var_started = false;
840
840
 
841
841
  while (*source != 0) {
842
842
  if (*source == '{') {
@@ -44,7 +44,9 @@ void startProfiling(void) {
44
44
  abort();
45
45
  }
46
46
 
47
- PyObject *result = CALL_FUNCTION_WITH_SINGLE_ARG(PyObject_GetAttrString(vmprof_module, "enable"),
47
+ PyThreadState *tstate = PyThreadState_GET();
48
+
49
+ PyObject *result = CALL_FUNCTION_WITH_SINGLE_ARG(tstate, PyObject_GetAttrString(vmprof_module, "enable"),
48
50
  PyInt_FromLong(fileno(tempfile_profile)));
49
51
 
50
52
  if (result == NULL) {
@@ -65,7 +67,7 @@ void stopProfiling(void) {
65
67
  PyTracebackObject *save_exception_tb;
66
68
  FETCH_ERROR_OCCURRED(tstate, &save_exception_type, &save_exception_value, &save_exception_tb);
67
69
 
68
- PyObject *result = CALL_FUNCTION_NO_ARGS(PyObject_GetAttrString(vmprof_module, "disable"));
70
+ PyObject *result = CALL_FUNCTION_NO_ARGS(tstate, PyObject_GetAttrString(vmprof_module, "disable"));
69
71
 
70
72
  if (result == NULL) {
71
73
  CLEAR_ERROR_OCCURRED(tstate);
@@ -25,7 +25,7 @@ PyObject *Nuitka_dunder_compiled_value = NULL;
25
25
  #ifdef _NUITKA_STANDALONE
26
26
  extern PyObject *getStandaloneSysExecutablePath(PyObject *basename);
27
27
 
28
- static PyObject *STRIP_DIRNAME(PyObject *path) {
28
+ NUITKA_MAY_BE_UNUSED static PyObject *STRIP_DIRNAME(PyObject *path) {
29
29
  #if PYTHON_VERSION < 0x300
30
30
  char const *path_cstr = PyString_AS_STRING(path);
31
31
 
@@ -14,10 +14,10 @@ it being used.
14
14
 
15
15
  import ast
16
16
  import functools
17
- import importlib
18
17
  import inspect
19
18
  import os
20
19
  import sys
20
+ import unittest
21
21
 
22
22
  from nuitka import Options
23
23
  from nuitka.__past__ import iter_modules, unicode
@@ -106,6 +106,15 @@ _module_config_constants = {}
106
106
  _module_config_variables = {}
107
107
 
108
108
 
109
+ def _getImportLibModule():
110
+ try:
111
+ import importlib
112
+ except ImportError:
113
+ return None
114
+ else:
115
+ return importlib
116
+
117
+
109
118
  def _getEvaluationContext():
110
119
  # Using global here, as this is really a singleton, in the form of a module,
111
120
  # pylint: disable=global-statement
@@ -145,8 +154,9 @@ def _getEvaluationContext():
145
154
  # Frequent used modules
146
155
  "sys": sys,
147
156
  "os": os,
148
- "importlib": importlib,
157
+ "importlib": _getImportLibModule(),
149
158
  "appdirs": getAppdirsModule(),
159
+ "unittest": unittest,
150
160
  # Python version string
151
161
  "python_version_str": python_version_str,
152
162
  "python_version_full_str": python_version_full_str,
@@ -1259,6 +1269,14 @@ except ImportError:
1259
1269
  # Virtual method, pylint: disable=no-self-use,unused-argument
1260
1270
  return False
1261
1271
 
1272
+ def onClassBodyParsing(self, module_name, class_name, node):
1273
+ # Virtual method, pylint: disable=no-self-use,unused-argument
1274
+ """Provide a different class body for the class of that module.
1275
+
1276
+ Should return a boolean, indicating if any actual change was done.
1277
+ """
1278
+ return False
1279
+
1262
1280
  def getCacheContributionValues(self, module_name):
1263
1281
  """Provide values that represent the include of a plugin on the compilation.
1264
1282
 
nuitka/plugins/Plugins.py CHANGED
@@ -1354,6 +1354,19 @@ class Plugins(object):
1354
1354
  body=body,
1355
1355
  )
1356
1356
 
1357
+ @classmethod
1358
+ def onClassBodyParsing(cls, provider, class_name, node):
1359
+ module_name = provider.getParentModule().getFullName()
1360
+
1361
+ for plugin in getActivePlugins():
1362
+ # TODO: Could record what classes got modified by what plugin
1363
+ # and in what way checking the return value
1364
+ plugin.onClassBodyParsing(
1365
+ module_name=module_name,
1366
+ class_name=class_name,
1367
+ node=node,
1368
+ )
1369
+
1357
1370
  @classmethod
1358
1371
  def getCacheContributionValues(cls, module_name):
1359
1372
  for plugin in getActivePlugins():
@@ -535,6 +535,66 @@ Error, cannot exec module '%s', context code '%s' due to: %s"""
535
535
 
536
536
  return result
537
537
 
538
+ def _onClassBodyParsing(self, module_name, anti_bloat_config, class_name, node):
539
+ replace_code = anti_bloat_config.get("change_class", {}).get(class_name)
540
+
541
+ if replace_code == "un-usable":
542
+ replace_code = """
543
+ '''
544
+ class %(class_name)s:
545
+ def __init__(self, *args, **kwargs):
546
+ raise RuntimeError("Must not call %(module_name)s.%(class_name)s")
547
+ '''
548
+ """ % {
549
+ "module_name": module_name,
550
+ "class_name": class_name,
551
+ }
552
+
553
+ if replace_code is None:
554
+ return False
555
+
556
+ replacement = self.evaluateExpression(
557
+ full_name=module_name,
558
+ expression=replace_code,
559
+ config_name="module '%s' config 'change_class' of '%s'"
560
+ % (module_name, class_name),
561
+ extra_context=self._getContextCode(
562
+ module_name=module_name, anti_bloat_config=anti_bloat_config
563
+ ),
564
+ single_value=True,
565
+ )
566
+
567
+ # Single node is required, extract the generated module body with
568
+ # single expression only statement value or a function body.
569
+ replacement = ast.parse(replacement).body[0]
570
+
571
+ node.body[:] = replacement.body
572
+ node.bases = replacement.bases
573
+
574
+ if self.show_changes:
575
+ self.info(
576
+ "Updated module '%s' class '%s'." % (module_name.asString(), class_name)
577
+ )
578
+
579
+ return True
580
+
581
+ def onClassBodyParsing(self, module_name, class_name, node):
582
+ result = False
583
+
584
+ config = self.config.get(module_name, section="anti-bloat")
585
+
586
+ if config:
587
+ for anti_bloat_config in config:
588
+ if self._onClassBodyParsing(
589
+ module_name=module_name,
590
+ anti_bloat_config=anti_bloat_config,
591
+ class_name=class_name,
592
+ node=node,
593
+ ):
594
+ result = True
595
+
596
+ return result
597
+
538
598
  def _getModuleBloatModeOverrides(self, using_module_name, intended_module_name):
539
599
  while 1:
540
600
  config = self.config.get(using_module_name, section="anti-bloat")
@@ -236,6 +236,10 @@ def save_compiled_function(pickler, obj):
236
236
  dill._dill.StockPickler.save_global(pickler, obj)
237
237
 
238
238
 
239
+ if __compiled__.standalone: # pylint: disable=undefined-variable
240
+ builtins.compiled_method = compiled_method
241
+ builtins.compiled_function = compiled_function
242
+
239
243
  # Part of "Nuitka", an optimizing Python compiler that is compatible and
240
244
  # integrates with CPython, but also works on its own.
241
245
  #
@@ -90,6 +90,38 @@
90
90
  patterns:
91
91
  - 'public.xml'
92
92
 
93
+ - module-name: 'antlr4.FileStream' # checksum: b7fe4fce
94
+ anti-bloat:
95
+ - description: 'remove unittest reference'
96
+ replacements_plain:
97
+ 'import unittest': ''
98
+ change_class:
99
+ 'TestFileStream': 'un-usable'
100
+
101
+ - module-name: 'antlr4.InputStream' # checksum: e9e7bd9b
102
+ anti-bloat:
103
+ - description: 'remove unittest reference'
104
+ replacements_plain:
105
+ 'import unittest': ''
106
+ change_class:
107
+ 'TestInputStream': 'un-usable'
108
+
109
+ - module-name: 'antlr4.IntervalSet' # checksum: 214ba83e
110
+ anti-bloat:
111
+ - description: 'remove unittest reference'
112
+ replacements_plain:
113
+ 'import unittest': ''
114
+ change_class:
115
+ 'TestIntervalSet': 'un-usable'
116
+
117
+ - module-name: 'antlr4.Recognizer' # checksum: 6e605dda
118
+ anti-bloat:
119
+ - description: 'remove unittest reference'
120
+ replacements_plain:
121
+ 'import unittest': ''
122
+ change_class:
123
+ 'Test': 'un-usable'
124
+
93
125
  - module-name: 'anyio._core._eventloop' # checksum: c0b82a1e
94
126
  implicit-imports:
95
127
  - depends:
@@ -318,13 +350,18 @@
318
350
  - 'av.plane'
319
351
  - 'av.video.plane'
320
352
 
321
- - module-name: 'babel' # checksum: e320e7f1
353
+ - module-name: 'babel' # checksum: 37b8fa6d
322
354
  data-files:
323
355
  dirs:
324
356
  - 'locale-data'
325
357
  patterns:
326
358
  - 'global.dat'
327
359
 
360
+ implicit-imports:
361
+ - depends:
362
+ - 'babel.dates'
363
+ - 'babel.numbers'
364
+
328
365
  - module-name: 'backports.zoneinfo._common' # checksum: 70450440
329
366
  implicit-imports:
330
367
  - depends:
@@ -534,6 +571,13 @@
534
571
  - depends:
535
572
  - 'urllib.request'
536
573
 
574
+ - module-name: 'celery' # checksum: 7d07a2d1
575
+ anti-bloat:
576
+ - description: 'remove IPython reference'
577
+ no-auto-follow:
578
+ 'IPython': 'ignore'
579
+ when: 'not use_ipython'
580
+
537
581
  - module-name: 'certifi' # checksum: 73df1a1e
538
582
  data-files:
539
583
  patterns:
@@ -975,11 +1019,15 @@
975
1019
  'load_ipython_extension': 'un-callable'
976
1020
  when: 'not use_ipython'
977
1021
 
978
- - module-name: 'dotenv.main' # checksum: 406cfc35
1022
+ - module-name: 'dotenv.main' # checksum: cb869e1f
979
1023
  anti-bloat:
980
1024
  - description: 'workaround to avoid dotenv requiring package directories'
981
1025
  replacements_plain:
982
1026
  "raise IOError('Starting path not found')": 'pass'
1027
+ - description: 'workaround to avoid dotenv requiring python filenames'
1028
+ replacements_plain:
1029
+ 'while frame.f_code.co_filename == current_file': 'if False'
1030
+ 'frame_filename = frame.f_code.co_filename': 'frame_filename = os.path.dirname(__file__)'
983
1031
 
984
1032
  - module-name: 'easyocr' # checksum: fb59d361
985
1033
  data-files:
@@ -1039,6 +1087,11 @@
1039
1087
  - depends:
1040
1088
  - 'Equation.equation_*'
1041
1089
 
1090
+ - module-name: 'eth_utils' # checksum: c62fca1b
1091
+ data-files:
1092
+ dirs:
1093
+ - '__json'
1094
+
1042
1095
  - module-name: 'evaluate.config' # checksum: becc1d28
1043
1096
  anti-bloat:
1044
1097
  - description: 'workaround python version test not compile time recognized'
@@ -1444,6 +1497,31 @@
1444
1497
  patterns:
1445
1498
  - '_cython/_credentials/roots.pem'
1446
1499
 
1500
+ - module-name: 'gruut' # checksum: 19583930
1501
+ data-files:
1502
+ patterns:
1503
+ - 'VERSION'
1504
+
1505
+ implicit-imports:
1506
+ - depends:
1507
+ - 'gruut_ipa'
1508
+ - 'gruut_lang_en'
1509
+
1510
+ - module-name: 'gruut_ipa' # checksum: 810a705a
1511
+ data-files:
1512
+ dirs:
1513
+ - 'data'
1514
+
1515
+ - module-name: 'gruut_lang_en' # checksum: 206e4c65
1516
+ data-files:
1517
+ dirs:
1518
+ - 'espeak'
1519
+ - 'g2p'
1520
+ - 'pos'
1521
+ patterns:
1522
+ - 'VERSION'
1523
+ - 'lexicon.db'
1524
+
1447
1525
  - module-name: 'gtk._gtk' # checksum: 4fb4a03b
1448
1526
  implicit-imports:
1449
1527
  - depends:
@@ -1540,6 +1618,17 @@
1540
1618
  - description: 'workaround hard module import attribute bug'
1541
1619
  append_plain: 'from .utils.tqdm import tqdm'
1542
1620
 
1621
+ - module-name: 'hydra' # checksum: 380a0a91
1622
+ data-files:
1623
+ dirs:
1624
+ - 'conf'
1625
+
1626
+ - module-name: 'hydra.core.plugins' # checksum: f4d9feae
1627
+ implicit-imports:
1628
+ - depends:
1629
+ - 'hydra._internal.core_plugins.*'
1630
+ - 'hydra_plugins.*'
1631
+
1543
1632
  - module-name: 'imageio.core.imopen' # checksum: 7af58240
1544
1633
  anti-bloat:
1545
1634
  - replacements_plain:
@@ -3347,6 +3436,17 @@
3347
3436
  - 'pycparser.yacctab'
3348
3437
  - 'pycparser.lextab'
3349
3438
 
3439
+ - module-name: 'pycrfsuite' # checksum: 452bfc81
3440
+ dlls:
3441
+ - from_filenames:
3442
+ prefixes:
3443
+ - '_pycrfsuite'
3444
+
3445
+ implicit-imports:
3446
+ - depends:
3447
+ - 'pycrfsuite._dumpparser'
3448
+ - 'pycrfsuite._logparser'
3449
+
3350
3450
  - module-name: 'pydantic' # checksum: fb2935eb
3351
3451
  implicit-imports:
3352
3452
  - depends:
@@ -3726,7 +3826,7 @@
3726
3826
  - find-dlls-near-module:
3727
3827
  - 'shiboken2'
3728
3828
 
3729
- - module-name: 'PySide6' # checksum: f259f70e
3829
+ - module-name: 'PySide6' # checksum: db68a9cc
3730
3830
  implicit-imports:
3731
3831
  - post-import-code:
3732
3832
  - |
@@ -3748,6 +3848,11 @@
3748
3848
  if not slot.im_func.__name__.startswith("_pyside6_workaround_"):
3749
3849
  slot.im_func.__name__ = "_pyside6_workaround_" + slot.im_func.__name__
3750
3850
 
3851
+ try:
3852
+ setattr(slot.im_self.__class__, slot.im_func.__name__, slot.im_func)
3853
+ except Exception:
3854
+ pass
3855
+
3751
3856
  return orig_connect(self, slot, type)
3752
3857
 
3753
3858
  from PySide6 import QtCore
@@ -4287,6 +4392,18 @@
4287
4392
  patterns:
4288
4393
  - 'words.txt'
4289
4394
 
4395
+ - module-name: 'selenium' # checksum: 19747624
4396
+ data-files:
4397
+ dirs:
4398
+ - '.'
4399
+ dlls:
4400
+ - from_filenames:
4401
+ relative_path: 'webdriver/common/windows'
4402
+ prefixes:
4403
+ - 'selenium-manager'
4404
+ executable: 'yes'
4405
+ when: 'win32'
4406
+
4290
4407
  - module-name: 'sentence_transformers.SentenceTransformer' # checksum: c6062648
4291
4408
  implicit-imports:
4292
4409
  - depends:
@@ -5455,7 +5572,7 @@
5455
5572
  'notebook': "'(lambda: None)'"
5456
5573
  when: 'not use_ipython'
5457
5574
 
5458
- - module-name: 'tensorflow' # checksum: 3e41f159
5575
+ - module-name: 'tensorflow' # checksum: 5ed34611
5459
5576
  dlls:
5460
5577
  - from_filenames:
5461
5578
  relative_path: 'core/platform'
@@ -5472,6 +5589,7 @@
5472
5589
  # TODO: Have "unusable", something that triggers a telling "RuntimeError" when used.
5473
5590
  'from tensorflow._api.v1 import test': 'test = None'
5474
5591
  'from ._api.v2 import test': 'test = None'
5592
+ 'from tensorflow._api.v2 import test': 'test = None'
5475
5593
  append_plain: |
5476
5594
  import sys
5477
5595
  sys.modules["tensorflow.compat"] = compat
@@ -5509,18 +5627,21 @@
5509
5627
  'from . import test': 'test = None'
5510
5628
  'from tensorflow._api.v1.compat.v2 import test': 'test = None'
5511
5629
 
5512
- - module-name: 'tensorflow._api.v2.__internal__' # checksum: 6575e290
5630
+ - module-name: 'tensorflow._api.v2.__internal__' # checksum: 4958c951
5513
5631
  anti-bloat:
5514
5632
  - description: 'remove useless tensorflow testing usage'
5515
5633
  replacements_plain:
5516
5634
  'from . import test': 'test = None'
5517
5635
  'from . import distribute': 'distribute = None'
5636
+ 'from tensorflow._api.v2.__internal__ import test': 'test = None'
5637
+ 'from tensorflow._api.v2.__internal__ import distribute': 'distribute = None'
5518
5638
 
5519
- - module-name: 'tensorflow._api.v2.compat.v1' # checksum: 3b5c62cb
5639
+ - module-name: 'tensorflow._api.v2.compat.v1' # checksum: 53024ed1
5520
5640
  anti-bloat:
5521
5641
  - description: 'remove useless tensorflow testing usage'
5522
5642
  replacements_plain:
5523
5643
  'from . import test': 'test = None'
5644
+ 'from tensorflow._api.v2.compat.v1 import test': 'test = None'
5524
5645
 
5525
5646
  - module-name: 'tensorflow._api.v2.compat.v1.compat.v1' # checksum: 31fdcb26
5526
5647
  anti-bloat:
@@ -5534,25 +5655,38 @@
5534
5655
  replacements_plain:
5535
5656
  'from tensorflow._api.v2.compat.v2 import test': 'test = None'
5536
5657
 
5537
- - module-name: 'tensorflow._api.v2.compat.v2' # checksum: 3b5c62cb
5658
+ - module-name: 'tensorflow._api.v2.compat.v2' # checksum: b1ce7f9
5538
5659
  anti-bloat:
5539
5660
  - description: 'remove useless tensorflow testing usage'
5540
5661
  replacements_plain:
5541
5662
  'from . import test': 'test = None'
5663
+ 'from tensorflow._api.v2.compat.v2 import test': 'test = None'
5542
5664
 
5543
- - module-name: 'tensorflow._api.v2.compat.v2.__internal__' # checksum: 6575e290
5665
+ - module-name: 'tensorflow._api.v2.compat.v2.__internal__' # checksum: 6992c716
5544
5666
  anti-bloat:
5545
5667
  - description: 'remove useless tensorflow testing usage'
5546
5668
  replacements_plain:
5547
5669
  # TODO: Really need to make the "un-usable" a thing
5548
5670
  'from . import test': 'test = None'
5671
+ 'from tensorflow._api.v2.compat.v2.__internal__ import test': 'test = None'
5549
5672
  'from . import distribute': 'distribute = None'
5550
5673
 
5551
- - module-name: 'tensorflow._api.v2.compat.v2.__internal__.distribute' # checksum: 6d039981
5674
+ - module-name: 'tensorflow._api.v2.compat.v2.__internal__.distribute' # checksum: a5d90e6f
5552
5675
  anti-bloat:
5553
5676
  - description: 'remove useless tensorflow testing usage'
5554
5677
  replacements_plain:
5555
5678
  'from . import multi_process_runner': 'multi_process_runner = None'
5679
+ 'from tensorflow._api.v2.compat.v2.__internal__.distribute import combinations': 'combinations = None'
5680
+ 'from tensorflow._api.v2.compat.v2.__internal__.distribute import interim': 'interim = None'
5681
+ 'from tensorflow._api.v2.compat.v2.__internal__.distribute import multi_process_runner': 'multi_process_runner=None'
5682
+ when: 'not use_unittest'
5683
+
5684
+ - module-name: 'tensorflow._api.v2.compat.v2.__internal__.distribute.multi_process_runner' # checksum: b50f5527
5685
+ anti-bloat:
5686
+ - description: 'remove unittest reference'
5687
+ replacements_plain:
5688
+ 'from tensorflow.python.distribute.multi_worker_test_base import create_cluster_spec': 'pass'
5689
+ when: 'not use_unittest'
5556
5690
 
5557
5691
  - module-name: 'tensorflow._api.v2.compat.v2.compat.v1' # checksum: 31fdcb26
5558
5692
  anti-bloat:
@@ -5825,12 +5959,13 @@
5825
5959
  replacements_plain:
5826
5960
  'ag_logging.warning(': 'if False: ag_logging.warning('
5827
5961
 
5828
- - module-name: 'tensorflow.python.autograph.impl.conversion' # checksum: eddb826f
5962
+ - module-name: 'tensorflow.python.autograph.impl.conversion' # checksum: fe4e1edb
5829
5963
  anti-bloat:
5830
- - description: 'remove unitest usage'
5964
+ - description: 'remove unittest usage'
5831
5965
  replacements_plain:
5832
5966
  'import unittest': ''
5833
5967
  'issubclass(owner_class, unittest.TestCase)': 'False'
5968
+ when: 'not use_unittest'
5834
5969
 
5835
5970
  - module-name: 'tensorflow.python.compiler.tensorrt.trt_convert' # checksum: 9471824c
5836
5971
  implicit-imports:
@@ -5852,21 +5987,68 @@
5852
5987
  - depends:
5853
5988
  - 'tensorflow.python.data.ops.shuffle_op'
5854
5989
 
5855
- - module-name: 'tensorflow.python.distribute.multi_process_runner' # checksum: 3b5c62cb
5990
+ - module-name: 'tensorflow.python.distribute.combinations' # checksum: 6cb7adcb
5991
+ anti-bloat:
5992
+ - description: 'remove unittest reference'
5993
+ replacements_plain:
5994
+ 'from tensorflow.python.framework import test_combinations as combinations_lib': 'combinations_lib = None'
5995
+ 'from tensorflow.python.framework import test_util': 'test_util = None'
5996
+ 'from tensorflow.python.framework import test_combinations': 'test_combinations = None'
5997
+ 'import unittest': ''
5998
+ 'from tensorflow.python.distribute import multi_worker_test_base': ''
5999
+ replacements:
6000
+ 'unittest.TestLoader.testMethodPrefix': 'unittest.TestLoader.testMethodPrefix'
6001
+ change_function:
6002
+ '_test_runner': 'un-callable'
6003
+ '_multi_worker_test': 'un-callable'
6004
+ when: 'not use_unittest'
6005
+
6006
+ - module-name: 'tensorflow.python.distribute.multi_process_lib' # checksum: b7c69e56
6007
+ anti-bloat:
6008
+ - description: 'remove unittest reference'
6009
+ replacements_plain:
6010
+ 'import unittest': 'unittest = None'
6011
+ 'from tensorflow.python.eager import test': 'test = None'
6012
+ when: 'not use_unittest'
6013
+
6014
+ - module-name: 'tensorflow.python.distribute.multi_process_runner' # checksum: fc293e17
5856
6015
  anti-bloat:
5857
6016
  - description: 'remove useless tensorflow testing usage'
5858
6017
  replacements_plain:
5859
6018
  'from . import test': 'test = None'
6019
+ 'from tensorflow.python.framework import test_util': 'test_util = None'
6020
+ 'test_util.is_tsan_enabled()': 'False'
6021
+ 'import unittest': 'unittest = None'
6022
+ when: 'not use_unittest'
5860
6023
 
5861
- - module-name: 'tensorflow.python.distribute.multi_worker_test_base' # checksum: 3d614bbf
6024
+ - module-name: 'tensorflow.python.distribute.multi_worker_test_base' # checksum: 28f6ca1b
5862
6025
  anti-bloat:
5863
6026
  - description: 'remove useless tensorflow testing usage'
5864
6027
  replacements_plain:
5865
6028
  'import unittest': 'test = None'
5866
6029
  'from tensorflow.python.framework import test_util': 'test_util = None'
5867
6030
  'from tensorflow.python.platform import test': 'test = None'
6031
+ 'pick_unused_port = test_util.pick_unused_port': ''
6032
+ append_plain: |
6033
+ ASSIGNED_PORTS: set()
6034
+ lock = threading.Lock()
6035
+
6036
+ def pick_unused_port():
6037
+ import portpicker
6038
+ global ASSIGNED_PORTS
6039
+ with lock:
6040
+ while True:
6041
+ try:
6042
+ port = portpicker.pick_unused_port()
6043
+ except portpicker.NoFreePortFoundError as porterror:
6044
+ raise unittest.SkipTest("") from porterror
6045
+ if port > 10000 and port not in ASSIGNED_PORTS:
6046
+ ASSIGNED_PORTS.add(port)
6047
+ logging.info("Using local port %r", port)
6048
+ return port
6049
+ when: 'not use_unittest'
5868
6050
 
5869
- - module-name: 'tensorflow.python.distribute.strategy_combinations' # checksum: 2911563d
6051
+ - module-name: 'tensorflow.python.distribute.strategy_combinations' # checksum: 4c4b9841
5870
6052
  anti-bloat:
5871
6053
  - description: 'remove useless tensorflow testing usage'
5872
6054
  replacements_plain:
@@ -5874,6 +6056,7 @@
5874
6056
  'from tensorflow.python.framework import test_util as framework_test_util': 'framework_test_util = None'
5875
6057
  'from tensorflow.python.distribute import multi_process_runner': 'multi_process_runner = None'
5876
6058
  'from tensorflow.python.distribute import multi_worker_test_base': 'multi_worker_test_base = None'
6059
+ 'import unittest': 'unittest = None'
5877
6060
 
5878
6061
  - module-name: 'tensorflow.python.framework' # checksum: 98664efa
5879
6062
  implicit-imports:
@@ -5881,6 +6064,13 @@
5881
6064
  - 'tensorflow.python.framework.fast_tensor_util'
5882
6065
  when: 'not win32'
5883
6066
 
6067
+ - module-name: 'tensorflow.python.framework.combinations' # checksum: dd5e29c2
6068
+ anti-bloat:
6069
+ - description: 'remove unittest reference'
6070
+ replacements_plain:
6071
+ 'from tensorflow.python.framework import test_combinations': 'test_combinations = None'
6072
+ when: 'not use_unittest'
6073
+
5884
6074
  - module-name: 'tensorflow.python.framework.dtypes' # checksum: 25144a68
5885
6075
  implicit-imports:
5886
6076
  - depends:
@@ -6069,10 +6259,12 @@
6069
6259
  dirs:
6070
6260
  - 'resources'
6071
6261
 
6072
- - module-name: 'toga_winforms' # checksum: 286969f5
6262
+ - module-name: 'toga_winforms' # checksum: 5dda2bcf
6073
6263
  data-files:
6074
6264
  dirs:
6075
6265
  - 'resources'
6266
+ include-metadata:
6267
+ - 'toga-winforms'
6076
6268
  dlls:
6077
6269
  - from_filenames:
6078
6270
  relative_path: 'libs/WebView2/arm64'
@@ -6441,7 +6633,7 @@
6441
6633
  patterns:
6442
6634
  - '*.css'
6443
6635
 
6444
- - module-name: 'transformers' # checksum: 81d84f69
6636
+ - module-name: 'transformers' # checksum: a442ab87
6445
6637
  data-files:
6446
6638
  include-metadata:
6447
6639
  - 'accelerate'
@@ -6463,6 +6655,12 @@
6463
6655
  - 'timm'
6464
6656
  - 'openai'
6465
6657
 
6658
+ anti-bloat:
6659
+ - description: 'remove IPython reference'
6660
+ no-auto-follow:
6661
+ 'IPython': 'ignore'
6662
+ when: 'not use_ipython'
6663
+
6466
6664
  - module-name: 'transformers.integrations' # checksum: ccb3fd3
6467
6665
  anti-bloat:
6468
6666
  - description: 'remove IPython reference'
@@ -6484,6 +6682,27 @@
6484
6682
  'load_cuda_kernels': 'un-callable'
6485
6683
  when: 'not use_setuptools'
6486
6684
 
6685
+ - module-name: 'transformers.models.deformable_detr.modling_deformable_detr' # checksum: baab8e6b
6686
+ anti-bloat:
6687
+ - description: 'remove setuptools usage'
6688
+ change_function:
6689
+ 'load_cuda_kernels': 'un-callable'
6690
+ when: 'not use_setuptools'
6691
+
6692
+ - module-name: 'transformers.models.deta.modeling_deta' # checksum: baab8e6b
6693
+ anti-bloat:
6694
+ - description: 'remove setuptools usage'
6695
+ change_function:
6696
+ 'load_cuda_kernels': 'un-callable'
6697
+ when: 'not use_setuptools'
6698
+
6699
+ - module-name: 'transformers.models.mra.modeling_mra' # checksum: baab8e6b
6700
+ anti-bloat:
6701
+ - description: 'remove setuptools usage'
6702
+ change_function:
6703
+ 'load_cuda_kernels': 'un-callable'
6704
+ when: 'not use_setuptools'
6705
+
6487
6706
  - module-name: 'transformers.models.rwkv.modeling_rwkv' # checksum: f186b69e
6488
6707
  anti-bloat:
6489
6708
  - description: 'remove setuptools usage'
@@ -6491,6 +6710,13 @@
6491
6710
  'load_wkv_cuda_kernel': "'(lambda : None)'"
6492
6711
  when: 'not use_setuptools'
6493
6712
 
6713
+ - module-name: 'transformers.models.yoso.modeling_deta' # checksum: baab8e6b
6714
+ anti-bloat:
6715
+ - description: 'remove setuptools usage'
6716
+ change_function:
6717
+ 'load_cuda_kernels': 'un-callable'
6718
+ when: 'not use_setuptools'
6719
+
6494
6720
  - module-name: 'transformers.models.yoso.modeling_yoso' # checksum: 7f1a78b7
6495
6721
  anti-bloat:
6496
6722
  - description: 'remove setuptools usage'
@@ -6504,13 +6730,6 @@
6504
6730
  replacements_plain:
6505
6731
  'transformers_module = direct_transformers_import(Path(__file__).parent)': 'import transformers as transformers_module'
6506
6732
 
6507
- - module-name: 'transformers.tools.agent_types' # checksum: 7d07a2d1
6508
- anti-bloat:
6509
- - description: 'remove IPython reference'
6510
- no-auto-follow:
6511
- 'IPython': 'ignore'
6512
- when: 'not use_ipython'
6513
-
6514
6733
  - module-name: 'transformers.trainer' # checksum: f71d17eb
6515
6734
  anti-bloat:
6516
6735
  - description: 'remove IPython reference'
@@ -6655,6 +6874,11 @@
6655
6874
  'from distributed import Client': 'raise ImportError'
6656
6875
  when: 'not use_dask'
6657
6876
 
6877
+ - module-name: 'twofish' # checksum: c8ae9b1e
6878
+ implicit-imports:
6879
+ - depends:
6880
+ - '_twofish'
6881
+
6658
6882
  - module-name: 'tzdata' # checksum: dae3c0e3
6659
6883
  data-files:
6660
6884
  dirs:
@@ -6726,6 +6950,13 @@
6726
6950
  - 'websockets.legacy.server'
6727
6951
  - 'uvicorn.logging'
6728
6952
 
6953
+ - module-name: 'uvicorn.importer' # checksum: ada37bba
6954
+ anti-bloat:
6955
+ - description: 'better error message for string imports'
6956
+ replacements_plain:
6957
+ 'Could not import module "{module_str}"': 'Nuitka: Could not import module "{module_str}" use "--include-module={module_str}" option during compilation'
6958
+ when: 'not deployment'
6959
+
6729
6960
  - module-name: 'uvicorn.lifespan' # checksum: f7b81412
6730
6961
  implicit-imports:
6731
6962
  - depends:
@@ -6918,6 +7149,16 @@
6918
7149
  - 'win32comext'
6919
7150
  when: 'win32'
6920
7151
 
7152
+ - module-name: 'win32com.server.register' # checksum: d2ea40f3
7153
+ anti-bloat:
7154
+ - replacements_plain:
7155
+ 'not pythoncom.frozen': 'False'
7156
+ change_function:
7157
+ 'ReExecuteElevated': "'''raise (RuntimeError('Nuitka: Needs to be elevated already, use --windows-uac-admin'))'''"
7158
+ implicit-imports:
7159
+ - depends:
7160
+ - 'win32timezone'
7161
+
6921
7162
  - module-name: 'win32ui' # checksum: 2f1beca2
6922
7163
  implicit-imports:
6923
7164
  - pre-import-code:
@@ -45,6 +45,7 @@ from nuitka.nodes.VariableReleaseNodes import (
45
45
  makeStatementReleaseVariable,
46
46
  makeStatementsReleaseVariables,
47
47
  )
48
+ from nuitka.plugins.Plugins import Plugins
48
49
  from nuitka.PythonVersions import python_version
49
50
 
50
51
  from .ReformulationClasses3 import buildClassNode3
@@ -63,6 +64,10 @@ from .TreeHelpers import (
63
64
  def buildClassNode2(provider, node, source_ref):
64
65
  # This function is the Python2 special case with special re-formulation as
65
66
  # according to Developer Manual, and it's very detailed, pylint: disable=too-many-locals
67
+
68
+ # First, allow plugins to modify the code if they want to.
69
+ Plugins.onClassBodyParsing(provider=provider, class_name=node.name, node=node)
70
+
66
71
  class_statement_nodes, class_doc = extractDocFromBody(node)
67
72
 
68
73
  function_body = ExpressionClassBodyP2(
@@ -79,6 +79,7 @@ from nuitka.nodes.VariableRefNodes import (
79
79
  )
80
80
  from nuitka.nodes.VariableReleaseNodes import makeStatementsReleaseVariables
81
81
  from nuitka.Options import isExperimental
82
+ from nuitka.plugins.Plugins import Plugins
82
83
  from nuitka.PythonVersions import python_version
83
84
  from nuitka.specs.ParameterSpecs import ParameterSpec
84
85
 
@@ -126,6 +127,10 @@ def buildClassNode3(provider, node, source_ref):
126
127
 
127
128
  # This function is the Python3 special case with special re-formulation as
128
129
  # according to Developer Manual.
130
+
131
+ # First, allow plugins to modify the code if they want to.
132
+ Plugins.onClassBodyParsing(provider=provider, class_name=node.name, node=node)
133
+
129
134
  class_statement_nodes, class_doc = extractDocFromBody(node)
130
135
 
131
136
  # We need a scope for the temporary variables, and they might be closured.
@@ -96,7 +96,7 @@ def getMemoryInfos():
96
96
 
97
97
 
98
98
  def collectMemoryUsageValue(memory_usage_name):
99
- assert memory_usage_name not in _memory_infos
99
+ assert memory_usage_name not in _memory_infos, memory_usage_name
100
100
  _memory_infos[memory_usage_name] = getOwnProcessMemoryUsage()
101
101
 
102
102
  return _memory_infos[memory_usage_name]