Nuitka-winsvc 1.8__cp311-cp311-win_amd64.whl → 2.5.1__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 (728) hide show
  1. Nuitka_winsvc-1.8.data/scripts/nuitka-run.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka-run.cmd +9 -9
  2. Nuitka_winsvc-1.8.data/scripts/nuitka.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka.cmd +15 -15
  3. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/METADATA +5 -3
  4. Nuitka_winsvc-2.5.1.dist-info/RECORD +977 -0
  5. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/WHEEL +1 -1
  6. nuitka/Builtins.py +49 -17
  7. nuitka/BytecodeCaching.py +24 -20
  8. nuitka/Bytecodes.py +23 -19
  9. nuitka/CacheCleanup.py +28 -23
  10. nuitka/Constants.py +19 -17
  11. nuitka/Errors.py +23 -17
  12. nuitka/HardImportRegistry.py +408 -0
  13. nuitka/MainControl.py +209 -116
  14. nuitka/ModuleRegistry.py +83 -20
  15. nuitka/OptionParsing.py +467 -221
  16. nuitka/Options.py +701 -225
  17. nuitka/OutputDirectories.py +47 -23
  18. nuitka/PostProcessing.py +133 -79
  19. nuitka/Progress.py +73 -24
  20. nuitka/PythonFlavors.py +141 -32
  21. nuitka/PythonOperators.py +18 -17
  22. nuitka/PythonVersions.py +107 -19
  23. nuitka/Serialization.py +70 -55
  24. nuitka/SourceCodeReferences.py +19 -17
  25. nuitka/Tracing.py +176 -70
  26. nuitka/TreeXML.py +31 -26
  27. nuitka/Variables.py +39 -41
  28. nuitka/Version.py +22 -8
  29. nuitka/__init__.py +5 -4
  30. nuitka/__main__.py +95 -29
  31. nuitka/__past__.py +44 -34
  32. nuitka/build/Backend.scons +243 -141
  33. nuitka/build/CCompilerVersion.scons +45 -31
  34. nuitka/build/DataComposerInterface.py +20 -17
  35. nuitka/build/Onefile.scons +56 -54
  36. nuitka/build/SconsCaching.py +105 -92
  37. nuitka/build/SconsCompilerSettings.py +167 -68
  38. nuitka/build/SconsHacks.py +25 -19
  39. nuitka/build/SconsInterface.py +155 -54
  40. nuitka/build/SconsProgress.py +19 -18
  41. nuitka/build/SconsSpawn.py +62 -33
  42. nuitka/build/SconsUtils.py +152 -55
  43. nuitka/build/__init__.py +5 -4
  44. nuitka/build/include/nuitka/allocator.h +228 -22
  45. nuitka/build/include/nuitka/builtins.h +17 -17
  46. nuitka/build/include/nuitka/calling.h +24 -24
  47. nuitka/build/include/nuitka/checkers.h +17 -18
  48. nuitka/build/include/nuitka/checksum_tools.h +14 -19
  49. nuitka/build/include/nuitka/compiled_asyncgen.h +28 -25
  50. nuitka/build/include/nuitka/compiled_cell.h +33 -18
  51. nuitka/build/include/nuitka/compiled_coroutine.h +18 -18
  52. nuitka/build/include/nuitka/compiled_frame.h +93 -54
  53. nuitka/build/include/nuitka/compiled_function.h +42 -20
  54. nuitka/build/include/nuitka/compiled_generator.h +24 -18
  55. nuitka/build/include/nuitka/compiled_method.h +17 -18
  56. nuitka/build/include/nuitka/constants.h +35 -18
  57. nuitka/build/include/nuitka/constants_blob.h +17 -17
  58. nuitka/build/include/nuitka/debug_settings.h +60 -0
  59. nuitka/build/include/nuitka/environment_variables.h +30 -0
  60. nuitka/build/include/nuitka/environment_variables_system.h +45 -0
  61. nuitka/build/include/nuitka/exception_groups.h +23 -26
  62. nuitka/build/include/nuitka/exceptions.h +717 -171
  63. nuitka/build/include/nuitka/filesystem_paths.h +26 -20
  64. nuitka/build/include/nuitka/freelists.h +38 -18
  65. nuitka/build/include/nuitka/helper/attributes.h +24 -22
  66. nuitka/build/include/nuitka/helper/boolean.h +17 -17
  67. nuitka/build/include/nuitka/helper/bytearrays.h +17 -17
  68. nuitka/build/include/nuitka/helper/bytes.h +14 -15
  69. nuitka/build/include/nuitka/helper/calling_generated.h +69 -69
  70. nuitka/build/include/nuitka/helper/comparisons_dual_eq.h +47 -0
  71. nuitka/build/include/nuitka/helper/comparisons_dual_ge.h +39 -0
  72. nuitka/build/include/nuitka/helper/comparisons_dual_gt.h +39 -0
  73. nuitka/build/include/nuitka/helper/comparisons_dual_le.h +47 -0
  74. nuitka/build/include/nuitka/helper/comparisons_dual_lt.h +47 -0
  75. nuitka/build/include/nuitka/helper/comparisons_dual_ne.h +39 -0
  76. nuitka/build/include/nuitka/helper/comparisons_eq.h +17 -17
  77. nuitka/build/include/nuitka/helper/comparisons_ge.h +17 -17
  78. nuitka/build/include/nuitka/helper/comparisons_gt.h +17 -17
  79. nuitka/build/include/nuitka/helper/comparisons_le.h +17 -17
  80. nuitka/build/include/nuitka/helper/comparisons_lt.h +17 -17
  81. nuitka/build/include/nuitka/helper/comparisons_ne.h +17 -17
  82. nuitka/build/include/nuitka/helper/complex.h +17 -17
  83. nuitka/build/include/nuitka/helper/dictionaries.h +89 -51
  84. nuitka/build/include/nuitka/helper/floats.h +17 -18
  85. nuitka/build/include/nuitka/helper/import_hard.h +25 -17
  86. nuitka/build/include/nuitka/helper/indexes.h +17 -18
  87. nuitka/build/include/nuitka/helper/ints.h +115 -54
  88. nuitka/build/include/nuitka/helper/iterators.h +99 -51
  89. nuitka/build/include/nuitka/helper/lists.h +26 -24
  90. nuitka/build/include/nuitka/helper/lists_generated.h +22 -22
  91. nuitka/build/include/nuitka/helper/mappings.h +17 -18
  92. nuitka/build/include/nuitka/helper/operations.h +20 -17
  93. nuitka/build/include/nuitka/helper/operations_binary_add.h +23 -17
  94. nuitka/build/include/nuitka/helper/operations_binary_bitand.h +17 -17
  95. nuitka/build/include/nuitka/helper/operations_binary_bitor.h +17 -17
  96. nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +17 -17
  97. nuitka/build/include/nuitka/helper/operations_binary_divmod.h +17 -17
  98. nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
  99. nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +17 -17
  100. nuitka/build/include/nuitka/helper/operations_binary_lshift.h +17 -17
  101. nuitka/build/include/nuitka/helper/operations_binary_matmult.h +17 -17
  102. nuitka/build/include/nuitka/helper/operations_binary_mod.h +17 -17
  103. nuitka/build/include/nuitka/helper/operations_binary_mult.h +17 -17
  104. nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +17 -17
  105. nuitka/build/include/nuitka/helper/operations_binary_pow.h +17 -17
  106. nuitka/build/include/nuitka/helper/operations_binary_rshift.h +17 -17
  107. nuitka/build/include/nuitka/helper/operations_binary_sub.h +23 -17
  108. nuitka/build/include/nuitka/helper/operations_binary_truediv.h +17 -17
  109. nuitka/build/include/nuitka/helper/operations_builtin_types.h +17 -17
  110. nuitka/build/include/nuitka/helper/operations_inplace_add.h +20 -17
  111. nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +17 -17
  112. nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +17 -17
  113. nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +17 -17
  114. nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +17 -17
  115. nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +17 -17
  116. nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +17 -17
  117. nuitka/build/include/nuitka/helper/operations_inplace_mod.h +17 -17
  118. nuitka/build/include/nuitka/helper/operations_inplace_mult.h +17 -17
  119. nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +17 -17
  120. nuitka/build/include/nuitka/helper/operations_inplace_pow.h +17 -17
  121. nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +17 -17
  122. nuitka/build/include/nuitka/helper/operations_inplace_sub.h +20 -17
  123. nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
  124. nuitka/build/include/nuitka/helper/raising.h +68 -37
  125. nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
  126. nuitka/build/include/nuitka/helper/richcomparisons.h +21 -14
  127. nuitka/build/include/nuitka/helper/sequences.h +19 -13
  128. nuitka/build/include/nuitka/helper/sets.h +11 -12
  129. nuitka/build/include/nuitka/helper/slices.h +31 -25
  130. nuitka/build/include/nuitka/helper/strings.h +16 -17
  131. nuitka/build/include/nuitka/helper/subscripts.h +18 -201
  132. nuitka/build/include/nuitka/helper/tuples.h +64 -52
  133. nuitka/build/include/nuitka/helpers.h +50 -22
  134. nuitka/build/include/nuitka/importing.h +28 -21
  135. nuitka/build/include/nuitka/jit_sources.h +25 -0
  136. nuitka/build/include/nuitka/prelude.h +163 -71
  137. nuitka/build/include/nuitka/printing.h +29 -22
  138. nuitka/build/include/nuitka/python_pgo.h +19 -18
  139. nuitka/build/include/nuitka/safe_string_ops.h +20 -18
  140. nuitka/build/include/nuitka/threading.h +45 -32
  141. nuitka/build/include/nuitka/tracing.h +28 -18
  142. nuitka/build/include/nuitka/type_aliases.h +30 -0
  143. nuitka/build/include/nuitka/unfreezing.h +29 -23
  144. nuitka/build/inline_copy/bin/scons.py +14 -0
  145. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +6 -6
  146. nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +0 -3
  147. nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
  148. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
  149. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
  150. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
  151. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
  152. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
  153. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
  154. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
  155. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
  156. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
  157. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
  158. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
  159. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
  160. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
  161. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
  162. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
  163. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
  164. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
  165. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
  166. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
  167. nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
  168. nuitka/build/inline_copy/stubgen/astunparse.py +938 -0
  169. nuitka/build/inline_copy/stubgen/six.py +998 -0
  170. nuitka/build/inline_copy/stubgen/stubgen.py +307 -0
  171. nuitka/build/inline_copy/tqdm/tqdm/__init__.py +2 -2
  172. nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +4 -1
  173. nuitka/build/inline_copy/tqdm/tqdm/utils.py +14 -8
  174. nuitka/build/inline_copy/tqdm/tqdm/version.py +1 -8
  175. nuitka/build/inline_copy/zlib/LICENSE +22 -0
  176. nuitka/build/inline_copy/zlib/crc32.c +1049 -0
  177. nuitka/build/inline_copy/zlib/crc32.h +9446 -0
  178. nuitka/build/inline_copy/zlib/zconf.h +551 -0
  179. nuitka/build/inline_copy/zlib/zlib.h +1938 -0
  180. nuitka/build/inline_copy/zlib/zutil.h +275 -0
  181. nuitka/build/static_src/CompiledAsyncgenType.c +221 -221
  182. nuitka/build/static_src/CompiledCellType.c +69 -44
  183. nuitka/build/static_src/CompiledCodeHelpers.c +276 -159
  184. nuitka/build/static_src/CompiledCoroutineType.c +229 -226
  185. nuitka/build/static_src/CompiledFrameType.c +323 -138
  186. nuitka/build/static_src/CompiledFunctionType.c +547 -231
  187. nuitka/build/static_src/CompiledGeneratorType.c +416 -290
  188. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +593 -228
  189. nuitka/build/static_src/CompiledMethodType.c +91 -82
  190. nuitka/build/static_src/HelpersAllocator.c +352 -45
  191. nuitka/build/static_src/HelpersAttributes.c +30 -72
  192. nuitka/build/static_src/HelpersBuiltin.c +65 -46
  193. nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
  194. nuitka/build/static_src/HelpersBytes.c +19 -20
  195. nuitka/build/static_src/HelpersCalling.c +40 -37
  196. nuitka/build/static_src/HelpersCallingGenerated.c +1061 -242
  197. nuitka/build/static_src/HelpersChecksumTools.c +35 -21
  198. nuitka/build/static_src/HelpersClasses.c +17 -17
  199. nuitka/build/static_src/HelpersComparisonDualEq.c +183 -0
  200. nuitka/build/static_src/HelpersComparisonDualGe.c +121 -0
  201. nuitka/build/static_src/HelpersComparisonDualGt.c +121 -0
  202. nuitka/build/static_src/HelpersComparisonDualLe.c +183 -0
  203. nuitka/build/static_src/HelpersComparisonDualLt.c +183 -0
  204. nuitka/build/static_src/HelpersComparisonDualNe.c +121 -0
  205. nuitka/build/static_src/HelpersComparisonEq.c +536 -496
  206. nuitka/build/static_src/HelpersComparisonEqUtils.c +22 -19
  207. nuitka/build/static_src/HelpersComparisonGe.c +531 -501
  208. nuitka/build/static_src/HelpersComparisonGt.c +530 -500
  209. nuitka/build/static_src/HelpersComparisonLe.c +531 -501
  210. nuitka/build/static_src/HelpersComparisonLt.c +530 -500
  211. nuitka/build/static_src/HelpersComparisonNe.c +538 -496
  212. nuitka/build/static_src/HelpersConsole.c +122 -0
  213. nuitka/build/static_src/HelpersConstantsBlob.c +550 -521
  214. nuitka/build/static_src/HelpersDeepcopy.c +33 -33
  215. nuitka/build/static_src/HelpersDictionaries.c +232 -63
  216. nuitka/build/static_src/HelpersDictionariesGenerated.c +130 -127
  217. nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
  218. nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
  219. nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +93 -0
  220. nuitka/build/static_src/HelpersExceptions.c +147 -62
  221. nuitka/build/static_src/HelpersFiles.c +116 -22
  222. nuitka/build/static_src/HelpersFilesystemPaths.c +292 -181
  223. nuitka/build/static_src/HelpersFloats.c +37 -31
  224. nuitka/build/static_src/HelpersHeapStorage.c +21 -17
  225. nuitka/build/static_src/HelpersImport.c +61 -29
  226. nuitka/build/static_src/HelpersImportHard.c +74 -61
  227. nuitka/build/static_src/HelpersJitSources.c +46 -0
  228. nuitka/build/static_src/HelpersLists.c +237 -58
  229. nuitka/build/static_src/HelpersListsGenerated.c +41 -41
  230. nuitka/build/static_src/HelpersMappings.c +17 -17
  231. nuitka/build/static_src/HelpersMatching.c +137 -51
  232. nuitka/build/static_src/HelpersOperationBinaryAdd.c +397 -152
  233. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +102 -52
  234. nuitka/build/static_src/HelpersOperationBinaryBitand.c +55 -55
  235. nuitka/build/static_src/HelpersOperationBinaryBitor.c +55 -55
  236. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +55 -55
  237. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +49 -43
  238. nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
  239. nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
  240. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +55 -49
  241. nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +20 -21
  242. nuitka/build/static_src/HelpersOperationBinaryLshift.c +83 -83
  243. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +25 -24
  244. nuitka/build/static_src/HelpersOperationBinaryMod.c +129 -117
  245. nuitka/build/static_src/HelpersOperationBinaryMult.c +98 -82
  246. nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +33 -30
  247. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +55 -49
  248. nuitka/build/static_src/HelpersOperationBinaryPow.c +68 -68
  249. nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
  250. nuitka/build/static_src/HelpersOperationBinaryRshift.c +51 -51
  251. nuitka/build/static_src/HelpersOperationBinarySub.c +309 -88
  252. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +49 -43
  253. nuitka/build/static_src/HelpersOperationInplaceAdd.c +333 -163
  254. nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +24 -22
  255. nuitka/build/static_src/HelpersOperationInplaceBitand.c +58 -58
  256. nuitka/build/static_src/HelpersOperationInplaceBitor.c +58 -58
  257. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +58 -58
  258. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +73 -68
  259. nuitka/build/static_src/HelpersOperationInplaceLshift.c +64 -64
  260. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +38 -37
  261. nuitka/build/static_src/HelpersOperationInplaceMod.c +145 -140
  262. nuitka/build/static_src/HelpersOperationInplaceMult.c +89 -84
  263. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +73 -68
  264. nuitka/build/static_src/HelpersOperationInplacePow.c +82 -82
  265. nuitka/build/static_src/HelpersOperationInplaceRshift.c +48 -48
  266. nuitka/build/static_src/HelpersOperationInplaceSub.c +275 -122
  267. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +68 -63
  268. nuitka/build/static_src/HelpersProfiling.c +25 -24
  269. nuitka/build/static_src/HelpersPythonPgo.c +22 -22
  270. nuitka/build/static_src/HelpersRaising.c +296 -283
  271. nuitka/build/static_src/HelpersSafeStrings.c +34 -22
  272. nuitka/build/static_src/HelpersSequences.c +18 -19
  273. nuitka/build/static_src/HelpersSlices.c +29 -23
  274. nuitka/build/static_src/HelpersStrings.c +235 -38
  275. nuitka/build/static_src/HelpersTuples.c +46 -34
  276. nuitka/build/static_src/HelpersTypes.c +166 -25
  277. nuitka/build/static_src/InspectPatcher.c +108 -27
  278. nuitka/build/static_src/MainProgram.c +464 -280
  279. nuitka/build/static_src/MetaPathBasedLoader.c +381 -257
  280. nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +39 -26
  281. nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
  282. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +227 -29
  283. nuitka/build/static_src/OnefileBootstrap.c +281 -164
  284. nuitka/build/static_src/OnefileSplashScreen.cpp +51 -27
  285. nuitka/code_generation/AsyncgenCodes.py +21 -23
  286. nuitka/code_generation/AttributeCodes.py +31 -27
  287. nuitka/code_generation/BinaryOperationHelperDefinitions.py +290 -184
  288. nuitka/code_generation/BranchCodes.py +19 -17
  289. nuitka/code_generation/BuiltinCodes.py +29 -18
  290. nuitka/code_generation/CallCodes.py +35 -33
  291. nuitka/code_generation/ClassCodes.py +19 -17
  292. nuitka/code_generation/CodeGeneration.py +61 -28
  293. nuitka/code_generation/CodeHelperSelection.py +20 -18
  294. nuitka/code_generation/CodeHelpers.py +28 -21
  295. nuitka/code_generation/CodeObjectCodes.py +36 -26
  296. nuitka/code_generation/ComparisonCodes.py +51 -22
  297. nuitka/code_generation/ComparisonHelperDefinitions.py +42 -25
  298. nuitka/code_generation/ConditionalCodes.py +19 -17
  299. nuitka/code_generation/ConstantCodes.py +82 -28
  300. nuitka/code_generation/Contexts.py +180 -42
  301. nuitka/code_generation/CoroutineCodes.py +21 -23
  302. nuitka/code_generation/CtypesCodes.py +19 -17
  303. nuitka/code_generation/DictCodes.py +28 -26
  304. nuitka/code_generation/Emission.py +21 -18
  305. nuitka/code_generation/ErrorCodes.py +57 -79
  306. nuitka/code_generation/EvalCodes.py +24 -20
  307. nuitka/code_generation/ExceptionCodes.py +182 -104
  308. nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +45 -27
  309. nuitka/code_generation/ExpressionCodes.py +19 -17
  310. nuitka/code_generation/FrameCodes.py +28 -31
  311. nuitka/code_generation/FunctionCodes.py +26 -27
  312. nuitka/code_generation/GeneratorCodes.py +25 -26
  313. nuitka/code_generation/GlobalConstants.py +51 -25
  314. nuitka/code_generation/GlobalsLocalsCodes.py +23 -21
  315. nuitka/code_generation/IdCodes.py +19 -17
  316. nuitka/code_generation/ImportCodes.py +90 -50
  317. nuitka/code_generation/Indentation.py +23 -22
  318. nuitka/code_generation/IndexCodes.py +19 -17
  319. nuitka/code_generation/InjectCCodes.py +14 -12
  320. nuitka/code_generation/IntegerCodes.py +19 -17
  321. nuitka/code_generation/IteratorCodes.py +86 -71
  322. nuitka/code_generation/JitCodes.py +44 -0
  323. nuitka/code_generation/LabelCodes.py +19 -17
  324. nuitka/code_generation/LineNumberCodes.py +20 -20
  325. nuitka/code_generation/ListCodes.py +32 -36
  326. nuitka/code_generation/LoaderCodes.py +22 -17
  327. nuitka/code_generation/LocalsDictCodes.py +56 -32
  328. nuitka/code_generation/LoopCodes.py +19 -17
  329. nuitka/code_generation/MatchCodes.py +42 -22
  330. nuitka/code_generation/ModuleCodes.py +71 -29
  331. nuitka/code_generation/Namify.py +27 -23
  332. nuitka/code_generation/NetworkxCodes.py +51 -0
  333. nuitka/code_generation/OperationCodes.py +80 -51
  334. nuitka/code_generation/PackageResourceCodes.py +96 -23
  335. nuitka/code_generation/PrintCodes.py +19 -17
  336. nuitka/code_generation/PythonAPICodes.py +19 -17
  337. nuitka/code_generation/RaisingCodes.py +183 -107
  338. nuitka/code_generation/Reports.py +32 -22
  339. nuitka/code_generation/ReturnCodes.py +20 -32
  340. nuitka/code_generation/SetCodes.py +19 -17
  341. nuitka/code_generation/SliceCodes.py +22 -20
  342. nuitka/code_generation/StringCodes.py +19 -17
  343. nuitka/code_generation/SubscriptCodes.py +24 -30
  344. nuitka/code_generation/TensorflowCodes.py +54 -0
  345. nuitka/code_generation/TryCodes.py +31 -41
  346. nuitka/code_generation/TupleCodes.py +20 -18
  347. nuitka/code_generation/TypeAliasCodes.py +119 -0
  348. nuitka/code_generation/VariableCodes.py +118 -55
  349. nuitka/code_generation/VariableDeclarations.py +28 -25
  350. nuitka/code_generation/YieldCodes.py +23 -21
  351. nuitka/code_generation/__init__.py +5 -4
  352. nuitka/code_generation/c_types/CTypeBases.py +29 -19
  353. nuitka/code_generation/c_types/CTypeBooleans.py +19 -17
  354. nuitka/code_generation/c_types/CTypeCFloats.py +19 -17
  355. nuitka/code_generation/c_types/CTypeCLongs.py +19 -18
  356. nuitka/code_generation/c_types/CTypeModuleDictVariables.py +22 -17
  357. nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +22 -21
  358. nuitka/code_generation/c_types/CTypeNuitkaInts.py +89 -43
  359. nuitka/code_generation/c_types/CTypeNuitkaVoids.py +20 -18
  360. nuitka/code_generation/c_types/CTypePyObjectPointers.py +43 -31
  361. nuitka/code_generation/c_types/CTypeVoids.py +20 -17
  362. nuitka/code_generation/c_types/__init__.py +5 -4
  363. nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +20 -19
  364. nuitka/code_generation/templates/CodeTemplatesConstants.py +143 -39
  365. nuitka/code_generation/templates/CodeTemplatesCoroutines.py +20 -19
  366. nuitka/code_generation/templates/CodeTemplatesExceptions.py +33 -33
  367. nuitka/code_generation/templates/CodeTemplatesFrames.py +36 -27
  368. nuitka/code_generation/templates/CodeTemplatesFunction.py +20 -19
  369. nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +21 -19
  370. nuitka/code_generation/templates/CodeTemplatesIterators.py +19 -53
  371. nuitka/code_generation/templates/CodeTemplatesLoader.py +25 -19
  372. nuitka/code_generation/templates/CodeTemplatesModules.py +278 -169
  373. nuitka/code_generation/templates/CodeTemplatesVariables.py +115 -27
  374. nuitka/code_generation/templates/TemplateDebugWrapper.py +19 -18
  375. nuitka/code_generation/templates/__init__.py +5 -4
  376. nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +19 -19
  377. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +21 -21
  378. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +79 -28
  379. nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +22 -22
  380. nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +19 -19
  381. nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +19 -19
  382. nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +17 -17
  383. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +74 -106
  384. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +19 -20
  385. nuitka/code_generation/templates_c/HelperLongTools.c.j2 +19 -19
  386. nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +6 -6
  387. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +23 -23
  388. nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
  389. nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +35 -35
  390. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +37 -37
  391. nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
  392. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +17 -17
  393. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +18 -18
  394. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +50 -38
  395. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +27 -27
  396. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +37 -37
  397. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +31 -31
  398. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +35 -31
  399. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +20 -20
  400. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +28 -28
  401. nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +17 -17
  402. nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +17 -17
  403. nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +17 -17
  404. nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +48 -48
  405. nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +21 -18
  406. nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +27 -25
  407. nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +17 -17
  408. nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +17 -17
  409. nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +21 -18
  410. nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +17 -17
  411. nuitka/containers/Namedtuples.py +25 -18
  412. nuitka/containers/OrderedSets.py +105 -5
  413. nuitka/containers/OrderedSetsFallback.py +19 -17
  414. nuitka/containers/__init__.py +5 -4
  415. nuitka/distutils/Build.py +33 -18
  416. nuitka/distutils/DistutilCommands.py +84 -33
  417. nuitka/distutils/__init__.py +5 -4
  418. nuitka/finalizations/Finalization.py +21 -18
  419. nuitka/finalizations/FinalizeMarkups.py +31 -55
  420. nuitka/finalizations/__init__.py +5 -4
  421. nuitka/freezer/DependsExe.py +60 -30
  422. nuitka/freezer/DllDependenciesCommon.py +47 -20
  423. nuitka/freezer/DllDependenciesMacOS.py +165 -58
  424. nuitka/freezer/DllDependenciesPosix.py +29 -19
  425. nuitka/freezer/DllDependenciesWin32.py +55 -33
  426. nuitka/freezer/ImportDetection.py +23 -17
  427. nuitka/freezer/IncludedDataFiles.py +142 -48
  428. nuitka/freezer/IncludedEntryPoints.py +104 -39
  429. nuitka/freezer/Onefile.py +32 -22
  430. nuitka/freezer/Standalone.py +166 -53
  431. nuitka/freezer/__init__.py +5 -4
  432. nuitka/importing/IgnoreListing.py +19 -17
  433. nuitka/importing/ImportCache.py +24 -21
  434. nuitka/importing/ImportResolving.py +103 -95
  435. nuitka/importing/Importing.py +319 -98
  436. nuitka/importing/PreloadedPackages.py +21 -18
  437. nuitka/importing/Recursion.py +142 -47
  438. nuitka/importing/StandardLibrary.py +96 -80
  439. nuitka/importing/__init__.py +5 -4
  440. nuitka/nodes/AsyncgenNodes.py +22 -23
  441. nuitka/nodes/AttributeLookupNodes.py +19 -17
  442. nuitka/nodes/AttributeNodes.py +19 -17
  443. nuitka/nodes/AttributeNodesGenerated.py +49 -24
  444. nuitka/nodes/BuiltinAllNodes.py +19 -17
  445. nuitka/nodes/BuiltinAnyNodes.py +19 -17
  446. nuitka/nodes/BuiltinComplexNodes.py +20 -17
  447. nuitka/nodes/BuiltinDecodingNodes.py +19 -17
  448. nuitka/nodes/BuiltinDecoratorNodes.py +19 -17
  449. nuitka/nodes/BuiltinDictNodes.py +19 -17
  450. nuitka/nodes/BuiltinFormatNodes.py +20 -17
  451. nuitka/nodes/BuiltinHashNodes.py +19 -17
  452. nuitka/nodes/BuiltinInputNodes.py +19 -17
  453. nuitka/nodes/BuiltinIntegerNodes.py +19 -17
  454. nuitka/nodes/BuiltinIteratorNodes.py +25 -21
  455. nuitka/nodes/BuiltinLenNodes.py +19 -17
  456. nuitka/nodes/BuiltinNextNodes.py +19 -17
  457. nuitka/nodes/BuiltinOpenNodes.py +52 -18
  458. nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +40 -23
  459. nuitka/nodes/BuiltinRangeNodes.py +21 -19
  460. nuitka/nodes/BuiltinRefNodes.py +73 -40
  461. nuitka/nodes/BuiltinSumNodes.py +20 -18
  462. nuitka/nodes/BuiltinTypeNodes.py +19 -17
  463. nuitka/nodes/BuiltinVarsNodes.py +19 -18
  464. nuitka/nodes/BytesNodes.py +19 -17
  465. nuitka/nodes/CallNodes.py +19 -17
  466. nuitka/nodes/Checkers.py +19 -17
  467. nuitka/nodes/ChildrenHavingMixins.py +1624 -283
  468. nuitka/nodes/ClassNodes.py +49 -29
  469. nuitka/nodes/CodeObjectSpecs.py +29 -18
  470. nuitka/nodes/ComparisonNodes.py +19 -17
  471. nuitka/nodes/ConditionalNodes.py +24 -25
  472. nuitka/nodes/ConstantRefNodes.py +57 -17
  473. nuitka/nodes/ContainerMakingNodes.py +19 -17
  474. nuitka/nodes/ContainerOperationNodes.py +19 -17
  475. nuitka/nodes/CoroutineNodes.py +22 -23
  476. nuitka/nodes/CtypesNodes.py +19 -18
  477. nuitka/nodes/DictionaryNodes.py +19 -18
  478. nuitka/nodes/ExceptionNodes.py +131 -43
  479. nuitka/nodes/ExecEvalNodes.py +19 -17
  480. nuitka/nodes/ExpressionBases.py +34 -26
  481. nuitka/nodes/ExpressionBasesGenerated.py +341 -35
  482. nuitka/nodes/ExpressionShapeMixins.py +19 -17
  483. nuitka/nodes/FrameNodes.py +41 -28
  484. nuitka/nodes/FunctionAttributeNodes.py +19 -17
  485. nuitka/nodes/FunctionNodes.py +84 -38
  486. nuitka/nodes/FutureSpecs.py +35 -20
  487. nuitka/nodes/GeneratorNodes.py +24 -25
  488. nuitka/nodes/GlobalsLocalsNodes.py +22 -17
  489. nuitka/nodes/HardImportNodesGenerated.py +746 -148
  490. nuitka/nodes/ImportHardNodes.py +46 -38
  491. nuitka/nodes/ImportNodes.py +438 -448
  492. nuitka/nodes/IndicatorMixins.py +19 -17
  493. nuitka/nodes/InjectCNodes.py +19 -18
  494. nuitka/nodes/IterationHandles.py +55 -34
  495. nuitka/nodes/KeyValuePairNodes.py +19 -17
  496. nuitka/nodes/ListOperationNodes.py +33 -21
  497. nuitka/nodes/LocalsDictNodes.py +19 -17
  498. nuitka/nodes/LocalsScopes.py +41 -41
  499. nuitka/nodes/LoopNodes.py +28 -17
  500. nuitka/nodes/MatchNodes.py +37 -24
  501. nuitka/nodes/ModuleAttributeNodes.py +18 -35
  502. nuitka/nodes/ModuleNodes.py +90 -31
  503. nuitka/nodes/NetworkxNodes.py +45 -0
  504. nuitka/nodes/NodeBases.py +73 -44
  505. nuitka/nodes/NodeMakingHelpers.py +92 -69
  506. nuitka/nodes/NodeMetaClasses.py +45 -28
  507. nuitka/nodes/OperatorNodes.py +28 -26
  508. nuitka/nodes/OperatorNodesUnary.py +148 -20
  509. nuitka/nodes/OsSysNodes.py +97 -18
  510. nuitka/nodes/OutlineNodes.py +24 -22
  511. nuitka/nodes/PackageMetadataNodes.py +37 -27
  512. nuitka/nodes/PackageResourceNodes.py +29 -23
  513. nuitka/nodes/PrintNodes.py +19 -17
  514. nuitka/nodes/ReturnNodes.py +20 -18
  515. nuitka/nodes/SideEffectNodes.py +19 -17
  516. nuitka/nodes/SliceNodes.py +20 -18
  517. nuitka/nodes/StatementBasesGenerated.py +125 -79
  518. nuitka/nodes/StatementNodes.py +27 -24
  519. nuitka/nodes/StrNodes.py +19 -17
  520. nuitka/nodes/StringConcatenationNodes.py +20 -17
  521. nuitka/nodes/SubscriptNodes.py +27 -25
  522. nuitka/nodes/TensorflowNodes.py +38 -0
  523. nuitka/nodes/TryNodes.py +19 -17
  524. nuitka/nodes/TypeMatchNodes.py +19 -17
  525. nuitka/nodes/TypeNodes.py +68 -18
  526. nuitka/nodes/VariableAssignNodes.py +122 -64
  527. nuitka/nodes/VariableDelNodes.py +19 -17
  528. nuitka/nodes/VariableNameNodes.py +19 -17
  529. nuitka/nodes/VariableRefNodes.py +63 -26
  530. nuitka/nodes/VariableReleaseNodes.py +19 -17
  531. nuitka/nodes/YieldNodes.py +21 -19
  532. nuitka/nodes/__init__.py +5 -4
  533. nuitka/nodes/shapes/BuiltinTypeShapes.py +169 -46
  534. nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
  535. nuitka/nodes/shapes/ShapeMixins.py +57 -17
  536. nuitka/nodes/shapes/StandardShapes.py +80 -21
  537. nuitka/nodes/shapes/__init__.py +5 -4
  538. nuitka/optimizations/BytecodeDemotion.py +21 -18
  539. nuitka/optimizations/FunctionInlining.py +22 -23
  540. nuitka/optimizations/Graphs.py +19 -17
  541. nuitka/optimizations/Optimization.py +39 -35
  542. nuitka/optimizations/OptimizeBuiltinCalls.py +31 -27
  543. nuitka/optimizations/Tags.py +19 -18
  544. nuitka/optimizations/TraceCollections.py +67 -24
  545. nuitka/optimizations/ValueTraces.py +92 -25
  546. nuitka/optimizations/__init__.py +5 -4
  547. nuitka/pgo/PGO.py +33 -23
  548. nuitka/pgo/__init__.py +5 -4
  549. nuitka/plugins/PluginBase.py +655 -112
  550. nuitka/plugins/Plugins.py +247 -61
  551. nuitka/plugins/YamlPluginBase.py +121 -0
  552. nuitka/plugins/__init__.py +5 -4
  553. nuitka/plugins/standard/AntiBloatPlugin.py +374 -135
  554. nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +20 -19
  555. nuitka/plugins/standard/DataFilesPlugin.py +65 -29
  556. nuitka/plugins/standard/DelvewheelPlugin.py +32 -24
  557. nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
  558. nuitka/plugins/standard/DillPlugin/dill-postLoad.py +256 -0
  559. nuitka/plugins/standard/DillPlugin.py +42 -134
  560. nuitka/plugins/standard/DllFilesPlugin.py +125 -42
  561. nuitka/plugins/standard/EnumPlugin.py +19 -17
  562. nuitka/plugins/standard/EventletPlugin.py +19 -17
  563. nuitka/plugins/standard/GeventPlugin.py +19 -17
  564. nuitka/plugins/standard/GiPlugin.py +44 -28
  565. nuitka/plugins/standard/GlfwPlugin.py +20 -17
  566. nuitka/plugins/standard/ImplicitImports.py +403 -54
  567. nuitka/plugins/standard/KivyPlugin.py +24 -20
  568. nuitka/plugins/standard/MatplotlibPlugin.py +99 -42
  569. nuitka/plugins/standard/MultiprocessingPlugin.py +35 -39
  570. nuitka/plugins/standard/NumpyPlugin.py +19 -17
  571. nuitka/plugins/standard/OptionsNannyPlugin.py +48 -76
  572. nuitka/plugins/standard/PbrPlugin.py +21 -19
  573. nuitka/plugins/standard/PkgResourcesPlugin.py +34 -23
  574. nuitka/plugins/standard/PlaywrightPlugin.py +184 -0
  575. nuitka/plugins/standard/PmwPlugin.py +30 -27
  576. nuitka/plugins/standard/PySidePyQtPlugin.py +82 -80
  577. nuitka/plugins/standard/PywebViewPlugin.py +19 -17
  578. nuitka/plugins/standard/SpacyPlugin.py +136 -0
  579. nuitka/plugins/standard/TensorflowPlugin.py +20 -17
  580. nuitka/plugins/standard/TkinterPlugin.py +102 -108
  581. nuitka/plugins/standard/TorchPlugin.py +20 -17
  582. nuitka/plugins/standard/TransformersPlugin.py +90 -231
  583. nuitka/plugins/standard/TrioPlugin.py +18 -15
  584. nuitka/plugins/standard/UpxPlugin.py +21 -19
  585. nuitka/plugins/standard/__init__.py +5 -4
  586. nuitka/plugins/standard/standard.nuitka-package.config.yml +3925 -1293
  587. nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +14 -14
  588. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +154 -66
  589. nuitka/reports/CompilationReportReader.py +79 -0
  590. nuitka/reports/LicenseReport.rst.j2 +21 -21
  591. nuitka/reports/Reports.py +363 -76
  592. nuitka/reports/__init__.py +5 -4
  593. nuitka/specs/BuiltinBytesOperationSpecs.py +18 -17
  594. nuitka/specs/BuiltinDictOperationSpecs.py +18 -17
  595. nuitka/specs/BuiltinListOperationSpecs.py +18 -17
  596. nuitka/specs/BuiltinParameterSpecs.py +35 -21
  597. nuitka/specs/BuiltinStrOperationSpecs.py +19 -18
  598. nuitka/specs/BuiltinTypeOperationSpecs.py +18 -18
  599. nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
  600. nuitka/specs/HardImportSpecs.py +74 -22
  601. nuitka/specs/ParameterSpecs.py +60 -45
  602. nuitka/specs/__init__.py +5 -4
  603. nuitka/tools/Basics.py +20 -18
  604. nuitka/tools/__init__.py +5 -4
  605. nuitka/tools/commercial/__init__.py +7 -6
  606. nuitka/tools/data_composer/DataComposer.py +78 -62
  607. nuitka/tools/data_composer/__init__.py +5 -4
  608. nuitka/tools/data_composer/__main__.py +18 -17
  609. nuitka/tools/environments/CreateEnvironment.py +20 -17
  610. nuitka/tools/environments/Virtualenv.py +60 -32
  611. nuitka/tools/environments/__init__.py +5 -4
  612. nuitka/tools/general/__init__.py +5 -4
  613. nuitka/tools/general/dll_report/__init__.py +5 -4
  614. nuitka/tools/general/dll_report/__main__.py +29 -22
  615. nuitka/tools/general/find_module/FindModuleCode.py +35 -22
  616. nuitka/tools/general/find_module/__init__.py +5 -4
  617. nuitka/tools/onefile_compressor/OnefileCompressor.py +213 -131
  618. nuitka/tools/onefile_compressor/__init__.py +5 -4
  619. nuitka/tools/onefile_compressor/__main__.py +18 -17
  620. nuitka/tools/podman/Podman.py +19 -17
  621. nuitka/tools/podman/__init__.py +5 -4
  622. nuitka/tools/podman/__main__.py +35 -19
  623. nuitka/tools/profiler/__init__.py +5 -4
  624. nuitka/tools/profiler/__main__.py +18 -17
  625. nuitka/tools/scanning/DisplayPackageDLLs.py +47 -22
  626. nuitka/tools/scanning/DisplayPackageData.py +31 -19
  627. nuitka/tools/scanning/__init__.py +5 -4
  628. nuitka/tools/specialize/CTypeDescriptions.py +251 -80
  629. nuitka/tools/specialize/Common.py +18 -17
  630. nuitka/tools/specialize/SpecializeC.py +248 -82
  631. nuitka/tools/specialize/SpecializePython.py +108 -45
  632. nuitka/tools/specialize/__init__.py +5 -4
  633. nuitka/tools/testing/Common.py +175 -114
  634. nuitka/tools/testing/Constructs.py +19 -17
  635. nuitka/tools/testing/OutputComparison.py +54 -18
  636. nuitka/tools/testing/Pythons.py +19 -18
  637. nuitka/tools/testing/RuntimeTracing.py +20 -19
  638. nuitka/tools/testing/SearchModes.py +26 -20
  639. nuitka/tools/testing/Valgrind.py +19 -17
  640. nuitka/tools/testing/__init__.py +5 -4
  641. nuitka/tools/testing/check_reference_counts/__init__.py +5 -4
  642. nuitka/tools/testing/check_reference_counts/__main__.py +18 -18
  643. nuitka/tools/testing/compare_with_cpython/__init__.py +5 -4
  644. nuitka/tools/testing/compare_with_cpython/__main__.py +39 -30
  645. nuitka/tools/testing/find_sxs_modules/__init__.py +5 -4
  646. nuitka/tools/testing/find_sxs_modules/__main__.py +17 -17
  647. nuitka/tools/testing/measure_construct_performance/__init__.py +5 -4
  648. nuitka/tools/testing/measure_construct_performance/__main__.py +23 -33
  649. nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
  650. nuitka/tools/testing/run_nuitka_tests/__main__.py +134 -51
  651. nuitka/tools/watch/AutoStage.py +145 -0
  652. nuitka/tools/watch/GitHub.py +113 -0
  653. nuitka/tools/watch/__init__.py +5 -4
  654. nuitka/tools/watch/__main__.py +322 -91
  655. nuitka/tree/Building.py +184 -182
  656. nuitka/tree/ComplexCallHelperFunctions.py +84 -58
  657. nuitka/tree/Extractions.py +19 -17
  658. nuitka/tree/InternalModule.py +29 -20
  659. nuitka/tree/Operations.py +19 -17
  660. nuitka/tree/ReformulationAssertStatements.py +51 -31
  661. nuitka/tree/ReformulationAssignmentStatements.py +96 -91
  662. nuitka/tree/ReformulationBooleanExpressions.py +19 -17
  663. nuitka/tree/ReformulationCallExpressions.py +20 -18
  664. nuitka/tree/ReformulationClasses.py +45 -39
  665. nuitka/tree/ReformulationClasses3.py +239 -116
  666. nuitka/tree/ReformulationComparisonExpressions.py +29 -35
  667. nuitka/tree/ReformulationContractionExpressions.py +58 -55
  668. nuitka/tree/ReformulationDictionaryCreation.py +41 -35
  669. nuitka/tree/ReformulationExecStatements.py +42 -39
  670. nuitka/tree/ReformulationForLoopStatements.py +30 -34
  671. nuitka/tree/ReformulationFunctionStatements.py +59 -55
  672. nuitka/tree/ReformulationImportStatements.py +34 -29
  673. nuitka/tree/ReformulationLambdaExpressions.py +23 -24
  674. nuitka/tree/ReformulationMatchStatements.py +246 -92
  675. nuitka/tree/ReformulationMultidist.py +22 -18
  676. nuitka/tree/ReformulationNamespacePackages.py +55 -46
  677. nuitka/tree/ReformulationPrintStatements.py +23 -24
  678. nuitka/tree/ReformulationSequenceCreation.py +50 -49
  679. nuitka/tree/ReformulationSubscriptExpressions.py +19 -17
  680. nuitka/tree/ReformulationTryExceptStatements.py +19 -17
  681. nuitka/tree/ReformulationTryFinallyStatements.py +34 -17
  682. nuitka/tree/ReformulationWhileLoopStatements.py +19 -17
  683. nuitka/tree/ReformulationWithStatements.py +39 -41
  684. nuitka/tree/ReformulationYieldExpressions.py +44 -24
  685. nuitka/tree/SourceHandling.py +76 -31
  686. nuitka/tree/SyntaxErrors.py +19 -17
  687. nuitka/tree/TreeHelpers.py +33 -20
  688. nuitka/tree/VariableClosure.py +35 -39
  689. nuitka/tree/__init__.py +5 -4
  690. nuitka/utils/AppDirs.py +41 -20
  691. nuitka/utils/CStrings.py +66 -21
  692. nuitka/utils/CommandLineOptions.py +111 -22
  693. nuitka/utils/Distributions.py +445 -54
  694. nuitka/utils/Download.py +89 -57
  695. nuitka/utils/Execution.py +102 -58
  696. nuitka/utils/FileOperations.py +357 -128
  697. nuitka/utils/Hashing.py +55 -33
  698. nuitka/utils/Images.py +26 -19
  699. nuitka/utils/Importing.py +119 -37
  700. nuitka/utils/InlineCopies.py +52 -0
  701. nuitka/utils/InstalledPythons.py +85 -75
  702. nuitka/utils/InstanceCounters.py +20 -17
  703. nuitka/utils/Jinja2.py +30 -22
  704. nuitka/utils/Json.py +21 -19
  705. nuitka/utils/MacOSApp.py +26 -18
  706. nuitka/utils/MemoryUsage.py +20 -18
  707. nuitka/utils/ModuleNames.py +42 -26
  708. nuitka/utils/PackageResources.py +44 -0
  709. nuitka/utils/ReExecute.py +50 -28
  710. nuitka/utils/Rest.py +20 -17
  711. nuitka/utils/SharedLibraries.py +161 -75
  712. nuitka/utils/Shebang.py +20 -17
  713. nuitka/utils/Signing.py +63 -18
  714. nuitka/utils/SlotMetaClasses.py +57 -0
  715. nuitka/utils/StaticLibraries.py +83 -56
  716. nuitka/utils/ThreadedExecutor.py +18 -17
  717. nuitka/utils/Timing.py +22 -20
  718. nuitka/utils/Utils.py +132 -25
  719. nuitka/utils/WindowsFileUsage.py +22 -20
  720. nuitka/utils/WindowsResources.py +25 -18
  721. nuitka/utils/Yaml.py +62 -24
  722. nuitka/utils/__init__.py +5 -4
  723. Nuitka_winsvc-1.8.dist-info/RECORD +0 -905
  724. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_gui.py +0 -9
  725. nuitka/build/inline_copy/tqdm/tqdm/gui.py +0 -191
  726. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/LICENSE.txt +0 -0
  727. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/entry_points.txt +0 -0
  728. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/top_level.txt +0 -0
nuitka/OptionParsing.py CHANGED
@@ -1,20 +1,6 @@
1
- # Copyright 2023, Kay Hayen, mailto:kay.hayen@gmail.com
2
- #
3
- # Part of "Nuitka", an optimizing Python compiler that is compatible and
4
- # integrates with CPython, but also works on its own.
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
1
+ # Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
3
+
18
4
  """ Command line options of Nuitka.
19
5
 
20
6
  These provide only the optparse options to use, and the mechanic to actually
@@ -30,8 +16,10 @@ pretty good.
30
16
  import os
31
17
  import re
32
18
  import sys
19
+ from string import Formatter
33
20
 
34
21
  from nuitka.PythonFlavors import getPythonFlavorName
22
+ from nuitka.PythonVersions import isPythonWithGil
35
23
  from nuitka.utils.CommandLineOptions import SUPPRESS_HELP, makeOptionsParser
36
24
  from nuitka.utils.FileOperations import getFileContentByLine
37
25
  from nuitka.utils.Utils import (
@@ -49,15 +37,18 @@ from nuitka.Version import getCommercialVersion, getNuitkaVersion
49
37
 
50
38
  # Indicator if we were called as "nuitka-run" in which case we assume some
51
39
  # other defaults and work a bit different with parameters.
52
- is_nuitka_run = os.path.basename(sys.argv[0]).lower().endswith("-run")
40
+ _nuitka_binary_name = os.path.basename(sys.argv[0])
41
+ if _nuitka_binary_name == "__main__.py":
42
+ _nuitka_binary_name = "%s -m nuitka" % os.path.basename(sys.executable)
43
+ is_nuitka_run = _nuitka_binary_name.lower().endswith("-run")
53
44
 
54
45
  if not is_nuitka_run:
55
- usage = "usage: %prog [--module] [--run] [options] main_module.py"
46
+ usage_template = "usage: %s [--module] [--run] [options] main_module.py"
56
47
  else:
57
- usage = "usage: %prog [options] main_module.py"
48
+ usage_template = "usage: %s [options] main_module.py"
58
49
 
59
50
 
60
- parser = makeOptionsParser(usage=usage)
51
+ parser = makeOptionsParser(usage=usage_template % _nuitka_binary_name)
61
52
 
62
53
  parser.add_option(
63
54
  "--version",
@@ -75,7 +66,21 @@ parser.add_option(
75
66
  dest="module_mode",
76
67
  default=False,
77
68
  help="""\
78
- Create an extension module executable instead of a program. Defaults to off.""",
69
+ Create an importable binary extension module executable instead of a program. Defaults to off.""",
70
+ )
71
+
72
+ parser.add_option(
73
+ "--mode",
74
+ action="store",
75
+ dest="compilation_mode",
76
+ metavar="COMPILATION_MODE",
77
+ choices=("onefile", "standalone", "accelerated", "module"),
78
+ default=None,
79
+ help="""\
80
+ Mode in which to compile. Accelerated runs in your Python
81
+ installation and depends on it. Standalone creates a folder
82
+ with an executable contained to run it. Onefile creates a
83
+ single executable to deploy. Default is 'accelerated'.""",
79
84
  )
80
85
 
81
86
  parser.add_option(
@@ -104,6 +109,7 @@ parser.add_option(
104
109
  action="store_true",
105
110
  dest="is_onefile",
106
111
  default=False,
112
+ github_action_default=True,
107
113
  help="""\
108
114
  On top of standalone mode, enable onefile mode. This means not a folder,
109
115
  but a compressed executable is created and used. Defaults to off.""",
@@ -117,16 +123,6 @@ parser.add_option(
117
123
  help=SUPPRESS_HELP,
118
124
  )
119
125
 
120
- parser.add_option(
121
- "--python-debug",
122
- action="store_true",
123
- dest="python_debug",
124
- default=None,
125
- help="""\
126
- Use debug version or not. Default uses what you are using to run Nuitka, most
127
- likely a non-debug version.""",
128
- )
129
-
130
126
  parser.add_option(
131
127
  "--python-flag",
132
128
  action="append",
@@ -144,17 +140,30 @@ load outside code) and "-m" (package mode, compile as "package.__main__").
144
140
  Default empty.""",
145
141
  )
146
142
 
143
+ parser.add_option(
144
+ "--python-debug",
145
+ action="store_true",
146
+ dest="python_debug",
147
+ default=None,
148
+ help="""\
149
+ Use debug version or not. Default uses what you are using to run Nuitka, most
150
+ likely a non-debug version. Only for debugging and testing purposes.""",
151
+ )
152
+
147
153
  parser.add_option(
148
154
  "--python-for-scons",
149
155
  action="store",
150
156
  dest="python_scons",
151
157
  metavar="PATH",
152
158
  default=None,
159
+ github_action=False,
153
160
  help="""\
154
- If using Python3.3 or Python3.4, provide the path of a Python binary to use
155
- for Scons. Otherwise Nuitka can use what you run Nuitka with or a Python
156
- installation from Windows registry. On Windows Python 3.5 or higher is
157
- needed. On non-Windows, Python 2.6 or 2.7 will do as well.""",
161
+ When compiling with Python 3.4 provide the path of a
162
+ Python binary to use for Scons. Otherwise Nuitka can
163
+ use what you run Nuitka with, or find Python installation,
164
+ e.g. from Windows registry. On Windows, a Python 3.5 or
165
+ higher is needed. On non-Windows, a Python 2.6 or 2.7
166
+ will do as well.""",
158
167
  )
159
168
 
160
169
  parser.add_option(
@@ -180,11 +189,13 @@ parser.add_option(
180
189
  action="store_true",
181
190
  dest="github_workflow_options",
182
191
  default=False,
183
- help=SUPPRESS_HELP,
192
+ github_action=False,
193
+ help=SUPPRESS_HELP, # For use in GitHub Action only.
184
194
  )
185
195
 
186
196
  include_group = parser.add_option_group(
187
- "Control the inclusion of modules and packages in result"
197
+ "Control the inclusion of modules and packages in result",
198
+ link="include-section",
188
199
  )
189
200
 
190
201
  include_group.add_option(
@@ -292,8 +303,8 @@ follow_group.add_option(
292
303
  default=[],
293
304
  help="""\
294
305
  Do not follow to that module name even if used, or if a package name, to the
295
- whole package in any case, overrides all other options. Can be given multiple
296
- times. Default empty.""",
306
+ whole package in any case, overrides all other options. This can also contain
307
+ patterns, e.g. "*.tests". Can be given multiple times. Default empty.""",
297
308
  )
298
309
 
299
310
  follow_group.add_option(
@@ -329,9 +340,9 @@ onefile_group.add_option(
329
340
  default=None,
330
341
  help="""\
331
342
  Use this as a folder to unpack to in onefile mode. Defaults to
332
- '%TEMP%/onefile_%PID%_%TIME%', i.e. user temporary directory
343
+ '{TEMP}/onefile_{PID}_{TIME}', i.e. user temporary directory
333
344
  and being non-static it's removed. Use e.g. a string like
334
- '%CACHE_DIR%/%COMPANY%/%PRODUCT%/%VERSION%' which is a good
345
+ '{CACHE_DIR}/{COMPANY}/{PRODUCT}/{VERSION}' which is a good
335
346
  static cache path, this will then not be removed.""",
336
347
  )
337
348
 
@@ -358,6 +369,16 @@ When creating the onefile, disable compression of the payload. This is
358
369
  mostly for debug purposes, or to save time. Default is off.""",
359
370
  )
360
371
 
372
+ onefile_group.add_option(
373
+ "--onefile-as-archive",
374
+ action="store_true",
375
+ dest="onefile_as_archive",
376
+ default=False,
377
+ help="""\
378
+ When creating the onefile, use an archive format, that can be unpacked
379
+ with "nuitka-onefile-unpack" rather than a stream that only the onefile
380
+ program itself unpacks. Default is off.""",
381
+ )
361
382
 
362
383
  del onefile_group
363
384
 
@@ -395,7 +416,7 @@ allowed forms. With '--include-data-files=/path/to/file/*.txt=folder_name/some.t
395
416
  will copy a single file and complain if it's multiple. With
396
417
  '--include-data-files=/path/to/files/*.txt=folder_name/' it will put
397
418
  all matching files into that folder. For recursive copy there is a
398
- form with 3 values that '--include-data-files=/path/to/scan=folder_name=**/*.txt'
419
+ form with 3 values that '--include-data-files=/path/to/scan=folder_name/=**/*.txt'
399
420
  that will preserve directory structure. Default empty.""",
400
421
  )
401
422
 
@@ -409,9 +430,8 @@ data_group.add_option(
409
430
  Include data files from complete directory in the distribution. This is
410
431
  recursive. Check '--include-data-files' with patterns if you want non-recursive
411
432
  inclusion. An example would be '--include-data-dir=/path/some_dir=data/some_dir'
412
- for plain copy, of the whole directory. All files are copied, if you want to
413
- exclude files you need to remove them beforehand, or use '--noinclude-data-files'
414
- option to remove them. Default empty.""",
433
+ for plain copy, of the whole directory. All non-code files are copied, if you
434
+ want to use '--noinclude-data-files' option to remove them. Default empty.""",
415
435
  )
416
436
 
417
437
  data_group.add_option(
@@ -423,8 +443,22 @@ data_group.add_option(
423
443
  help="""\
424
444
  Do not include data files matching the filename pattern given. This is against
425
445
  the target filename, not source paths. So to ignore a file pattern from package
426
- data for "package_name" should be matched as "package_name/*.txt". Or for the
427
- whole directory simply use "package_name". Default empty.""",
446
+ data for 'package_name' should be matched as 'package_name/*.txt'. Or for the
447
+ whole directory simply use 'package_name'. Default empty.""",
448
+ )
449
+
450
+ data_group.add_option(
451
+ "--include-onefile-external-data",
452
+ action="append",
453
+ dest="data_files_external",
454
+ metavar="PATTERN",
455
+ default=[],
456
+ help="""\
457
+ Include the specified data file patterns outside of the onefile binary,
458
+ rather than on the inside. Makes only sense in case of '--onefile'
459
+ compilation. First files have to be specified as included with other
460
+ `--include-*data*` options, and then this refers to target paths
461
+ inside the distribution. Default empty.""",
428
462
  )
429
463
 
430
464
  data_group.add_option(
@@ -437,6 +471,18 @@ data_group.add_option(
437
471
  Output the data files found for a given package name. Default not done.""",
438
472
  )
439
473
 
474
+ data_group.add_option(
475
+ "--include-raw-dir",
476
+ action="append",
477
+ dest="raw_dirs",
478
+ metavar="DIRECTORY",
479
+ default=[],
480
+ help="""\
481
+ Include raw directories completely in the distribution. This is
482
+ recursive. Check '--include-data-dir' to use the sane option.
483
+ Default empty.""",
484
+ )
485
+
440
486
 
441
487
  del data_group
442
488
 
@@ -468,8 +514,8 @@ dll_group.add_option(
468
514
  default=[],
469
515
  help="""\
470
516
  Do not include DLL files matching the filename pattern given. This is against
471
- the target filename, not source paths. So ignore a DLL "someDLL" contained in
472
- the package "package_name" it should be matched as "package_name/someDLL.*".
517
+ the target filename, not source paths. So ignore a DLL 'someDLL' contained in
518
+ the package 'package_name' it should be matched as 'package_name/someDLL.*'.
473
519
  Default empty.""",
474
520
  )
475
521
 
@@ -512,6 +558,7 @@ warnings_group.add_option(
512
558
  action="store_true",
513
559
  dest="assume_yes_for_downloads",
514
560
  default=False,
561
+ github_action_default=True,
515
562
  help="""\
516
563
  Allow Nuitka to download external code if necessary, e.g. dependency
517
564
  walker, ccache, and even gcc on Windows. To disable, redirect input
@@ -559,18 +606,6 @@ Execute inside a debugger, e.g. "gdb" or "lldb" to automatically get a stack tra
559
606
  Defaults to off.""",
560
607
  )
561
608
 
562
- execute_group.add_option(
563
- "--execute-with-pythonpath",
564
- action="store_true",
565
- dest="keep_pythonpath",
566
- default=False,
567
- help="""\
568
- When immediately executing the created binary or module using '--run',
569
- don't reset 'PYTHONPATH' environment. When all modules are successfully
570
- included, you ought to not need PYTHONPATH anymore, and definitely not
571
- for standalone mode.""",
572
- )
573
-
574
609
  del execute_group
575
610
 
576
611
 
@@ -584,9 +619,9 @@ compilation_group.add_option(
584
619
  metavar="YAML_FILENAME",
585
620
  help="""\
586
621
  User provided Yaml file with package configuration. You can include DLLs,
587
- remove bloat, add hidden dependencies. Check User Manual for a complete
588
- description of the format to use. Can be given multiple times. Defaults
589
- to empty.""",
622
+ remove bloat, add hidden dependencies. Check the Nuitka Package Configuration
623
+ Manual for a complete description of the format to use. Can be given
624
+ multiple times. Defaults to empty.""",
590
625
  )
591
626
 
592
627
  compilation_group.add_option(
@@ -654,8 +689,7 @@ choice, also not for standalone mode and using it will be an error. This may
654
689
  include path information that needs to exist though. Defaults to '%s' on this
655
690
  platform.
656
691
  """
657
- % "<program_name>"
658
- + (".exe" if isWin32OrPosixWindows() else ".bin"),
692
+ % ("<program_name>" + (".exe" if isWin32OrPosixWindows() else ".bin")),
659
693
  )
660
694
 
661
695
  output_group.add_option(
@@ -687,13 +721,65 @@ output_group.add_option(
687
721
  dest="pyi_file",
688
722
  default=True,
689
723
  help="""\
690
- Do not create a ".pyi" file for extension modules created by Nuitka. This is
724
+ Do not create a '.pyi' file for extension modules created by Nuitka. This is
691
725
  used to detect implicit imports.
692
726
  Defaults to off.""",
693
727
  )
694
728
 
729
+ output_group.add_option(
730
+ "--no-pyi-stubs",
731
+ action="store_false",
732
+ dest="pyi_stubs",
733
+ default=True,
734
+ help="""\
735
+ Do not use stubgen when creating a '.pyi' file for extension modules
736
+ created by Nuitka. They expose your API, but stubgen may cause issues.
737
+ Defaults to off.""",
738
+ )
739
+
740
+
695
741
  del output_group
696
742
 
743
+ deployment_group = parser.add_option_group("Deployment control")
744
+
745
+ deployment_group.add_option(
746
+ "--deployment",
747
+ action="store_true",
748
+ dest="is_deployment",
749
+ default=False,
750
+ help="""\
751
+ Disable code aimed at making finding compatibility issues easier. This
752
+ will e.g. prevent execution with "-c" argument, which is often used by
753
+ code that attempts run a module, and causes a program to start itself
754
+ over and over potentially. Disable once you deploy to end users, for
755
+ finding typical issues, this is very helpful during development. Default
756
+ off.""",
757
+ )
758
+
759
+ deployment_group.add_option(
760
+ "--no-deployment-flag",
761
+ action="append",
762
+ dest="no_deployment_flags",
763
+ metavar="FLAG",
764
+ default=[],
765
+ help="""\
766
+ Keep deployment mode, but disable selectively parts of it. Errors from
767
+ deployment mode will output these identifiers. Default empty.""",
768
+ )
769
+
770
+ environment_group = parser.add_option_group("Environment control")
771
+
772
+ environment_group.add_option(
773
+ "--force-runtime-environment-variable",
774
+ action="append",
775
+ dest="forced_runtime_env_variables",
776
+ metavar="VARIABLE_SPEC",
777
+ default=[],
778
+ help="""\
779
+ Force an environment variables to a given value. Default empty.""",
780
+ )
781
+
782
+ del environment_group
697
783
 
698
784
  debug_group = parser.add_option_group("Debug features")
699
785
 
@@ -707,6 +793,25 @@ Executing all self checks possible to find errors in Nuitka, do not use for
707
793
  production. Defaults to off.""",
708
794
  )
709
795
 
796
+ debug_group.add_option(
797
+ "--no-debug-immortal-assumptions",
798
+ action="store_false",
799
+ dest="debug_immortal",
800
+ default=None,
801
+ help="""\
802
+ Disable check normally done with "--debug". With Python3.12+ do not check known
803
+ immortal object assumptions. Some C libraries corrupt them. Defaults to check
804
+ being made if "--debug" is on.""",
805
+ )
806
+
807
+ debug_group.add_option(
808
+ "--debug-immortal-assumptions",
809
+ action="store_true",
810
+ dest="debug_immortal",
811
+ default=None,
812
+ help=SUPPRESS_HELP,
813
+ )
814
+
710
815
  debug_group.add_option(
711
816
  "--unstripped",
712
817
  "--unstriped",
@@ -723,20 +828,11 @@ debug_group.add_option(
723
828
  action="store_true",
724
829
  dest="profile",
725
830
  default=False,
831
+ github_action=False,
726
832
  help="""\
727
833
  Enable vmprof based profiling of time spent. Not working currently. Defaults to off.""",
728
834
  )
729
835
 
730
- debug_group.add_option(
731
- "--internal-graph",
732
- action="store_true",
733
- dest="internal_graph",
734
- default=False,
735
- help="""\
736
- Create graph of optimization process internals, do not use for whole programs, but only
737
- for small test cases. Defaults to off.""",
738
- )
739
-
740
836
  debug_group.add_option(
741
837
  "--trace-execution",
742
838
  action="store_true",
@@ -747,19 +843,6 @@ Traced execution output, output the line of code before executing it.
747
843
  Defaults to off.""",
748
844
  )
749
845
 
750
- debug_group.add_option(
751
- "--recompile-c-only",
752
- action="store_true",
753
- dest="recompile_c_only",
754
- default=False,
755
- help="""\
756
- This is not incremental compilation, but for Nuitka development only. Takes
757
- existing files and simply compile them as C again. Allows compiling edited
758
- C files for quick debugging changes to the generated source, e.g. to see if
759
- code is passed by, values output, etc, Defaults to off. Depends on compiling
760
- Python source to determine which files it should look at.""",
761
- )
762
-
763
846
  debug_group.add_option(
764
847
  "--xml",
765
848
  action="store",
@@ -769,29 +852,6 @@ debug_group.add_option(
769
852
  help="Write the internal program structure, result of optimization in XML form to given filename.",
770
853
  )
771
854
 
772
- debug_group.add_option(
773
- "--deployment",
774
- action="store_true",
775
- dest="is_deployment",
776
- default=False,
777
- help="""\
778
- Disable code aimed at making finding compatibility issues easier. This
779
- will e.g. prevent execution with "-c" argument, which is often used by
780
- code that attempts run a module, and causes a program to start itself
781
- over and over potentially. Default off.""",
782
- )
783
-
784
- debug_group.add_option(
785
- "--no-deployment-flag",
786
- action="append",
787
- dest="no_deployment_flags",
788
- metavar="FLAG",
789
- default=[],
790
- help="""\
791
- Keep deployment mode, but disable selectively parts of it. Errors from
792
- deployment mode will output these identifiers. Default empty.""",
793
- )
794
-
795
855
  debug_group.add_option(
796
856
  "--experimental",
797
857
  action="append",
@@ -839,6 +899,7 @@ debug_group.add_option(
839
899
  action="store_true",
840
900
  dest="generate_c_only",
841
901
  default=False,
902
+ github_action=False,
842
903
  help="""\
843
904
  Generate only C source code, and do not compile it to binary or module. This
844
905
  is for debugging and code coverage analysis that doesn't waste CPU. Defaults to
@@ -848,6 +909,61 @@ off. Do not think you can use this directly.""",
848
909
 
849
910
  del debug_group
850
911
 
912
+
913
+ development_group = parser.add_option_group("Nuitka Development features")
914
+
915
+
916
+ development_group.add_option(
917
+ "--devel-missing-code-helpers",
918
+ action="store_true",
919
+ dest="report_missing_code_helpers",
920
+ default=False,
921
+ help="""\
922
+ Report warnings for code helpers for types that were attempted, but don't
923
+ exist. This helps to identify opportunities for improving optimization of
924
+ generated code from type knowledge not used. Default False.""",
925
+ )
926
+
927
+ development_group.add_option(
928
+ "--devel-missing-trust",
929
+ action="store_true",
930
+ dest="report_missing_trust",
931
+ default=False,
932
+ help="""\
933
+ Report warnings for imports that could be trusted, but currently are not. This
934
+ is to identify opportunities for improving handling of hard modules, where this
935
+ sometimes could allow more static optimization. Default False.""",
936
+ )
937
+
938
+ development_group.add_option(
939
+ "--devel-recompile-c-only",
940
+ action="store_true",
941
+ dest="recompile_c_only",
942
+ default=False,
943
+ github_action=False,
944
+ help="""\
945
+ This is not incremental compilation, but for Nuitka development only. Takes
946
+ existing files and simply compiles them as C again after doing the Python
947
+ steps. Allows compiling edited C files for manual debugging changes to the
948
+ generated source. Allows us to add printing, check and print values, but it
949
+ is now what users would want. Depends on compiling Python source to
950
+ determine which files it should look at.""",
951
+ )
952
+
953
+ development_group.add_option(
954
+ "--devel-internal-graph",
955
+ action="store_true",
956
+ dest="internal_graph",
957
+ default=False,
958
+ github_action=False,
959
+ help="""\
960
+ Create graph of optimization process internals, do not use for whole programs, but only
961
+ for small test cases. Defaults to off.""",
962
+ )
963
+
964
+
965
+ del development_group
966
+
851
967
  # This is for testing framework, "coverage.py" hates to loose the process. And
852
968
  # we can use it to make sure it's not done unknowingly.
853
969
  parser.add_option(
@@ -855,6 +971,7 @@ parser.add_option(
855
971
  action="store_false",
856
972
  dest="allow_reexecute",
857
973
  default=True,
974
+ github_action=False,
858
975
  help=SUPPRESS_HELP,
859
976
  )
860
977
 
@@ -913,8 +1030,9 @@ c_compiler_group.add_option(
913
1030
  metavar="N",
914
1031
  default=None,
915
1032
  help="""\
916
- Specify the allowed number of parallel C compiler jobs. Defaults to the
917
- system CPU count.""",
1033
+ Specify the allowed number of parallel C compiler jobs. Negative values
1034
+ are system CPU minus the given value. Defaults to the full system CPU
1035
+ count unless low memory mode is activated, then it defaults to 1.""",
918
1036
  )
919
1037
 
920
1038
  c_compiler_group.add_option(
@@ -942,12 +1060,26 @@ Use static link library of Python. Allowed values are "yes", "no",
942
1060
  and "auto" (when it's known to work). Defaults to "auto".""",
943
1061
  )
944
1062
 
1063
+ c_compiler_group.add_option(
1064
+ "--cf-protection",
1065
+ action="store",
1066
+ dest="cf_protection",
1067
+ metavar="PROTECTION_MODE",
1068
+ default="auto",
1069
+ choices=("auto", "full", "branch", "return", "none", "check"),
1070
+ help="""\
1071
+ This option is gcc specific. For the gcc compiler, select the
1072
+ "cf-protection" mode. Default "auto" is to use the gcc default
1073
+ value, but you can override it, e.g. to disable it with "none"
1074
+ value. Refer to gcc documentation for "-fcf-protection" for the
1075
+ details.""",
1076
+ )
945
1077
 
946
1078
  del c_compiler_group
947
1079
 
948
1080
  caching_group = parser.add_option_group("Cache Control")
949
1081
 
950
- _cache_names = ("all", "ccache", "bytecode")
1082
+ _cache_names = ("all", "ccache", "bytecode", "compression")
951
1083
 
952
1084
  if isWin32Windows():
953
1085
  _cache_names += ("dll-dependencies",)
@@ -984,9 +1116,7 @@ caching_group.add_option(
984
1116
  action="store_true",
985
1117
  dest="disable_bytecode_cache",
986
1118
  default=False,
987
- help="""\
988
- Do not reuse dependency analysis results for modules, esp. from standard library,
989
- that are included as bytecode. Same as --disable-cache=bytecode.""",
1119
+ help=SUPPRESS_HELP,
990
1120
  )
991
1121
 
992
1122
  caching_group.add_option(
@@ -994,23 +1124,18 @@ caching_group.add_option(
994
1124
  action="store_true",
995
1125
  dest="disable_ccache",
996
1126
  default=False,
997
- help="""\
998
- Do not attempt to use ccache (gcc, clang, etc.) or clcache (MSVC, clangcl).
999
- Same as --disable-cache=ccache.""",
1127
+ help=SUPPRESS_HELP,
1000
1128
  )
1001
1129
 
1002
- if isWin32Windows():
1003
- caching_group.add_option(
1004
- "--disable-dll-dependency-cache",
1005
- action="store_true",
1006
- dest="disable_dll_dependency_cache",
1007
- default=False,
1008
- help="""\
1009
- Disable the dependency walker cache. Will result in much longer times to create
1010
- the distribution folder, but might be used in case the cache is suspect to cause
1011
- errors. Same as --disable-cache=dll-dependencies.""",
1012
- )
1130
+ caching_group.add_option(
1131
+ "--disable-dll-dependency-cache",
1132
+ action="store_true",
1133
+ dest="disable_dll_dependency_cache",
1134
+ default=False,
1135
+ help=SUPPRESS_HELP,
1136
+ )
1013
1137
 
1138
+ if isWin32Windows():
1014
1139
  caching_group.add_option(
1015
1140
  "--force-dll-dependency-cache-update",
1016
1141
  action="store_true",
@@ -1029,7 +1154,7 @@ del caching_group
1029
1154
  pgo_group = parser.add_option_group("PGO compilation choices")
1030
1155
 
1031
1156
  pgo_group.add_option(
1032
- "--pgo",
1157
+ "--pgo-c",
1033
1158
  action="store_true",
1034
1159
  dest="is_c_pgo",
1035
1160
  default=False,
@@ -1045,7 +1170,7 @@ pgo_group.add_option(
1045
1170
  action="store_true",
1046
1171
  dest="is_python_pgo",
1047
1172
  default=False,
1048
- help=SUPPRESS_HELP,
1173
+ help=SUPPRESS_HELP, # Not yet ready
1049
1174
  )
1050
1175
 
1051
1176
  pgo_group.add_option(
@@ -1053,7 +1178,7 @@ pgo_group.add_option(
1053
1178
  action="store",
1054
1179
  dest="python_pgo_input",
1055
1180
  default=None,
1056
- help=SUPPRESS_HELP,
1181
+ help=SUPPRESS_HELP, # Not yet ready
1057
1182
  )
1058
1183
 
1059
1184
  pgo_group.add_option(
@@ -1062,7 +1187,7 @@ pgo_group.add_option(
1062
1187
  dest="python_pgo_policy_unused_module",
1063
1188
  choices=("include", "exclude", "bytecode"),
1064
1189
  default="include",
1065
- help=SUPPRESS_HELP,
1190
+ help=SUPPRESS_HELP, # Not yet ready
1066
1191
  )
1067
1192
 
1068
1193
  pgo_group.add_option(
@@ -1136,7 +1261,7 @@ tracing_group.add_option(
1136
1261
  metavar="REPORT_DESC",
1137
1262
  default=[],
1138
1263
  help="""\
1139
- Report via template. Provide template and output filename "template.rst.j2:output.rst". For
1264
+ Report via template. Provide template and output filename 'template.rst.j2:output.rst'. For
1140
1265
  built-in templates, check the User Manual for what these are. Can be given multiple times.
1141
1266
  Default is empty.""",
1142
1267
  )
@@ -1168,6 +1293,7 @@ tracing_group.add_option(
1168
1293
  action="store_false",
1169
1294
  dest="progress_bar",
1170
1295
  default=True,
1296
+ github_action=False,
1171
1297
  help="""Disable progress bars. Defaults to off.""",
1172
1298
  )
1173
1299
 
@@ -1176,6 +1302,7 @@ tracing_group.add_option(
1176
1302
  action="store_true",
1177
1303
  dest="show_progress",
1178
1304
  default=False,
1305
+ github_action=False,
1179
1306
  help="""Obsolete: Provide progress information and statistics.
1180
1307
  Disables normal progress bar. Defaults to off.""",
1181
1308
  )
@@ -1194,6 +1321,7 @@ tracing_group.add_option(
1194
1321
  action="store_true",
1195
1322
  dest="show_inclusion",
1196
1323
  default=False,
1324
+ github_action=False,
1197
1325
  help="""\
1198
1326
  Provide information for included modules and DLLs
1199
1327
  Obsolete: You should use '--report' file instead. Defaults to off.""",
@@ -1205,6 +1333,7 @@ tracing_group.add_option(
1205
1333
  dest="show_inclusion_output",
1206
1334
  metavar="PATH",
1207
1335
  default=None,
1336
+ github_action=False,
1208
1337
  help="""\
1209
1338
  Where to output '--show-modules', should be a filename. Default is standard output.""",
1210
1339
  )
@@ -1214,6 +1343,7 @@ tracing_group.add_option(
1214
1343
  action="store_true",
1215
1344
  dest="verbose",
1216
1345
  default=False,
1346
+ github_action=False,
1217
1347
  help="""\
1218
1348
  Output details of actions taken, esp. in optimizations. Can become a lot.
1219
1349
  Defaults to off.""",
@@ -1225,6 +1355,7 @@ tracing_group.add_option(
1225
1355
  dest="verbose_output",
1226
1356
  metavar="PATH",
1227
1357
  default=None,
1358
+ github_action=False,
1228
1359
  help="""\
1229
1360
  Where to output from '--verbose', should be a filename. Default is standard output.""",
1230
1361
  )
@@ -1234,29 +1365,6 @@ del tracing_group
1234
1365
 
1235
1366
  os_group = parser.add_option_group("General OS controls")
1236
1367
 
1237
- os_group.add_option(
1238
- "--disable-console",
1239
- "--macos-disable-console",
1240
- "--windows-disable-console",
1241
- action="store_true",
1242
- dest="disable_console",
1243
- default=None,
1244
- help="""\
1245
- When compiling for Windows or macOS, disable the console window and create a GUI
1246
- application. Defaults to off.""",
1247
- )
1248
-
1249
- os_group.add_option(
1250
- "--enable-console",
1251
- action="store_false",
1252
- dest="disable_console",
1253
- default=None,
1254
- help="""\
1255
- When compiling for Windows or macOS, enable the console window and create a console
1256
- application. This disables hints from certain modules, e.g. "PySide" that suggest
1257
- to disable it. Defaults to true.""",
1258
- )
1259
-
1260
1368
  os_group.add_option(
1261
1369
  "--force-stdout-spec",
1262
1370
  "--windows-force-stdout-spec",
@@ -1267,7 +1375,7 @@ os_group.add_option(
1267
1375
  help="""\
1268
1376
  Force standard output of the program to go to this location. Useful for programs with
1269
1377
  disabled console and programs using the Windows Services Plugin of Nuitka commercial.
1270
- Defaults to not active, use e.g. '%PROGRAM_BASE%.out.txt', i.e. file near your program,
1378
+ Defaults to not active, use e.g. '{PROGRAM_BASE}.out.txt', i.e. file near your program,
1271
1379
  check User Manual for full list of available values.""",
1272
1380
  )
1273
1381
 
@@ -1281,7 +1389,7 @@ os_group.add_option(
1281
1389
  help="""\
1282
1390
  Force standard error of the program to go to this location. Useful for programs with
1283
1391
  disabled console and programs using the Windows Services Plugin of Nuitka commercial.
1284
- Defaults to not active, use e.g. '%PROGRAM_BASE%.err.txt', i.e. file near your program,
1392
+ Defaults to not active, use e.g. '{PROGRAM_BASE}.err.txt', i.e. file near your program,
1285
1393
  check User Manual for full list of available values.""",
1286
1394
  )
1287
1395
 
@@ -1291,17 +1399,26 @@ del os_group
1291
1399
  windows_group = parser.add_option_group("Windows specific controls")
1292
1400
 
1293
1401
  windows_group.add_option(
1294
- "--windows-dependency-tool",
1402
+ "--windows-console-mode",
1295
1403
  action="store",
1296
- dest="dependency_tool",
1404
+ dest="console_mode",
1405
+ choices=("force", "disable", "attach", "hide"),
1406
+ metavar="CONSOLE_MODE",
1297
1407
  default=None,
1298
- help=SUPPRESS_HELP,
1408
+ help="""\
1409
+ Select console mode to use. Default mode is 'force' and creates a
1410
+ console window unless the program was started from one. With 'disable'
1411
+ it doesn't create or use a console at all. With 'attach' an existing
1412
+ console will be used for outputs. With 'hide' a newly spawned console
1413
+ will be hidden and an already existing console will behave like
1414
+ 'force'. Default is 'force'.
1415
+ """,
1299
1416
  )
1300
1417
 
1301
1418
  windows_group.add_option(
1302
1419
  "--windows-icon-from-ico",
1303
1420
  action="append",
1304
- dest="icon_path",
1421
+ dest="windows_icon_path",
1305
1422
  metavar="ICON_PATH",
1306
1423
  default=[],
1307
1424
  help="""\
@@ -1349,6 +1466,32 @@ Request Windows User Control, to enforce running from a few folders only, remote
1349
1466
  desktop access. (Windows only). Defaults to off.""",
1350
1467
  )
1351
1468
 
1469
+ windows_group.add_option(
1470
+ "--disable-console",
1471
+ "--macos-disable-console",
1472
+ "--windows-disable-console",
1473
+ action="store_true",
1474
+ dest="disable_console",
1475
+ default=None,
1476
+ help=SUPPRESS_HELP,
1477
+ )
1478
+
1479
+ windows_group.add_option(
1480
+ "--enable-console",
1481
+ action="store_false",
1482
+ dest="disable_console",
1483
+ default=None,
1484
+ help=SUPPRESS_HELP,
1485
+ )
1486
+
1487
+ windows_group.add_option(
1488
+ "--windows-dependency-tool",
1489
+ action="store",
1490
+ dest="dependency_tool",
1491
+ default=None,
1492
+ help=SUPPRESS_HELP,
1493
+ )
1494
+
1352
1495
  windows_group.add_option(
1353
1496
  "--windows-service",
1354
1497
  action="store_true",
@@ -1417,6 +1560,18 @@ del windows_group
1417
1560
 
1418
1561
  macos_group = parser.add_option_group("macOS specific controls")
1419
1562
 
1563
+ macos_group.add_option(
1564
+ "--macos-create-app-bundle",
1565
+ action="store_true",
1566
+ dest="macos_create_bundle",
1567
+ default=False,
1568
+ help="""\
1569
+ When compiling for macOS, create a bundle rather than a plain binary
1570
+ application. This is the only way to unlock the disabling of console,
1571
+ get high DPI graphics, etc. and implies standalone mode. Defaults to
1572
+ off.""",
1573
+ )
1574
+
1420
1575
  macos_group.add_option(
1421
1576
  "--macos-target-arch",
1422
1577
  action="store",
@@ -1430,21 +1585,10 @@ is what the running Python allows for. Default is "native" which is
1430
1585
  the architecture the Python is run with.""",
1431
1586
  )
1432
1587
 
1433
- macos_group.add_option(
1434
- "--macos-create-app-bundle",
1435
- action="store_true",
1436
- dest="macos_create_bundle",
1437
- default=False,
1438
- help="""\
1439
- When compiling for macOS, create a bundle rather than a plain binary
1440
- application. Currently experimental and incomplete. Currently this
1441
- is the only way to unlock disabling of console.Defaults to off.""",
1442
- )
1443
-
1444
1588
  macos_group.add_option(
1445
1589
  "--macos-app-icon",
1446
1590
  action="append",
1447
- dest="icon_path",
1591
+ dest="macos_icon_path",
1448
1592
  metavar="ICON_PATH",
1449
1593
  default=[],
1450
1594
  help="Add icon for the application bundle to use. Can be given only one time. Defaults to Python icon if available.",
@@ -1498,7 +1642,8 @@ macos_group.add_option(
1498
1642
  help="""\
1499
1643
  When signing on macOS, by default an ad-hoc identify will be used, but with this
1500
1644
  option your get to specify another identity to use. The signing of code is now
1501
- mandatory on macOS and cannot be disabled. Default "ad-hoc" if not given.""",
1645
+ mandatory on macOS and cannot be disabled. Use "auto" to detect your only identity
1646
+ installed. Default "ad-hoc" if not given.""",
1502
1647
  )
1503
1648
 
1504
1649
  macos_group.add_option(
@@ -1549,7 +1694,7 @@ linux_group.add_option(
1549
1694
  "--linux-icon",
1550
1695
  "--linux-onefile-icon",
1551
1696
  action="append",
1552
- dest="icon_path",
1697
+ dest="linux_icon_path",
1553
1698
  metavar="ICON_PATH",
1554
1699
  default=[],
1555
1700
  help="Add executable icon for onefile binary to use. Can be given only one time. Defaults to Python icon if available.",
@@ -1623,7 +1768,7 @@ version_group.add_option(
1623
1768
  metavar="COPYRIGHT_TEXT",
1624
1769
  default=None,
1625
1770
  help="""\
1626
- Copyright used in version information. Windows only at this time. Defaults to not present.""",
1771
+ Copyright used in version information. Windows/macOS only at this time. Defaults to not present.""",
1627
1772
  )
1628
1773
 
1629
1774
  version_group.add_option(
@@ -1633,7 +1778,7 @@ version_group.add_option(
1633
1778
  metavar="TRADEMARK_TEXT",
1634
1779
  default=None,
1635
1780
  help="""\
1636
- Trademark used in version information. Windows only at this time. Defaults to not present.""",
1781
+ Trademark used in version information. Windows/macOS only at this time. Defaults to not present.""",
1637
1782
  )
1638
1783
 
1639
1784
 
@@ -1660,6 +1805,7 @@ plugin_group.add_option(
1660
1805
  dest="plugins_disabled",
1661
1806
  metavar="PLUGIN_NAME",
1662
1807
  default=[],
1808
+ github_action=False,
1663
1809
  help="""\
1664
1810
  Disabled plugins. Must be plug-in names. Use '--plugin-list' to query the
1665
1811
  full list and exit. Most standard plugins are not a good idea to disable.
@@ -1667,16 +1813,12 @@ Default empty.""",
1667
1813
  )
1668
1814
 
1669
1815
  plugin_group.add_option(
1670
- "--plugin-no-detection",
1671
- action="store_false",
1672
- dest="detect_missing_plugins",
1673
- default=True,
1674
- help="""\
1675
- Plugins can detect if they might be used, and the you can disable the warning
1676
- via "--disable-plugin=plugin-that-warned", or you can use this option to disable
1677
- the mechanism entirely, which also speeds up compilation slightly of course as
1678
- this detection code is run in vain once you are certain of which plugins to
1679
- use. Defaults to off.""",
1816
+ "--user-plugin",
1817
+ action="append",
1818
+ dest="user_plugins",
1819
+ metavar="PATH",
1820
+ default=[],
1821
+ help="The file name of user plugin. Can be given multiple times. Default empty.",
1680
1822
  )
1681
1823
 
1682
1824
  plugin_group.add_option(
@@ -1685,31 +1827,69 @@ plugin_group.add_option(
1685
1827
  dest="plugin_list",
1686
1828
  default=False,
1687
1829
  require_compiling=False,
1830
+ github_action=False,
1688
1831
  help="""\
1689
1832
  Show list of all available plugins and exit. Defaults to off.""",
1690
1833
  )
1691
1834
 
1692
1835
  plugin_group.add_option(
1693
- "--user-plugin",
1836
+ "--plugin-no-detection",
1837
+ action="store_false",
1838
+ dest="detect_missing_plugins",
1839
+ default=True,
1840
+ help="""\
1841
+ Plugins can detect if they might be used, and the you can disable the warning
1842
+ via "--disable-plugin=plugin-that-warned", or you can use this option to disable
1843
+ the mechanism entirely, which also speeds up compilation slightly of course as
1844
+ this detection code is run in vain once you are certain of which plugins to
1845
+ use. Defaults to off.""",
1846
+ )
1847
+
1848
+ plugin_group.add_option(
1849
+ "--module-parameter",
1694
1850
  action="append",
1695
- dest="user_plugins",
1696
- metavar="PATH",
1851
+ dest="module_parameters",
1697
1852
  default=[],
1698
- help="The file name of user plugin. Can be given multiple times. Default empty.",
1853
+ help="""\
1854
+ Provide a module parameter. You are asked by some packages
1855
+ to provide extra decisions. Format is currently
1856
+ --module-parameter=module.name-option-name=value
1857
+ Default empty.""",
1699
1858
  )
1700
1859
 
1701
1860
  plugin_group.add_option(
1702
1861
  "--show-source-changes",
1703
- action="store_true",
1862
+ action="append",
1704
1863
  dest="show_source_changes",
1705
- default=False,
1864
+ default=[],
1865
+ github_action=False,
1706
1866
  help="""\
1707
1867
  Show source changes to original Python file content before compilation. Mostly
1708
- intended for developing plugins. Default False.""",
1868
+ intended for developing plugins and Nuitka package configuration. Use e.g.
1869
+ '--show-source-changes=numpy.**' to see all changes below a given namespace
1870
+ or use '*' to see everything which can get a lot.
1871
+ Default empty.""",
1709
1872
  )
1710
1873
 
1711
1874
  del plugin_group
1712
1875
 
1876
+ target_group = parser.add_option_group("Cross compilation")
1877
+
1878
+
1879
+ target_group.add_option(
1880
+ "--target",
1881
+ action="store",
1882
+ dest="target_desc",
1883
+ metavar="TARGET_DESC",
1884
+ default=None,
1885
+ help="""\
1886
+ Cross compilation target. Highly experimental and in development, not
1887
+ supposed to work yet. We are working on '--target=wasi' and nothing
1888
+ else yet.""",
1889
+ )
1890
+
1891
+ del target_group
1892
+
1713
1893
 
1714
1894
  def _considerPluginOptions(logger):
1715
1895
  # Cyclic dependency on plugins during parsing of command line.
@@ -1748,6 +1928,33 @@ def _considerPluginOptions(logger):
1748
1928
  addUserPluginCommandLineOptions(parser=parser, filename=plugin_name)
1749
1929
 
1750
1930
 
1931
+ run_time_variable_names = (
1932
+ "TEMP",
1933
+ "PID",
1934
+ "TIME",
1935
+ "PROGRAM",
1936
+ "PROGRAM_BASE",
1937
+ "CACHE_DIR",
1938
+ "COMPANY",
1939
+ "PRODUCT",
1940
+ "VERSION",
1941
+ "HOME",
1942
+ "NONE",
1943
+ "NULL",
1944
+ )
1945
+
1946
+
1947
+ class _RetainingFormatter(Formatter):
1948
+ def get_value(self, key, args, kwargs):
1949
+ if isinstance(key, str):
1950
+ try:
1951
+ return kwargs[key]
1952
+ except KeyError:
1953
+ return "{%s}" % key
1954
+ else:
1955
+ return Formatter.get_value(self, key, args, kwargs)
1956
+
1957
+
1751
1958
  def _expandProjectArg(arg, filename_arg, for_eval):
1752
1959
  def wrap(value):
1753
1960
  if for_eval:
@@ -1762,6 +1969,7 @@ def _expandProjectArg(arg, filename_arg, for_eval):
1762
1969
  "Version": getNuitkaVersion(),
1763
1970
  "Commercial": wrap(getCommercialVersion()),
1764
1971
  "MAIN_DIRECTORY": wrap(os.path.dirname(filename_arg) or "."),
1972
+ "GIL": isPythonWithGil(),
1765
1973
  }
1766
1974
 
1767
1975
  if isLinux():
@@ -1776,7 +1984,14 @@ def _expandProjectArg(arg, filename_arg, for_eval):
1776
1984
  if isWin32OrPosixWindows():
1777
1985
  values["WindowsRelease"] = getWindowsRelease()
1778
1986
 
1779
- arg = arg.format(**values)
1987
+ values.update(
1988
+ (
1989
+ (run_time_variable_name, "{%s}" % run_time_variable_name)
1990
+ for run_time_variable_name in run_time_variable_names
1991
+ )
1992
+ )
1993
+
1994
+ arg = _RetainingFormatter().format(arg, **values)
1780
1995
 
1781
1996
  return arg
1782
1997
 
@@ -1898,7 +2113,15 @@ def _considerGithubWorkflowOptions(phase):
1898
2113
 
1899
2114
  import json
1900
2115
 
1901
- early_names = "main", "script-name", "enable-plugins", "disable-plugins"
2116
+ early_names = (
2117
+ "main",
2118
+ "script-name",
2119
+ "enable-plugin",
2120
+ "enable-plugins",
2121
+ "disable-plugin",
2122
+ "disable-plugins",
2123
+ "user-plugin",
2124
+ )
1902
2125
 
1903
2126
  def filterByName(key):
1904
2127
  # Not for Nuitka at all.
@@ -1934,11 +2157,17 @@ def _considerGithubWorkflowOptions(phase):
1934
2157
 
1935
2158
  option_name = "--%s" % key
1936
2159
 
1937
- if parser.isBooleanOption("--%s" % key):
2160
+ if parser.isBooleanOption(option_name):
1938
2161
  if value == "false":
1939
2162
  continue
1940
2163
 
1941
2164
  options_added.append(option_name)
2165
+ elif parser.isListOption(option_name):
2166
+ for value in value.split("\n"):
2167
+ if not value.strip():
2168
+ continue
2169
+
2170
+ options_added.append("%s=%s" % (option_name, value))
1942
2171
  else:
1943
2172
  # Boolean disabled options from inactive plugins that default to off.
1944
2173
  if value == "false":
@@ -1947,7 +2176,7 @@ def _considerGithubWorkflowOptions(phase):
1947
2176
  options_added.append("%s=%s" % (option_name, value))
1948
2177
 
1949
2178
  sys.argv = (
1950
- sys.argv[: github_option_index + (0 if phase == "early" else 1)]
2179
+ sys.argv[: github_option_index + (1 if phase == "early" else 0)]
1951
2180
  + options_added
1952
2181
  + sys.argv[github_option_index + 1 :]
1953
2182
  )
@@ -1955,8 +2184,7 @@ def _considerGithubWorkflowOptions(phase):
1955
2184
 
1956
2185
  def parseOptions(logger):
1957
2186
  # Pretty complex code, having a small options parser and many details as
1958
- # well as integrating with plugins and run modes, and dispatching of tool
1959
- # mode executions, pylint: disable=too-many-branches,too-many-statements
2187
+ # well as integrating with plugins and run modes. pylint: disable=too-many-branches
1960
2188
 
1961
2189
  # First, isolate the first non-option arguments.
1962
2190
  extra_args = []
@@ -1983,12 +2211,15 @@ def parseOptions(logger):
1983
2211
  filename_args = []
1984
2212
  module_mode = False
1985
2213
 
2214
+ # Options may be coming from GitHub workflow configuration as well.
2215
+ _considerGithubWorkflowOptions(phase="early")
2216
+
1986
2217
  for count, arg in enumerate(sys.argv):
1987
2218
  if count == 0:
1988
2219
  continue
1989
2220
 
1990
- if arg.startswith("--main="):
1991
- filename_args.append(arg)
2221
+ if arg.startswith(("--main=", "--script-name=")):
2222
+ filename_args.append(arg.split("=", 1)[1])
1992
2223
 
1993
2224
  if arg == "--module":
1994
2225
  module_mode = True
@@ -2004,9 +2235,6 @@ def parseOptions(logger):
2004
2235
  + sys.argv[1:]
2005
2236
  )
2006
2237
 
2007
- # Options may be coming from GitHub workflow configuration as well.
2008
- _considerGithubWorkflowOptions(phase="early")
2009
-
2010
2238
  # Next, lets activate plugins early, so they can inject more options to the parser.
2011
2239
  _considerPluginOptions(logger)
2012
2240
 
@@ -2027,6 +2255,19 @@ def parseOptions(logger):
2027
2255
  Error, need filename argument with python module or main program."""
2028
2256
  )
2029
2257
 
2258
+ if not options.immediate_execution and len(positional_args) > 1:
2259
+ parser.print_help()
2260
+
2261
+ logger.sysexit(
2262
+ """
2263
+ Error, specify only one positional argument unless "--run" is specified to
2264
+ pass them to the compiled program execution."""
2265
+ )
2266
+
2267
+ return is_nuitka_run, options, positional_args, extra_args
2268
+
2269
+
2270
+ def runSpecialCommandsFromOptions(options):
2030
2271
  if options.plugin_list:
2031
2272
  from nuitka.plugins.Plugins import listPlugins
2032
2273
 
@@ -2066,13 +2307,18 @@ Error, need filename argument with python module or main program."""
2066
2307
  )
2067
2308
  sys.exit(0)
2068
2309
 
2069
- if not options.immediate_execution and len(positional_args) > 1:
2070
- parser.print_help()
2071
-
2072
- logger.sysexit(
2073
- """
2074
- Error, specify only one positional argument unless "--run" is specified to
2075
- pass them to the compiled program execution."""
2076
- )
2077
2310
 
2078
- return is_nuitka_run, options, positional_args, extra_args
2311
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
2312
+ # integrates with CPython, but also works on its own.
2313
+ #
2314
+ # Licensed under the Apache License, Version 2.0 (the "License");
2315
+ # you may not use this file except in compliance with the License.
2316
+ # You may obtain a copy of the License at
2317
+ #
2318
+ # http://www.apache.org/licenses/LICENSE-2.0
2319
+ #
2320
+ # Unless required by applicable law or agreed to in writing, software
2321
+ # distributed under the License is distributed on an "AS IS" BASIS,
2322
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2323
+ # See the License for the specific language governing permissions and
2324
+ # limitations under the License.