Nuitka-winsvc 1.8__cp311-cp311-win_amd64.whl → 2.4.8__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 (704) hide show
  1. Nuitka_winsvc-1.8.data/scripts/nuitka-run.bat → Nuitka_winsvc-2.4.8.data/scripts/nuitka-run.cmd +9 -9
  2. Nuitka_winsvc-1.8.data/scripts/nuitka.bat → Nuitka_winsvc-2.4.8.data/scripts/nuitka.cmd +15 -15
  3. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/METADATA +4 -3
  4. Nuitka_winsvc-2.4.8.dist-info/RECORD +954 -0
  5. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/WHEEL +1 -1
  6. nuitka/Builtins.py +18 -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 +400 -0
  13. nuitka/MainControl.py +200 -112
  14. nuitka/ModuleRegistry.py +83 -20
  15. nuitka/OptionParsing.py +368 -175
  16. nuitka/Options.py +632 -213
  17. nuitka/OutputDirectories.py +40 -21
  18. nuitka/PostProcessing.py +73 -50
  19. nuitka/Progress.py +58 -24
  20. nuitka/PythonFlavors.py +141 -32
  21. nuitka/PythonOperators.py +18 -17
  22. nuitka/PythonVersions.py +106 -19
  23. nuitka/Serialization.py +68 -55
  24. nuitka/SourceCodeReferences.py +19 -17
  25. nuitka/Tracing.py +108 -70
  26. nuitka/TreeXML.py +31 -26
  27. nuitka/Variables.py +39 -41
  28. nuitka/Version.py +21 -7
  29. nuitka/__init__.py +5 -4
  30. nuitka/__main__.py +95 -29
  31. nuitka/__past__.py +44 -34
  32. nuitka/build/Backend.scons +202 -140
  33. nuitka/build/CCompilerVersion.scons +39 -31
  34. nuitka/build/DataComposerInterface.py +20 -17
  35. nuitka/build/Onefile.scons +50 -54
  36. nuitka/build/SconsCaching.py +93 -90
  37. nuitka/build/SconsCompilerSettings.py +157 -69
  38. nuitka/build/SconsHacks.py +25 -19
  39. nuitka/build/SconsInterface.py +154 -54
  40. nuitka/build/SconsProgress.py +19 -18
  41. nuitka/build/SconsSpawn.py +62 -33
  42. nuitka/build/SconsUtils.py +147 -55
  43. nuitka/build/__init__.py +5 -4
  44. nuitka/build/include/nuitka/allocator.h +105 -22
  45. nuitka/build/include/nuitka/builtins.h +17 -17
  46. nuitka/build/include/nuitka/calling.h +18 -18
  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 +18 -18
  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 +91 -53
  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 +29 -18
  57. nuitka/build/include/nuitka/constants_blob.h +17 -17
  58. nuitka/build/include/nuitka/environment_variables.h +30 -0
  59. nuitka/build/include/nuitka/environment_variables_system.h +45 -0
  60. nuitka/build/include/nuitka/exception_groups.h +23 -26
  61. nuitka/build/include/nuitka/exceptions.h +593 -190
  62. nuitka/build/include/nuitka/filesystem_paths.h +26 -20
  63. nuitka/build/include/nuitka/freelists.h +38 -18
  64. nuitka/build/include/nuitka/helper/attributes.h +24 -18
  65. nuitka/build/include/nuitka/helper/boolean.h +17 -17
  66. nuitka/build/include/nuitka/helper/bytearrays.h +17 -17
  67. nuitka/build/include/nuitka/helper/bytes.h +14 -15
  68. nuitka/build/include/nuitka/helper/calling_generated.h +17 -17
  69. nuitka/build/include/nuitka/helper/comparisons_eq.h +17 -17
  70. nuitka/build/include/nuitka/helper/comparisons_ge.h +17 -17
  71. nuitka/build/include/nuitka/helper/comparisons_gt.h +17 -17
  72. nuitka/build/include/nuitka/helper/comparisons_le.h +17 -17
  73. nuitka/build/include/nuitka/helper/comparisons_lt.h +17 -17
  74. nuitka/build/include/nuitka/helper/comparisons_ne.h +17 -17
  75. nuitka/build/include/nuitka/helper/complex.h +17 -17
  76. nuitka/build/include/nuitka/helper/dictionaries.h +24 -22
  77. nuitka/build/include/nuitka/helper/floats.h +17 -18
  78. nuitka/build/include/nuitka/helper/import_hard.h +25 -17
  79. nuitka/build/include/nuitka/helper/indexes.h +17 -18
  80. nuitka/build/include/nuitka/helper/ints.h +32 -20
  81. nuitka/build/include/nuitka/helper/iterators.h +17 -17
  82. nuitka/build/include/nuitka/helper/lists.h +26 -24
  83. nuitka/build/include/nuitka/helper/lists_generated.h +22 -22
  84. nuitka/build/include/nuitka/helper/mappings.h +17 -18
  85. nuitka/build/include/nuitka/helper/operations.h +17 -17
  86. nuitka/build/include/nuitka/helper/operations_binary_add.h +17 -17
  87. nuitka/build/include/nuitka/helper/operations_binary_bitand.h +17 -17
  88. nuitka/build/include/nuitka/helper/operations_binary_bitor.h +17 -17
  89. nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +17 -17
  90. nuitka/build/include/nuitka/helper/operations_binary_divmod.h +17 -17
  91. nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +17 -17
  92. nuitka/build/include/nuitka/helper/operations_binary_lshift.h +17 -17
  93. nuitka/build/include/nuitka/helper/operations_binary_matmult.h +17 -17
  94. nuitka/build/include/nuitka/helper/operations_binary_mod.h +17 -17
  95. nuitka/build/include/nuitka/helper/operations_binary_mult.h +17 -17
  96. nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +17 -17
  97. nuitka/build/include/nuitka/helper/operations_binary_pow.h +17 -17
  98. nuitka/build/include/nuitka/helper/operations_binary_rshift.h +17 -17
  99. nuitka/build/include/nuitka/helper/operations_binary_sub.h +17 -17
  100. nuitka/build/include/nuitka/helper/operations_binary_truediv.h +17 -17
  101. nuitka/build/include/nuitka/helper/operations_builtin_types.h +17 -17
  102. nuitka/build/include/nuitka/helper/operations_inplace_add.h +17 -17
  103. nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +17 -17
  104. nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +17 -17
  105. nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +17 -17
  106. nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +17 -17
  107. nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +17 -17
  108. nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +17 -17
  109. nuitka/build/include/nuitka/helper/operations_inplace_mod.h +17 -17
  110. nuitka/build/include/nuitka/helper/operations_inplace_mult.h +17 -17
  111. nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +17 -17
  112. nuitka/build/include/nuitka/helper/operations_inplace_pow.h +17 -17
  113. nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +17 -17
  114. nuitka/build/include/nuitka/helper/operations_inplace_sub.h +17 -17
  115. nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
  116. nuitka/build/include/nuitka/helper/raising.h +29 -17
  117. nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
  118. nuitka/build/include/nuitka/helper/richcomparisons.h +14 -14
  119. nuitka/build/include/nuitka/helper/sequences.h +19 -13
  120. nuitka/build/include/nuitka/helper/sets.h +11 -12
  121. nuitka/build/include/nuitka/helper/slices.h +31 -25
  122. nuitka/build/include/nuitka/helper/strings.h +16 -17
  123. nuitka/build/include/nuitka/helper/subscripts.h +18 -201
  124. nuitka/build/include/nuitka/helper/tuples.h +64 -52
  125. nuitka/build/include/nuitka/helpers.h +38 -20
  126. nuitka/build/include/nuitka/importing.h +28 -21
  127. nuitka/build/include/nuitka/jit_sources.h +25 -0
  128. nuitka/build/include/nuitka/prelude.h +128 -46
  129. nuitka/build/include/nuitka/printing.h +22 -17
  130. nuitka/build/include/nuitka/python_pgo.h +19 -18
  131. nuitka/build/include/nuitka/safe_string_ops.h +20 -18
  132. nuitka/build/include/nuitka/threading.h +32 -33
  133. nuitka/build/include/nuitka/tracing.h +28 -18
  134. nuitka/build/include/nuitka/type_aliases.h +27 -0
  135. nuitka/build/include/nuitka/unfreezing.h +29 -23
  136. nuitka/build/inline_copy/bin/scons.py +14 -0
  137. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +6 -6
  138. nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +0 -3
  139. nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
  140. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
  141. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
  142. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
  143. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
  144. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
  145. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
  146. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
  147. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
  148. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
  149. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
  150. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
  151. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
  152. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
  153. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
  154. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
  155. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
  156. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
  157. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
  158. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
  159. nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
  160. nuitka/build/inline_copy/tqdm/tqdm/__init__.py +2 -2
  161. nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +4 -1
  162. nuitka/build/inline_copy/tqdm/tqdm/utils.py +14 -8
  163. nuitka/build/inline_copy/tqdm/tqdm/version.py +1 -8
  164. nuitka/build/inline_copy/zlib/LICENSE +22 -0
  165. nuitka/build/inline_copy/zlib/crc32.c +1049 -0
  166. nuitka/build/inline_copy/zlib/crc32.h +9446 -0
  167. nuitka/build/inline_copy/zlib/zconf.h +551 -0
  168. nuitka/build/inline_copy/zlib/zlib.h +1938 -0
  169. nuitka/build/inline_copy/zlib/zutil.h +275 -0
  170. nuitka/build/static_src/CompiledAsyncgenType.c +176 -182
  171. nuitka/build/static_src/CompiledCellType.c +63 -40
  172. nuitka/build/static_src/CompiledCodeHelpers.c +181 -128
  173. nuitka/build/static_src/CompiledCoroutineType.c +196 -203
  174. nuitka/build/static_src/CompiledFrameType.c +287 -133
  175. nuitka/build/static_src/CompiledFunctionType.c +389 -95
  176. nuitka/build/static_src/CompiledGeneratorType.c +376 -252
  177. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +185 -198
  178. nuitka/build/static_src/CompiledMethodType.c +83 -71
  179. nuitka/build/static_src/HelpersAllocator.c +88 -19
  180. nuitka/build/static_src/HelpersAttributes.c +33 -54
  181. nuitka/build/static_src/HelpersBuiltin.c +43 -33
  182. nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
  183. nuitka/build/static_src/HelpersBytes.c +19 -20
  184. nuitka/build/static_src/HelpersCalling.c +33 -30
  185. nuitka/build/static_src/HelpersCallingGenerated.c +1000 -181
  186. nuitka/build/static_src/HelpersChecksumTools.c +35 -21
  187. nuitka/build/static_src/HelpersClasses.c +17 -17
  188. nuitka/build/static_src/HelpersComparisonEq.c +518 -492
  189. nuitka/build/static_src/HelpersComparisonEqUtils.c +21 -19
  190. nuitka/build/static_src/HelpersComparisonGe.c +513 -497
  191. nuitka/build/static_src/HelpersComparisonGt.c +512 -496
  192. nuitka/build/static_src/HelpersComparisonLe.c +513 -497
  193. nuitka/build/static_src/HelpersComparisonLt.c +512 -496
  194. nuitka/build/static_src/HelpersComparisonNe.c +520 -492
  195. nuitka/build/static_src/HelpersConsole.c +96 -0
  196. nuitka/build/static_src/HelpersConstantsBlob.c +542 -519
  197. nuitka/build/static_src/HelpersDeepcopy.c +33 -33
  198. nuitka/build/static_src/HelpersDictionaries.c +51 -29
  199. nuitka/build/static_src/HelpersDictionariesGenerated.c +177 -68
  200. nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
  201. nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
  202. nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +93 -0
  203. nuitka/build/static_src/HelpersExceptions.c +161 -50
  204. nuitka/build/static_src/HelpersFiles.c +37 -17
  205. nuitka/build/static_src/HelpersFilesystemPaths.c +292 -181
  206. nuitka/build/static_src/HelpersFloats.c +37 -31
  207. nuitka/build/static_src/HelpersHeapStorage.c +21 -17
  208. nuitka/build/static_src/HelpersImport.c +48 -20
  209. nuitka/build/static_src/HelpersImportHard.c +53 -17
  210. nuitka/build/static_src/HelpersJitSources.c +46 -0
  211. nuitka/build/static_src/HelpersLists.c +140 -50
  212. nuitka/build/static_src/HelpersListsGenerated.c +41 -41
  213. nuitka/build/static_src/HelpersMappings.c +17 -17
  214. nuitka/build/static_src/HelpersMatching.c +137 -51
  215. nuitka/build/static_src/HelpersOperationBinaryAdd.c +173 -146
  216. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +99 -52
  217. nuitka/build/static_src/HelpersOperationBinaryBitand.c +50 -50
  218. nuitka/build/static_src/HelpersOperationBinaryBitor.c +50 -50
  219. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +50 -50
  220. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +41 -41
  221. nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
  222. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +41 -41
  223. nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +20 -21
  224. nuitka/build/static_src/HelpersOperationBinaryLshift.c +47 -47
  225. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +24 -24
  226. nuitka/build/static_src/HelpersOperationBinaryMod.c +107 -107
  227. nuitka/build/static_src/HelpersOperationBinaryMult.c +81 -75
  228. nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +33 -30
  229. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +41 -41
  230. nuitka/build/static_src/HelpersOperationBinaryPow.c +44 -44
  231. nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
  232. nuitka/build/static_src/HelpersOperationBinaryRshift.c +47 -47
  233. nuitka/build/static_src/HelpersOperationBinarySub.c +80 -80
  234. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +41 -41
  235. nuitka/build/static_src/HelpersOperationInplaceAdd.c +171 -153
  236. nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +24 -22
  237. nuitka/build/static_src/HelpersOperationInplaceBitand.c +53 -53
  238. nuitka/build/static_src/HelpersOperationInplaceBitor.c +53 -53
  239. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +53 -53
  240. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +62 -62
  241. nuitka/build/static_src/HelpersOperationInplaceLshift.c +44 -44
  242. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +37 -37
  243. nuitka/build/static_src/HelpersOperationInplaceMod.c +134 -134
  244. nuitka/build/static_src/HelpersOperationInplaceMult.c +78 -78
  245. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +62 -62
  246. nuitka/build/static_src/HelpersOperationInplacePow.c +62 -62
  247. nuitka/build/static_src/HelpersOperationInplaceRshift.c +44 -44
  248. nuitka/build/static_src/HelpersOperationInplaceSub.c +112 -112
  249. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +62 -62
  250. nuitka/build/static_src/HelpersProfiling.c +24 -23
  251. nuitka/build/static_src/HelpersPythonPgo.c +22 -22
  252. nuitka/build/static_src/HelpersRaising.c +88 -20
  253. nuitka/build/static_src/HelpersSafeStrings.c +34 -22
  254. nuitka/build/static_src/HelpersSequences.c +18 -19
  255. nuitka/build/static_src/HelpersSlices.c +29 -23
  256. nuitka/build/static_src/HelpersStrings.c +234 -37
  257. nuitka/build/static_src/HelpersTuples.c +46 -34
  258. nuitka/build/static_src/HelpersTypes.c +68 -23
  259. nuitka/build/static_src/InspectPatcher.c +108 -27
  260. nuitka/build/static_src/MainProgram.c +359 -263
  261. nuitka/build/static_src/MetaPathBasedLoader.c +367 -242
  262. nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +39 -26
  263. nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
  264. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +97 -22
  265. nuitka/build/static_src/OnefileBootstrap.c +276 -164
  266. nuitka/build/static_src/OnefileSplashScreen.cpp +51 -27
  267. nuitka/code_generation/AsyncgenCodes.py +19 -17
  268. nuitka/code_generation/AttributeCodes.py +31 -27
  269. nuitka/code_generation/BinaryOperationHelperDefinitions.py +24 -20
  270. nuitka/code_generation/BranchCodes.py +19 -17
  271. nuitka/code_generation/BuiltinCodes.py +20 -17
  272. nuitka/code_generation/CallCodes.py +19 -17
  273. nuitka/code_generation/ClassCodes.py +19 -17
  274. nuitka/code_generation/CodeGeneration.py +48 -27
  275. nuitka/code_generation/CodeHelperSelection.py +19 -17
  276. nuitka/code_generation/CodeHelpers.py +24 -20
  277. nuitka/code_generation/CodeObjectCodes.py +34 -24
  278. nuitka/code_generation/ComparisonCodes.py +38 -20
  279. nuitka/code_generation/ComparisonHelperDefinitions.py +19 -17
  280. nuitka/code_generation/ConditionalCodes.py +19 -17
  281. nuitka/code_generation/ConstantCodes.py +82 -28
  282. nuitka/code_generation/Contexts.py +152 -26
  283. nuitka/code_generation/CoroutineCodes.py +19 -17
  284. nuitka/code_generation/CtypesCodes.py +19 -17
  285. nuitka/code_generation/DictCodes.py +25 -23
  286. nuitka/code_generation/Emission.py +21 -18
  287. nuitka/code_generation/ErrorCodes.py +27 -33
  288. nuitka/code_generation/EvalCodes.py +24 -20
  289. nuitka/code_generation/ExceptionCodes.py +27 -18
  290. nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +20 -17
  291. nuitka/code_generation/ExpressionCodes.py +19 -17
  292. nuitka/code_generation/FrameCodes.py +24 -20
  293. nuitka/code_generation/FunctionCodes.py +24 -21
  294. nuitka/code_generation/GeneratorCodes.py +23 -20
  295. nuitka/code_generation/GlobalConstants.py +43 -23
  296. nuitka/code_generation/GlobalsLocalsCodes.py +21 -19
  297. nuitka/code_generation/IdCodes.py +19 -17
  298. nuitka/code_generation/ImportCodes.py +90 -50
  299. nuitka/code_generation/Indentation.py +23 -22
  300. nuitka/code_generation/IndexCodes.py +19 -17
  301. nuitka/code_generation/InjectCCodes.py +14 -12
  302. nuitka/code_generation/IntegerCodes.py +19 -17
  303. nuitka/code_generation/IteratorCodes.py +19 -17
  304. nuitka/code_generation/JitCodes.py +44 -0
  305. nuitka/code_generation/LabelCodes.py +19 -17
  306. nuitka/code_generation/LineNumberCodes.py +19 -17
  307. nuitka/code_generation/ListCodes.py +32 -36
  308. nuitka/code_generation/LoaderCodes.py +22 -17
  309. nuitka/code_generation/LocalsDictCodes.py +56 -32
  310. nuitka/code_generation/LoopCodes.py +19 -17
  311. nuitka/code_generation/MatchCodes.py +42 -22
  312. nuitka/code_generation/ModuleCodes.py +43 -25
  313. nuitka/code_generation/Namify.py +27 -23
  314. nuitka/code_generation/NetworkxCodes.py +51 -0
  315. nuitka/code_generation/OperationCodes.py +29 -31
  316. nuitka/code_generation/PackageResourceCodes.py +59 -23
  317. nuitka/code_generation/PrintCodes.py +19 -17
  318. nuitka/code_generation/PythonAPICodes.py +19 -17
  319. nuitka/code_generation/RaisingCodes.py +19 -17
  320. nuitka/code_generation/Reports.py +19 -17
  321. nuitka/code_generation/ReturnCodes.py +19 -17
  322. nuitka/code_generation/SetCodes.py +19 -17
  323. nuitka/code_generation/SliceCodes.py +22 -20
  324. nuitka/code_generation/StringCodes.py +19 -17
  325. nuitka/code_generation/SubscriptCodes.py +24 -30
  326. nuitka/code_generation/TensorflowCodes.py +54 -0
  327. nuitka/code_generation/TryCodes.py +19 -17
  328. nuitka/code_generation/TupleCodes.py +20 -18
  329. nuitka/code_generation/TypeAliasCodes.py +71 -0
  330. nuitka/code_generation/VariableCodes.py +26 -22
  331. nuitka/code_generation/VariableDeclarations.py +20 -17
  332. nuitka/code_generation/YieldCodes.py +22 -20
  333. nuitka/code_generation/__init__.py +5 -4
  334. nuitka/code_generation/c_types/CTypeBases.py +19 -17
  335. nuitka/code_generation/c_types/CTypeBooleans.py +19 -17
  336. nuitka/code_generation/c_types/CTypeCFloats.py +19 -17
  337. nuitka/code_generation/c_types/CTypeCLongs.py +19 -18
  338. nuitka/code_generation/c_types/CTypeModuleDictVariables.py +19 -17
  339. nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +19 -17
  340. nuitka/code_generation/c_types/CTypeNuitkaInts.py +19 -18
  341. nuitka/code_generation/c_types/CTypeNuitkaVoids.py +19 -17
  342. nuitka/code_generation/c_types/CTypePyObjectPointers.py +27 -25
  343. nuitka/code_generation/c_types/CTypeVoids.py +20 -17
  344. nuitka/code_generation/c_types/__init__.py +5 -4
  345. nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +18 -17
  346. nuitka/code_generation/templates/CodeTemplatesConstants.py +132 -36
  347. nuitka/code_generation/templates/CodeTemplatesCoroutines.py +18 -17
  348. nuitka/code_generation/templates/CodeTemplatesExceptions.py +19 -18
  349. nuitka/code_generation/templates/CodeTemplatesFrames.py +18 -17
  350. nuitka/code_generation/templates/CodeTemplatesFunction.py +18 -17
  351. nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +19 -17
  352. nuitka/code_generation/templates/CodeTemplatesIterators.py +18 -18
  353. nuitka/code_generation/templates/CodeTemplatesLoader.py +25 -19
  354. nuitka/code_generation/templates/CodeTemplatesModules.py +244 -165
  355. nuitka/code_generation/templates/CodeTemplatesVariables.py +42 -27
  356. nuitka/code_generation/templates/TemplateDebugWrapper.py +19 -18
  357. nuitka/code_generation/templates/__init__.py +5 -4
  358. nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +19 -19
  359. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +18 -18
  360. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +76 -25
  361. nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +22 -22
  362. nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +19 -19
  363. nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +19 -19
  364. nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +17 -17
  365. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +121 -48
  366. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +18 -18
  367. nuitka/code_generation/templates_c/HelperLongTools.c.j2 +18 -18
  368. nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +6 -6
  369. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +23 -23
  370. nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +35 -35
  371. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +28 -28
  372. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +17 -17
  373. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +18 -18
  374. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +44 -32
  375. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +20 -20
  376. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +28 -28
  377. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +24 -24
  378. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +33 -29
  379. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +20 -20
  380. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +27 -27
  381. nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +17 -17
  382. nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +17 -17
  383. nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +17 -17
  384. nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +17 -17
  385. nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +21 -18
  386. nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +26 -24
  387. nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +17 -17
  388. nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +17 -17
  389. nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +21 -18
  390. nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +17 -17
  391. nuitka/containers/Namedtuples.py +19 -18
  392. nuitka/containers/OrderedSetsFallback.py +19 -17
  393. nuitka/containers/__init__.py +5 -4
  394. nuitka/distutils/Build.py +19 -18
  395. nuitka/distutils/DistutilCommands.py +34 -23
  396. nuitka/distutils/__init__.py +5 -4
  397. nuitka/finalizations/Finalization.py +20 -17
  398. nuitka/finalizations/FinalizeMarkups.py +21 -41
  399. nuitka/finalizations/__init__.py +5 -4
  400. nuitka/freezer/DependsExe.py +48 -28
  401. nuitka/freezer/DllDependenciesCommon.py +47 -20
  402. nuitka/freezer/DllDependenciesMacOS.py +147 -57
  403. nuitka/freezer/DllDependenciesPosix.py +29 -19
  404. nuitka/freezer/DllDependenciesWin32.py +29 -21
  405. nuitka/freezer/ImportDetection.py +20 -17
  406. nuitka/freezer/IncludedDataFiles.py +118 -47
  407. nuitka/freezer/IncludedEntryPoints.py +102 -38
  408. nuitka/freezer/Onefile.py +32 -22
  409. nuitka/freezer/Standalone.py +105 -50
  410. nuitka/freezer/__init__.py +5 -4
  411. nuitka/importing/IgnoreListing.py +19 -17
  412. nuitka/importing/ImportCache.py +24 -21
  413. nuitka/importing/ImportResolving.py +103 -95
  414. nuitka/importing/Importing.py +286 -92
  415. nuitka/importing/PreloadedPackages.py +21 -18
  416. nuitka/importing/Recursion.py +131 -47
  417. nuitka/importing/StandardLibrary.py +46 -28
  418. nuitka/importing/__init__.py +5 -4
  419. nuitka/nodes/AsyncgenNodes.py +19 -17
  420. nuitka/nodes/AttributeLookupNodes.py +19 -17
  421. nuitka/nodes/AttributeNodes.py +19 -17
  422. nuitka/nodes/AttributeNodesGenerated.py +49 -24
  423. nuitka/nodes/BuiltinAllNodes.py +19 -17
  424. nuitka/nodes/BuiltinAnyNodes.py +19 -17
  425. nuitka/nodes/BuiltinComplexNodes.py +20 -17
  426. nuitka/nodes/BuiltinDecodingNodes.py +19 -17
  427. nuitka/nodes/BuiltinDecoratorNodes.py +19 -17
  428. nuitka/nodes/BuiltinDictNodes.py +19 -17
  429. nuitka/nodes/BuiltinFormatNodes.py +20 -17
  430. nuitka/nodes/BuiltinHashNodes.py +19 -17
  431. nuitka/nodes/BuiltinInputNodes.py +19 -17
  432. nuitka/nodes/BuiltinIntegerNodes.py +19 -17
  433. nuitka/nodes/BuiltinIteratorNodes.py +24 -20
  434. nuitka/nodes/BuiltinLenNodes.py +19 -17
  435. nuitka/nodes/BuiltinNextNodes.py +19 -17
  436. nuitka/nodes/BuiltinOpenNodes.py +52 -18
  437. nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +40 -23
  438. nuitka/nodes/BuiltinRangeNodes.py +21 -19
  439. nuitka/nodes/BuiltinRefNodes.py +68 -19
  440. nuitka/nodes/BuiltinSumNodes.py +20 -18
  441. nuitka/nodes/BuiltinTypeNodes.py +19 -17
  442. nuitka/nodes/BuiltinVarsNodes.py +19 -18
  443. nuitka/nodes/BytesNodes.py +19 -17
  444. nuitka/nodes/CallNodes.py +19 -17
  445. nuitka/nodes/Checkers.py +19 -17
  446. nuitka/nodes/ChildrenHavingMixins.py +1250 -302
  447. nuitka/nodes/ClassNodes.py +49 -29
  448. nuitka/nodes/CodeObjectSpecs.py +29 -18
  449. nuitka/nodes/ComparisonNodes.py +19 -17
  450. nuitka/nodes/ConditionalNodes.py +21 -23
  451. nuitka/nodes/ConstantRefNodes.py +57 -17
  452. nuitka/nodes/ContainerMakingNodes.py +19 -17
  453. nuitka/nodes/ContainerOperationNodes.py +19 -17
  454. nuitka/nodes/CoroutineNodes.py +19 -17
  455. nuitka/nodes/CtypesNodes.py +19 -18
  456. nuitka/nodes/DictionaryNodes.py +19 -18
  457. nuitka/nodes/ExceptionNodes.py +29 -17
  458. nuitka/nodes/ExecEvalNodes.py +19 -17
  459. nuitka/nodes/ExpressionBases.py +34 -26
  460. nuitka/nodes/ExpressionBasesGenerated.py +54 -32
  461. nuitka/nodes/ExpressionShapeMixins.py +19 -17
  462. nuitka/nodes/FrameNodes.py +19 -17
  463. nuitka/nodes/FunctionAttributeNodes.py +19 -17
  464. nuitka/nodes/FunctionNodes.py +81 -35
  465. nuitka/nodes/FutureSpecs.py +35 -20
  466. nuitka/nodes/GeneratorNodes.py +21 -19
  467. nuitka/nodes/GlobalsLocalsNodes.py +22 -17
  468. nuitka/nodes/HardImportNodesGenerated.py +545 -129
  469. nuitka/nodes/ImportHardNodes.py +46 -38
  470. nuitka/nodes/ImportNodes.py +436 -446
  471. nuitka/nodes/IndicatorMixins.py +19 -17
  472. nuitka/nodes/InjectCNodes.py +19 -18
  473. nuitka/nodes/IterationHandles.py +55 -34
  474. nuitka/nodes/KeyValuePairNodes.py +19 -17
  475. nuitka/nodes/ListOperationNodes.py +33 -21
  476. nuitka/nodes/LocalsDictNodes.py +19 -17
  477. nuitka/nodes/LocalsScopes.py +41 -41
  478. nuitka/nodes/LoopNodes.py +28 -17
  479. nuitka/nodes/MatchNodes.py +37 -24
  480. nuitka/nodes/ModuleAttributeNodes.py +18 -35
  481. nuitka/nodes/ModuleNodes.py +90 -31
  482. nuitka/nodes/NetworkxNodes.py +45 -0
  483. nuitka/nodes/NodeBases.py +45 -43
  484. nuitka/nodes/NodeMakingHelpers.py +21 -19
  485. nuitka/nodes/NodeMetaClasses.py +45 -28
  486. nuitka/nodes/OperatorNodes.py +28 -26
  487. nuitka/nodes/OperatorNodesUnary.py +20 -17
  488. nuitka/nodes/OsSysNodes.py +66 -18
  489. nuitka/nodes/OutlineNodes.py +22 -20
  490. nuitka/nodes/PackageMetadataNodes.py +37 -27
  491. nuitka/nodes/PackageResourceNodes.py +29 -23
  492. nuitka/nodes/PrintNodes.py +19 -17
  493. nuitka/nodes/ReturnNodes.py +20 -18
  494. nuitka/nodes/SideEffectNodes.py +19 -17
  495. nuitka/nodes/SliceNodes.py +20 -18
  496. nuitka/nodes/StatementBasesGenerated.py +125 -77
  497. nuitka/nodes/StatementNodes.py +19 -17
  498. nuitka/nodes/StrNodes.py +19 -17
  499. nuitka/nodes/StringConcatenationNodes.py +20 -17
  500. nuitka/nodes/SubscriptNodes.py +26 -24
  501. nuitka/nodes/TensorflowNodes.py +38 -0
  502. nuitka/nodes/TryNodes.py +19 -17
  503. nuitka/nodes/TypeMatchNodes.py +19 -17
  504. nuitka/nodes/TypeNodes.py +40 -17
  505. nuitka/nodes/VariableAssignNodes.py +122 -64
  506. nuitka/nodes/VariableDelNodes.py +19 -17
  507. nuitka/nodes/VariableNameNodes.py +19 -17
  508. nuitka/nodes/VariableRefNodes.py +63 -26
  509. nuitka/nodes/VariableReleaseNodes.py +19 -17
  510. nuitka/nodes/YieldNodes.py +21 -19
  511. nuitka/nodes/__init__.py +5 -4
  512. nuitka/nodes/shapes/BuiltinTypeShapes.py +145 -39
  513. nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
  514. nuitka/nodes/shapes/ShapeMixins.py +40 -17
  515. nuitka/nodes/shapes/StandardShapes.py +27 -20
  516. nuitka/nodes/shapes/__init__.py +5 -4
  517. nuitka/optimizations/BytecodeDemotion.py +19 -17
  518. nuitka/optimizations/FunctionInlining.py +22 -23
  519. nuitka/optimizations/Graphs.py +19 -17
  520. nuitka/optimizations/Optimization.py +39 -35
  521. nuitka/optimizations/OptimizeBuiltinCalls.py +31 -27
  522. nuitka/optimizations/Tags.py +19 -18
  523. nuitka/optimizations/TraceCollections.py +67 -24
  524. nuitka/optimizations/ValueTraces.py +92 -25
  525. nuitka/optimizations/__init__.py +5 -4
  526. nuitka/pgo/PGO.py +33 -23
  527. nuitka/pgo/__init__.py +5 -4
  528. nuitka/plugins/PluginBase.py +610 -109
  529. nuitka/plugins/Plugins.py +241 -58
  530. nuitka/plugins/YamlPluginBase.py +121 -0
  531. nuitka/plugins/__init__.py +5 -4
  532. nuitka/plugins/standard/AntiBloatPlugin.py +357 -129
  533. nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +20 -19
  534. nuitka/plugins/standard/DataFilesPlugin.py +65 -29
  535. nuitka/plugins/standard/DelvewheelPlugin.py +32 -24
  536. nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
  537. nuitka/plugins/standard/DillPlugin/dill-postLoad.py +256 -0
  538. nuitka/plugins/standard/DillPlugin.py +42 -134
  539. nuitka/plugins/standard/DllFilesPlugin.py +125 -42
  540. nuitka/plugins/standard/EnumPlugin.py +19 -17
  541. nuitka/plugins/standard/EventletPlugin.py +19 -17
  542. nuitka/plugins/standard/GeventPlugin.py +19 -17
  543. nuitka/plugins/standard/GiPlugin.py +44 -28
  544. nuitka/plugins/standard/GlfwPlugin.py +20 -17
  545. nuitka/plugins/standard/ImplicitImports.py +407 -46
  546. nuitka/plugins/standard/KivyPlugin.py +30 -17
  547. nuitka/plugins/standard/MatplotlibPlugin.py +88 -42
  548. nuitka/plugins/standard/MultiprocessingPlugin.py +25 -20
  549. nuitka/plugins/standard/NumpyPlugin.py +19 -17
  550. nuitka/plugins/standard/OptionsNannyPlugin.py +48 -76
  551. nuitka/plugins/standard/PbrPlugin.py +21 -19
  552. nuitka/plugins/standard/PkgResourcesPlugin.py +34 -23
  553. nuitka/plugins/standard/PmwPlugin.py +30 -27
  554. nuitka/plugins/standard/PySidePyQtPlugin.py +74 -80
  555. nuitka/plugins/standard/PywebViewPlugin.py +19 -17
  556. nuitka/plugins/standard/SpacyPlugin.py +136 -0
  557. nuitka/plugins/standard/TensorflowPlugin.py +20 -17
  558. nuitka/plugins/standard/TkinterPlugin.py +103 -53
  559. nuitka/plugins/standard/TorchPlugin.py +20 -17
  560. nuitka/plugins/standard/TransformersPlugin.py +94 -30
  561. nuitka/plugins/standard/TrioPlugin.py +18 -15
  562. nuitka/plugins/standard/UpxPlugin.py +21 -19
  563. nuitka/plugins/standard/__init__.py +5 -4
  564. nuitka/plugins/standard/standard.nuitka-package.config.yml +3449 -1299
  565. nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +14 -14
  566. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +121 -66
  567. nuitka/reports/CompilationReportReader.py +67 -0
  568. nuitka/reports/LicenseReport.rst.j2 +21 -21
  569. nuitka/reports/Reports.py +352 -76
  570. nuitka/reports/__init__.py +5 -4
  571. nuitka/specs/BuiltinBytesOperationSpecs.py +18 -17
  572. nuitka/specs/BuiltinDictOperationSpecs.py +18 -17
  573. nuitka/specs/BuiltinListOperationSpecs.py +18 -17
  574. nuitka/specs/BuiltinParameterSpecs.py +30 -20
  575. nuitka/specs/BuiltinStrOperationSpecs.py +19 -18
  576. nuitka/specs/BuiltinTypeOperationSpecs.py +18 -18
  577. nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
  578. nuitka/specs/HardImportSpecs.py +67 -22
  579. nuitka/specs/ParameterSpecs.py +56 -41
  580. nuitka/specs/__init__.py +5 -4
  581. nuitka/tools/Basics.py +20 -18
  582. nuitka/tools/__init__.py +5 -4
  583. nuitka/tools/commercial/__init__.py +7 -6
  584. nuitka/tools/data_composer/DataComposer.py +78 -62
  585. nuitka/tools/data_composer/__init__.py +5 -4
  586. nuitka/tools/data_composer/__main__.py +18 -17
  587. nuitka/tools/environments/CreateEnvironment.py +20 -17
  588. nuitka/tools/environments/Virtualenv.py +60 -32
  589. nuitka/tools/environments/__init__.py +5 -4
  590. nuitka/tools/general/__init__.py +5 -4
  591. nuitka/tools/general/dll_report/__init__.py +5 -4
  592. nuitka/tools/general/dll_report/__main__.py +19 -21
  593. nuitka/tools/general/find_module/FindModuleCode.py +35 -22
  594. nuitka/tools/general/find_module/__init__.py +5 -4
  595. nuitka/tools/onefile_compressor/OnefileCompressor.py +213 -131
  596. nuitka/tools/onefile_compressor/__init__.py +5 -4
  597. nuitka/tools/onefile_compressor/__main__.py +18 -17
  598. nuitka/tools/podman/Podman.py +19 -17
  599. nuitka/tools/podman/__init__.py +5 -4
  600. nuitka/tools/podman/__main__.py +35 -19
  601. nuitka/tools/profiler/__init__.py +5 -4
  602. nuitka/tools/profiler/__main__.py +18 -17
  603. nuitka/tools/scanning/DisplayPackageDLLs.py +47 -22
  604. nuitka/tools/scanning/DisplayPackageData.py +31 -19
  605. nuitka/tools/scanning/__init__.py +5 -4
  606. nuitka/tools/specialize/CTypeDescriptions.py +93 -71
  607. nuitka/tools/specialize/Common.py +18 -17
  608. nuitka/tools/specialize/SpecializeC.py +31 -27
  609. nuitka/tools/specialize/SpecializePython.py +108 -45
  610. nuitka/tools/specialize/__init__.py +5 -4
  611. nuitka/tools/testing/Common.py +106 -52
  612. nuitka/tools/testing/Constructs.py +19 -17
  613. nuitka/tools/testing/OutputComparison.py +54 -18
  614. nuitka/tools/testing/Pythons.py +19 -18
  615. nuitka/tools/testing/RuntimeTracing.py +20 -19
  616. nuitka/tools/testing/SearchModes.py +26 -20
  617. nuitka/tools/testing/Valgrind.py +19 -17
  618. nuitka/tools/testing/__init__.py +5 -4
  619. nuitka/tools/testing/check_reference_counts/__init__.py +5 -4
  620. nuitka/tools/testing/check_reference_counts/__main__.py +18 -18
  621. nuitka/tools/testing/compare_with_cpython/__init__.py +5 -4
  622. nuitka/tools/testing/compare_with_cpython/__main__.py +36 -29
  623. nuitka/tools/testing/find_sxs_modules/__init__.py +5 -4
  624. nuitka/tools/testing/find_sxs_modules/__main__.py +17 -17
  625. nuitka/tools/testing/measure_construct_performance/__init__.py +5 -4
  626. nuitka/tools/testing/measure_construct_performance/__main__.py +22 -25
  627. nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
  628. nuitka/tools/testing/run_nuitka_tests/__main__.py +57 -40
  629. nuitka/tools/watch/AutoStage.py +144 -0
  630. nuitka/tools/watch/GitHub.py +113 -0
  631. nuitka/tools/watch/__init__.py +5 -4
  632. nuitka/tools/watch/__main__.py +322 -91
  633. nuitka/tree/Building.py +176 -147
  634. nuitka/tree/ComplexCallHelperFunctions.py +80 -58
  635. nuitka/tree/Extractions.py +19 -17
  636. nuitka/tree/InternalModule.py +29 -20
  637. nuitka/tree/Operations.py +19 -17
  638. nuitka/tree/ReformulationAssertStatements.py +20 -17
  639. nuitka/tree/ReformulationAssignmentStatements.py +92 -91
  640. nuitka/tree/ReformulationBooleanExpressions.py +19 -17
  641. nuitka/tree/ReformulationCallExpressions.py +20 -18
  642. nuitka/tree/ReformulationClasses.py +45 -39
  643. nuitka/tree/ReformulationClasses3.py +146 -98
  644. nuitka/tree/ReformulationComparisonExpressions.py +29 -35
  645. nuitka/tree/ReformulationContractionExpressions.py +58 -55
  646. nuitka/tree/ReformulationDictionaryCreation.py +40 -35
  647. nuitka/tree/ReformulationExecStatements.py +42 -39
  648. nuitka/tree/ReformulationForLoopStatements.py +30 -34
  649. nuitka/tree/ReformulationFunctionStatements.py +58 -54
  650. nuitka/tree/ReformulationImportStatements.py +34 -29
  651. nuitka/tree/ReformulationLambdaExpressions.py +23 -24
  652. nuitka/tree/ReformulationMatchStatements.py +244 -92
  653. nuitka/tree/ReformulationMultidist.py +22 -18
  654. nuitka/tree/ReformulationNamespacePackages.py +55 -46
  655. nuitka/tree/ReformulationPrintStatements.py +23 -24
  656. nuitka/tree/ReformulationSequenceCreation.py +50 -49
  657. nuitka/tree/ReformulationSubscriptExpressions.py +19 -17
  658. nuitka/tree/ReformulationTryExceptStatements.py +19 -17
  659. nuitka/tree/ReformulationTryFinallyStatements.py +34 -17
  660. nuitka/tree/ReformulationWhileLoopStatements.py +19 -17
  661. nuitka/tree/ReformulationWithStatements.py +39 -41
  662. nuitka/tree/ReformulationYieldExpressions.py +21 -19
  663. nuitka/tree/SourceHandling.py +76 -31
  664. nuitka/tree/SyntaxErrors.py +19 -17
  665. nuitka/tree/TreeHelpers.py +33 -20
  666. nuitka/tree/VariableClosure.py +35 -39
  667. nuitka/tree/__init__.py +5 -4
  668. nuitka/utils/AppDirs.py +41 -20
  669. nuitka/utils/CStrings.py +66 -21
  670. nuitka/utils/CommandLineOptions.py +84 -19
  671. nuitka/utils/Distributions.py +445 -54
  672. nuitka/utils/Download.py +89 -57
  673. nuitka/utils/Execution.py +73 -34
  674. nuitka/utils/FileOperations.py +318 -74
  675. nuitka/utils/Hashing.py +55 -33
  676. nuitka/utils/Images.py +26 -19
  677. nuitka/utils/Importing.py +118 -24
  678. nuitka/utils/InstalledPythons.py +80 -75
  679. nuitka/utils/InstanceCounters.py +20 -17
  680. nuitka/utils/Jinja2.py +30 -22
  681. nuitka/utils/Json.py +19 -17
  682. nuitka/utils/MacOSApp.py +26 -18
  683. nuitka/utils/MemoryUsage.py +20 -18
  684. nuitka/utils/ModuleNames.py +42 -26
  685. nuitka/utils/ReExecute.py +50 -28
  686. nuitka/utils/Rest.py +20 -17
  687. nuitka/utils/SharedLibraries.py +161 -75
  688. nuitka/utils/Shebang.py +20 -17
  689. nuitka/utils/Signing.py +63 -18
  690. nuitka/utils/SlotMetaClasses.py +57 -0
  691. nuitka/utils/StaticLibraries.py +83 -56
  692. nuitka/utils/ThreadedExecutor.py +18 -17
  693. nuitka/utils/Timing.py +22 -20
  694. nuitka/utils/Utils.py +115 -25
  695. nuitka/utils/WindowsFileUsage.py +22 -20
  696. nuitka/utils/WindowsResources.py +25 -18
  697. nuitka/utils/Yaml.py +62 -24
  698. nuitka/utils/__init__.py +5 -4
  699. Nuitka_winsvc-1.8.dist-info/RECORD +0 -905
  700. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_gui.py +0 -9
  701. nuitka/build/inline_copy/tqdm/tqdm/gui.py +0 -191
  702. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/LICENSE.txt +0 -0
  703. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/entry_points.txt +0 -0
  704. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/top_level.txt +0 -0
@@ -1,20 +1,5 @@
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
+
18
3
  // Compiled function type.
19
4
 
20
5
  // The backbone of the integration into CPython. Try to behave as well as normal
@@ -27,14 +12,22 @@
27
12
  #include "nuitka/freelists.h"
28
13
 
29
14
  // Needed for offsetof
30
- #include "structmember.h"
31
15
  #include <stddef.h>
16
+ #include <structmember.h>
17
+
18
+ // spell-checker: ignore qualname,kwdefaults,getset,weakrefs,vectorcall,nargsf,m_varnames
32
19
 
33
- // spell-checker: ignore qualname,klass,kwdefaults,getset,weakrefs,vectorcall,nargsf,m_varnames
20
+ #if _DEBUG_REFCOUNTS
21
+ int count_active_Nuitka_Function_Type;
22
+ int count_allocated_Nuitka_Function_Type;
23
+ int count_released_Nuitka_Function_Type;
24
+ #endif
34
25
 
35
26
  // tp_descr_get slot, bind a function to an object.
36
- static PyObject *Nuitka_Function_descr_get(PyObject *function, PyObject *object, PyObject *klass) {
27
+ static PyObject *Nuitka_Function_descr_get(PyObject *function, PyObject *object, PyObject *class_object) {
37
28
  assert(Nuitka_Function_Check(function));
29
+ CHECK_OBJECT((PyObject *)function);
30
+ assert(_PyObject_GC_IS_TRACKED(function));
38
31
 
39
32
  #if PYTHON_VERSION >= 0x300
40
33
  if (object == NULL || object == Py_None) {
@@ -43,7 +36,7 @@ static PyObject *Nuitka_Function_descr_get(PyObject *function, PyObject *object,
43
36
  }
44
37
  #endif
45
38
 
46
- return Nuitka_Method_New((struct Nuitka_FunctionObject *)function, object == Py_None ? NULL : object, klass);
39
+ return Nuitka_Method_New((struct Nuitka_FunctionObject *)function, object == Py_None ? NULL : object, class_object);
47
40
  }
48
41
 
49
42
  // tp_repr slot, decide how compiled function shall be output to "repr" built-in
@@ -52,13 +45,11 @@ static PyObject *Nuitka_Function_tp_repr(struct Nuitka_FunctionObject *function)
52
45
  assert(Nuitka_Function_Check((PyObject *)function));
53
46
  assert(_PyObject_GC_IS_TRACKED(function));
54
47
 
55
- return Nuitka_String_FromFormat("<compiled_function %s at %p>",
56
48
  #if PYTHON_VERSION < 0x300
57
- Nuitka_String_AsString(function->m_name),
49
+ return Nuitka_String_FromFormat("<compiled_function %s at %p>", Nuitka_String_AsString(function->m_name), function);
58
50
  #else
59
- Nuitka_String_AsString(function->m_qualname),
51
+ return Nuitka_String_FromFormat("<compiled_function %U at %p>", function->m_qualname, function);
60
52
  #endif
61
- function);
62
53
  }
63
54
 
64
55
  static long Nuitka_Function_tp_traverse(struct Nuitka_FunctionObject *function, visitproc visit, void *arg) {
@@ -199,7 +190,9 @@ static PyObject *Nuitka_Function_get_dict(struct Nuitka_FunctionObject *function
199
190
  assert(_PyObject_GC_IS_TRACKED(function));
200
191
 
201
192
  if (function->m_dict == NULL) {
202
- function->m_dict = MAKE_DICT_EMPTY();
193
+ NUITKA_MAY_BE_UNUSED PyThreadState *tstate = PyThreadState_GET();
194
+
195
+ function->m_dict = MAKE_DICT_EMPTY(tstate);
203
196
  }
204
197
 
205
198
  CHECK_OBJECT(function->m_dict);
@@ -295,7 +288,7 @@ static PyObject *Nuitka_Function_get_compiled_constant(struct Nuitka_FunctionObj
295
288
  }
296
289
  CHECK_OBJECT(result);
297
290
 
298
- Py_INCREF(result);
291
+ Py_INCREF_IMMORTAL(result);
299
292
  return result;
300
293
  }
301
294
 
@@ -316,9 +309,10 @@ static PyObject *Nuitka_Function_get_closure(struct Nuitka_FunctionObject *funct
316
309
  assert(_PyObject_GC_IS_TRACKED(function));
317
310
 
318
311
  if (function->m_closure_given > 0) {
319
- return MAKE_TUPLE((PyObject *const *)function->m_closure, function->m_closure_given);
312
+ NUITKA_MAY_BE_UNUSED PyThreadState *tstate = PyThreadState_GET();
313
+ return MAKE_TUPLE(tstate, (PyObject *const *)function->m_closure, function->m_closure_given);
320
314
  } else {
321
- Py_INCREF(Py_None);
315
+ Py_INCREF_IMMORTAL(Py_None);
322
316
  return Py_None;
323
317
  }
324
318
  }
@@ -447,7 +441,9 @@ static PyObject *Nuitka_Function_get_annotations(struct Nuitka_FunctionObject *f
447
441
  assert(_PyObject_GC_IS_TRACKED(function));
448
442
 
449
443
  if (function->m_annotations == NULL) {
450
- function->m_annotations = MAKE_DICT_EMPTY();
444
+ NUITKA_MAY_BE_UNUSED PyThreadState *tstate = PyThreadState_GET();
445
+
446
+ function->m_annotations = MAKE_DICT_EMPTY(tstate);
451
447
  }
452
448
  CHECK_OBJECT(function->m_annotations);
453
449
 
@@ -524,6 +520,35 @@ static PyObject *Nuitka_Function_get_builtins(struct Nuitka_FunctionObject *func
524
520
  }
525
521
  #endif
526
522
 
523
+ #if PYTHON_VERSION >= 0x3c0
524
+ static int Nuitka_Function_set_type_params(struct Nuitka_FunctionObject *function, PyObject *value) {
525
+ CHECK_OBJECT((PyObject *)function);
526
+ CHECK_OBJECT_X(value);
527
+ assert(Nuitka_Function_Check((PyObject *)function));
528
+ assert(_PyObject_GC_IS_TRACKED(function));
529
+
530
+ if (unlikely(value == NULL || !PyTuple_Check(value))) {
531
+ PyThreadState *tstate = PyThreadState_GET();
532
+
533
+ SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_TypeError, "__type_params__ must be set to a tuple");
534
+ return -1;
535
+ }
536
+
537
+ Py_SETREF(function->m_type_params, Py_NewRef(value));
538
+ return 0;
539
+ }
540
+
541
+ static PyObject *Nuitka_Function_get_type_params(struct Nuitka_FunctionObject *function) {
542
+ CHECK_OBJECT((PyObject *)function);
543
+ assert(Nuitka_Function_Check((PyObject *)function));
544
+ assert(_PyObject_GC_IS_TRACKED(function));
545
+
546
+ // TODO: Probably not needed anymore?
547
+ Py_INCREF(const_tuple_empty);
548
+ return const_tuple_empty;
549
+ }
550
+ #endif
551
+
527
552
  static int Nuitka_Function_set_module(struct Nuitka_FunctionObject *function, PyObject *value) {
528
553
  CHECK_OBJECT((PyObject *)function);
529
554
  assert(Nuitka_Function_Check((PyObject *)function));
@@ -531,7 +556,9 @@ static int Nuitka_Function_set_module(struct Nuitka_FunctionObject *function, Py
531
556
  CHECK_OBJECT_X(value);
532
557
 
533
558
  if (function->m_dict == NULL) {
534
- function->m_dict = MAKE_DICT_EMPTY();
559
+ NUITKA_MAY_BE_UNUSED PyThreadState *tstate = PyThreadState_GET();
560
+
561
+ function->m_dict = MAKE_DICT_EMPTY(tstate);
535
562
  }
536
563
 
537
564
  if (value == NULL) {
@@ -602,6 +629,9 @@ static PyGetSetDef Nuitka_Function_getset[] = {
602
629
  #endif
603
630
  #if PYTHON_VERSION >= 0x3a0
604
631
  {(char *)"__builtins__", (getter)Nuitka_Function_get_builtins, (setter)Nuitka_Function_set_builtins, NULL},
632
+ #endif
633
+ #if PYTHON_VERSION >= 0x3c0
634
+ {(char *)"__type_params__", (getter)Nuitka_Function_get_type_params, (setter)Nuitka_Function_set_type_params, NULL},
605
635
  #endif
606
636
  {(char *)"__compiled__", (getter)Nuitka_Function_get_compiled, (setter)Nuitka_Function_set_compiled, NULL},
607
637
  {(char *)"__compiled_constant__", (getter)Nuitka_Function_get_compiled_constant,
@@ -630,6 +660,41 @@ static PyObject *Nuitka_Function_clone(struct Nuitka_FunctionObject *function) {
630
660
  assert(Nuitka_Function_Check((PyObject *)function));
631
661
  assert(_PyObject_GC_IS_TRACKED(function));
632
662
 
663
+ for (Py_ssize_t i = 0; i < function->m_closure_given; i++) {
664
+ assert(function->m_closure[i]);
665
+ Py_INCREF(function->m_closure[i]);
666
+ }
667
+
668
+ Py_INCREF(function->m_defaults);
669
+
670
+ #if PYTHON_VERSION >= 0x300
671
+ #if 0
672
+ PRINT_STRING("Nuitka_Function_clone:");
673
+ PRINT_ITEM((PyObject *)function);
674
+ PRINT_NEW_LINE();
675
+ #endif
676
+
677
+ PyThreadState *tstate = PyThreadState_GET();
678
+
679
+ PyObject *annotations = function->m_annotations;
680
+ if (annotations != NULL) {
681
+ if (DICT_SIZE(annotations) != 0) {
682
+ annotations = DICT_COPY(tstate, annotations);
683
+ } else {
684
+ annotations = NULL;
685
+ }
686
+ }
687
+
688
+ PyObject *kwdefaults = function->m_kwdefaults;
689
+ if (kwdefaults != NULL) {
690
+ if (DICT_SIZE(kwdefaults) != 0) {
691
+ kwdefaults = DICT_COPY(tstate, kwdefaults);
692
+ } else {
693
+ kwdefaults = NULL;
694
+ }
695
+ }
696
+ #endif
697
+
633
698
  struct Nuitka_FunctionObject *result =
634
699
  Nuitka_Function_New(function->m_c_code, function->m_name,
635
700
  #if PYTHON_VERSION >= 0x300
@@ -637,7 +702,7 @@ static PyObject *Nuitka_Function_clone(struct Nuitka_FunctionObject *function) {
637
702
  #endif
638
703
  function->m_code_object, function->m_defaults,
639
704
  #if PYTHON_VERSION >= 0x300
640
- function->m_kwdefaults, function->m_annotations,
705
+ kwdefaults, annotations,
641
706
  #endif
642
707
  function->m_module, function->m_doc, function->m_closure, function->m_closure_given);
643
708
 
@@ -649,6 +714,11 @@ static struct Nuitka_FunctionObject *free_list_functions = NULL;
649
714
  static int free_list_functions_count = 0;
650
715
 
651
716
  static void Nuitka_Function_tp_dealloc(struct Nuitka_FunctionObject *function) {
717
+ #if _DEBUG_REFCOUNTS
718
+ count_active_Nuitka_Function_Type -= 1;
719
+ count_released_Nuitka_Function_Type += 1;
720
+ #endif
721
+
652
722
  assert(Nuitka_Function_Check((PyObject *)function));
653
723
  assert(_PyObject_GC_IS_TRACKED(function));
654
724
 
@@ -656,10 +726,9 @@ static void Nuitka_Function_tp_dealloc(struct Nuitka_FunctionObject *function) {
656
726
  PyThreadState *tstate = PyThreadState_GET();
657
727
 
658
728
  // Save the current exception, if any, we must to not corrupt it.
659
- PyObject *save_exception_type, *save_exception_value;
660
- PyTracebackObject *save_exception_tb;
661
- FETCH_ERROR_OCCURRED(tstate, &save_exception_type, &save_exception_value, &save_exception_tb);
662
- RESTORE_ERROR_OCCURRED(tstate, save_exception_type, save_exception_value, save_exception_tb);
729
+ struct Nuitka_ExceptionPreservationItem saved_exception_state1;
730
+ FETCH_ERROR_OCCURRED_STATE(tstate, &saved_exception_state1);
731
+ RESTORE_ERROR_OCCURRED_STATE(tstate, &saved_exception_state1);
663
732
  #endif
664
733
  assert(_PyObject_GC_IS_TRACKED(function));
665
734
  Nuitka_GC_UnTrack(function);
@@ -673,6 +742,10 @@ static void Nuitka_Function_tp_dealloc(struct Nuitka_FunctionObject *function) {
673
742
  Py_DECREF(function->m_qualname);
674
743
  #endif
675
744
 
745
+ #if PYTHON_VERSION >= 0x3c0
746
+ Py_DECREF(function->m_type_params);
747
+ #endif
748
+
676
749
  // These may actually resurrect the object, not?
677
750
  Py_XDECREF(function->m_dict);
678
751
  Py_DECREF(function->m_defaults);
@@ -696,9 +769,11 @@ static void Nuitka_Function_tp_dealloc(struct Nuitka_FunctionObject *function) {
696
769
  releaseToFreeList(free_list_functions, function, MAX_FUNCTION_FREE_LIST_COUNT);
697
770
 
698
771
  #ifndef __NUITKA_NO_ASSERT__
699
- assert(tstate->curexc_type == save_exception_type);
700
- assert(tstate->curexc_value == save_exception_value);
701
- assert((PyTracebackObject *)tstate->curexc_traceback == save_exception_tb);
772
+ struct Nuitka_ExceptionPreservationItem saved_exception_state2;
773
+ FETCH_ERROR_OCCURRED_STATE(tstate, &saved_exception_state2);
774
+ RESTORE_ERROR_OCCURRED_STATE(tstate, &saved_exception_state2);
775
+
776
+ ASSERT_SAME_EXCEPTION_STATE(&saved_exception_state1, &saved_exception_state2);
702
777
  #endif
703
778
  }
704
779
 
@@ -766,7 +841,7 @@ PyTypeObject Nuitka_Function_Type = {
766
841
  0, // tp_weaklist
767
842
  0, // tp_del
768
843
  0 // tp_version_tag
769
- #if PYTHON_VERSION >= 0x340
844
+ #if PYTHON_VERSION >= 0x300
770
845
  ,
771
846
  0 // tp_finalizer
772
847
  #endif
@@ -803,7 +878,7 @@ void _initCompiledFunctionType(void) {
803
878
  assert(Nuitka_Function_Type.tp_subclasses != PyFunction_Type.tp_subclasses || PyFunction_Type.tp_cache == NULL);
804
879
  assert(Nuitka_Function_Type.tp_weaklist != PyFunction_Type.tp_weaklist);
805
880
  assert(Nuitka_Function_Type.tp_del != PyFunction_Type.tp_del || PyFunction_Type.tp_del == NULL);
806
- #if PYTHON_VERSION >= 0x340
881
+ #if PYTHON_VERSION >= 0x300
807
882
  assert(Nuitka_Function_Type.tp_finalize != PyFunction_Type.tp_finalize || PyFunction_Type.tp_finalize == NULL);
808
883
  #endif
809
884
 
@@ -909,11 +984,6 @@ void _initCompiledFunctionType(void) {
909
984
  }
910
985
  }
911
986
  #endif
912
-
913
- #ifdef _NUITKA_PLUGIN_DILL_ENABLED
914
- // TODO: Move this to a __nuitka__ module maybe
915
- PyObject_SetAttrString((PyObject *)builtin_module, "compiled_function", (PyObject *)&Nuitka_Function_Type);
916
- #endif
917
987
  }
918
988
 
919
989
  // Shared implementations for empty functions. When a function body is empty, but
@@ -951,7 +1021,7 @@ static PyObject *_Nuitka_FunctionEmptyCodeTrueImpl(PyThreadState *tstate, struct
951
1021
 
952
1022
  PyObject *result = Py_True;
953
1023
 
954
- Py_INCREF(result);
1024
+ Py_INCREF_IMMORTAL(result);
955
1025
  return result;
956
1026
  }
957
1027
 
@@ -968,8 +1038,7 @@ static PyObject *_Nuitka_FunctionEmptyCodeFalseImpl(PyThreadState *tstate, struc
968
1038
  }
969
1039
 
970
1040
  PyObject *result = Py_False;
971
-
972
- Py_INCREF(result);
1041
+ Py_INCREF_IMMORTAL(result);
973
1042
  return result;
974
1043
  }
975
1044
 
@@ -988,7 +1057,7 @@ static PyObject *_Nuitka_FunctionEmptyCodeGenericImpl(PyThreadState *tstate,
988
1057
 
989
1058
  PyObject *result = function->m_constant_return_value;
990
1059
 
991
- Py_INCREF(result);
1060
+ Py_INCREF_IMMORTAL(result);
992
1061
  return result;
993
1062
  }
994
1063
 
@@ -1007,6 +1076,180 @@ void Nuitka_Function_EnableConstReturnGeneric(struct Nuitka_FunctionObject *func
1007
1076
  function->m_c_code = _Nuitka_FunctionEmptyCodeGenericImpl;
1008
1077
  }
1009
1078
 
1079
+ #ifdef _NUITKA_PLUGIN_DILL_ENABLED
1080
+ int Nuitka_Function_GetFunctionCodeIndex(struct Nuitka_FunctionObject *function,
1081
+ function_impl_code const *function_table) {
1082
+
1083
+ if (function->m_c_code == _Nuitka_FunctionEmptyCodeTrueImpl) {
1084
+ return -2;
1085
+ }
1086
+
1087
+ if (function->m_c_code == _Nuitka_FunctionEmptyCodeFalseImpl) {
1088
+ return -3;
1089
+ }
1090
+
1091
+ if (function->m_c_code == _Nuitka_FunctionEmptyCodeNoneImpl) {
1092
+ return -4;
1093
+ }
1094
+
1095
+ if (function->m_c_code == _Nuitka_FunctionEmptyCodeGenericImpl) {
1096
+ return -5;
1097
+ }
1098
+
1099
+ function_impl_code const *current = function_table;
1100
+ int offset = 0;
1101
+
1102
+ while (*current != NULL) {
1103
+ if (*current == function->m_c_code) {
1104
+ break;
1105
+ }
1106
+
1107
+ current += 1;
1108
+ offset += 1;
1109
+ }
1110
+
1111
+ if (*current == NULL) {
1112
+ PyThreadState *tstate = PyThreadState_GET();
1113
+ #if 0
1114
+ PRINT_STRING("Looking for:");
1115
+ PRINT_ITEM((PyObject *)function);
1116
+ PRINT_NEW_LINE();
1117
+ #endif
1118
+ SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_TypeError, "Cannot find compiled function in module.");
1119
+ return -1;
1120
+ }
1121
+
1122
+ return offset;
1123
+ }
1124
+
1125
+ struct Nuitka_FunctionObject *
1126
+ Nuitka_Function_CreateFunctionViaCodeIndex(PyObject *module, PyObject *function_qualname, PyObject *function_index,
1127
+ PyObject *code_object_desc, PyObject *constant_return_value,
1128
+ PyObject *defaults, PyObject *kw_defaults, PyObject *doc, PyObject *closure,
1129
+ function_impl_code const *function_table, int function_table_size) {
1130
+ int offset = PyLong_AsLong(function_index);
1131
+
1132
+ if (offset > function_table_size || offset < -5 || offset == -1) {
1133
+ PyThreadState *tstate = PyThreadState_GET();
1134
+
1135
+ SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_TypeError, "Wrong offset for compiled function.");
1136
+ return NULL;
1137
+ }
1138
+
1139
+ PyObject *filename = PyTuple_GET_ITEM(code_object_desc, 0);
1140
+ PyObject *function_name = PyTuple_GET_ITEM(code_object_desc, 1);
1141
+ PyObject *line = PyTuple_GET_ITEM(code_object_desc, 2);
1142
+ int line_int = PyLong_AsLong(line);
1143
+ assert(line_int != -1);
1144
+
1145
+ PyObject *arg_names = PyTuple_GET_ITEM(code_object_desc, 3);
1146
+ PyObject *arg_count = PyTuple_GET_ITEM(code_object_desc, 4);
1147
+ int arg_count_int = PyLong_AsLong(arg_count);
1148
+ assert(arg_count_int != -1);
1149
+
1150
+ PyObject *flags = PyTuple_GET_ITEM(code_object_desc, 5);
1151
+ int flags_int = PyLong_AsLong(flags);
1152
+ assert(flags_int != -1);
1153
+
1154
+ PyObject *kw_only_count = PyTuple_GET_ITEM(code_object_desc, 6);
1155
+ int kw_only_count_int = PyLong_AsLong(kw_only_count);
1156
+ assert(kw_only_count_int != -1);
1157
+
1158
+ PyObject *pos_only_count = PyTuple_GET_ITEM(code_object_desc, 7);
1159
+ int pos_only_count_int = PyLong_AsLong(pos_only_count);
1160
+ assert(pos_only_count_int != -1);
1161
+
1162
+ PyCodeObject *code_object =
1163
+ MAKE_CODE_OBJECT(filename, line_int, flags_int, function_name, function_qualname, arg_names,
1164
+ NULL, // free_vars
1165
+ arg_count_int, kw_only_count_int, pos_only_count_int);
1166
+ if (unlikely(code_object == NULL)) {
1167
+ return NULL;
1168
+ }
1169
+
1170
+ Py_ssize_t closure_size;
1171
+
1172
+ if (closure != Py_None) {
1173
+ closure_size = PyTuple_GET_SIZE(closure);
1174
+ } else {
1175
+ closure_size = 0;
1176
+ }
1177
+
1178
+ NUITKA_DYNAMIC_ARRAY_DECL(closure_cells, struct Nuitka_CellObject *, closure_size);
1179
+
1180
+ for (Py_ssize_t i = 0; i < closure_size; i++) {
1181
+ closure_cells[i] = Nuitka_Cell_New0(PyTuple_GET_ITEM(closure, i));
1182
+ }
1183
+
1184
+ struct Nuitka_FunctionObject *result =
1185
+ Nuitka_Function_New(offset >= 0 ? function_table[offset] : NULL, code_object->co_name,
1186
+ #if PYTHON_VERSION >= 0x300
1187
+ NULL, // TODO: Not transferring qualname yet
1188
+ #endif
1189
+ code_object, defaults,
1190
+ #if PYTHON_VERSION >= 0x300
1191
+ kw_defaults,
1192
+ NULL, // TODO: Not transferring annotations
1193
+ #endif
1194
+ module, doc, closure_cells, closure_size);
1195
+
1196
+ CHECK_OBJECT(result);
1197
+
1198
+ if (offset == -2) {
1199
+ Nuitka_Function_EnableConstReturnTrue(result);
1200
+ }
1201
+ if (offset == -3) {
1202
+ Nuitka_Function_EnableConstReturnFalse(result);
1203
+ }
1204
+ if (offset == -4) {
1205
+ result->m_c_code = _Nuitka_FunctionEmptyCodeNoneImpl;
1206
+ }
1207
+ if (offset == -5) {
1208
+ CHECK_OBJECT(constant_return_value);
1209
+
1210
+ Nuitka_Function_EnableConstReturnGeneric(result, constant_return_value);
1211
+
1212
+ Py_INCREF_IMMORTAL(constant_return_value);
1213
+ }
1214
+
1215
+ assert(result->m_c_code != NULL);
1216
+
1217
+ return result;
1218
+ }
1219
+
1220
+ PyObject *Nuitka_Function_ExtractCodeObjectDescription(PyThreadState *tstate, struct Nuitka_FunctionObject *function) {
1221
+ PyObject *code_object_desc = MAKE_TUPLE_EMPTY(tstate, 8);
1222
+
1223
+ PyTuple_SET_ITEM0(code_object_desc, 0, function->m_code_object->co_filename);
1224
+ PyTuple_SET_ITEM0(code_object_desc, 1, function->m_code_object->co_name);
1225
+ PyTuple_SET_ITEM(code_object_desc, 2, PyLong_FromLong(function->m_code_object->co_firstlineno));
1226
+ #if PYTHON_VERSION < 0x3b0
1227
+ PyTuple_SET_ITEM0(code_object_desc, 3, function->m_code_object->co_varnames);
1228
+ #else
1229
+ // spell-checker: ignore PyCode_GetVarnames
1230
+ PyTuple_SET_ITEM(code_object_desc, 3, PyCode_GetVarnames(function->m_code_object));
1231
+ #endif
1232
+ PyTuple_SET_ITEM(code_object_desc, 4, PyLong_FromLong(function->m_code_object->co_argcount));
1233
+ PyTuple_SET_ITEM(code_object_desc, 5, PyLong_FromLong(function->m_code_object->co_flags));
1234
+
1235
+ #if PYTHON_VERSION < 0x380
1236
+ PyTuple_SET_ITEM(code_object_desc, 6, const_int_0);
1237
+ #else
1238
+ PyTuple_SET_ITEM(code_object_desc, 6, PyLong_FromLong(function->m_code_object->co_posonlyargcount));
1239
+ #endif
1240
+
1241
+ #if PYTHON_VERSION < 0x3b0
1242
+ PyTuple_SET_ITEM(code_object_desc, 7, const_int_0);
1243
+ #else
1244
+ PyTuple_SET_ITEM(code_object_desc, 7, PyLong_FromLong(function->m_code_object->co_kwonlyargcount));
1245
+ #endif
1246
+
1247
+ CHECK_OBJECT_DEEP(code_object_desc);
1248
+
1249
+ return code_object_desc;
1250
+ }
1251
+ #endif
1252
+
1010
1253
  #if PYTHON_VERSION >= 0x380 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_VECTORCALL_SLOT)
1011
1254
  static PyObject *Nuitka_Function_tp_vectorcall(struct Nuitka_FunctionObject *function, PyObject *const *stack,
1012
1255
  size_t nargsf, PyObject *kw_names);
@@ -1019,16 +1262,23 @@ struct Nuitka_FunctionObject *Nuitka_Function_New(function_impl_code c_code, PyO
1019
1262
  struct Nuitka_CellObject **closure, Py_ssize_t closure_given)
1020
1263
  #else
1021
1264
  struct Nuitka_FunctionObject *Nuitka_Function_New(function_impl_code c_code, PyObject *name, PyObject *qualname,
1022
- PyCodeObject *code_object, PyObject *defaults, PyObject *kwdefaults,
1265
+ PyCodeObject *code_object, PyObject *defaults, PyObject *kw_defaults,
1023
1266
  PyObject *annotations, PyObject *module, PyObject *doc,
1024
1267
  struct Nuitka_CellObject **closure, Py_ssize_t closure_given)
1025
1268
  #endif
1026
1269
  {
1270
+ #if _DEBUG_REFCOUNTS
1271
+ count_active_Nuitka_Function_Type += 1;
1272
+ count_allocated_Nuitka_Function_Type += 1;
1273
+ #endif
1274
+
1027
1275
  struct Nuitka_FunctionObject *result;
1028
1276
 
1029
1277
  // Macro to assign result memory from GC or free list.
1030
1278
  allocateFromFreeList(free_list_functions, struct Nuitka_FunctionObject, Nuitka_Function_Type, closure_given);
1031
1279
 
1280
+ assert(closure_given == 0 || closure != NULL);
1281
+
1032
1282
  memcpy(&result->m_closure[0], closure, closure_given * sizeof(struct Nuitka_CellObject *));
1033
1283
  result->m_closure_given = closure_given;
1034
1284
 
@@ -1055,7 +1305,7 @@ struct Nuitka_FunctionObject *Nuitka_Function_New(function_impl_code c_code, PyO
1055
1305
  #endif
1056
1306
 
1057
1307
  if (defaults == NULL) {
1058
- Py_INCREF(Py_None);
1308
+ Py_INCREF_IMMORTAL(Py_None);
1059
1309
  defaults = Py_None;
1060
1310
  }
1061
1311
  CHECK_OBJECT(defaults);
@@ -1065,8 +1315,8 @@ struct Nuitka_FunctionObject *Nuitka_Function_New(function_impl_code c_code, PyO
1065
1315
  _onUpdatedCompiledFunctionDefaultsValue(result);
1066
1316
 
1067
1317
  #if PYTHON_VERSION >= 0x300
1068
- assert(kwdefaults == NULL || (PyDict_Check(kwdefaults) && DICT_SIZE(kwdefaults) > 0));
1069
- result->m_kwdefaults = kwdefaults;
1318
+ assert(kw_defaults == NULL || (PyDict_Check(kw_defaults) && DICT_SIZE(kw_defaults) > 0));
1319
+ result->m_kwdefaults = kw_defaults;
1070
1320
 
1071
1321
  assert(annotations == NULL || (PyDict_Check(annotations) && DICT_SIZE(annotations) > 0));
1072
1322
  result->m_annotations = annotations;
@@ -1125,6 +1375,11 @@ struct Nuitka_FunctionObject *Nuitka_Function_New(function_impl_code c_code, PyO
1125
1375
  result->m_vectorcall = (vectorcallfunc)Nuitka_Function_tp_vectorcall;
1126
1376
  #endif
1127
1377
 
1378
+ #if PYTHON_VERSION >= 0x3c0
1379
+ result->m_type_params = const_tuple_empty;
1380
+ assert(_Py_IsImmortal(result->m_type_params));
1381
+ #endif
1382
+
1128
1383
  Nuitka_GC_Track(result);
1129
1384
 
1130
1385
  assert(Py_REFCNT(result) == 1);
@@ -1357,11 +1612,11 @@ static void formatErrorTooFewKwOnlyArguments(PyThreadState *tstate, struct Nuitk
1357
1612
  char const *function_name = Nuitka_String_AsString(function->m_qualname);
1358
1613
  #endif
1359
1614
 
1360
- Py_ssize_t kwonlyargcount = function->m_code_object->co_kwonlyargcount;
1615
+ Py_ssize_t co_kwonlyargcount = function->m_code_object->co_kwonlyargcount;
1361
1616
 
1362
1617
  Py_ssize_t max_missing = 0;
1363
1618
 
1364
- for (Py_ssize_t i = kwonlyargcount - 1; i >= 0; --i) {
1619
+ for (Py_ssize_t i = co_kwonlyargcount - 1; i >= 0; --i) {
1365
1620
  if (kw_vars[i] == NULL) {
1366
1621
  max_missing += 1;
1367
1622
  }
@@ -1373,7 +1628,7 @@ static void formatErrorTooFewKwOnlyArguments(PyThreadState *tstate, struct Nuitk
1373
1628
  PyObject *and_str = PyUnicode_FromString(max_missing == 2 ? " and " : ", and ");
1374
1629
 
1375
1630
  Py_ssize_t missing = 0;
1376
- for (Py_ssize_t i = kwonlyargcount - 1; i >= 0; --i) {
1631
+ for (Py_ssize_t i = co_kwonlyargcount - 1; i >= 0; --i) {
1377
1632
  if (kw_vars[i] == NULL) {
1378
1633
  PyObject *current_str = function->m_varnames[function->m_args_positional_count + i];
1379
1634
 
@@ -1384,28 +1639,53 @@ static void formatErrorTooFewKwOnlyArguments(PyThreadState *tstate, struct Nuitk
1384
1639
 
1385
1640
  list_str = UNICODE_CONCAT(tstate, list_str, current);
1386
1641
 
1642
+ if (unlikely(list_str == NULL)) {
1643
+ list_str = old;
1644
+ break;
1645
+ }
1646
+
1387
1647
  Py_DECREF(old);
1388
1648
  } else if (missing == 1) {
1389
1649
  PyObject *old = list_str;
1390
1650
 
1391
1651
  list_str = UNICODE_CONCAT(tstate, and_str, list_str);
1392
1652
 
1653
+ if (unlikely(list_str == NULL)) {
1654
+ list_str = old;
1655
+ break;
1656
+ }
1657
+
1393
1658
  Py_DECREF(old);
1394
1659
  old = list_str;
1395
1660
 
1396
1661
  list_str = UNICODE_CONCAT(tstate, current, list_str);
1397
1662
 
1663
+ if (unlikely(list_str == NULL)) {
1664
+ list_str = old;
1665
+ break;
1666
+ }
1667
+
1398
1668
  Py_DECREF(old);
1399
1669
  } else {
1400
1670
  PyObject *old = list_str;
1401
1671
 
1402
1672
  list_str = UNICODE_CONCAT(tstate, comma_str, list_str);
1403
1673
 
1674
+ if (unlikely(list_str == NULL)) {
1675
+ list_str = old;
1676
+ break;
1677
+ }
1678
+
1404
1679
  Py_DECREF(old);
1405
1680
  old = list_str;
1406
1681
 
1407
1682
  list_str = UNICODE_CONCAT(tstate, current, list_str);
1408
1683
 
1684
+ if (unlikely(list_str == NULL)) {
1685
+ list_str = old;
1686
+ break;
1687
+ }
1688
+
1409
1689
  Py_DECREF(old);
1410
1690
  }
1411
1691
 
@@ -1519,10 +1799,10 @@ static Py_ssize_t handleKeywordArgs(PyThreadState *tstate, struct Nuitka_Functio
1519
1799
  }
1520
1800
 
1521
1801
  if (found == false) {
1522
- PyObject **varnames = function->m_varnames;
1802
+ PyObject **var_names = function->m_varnames;
1523
1803
 
1524
1804
  for (Py_ssize_t i = kw_arg_start; i < keywords_count; i++) {
1525
- if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(varnames[i], key)) {
1805
+ if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(var_names[i], key)) {
1526
1806
  assert(python_pars[i] == NULL);
1527
1807
  python_pars[i] = value;
1528
1808
 
@@ -1542,9 +1822,9 @@ static Py_ssize_t handleKeywordArgs(PyThreadState *tstate, struct Nuitka_Functio
1542
1822
  bool pos_only_error = false;
1543
1823
 
1544
1824
  for (Py_ssize_t i = 0; i < kw_arg_start; i++) {
1545
- PyObject **varnames = function->m_varnames;
1825
+ PyObject **var_names = function->m_varnames;
1546
1826
 
1547
- if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(varnames[i], key)) {
1827
+ if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(var_names[i], key)) {
1548
1828
  pos_only_error = true;
1549
1829
  break;
1550
1830
  }
@@ -1633,11 +1913,11 @@ static Py_ssize_t handleKeywordArgsSplit(struct Nuitka_FunctionObject const *fun
1633
1913
  }
1634
1914
 
1635
1915
  if (found == false) {
1636
- PyObject **varnames = function->m_varnames;
1916
+ PyObject **var_names = function->m_varnames;
1637
1917
 
1638
1918
  for (Py_ssize_t i = kw_arg_start; i < keywords_count; i++) {
1639
1919
  // TODO: Could do better here, STR/UNICODE key knowledge being there.
1640
- if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(varnames[i], key)) {
1920
+ if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(var_names[i], key)) {
1641
1921
  assert(python_pars[i] == NULL);
1642
1922
  python_pars[i] = value;
1643
1923
 
@@ -1657,9 +1937,9 @@ static Py_ssize_t handleKeywordArgsSplit(struct Nuitka_FunctionObject const *fun
1657
1937
  bool pos_only_error = false;
1658
1938
 
1659
1939
  for (Py_ssize_t i = 0; i < kw_arg_start; i++) {
1660
- PyObject **varnames = function->m_varnames;
1940
+ PyObject **var_names = function->m_varnames;
1661
1941
 
1662
- if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(varnames[i], key)) {
1942
+ if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(var_names[i], key)) {
1663
1943
  pos_only_error = true;
1664
1944
  break;
1665
1945
  }
@@ -1692,7 +1972,7 @@ static Py_ssize_t handleKeywordArgsSplit(struct Nuitka_FunctionObject const *fun
1692
1972
  return kw_found;
1693
1973
  }
1694
1974
 
1695
- static PyObject *COPY_DICT_KW(PyObject *dict_value);
1975
+ static PyObject *COPY_DICT_KW(PyThreadState *tstate, PyObject *dict_value);
1696
1976
 
1697
1977
  static bool MAKE_STAR_DICT_DICTIONARY_COPY(PyThreadState *tstate, struct Nuitka_FunctionObject const *function,
1698
1978
  PyObject **python_pars, PyObject *kw) {
@@ -1700,9 +1980,9 @@ static bool MAKE_STAR_DICT_DICTIONARY_COPY(PyThreadState *tstate, struct Nuitka_
1700
1980
  assert(star_dict_index != -1);
1701
1981
 
1702
1982
  if (kw == NULL || ((PyDictObject *)kw)->ma_used == 0) {
1703
- python_pars[star_dict_index] = MAKE_DICT_EMPTY();
1983
+ python_pars[star_dict_index] = MAKE_DICT_EMPTY(tstate);
1704
1984
  } else {
1705
- python_pars[star_dict_index] = COPY_DICT_KW(kw);
1985
+ python_pars[star_dict_index] = COPY_DICT_KW(tstate, kw);
1706
1986
 
1707
1987
  if (unlikely(python_pars[star_dict_index] == NULL)) {
1708
1988
  formatErrorKeywordsMustBeString(tstate, function);
@@ -1735,7 +2015,7 @@ static Py_ssize_t handleKeywordArgsWithStarDict(PyThreadState *tstate, struct Nu
1735
2015
 
1736
2016
  Py_ssize_t star_dict_index = function->m_args_star_dict_index;
1737
2017
 
1738
- PyObject **varnames = function->m_varnames;
2018
+ PyObject **var_names = function->m_varnames;
1739
2019
 
1740
2020
  #if PYTHON_VERSION < 0x380
1741
2021
  Py_ssize_t kw_arg_start = 0;
@@ -1744,7 +2024,7 @@ static Py_ssize_t handleKeywordArgsWithStarDict(PyThreadState *tstate, struct Nu
1744
2024
  #endif
1745
2025
 
1746
2026
  for (Py_ssize_t i = kw_arg_start; i < keywords_count; i++) {
1747
- PyObject *arg_name = varnames[i];
2027
+ PyObject *arg_name = var_names[i];
1748
2028
 
1749
2029
  PyObject *kw_arg_value = DICT_GET_ITEM1(tstate, python_pars[star_dict_index], arg_name);
1750
2030
 
@@ -1800,7 +2080,7 @@ static Py_ssize_t handleKeywordArgsSplitWithStarDict(PyThreadState *tstate,
1800
2080
  Py_ssize_t keyword_after_index = function->m_args_positional_count;
1801
2081
  #endif
1802
2082
 
1803
- PyObject **varnames = function->m_varnames;
2083
+ PyObject **var_names = function->m_varnames;
1804
2084
 
1805
2085
  #if PYTHON_VERSION < 0x380
1806
2086
  Py_ssize_t kw_arg_start = 0;
@@ -1809,7 +2089,7 @@ static Py_ssize_t handleKeywordArgsSplitWithStarDict(PyThreadState *tstate,
1809
2089
  #endif
1810
2090
 
1811
2091
  for (Py_ssize_t i = kw_arg_start; i < keywords_count; i++) {
1812
- PyObject *arg_name = varnames[i];
2092
+ PyObject *arg_name = var_names[i];
1813
2093
 
1814
2094
  PyObject *kw_arg_value = DICT_GET_ITEM1(tstate, python_pars[star_dict_index], arg_name);
1815
2095
 
@@ -1833,30 +2113,30 @@ static Py_ssize_t handleKeywordArgsSplitWithStarDict(PyThreadState *tstate,
1833
2113
  return kw_found;
1834
2114
  }
1835
2115
 
1836
- static void makeStarListTupleCopy(struct Nuitka_FunctionObject const *function, PyObject **python_pars,
1837
- PyObject *const *args, Py_ssize_t args_size) {
2116
+ static void makeStarListTupleCopy(PyThreadState *tstate, struct Nuitka_FunctionObject const *function,
2117
+ PyObject **python_pars, PyObject *const *args, Py_ssize_t args_size) {
1838
2118
  assert(function->m_args_star_list_index != -1);
1839
2119
  Py_ssize_t list_star_index = function->m_args_star_list_index;
1840
2120
 
1841
2121
  // Copy left-over argument values to the star list parameter given.
1842
2122
  if (args_size > function->m_args_positional_count) {
1843
2123
  python_pars[list_star_index] =
1844
- MAKE_TUPLE(&args[function->m_args_positional_count], args_size - function->m_args_positional_count);
2124
+ MAKE_TUPLE(tstate, &args[function->m_args_positional_count], args_size - function->m_args_positional_count);
1845
2125
  } else {
1846
2126
  python_pars[list_star_index] = const_tuple_empty;
1847
2127
  Py_INCREF(const_tuple_empty);
1848
2128
  }
1849
2129
  }
1850
2130
 
1851
- static void makeStarListTupleCopyMethod(struct Nuitka_FunctionObject const *function, PyObject **python_pars,
1852
- PyObject *const *args, Py_ssize_t args_size) {
2131
+ static void makeStarListTupleCopyMethod(PyThreadState *tstate, struct Nuitka_FunctionObject const *function,
2132
+ PyObject **python_pars, PyObject *const *args, Py_ssize_t args_size) {
1853
2133
  assert(function->m_args_star_list_index != -1);
1854
2134
  Py_ssize_t list_star_index = function->m_args_star_list_index;
1855
2135
 
1856
2136
  // Copy left-over argument values to the star list parameter given.
1857
2137
  if (args_size + 1 > function->m_args_positional_count) {
1858
- python_pars[list_star_index] =
1859
- MAKE_TUPLE(&args[function->m_args_positional_count - 1], args_size + 1 - function->m_args_positional_count);
2138
+ python_pars[list_star_index] = MAKE_TUPLE(tstate, &args[function->m_args_positional_count - 1],
2139
+ args_size + 1 - function->m_args_positional_count);
1860
2140
  } else {
1861
2141
  python_pars[list_star_index] = const_tuple_empty;
1862
2142
  Py_INCREF(const_tuple_empty);
@@ -1944,7 +2224,7 @@ static bool _handleArgumentsPlainOnly(PyThreadState *tstate, struct Nuitka_Funct
1944
2224
  #endif
1945
2225
 
1946
2226
  if (function->m_args_star_list_index != -1) {
1947
- makeStarListTupleCopy(function, python_pars, args, args_size);
2227
+ makeStarListTupleCopy(tstate, function, python_pars, args, args_size);
1948
2228
  }
1949
2229
 
1950
2230
  return true;
@@ -1963,7 +2243,7 @@ static bool handleMethodArgumentsPlainOnly(PyThreadState *tstate, struct Nuitka_
1963
2243
  // Without self, there can only be star list to get the object as its
1964
2244
  // first element. Or we complain about illegal arguments.
1965
2245
  if (function->m_args_star_list_index == 0) {
1966
- python_pars[0] = MAKE_TUPLE_EMPTY(args_size + 1);
2246
+ python_pars[0] = MAKE_TUPLE_EMPTY(tstate, args_size + 1);
1967
2247
  PyTuple_SET_ITEM0(python_pars[0], 0, object);
1968
2248
 
1969
2249
  for (Py_ssize_t i = 0; i < args_size; i++) {
@@ -2048,7 +2328,7 @@ static bool handleMethodArgumentsPlainOnly(PyThreadState *tstate, struct Nuitka_
2048
2328
  #endif
2049
2329
 
2050
2330
  if (function->m_args_star_list_index != -1) {
2051
- makeStarListTupleCopyMethod(function, python_pars, args, args_size);
2331
+ makeStarListTupleCopyMethod(tstate, function, python_pars, args, args_size);
2052
2332
  }
2053
2333
 
2054
2334
  return true;
@@ -2178,7 +2458,7 @@ static bool _handleArgumentsPlain(PyThreadState *tstate, struct Nuitka_FunctionO
2178
2458
  #endif
2179
2459
 
2180
2460
  if (function->m_args_star_list_index != -1) {
2181
- makeStarListTupleCopy(function, python_pars, args, args_size);
2461
+ makeStarListTupleCopy(tstate, function, python_pars, args, args_size);
2182
2462
  }
2183
2463
 
2184
2464
  return true;
@@ -2245,7 +2525,7 @@ static bool parseArgumentsPos(PyThreadState *tstate, struct Nuitka_FunctionObjec
2245
2525
  #endif
2246
2526
 
2247
2527
  if (function->m_args_star_dict_index != -1) {
2248
- python_pars[function->m_args_star_dict_index] = MAKE_DICT_EMPTY();
2528
+ python_pars[function->m_args_star_dict_index] = MAKE_DICT_EMPTY(tstate);
2249
2529
  }
2250
2530
 
2251
2531
  return true;
@@ -2297,7 +2577,7 @@ static bool parseArgumentsMethodPos(PyThreadState *tstate, struct Nuitka_Functio
2297
2577
  #endif
2298
2578
 
2299
2579
  if (function->m_args_star_dict_index != -1) {
2300
- python_pars[function->m_args_star_dict_index] = MAKE_DICT_EMPTY();
2580
+ python_pars[function->m_args_star_dict_index] = MAKE_DICT_EMPTY(tstate);
2301
2581
  }
2302
2582
 
2303
2583
  return true;
@@ -2611,10 +2891,10 @@ static Py_ssize_t _handleVectorcallKeywordArgs(PyThreadState *tstate, struct Nui
2611
2891
  }
2612
2892
 
2613
2893
  if (found == false) {
2614
- PyObject **varnames = function->m_varnames;
2894
+ PyObject **var_names = function->m_varnames;
2615
2895
 
2616
2896
  for (Py_ssize_t i = kw_arg_start; i < keywords_count; i++) {
2617
- if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(varnames[i], key)) {
2897
+ if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(var_names[i], key)) {
2618
2898
  assert(python_pars[i] == NULL);
2619
2899
  python_pars[i] = kw_values[pos];
2620
2900
  Py_INCREF(python_pars[i]);
@@ -2633,9 +2913,9 @@ static Py_ssize_t _handleVectorcallKeywordArgs(PyThreadState *tstate, struct Nui
2633
2913
  bool pos_only_error = false;
2634
2914
 
2635
2915
  for (Py_ssize_t i = 0; i < kw_arg_start; i++) {
2636
- PyObject **varnames = function->m_varnames;
2916
+ PyObject **var_names = function->m_varnames;
2637
2917
 
2638
- if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(varnames[i], key)) {
2918
+ if (RICH_COMPARE_EQ_CBOOL_ARG_NAMES(var_names[i], key)) {
2639
2919
  pos_only_error = true;
2640
2920
  break;
2641
2921
  }
@@ -2710,7 +2990,7 @@ static Py_ssize_t handleVectorcallKeywordArgsWithStarDict(PyThreadState *tstate,
2710
2990
 
2711
2991
  Py_ssize_t star_dict_index = function->m_args_star_dict_index;
2712
2992
 
2713
- PyObject **varnames = function->m_varnames;
2993
+ PyObject **var_names = function->m_varnames;
2714
2994
 
2715
2995
  #if PYTHON_VERSION < 0x380
2716
2996
  Py_ssize_t kw_arg_start = 0;
@@ -2719,7 +2999,7 @@ static Py_ssize_t handleVectorcallKeywordArgsWithStarDict(PyThreadState *tstate,
2719
2999
  #endif
2720
3000
 
2721
3001
  for (Py_ssize_t i = kw_arg_start; i < keywords_count; i++) {
2722
- PyObject *arg_name = varnames[i];
3002
+ PyObject *arg_name = var_names[i];
2723
3003
 
2724
3004
  PyObject *kw_arg_value = DICT_GET_ITEM1(tstate, python_pars[star_dict_index], arg_name);
2725
3005
 
@@ -2894,15 +3174,15 @@ static PyObject *Nuitka_Function_tp_call(struct Nuitka_FunctionObject *function,
2894
3174
  static PyObject *Nuitka_Function_tp_vectorcall(struct Nuitka_FunctionObject *function, PyObject *const *stack,
2895
3175
  size_t nargsf, PyObject *kw_names) {
2896
3176
  assert(kw_names == NULL || PyTuple_CheckExact(kw_names));
2897
- Py_ssize_t nkwargs = (kw_names == NULL) ? 0 : PyTuple_GET_SIZE(kw_names);
3177
+ Py_ssize_t kwargs_count = (kw_names == NULL) ? 0 : PyTuple_GET_SIZE(kw_names);
2898
3178
 
2899
3179
  Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
2900
3180
  assert(nargs >= 0);
2901
- assert((nargs == 0 && nkwargs == 0) || stack != NULL);
3181
+ assert((nargs == 0 && kwargs_count == 0) || stack != NULL);
2902
3182
 
2903
3183
  PyThreadState *tstate = PyThreadState_GET();
2904
3184
  return Nuitka_CallFunctionVectorcall(tstate, function, stack, nargs,
2905
- kw_names ? &PyTuple_GET_ITEM(kw_names, 0) : NULL, nkwargs);
3185
+ kw_names ? &PyTuple_GET_ITEM(kw_names, 0) : NULL, kwargs_count);
2906
3186
  }
2907
3187
  #endif
2908
3188
 
@@ -2914,4 +3194,18 @@ static PyObject *Nuitka_Function_tp_vectorcall(struct Nuitka_FunctionObject *fun
2914
3194
 
2915
3195
  #include "CompiledCodeHelpers.c"
2916
3196
 
2917
- #include "InspectPatcher.c"
3197
+ #include "InspectPatcher.c"
3198
+ // Part of "Nuitka", an optimizing Python compiler that is compatible and
3199
+ // integrates with CPython, but also works on its own.
3200
+ //
3201
+ // Licensed under the Apache License, Version 2.0 (the "License");
3202
+ // you may not use this file except in compliance with the License.
3203
+ // You may obtain a copy of the License at
3204
+ //
3205
+ // http://www.apache.org/licenses/LICENSE-2.0
3206
+ //
3207
+ // Unless required by applicable law or agreed to in writing, software
3208
+ // distributed under the License is distributed on an "AS IS" BASIS,
3209
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3210
+ // See the License for the specific language governing permissions and
3211
+ // limitations under the License.