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
@@ -1,25 +1,10 @@
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
- //
18
- #include "nuitka/prelude.h"
1
+ // Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
19
2
 
3
+ #ifdef __IDE_ONLY__
20
4
  #include "nuitka/freelists.h"
21
-
22
- #include "structmember.h"
5
+ #include "nuitka/prelude.h"
6
+ #include <structmember.h>
7
+ #endif
23
8
 
24
9
  // For reporting about reference counts per type.
25
10
  #if _DEBUG_REFCOUNTS
@@ -37,7 +22,7 @@ int count_hit_frame_cache_instances = 0;
37
22
  #endif
38
23
 
39
24
  #if PYTHON_VERSION < 0x3b0
40
- static PyMemberDef Nuitka_Frame_memberlist[] = {
25
+ static PyMemberDef Nuitka_Frame_members[] = {
41
26
  {(char *)"f_back", T_OBJECT, offsetof(PyFrameObject, f_back), READONLY | RESTRICTED},
42
27
  {(char *)"f_code", T_OBJECT, offsetof(PyFrameObject, f_code), READONLY | RESTRICTED},
43
28
  {(char *)"f_builtins", T_OBJECT, offsetof(PyFrameObject, f_builtins), READONLY | RESTRICTED},
@@ -46,12 +31,17 @@ static PyMemberDef Nuitka_Frame_memberlist[] = {
46
31
  {NULL}};
47
32
 
48
33
  #else
49
- #define Nuitka_Frame_memberlist 0
34
+ #define Nuitka_Frame_members 0
50
35
  #endif
51
36
 
52
37
  #if PYTHON_VERSION < 0x300
53
38
 
54
- static PyObject *Nuitka_Frame_get_exc_traceback(struct Nuitka_FrameObject *frame) {
39
+ static PyObject *_Nuitka_Frame_get_exc_traceback(PyObject *self, void *data) {
40
+ assert(Nuitka_Frame_CheckExact(self));
41
+ CHECK_OBJECT(self);
42
+ assert(_PyObject_GC_IS_TRACKED(self));
43
+
44
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
55
45
  PyObject *result = frame->m_frame.f_exc_traceback;
56
46
 
57
47
  if (result == NULL) {
@@ -62,7 +52,12 @@ static PyObject *Nuitka_Frame_get_exc_traceback(struct Nuitka_FrameObject *frame
62
52
  return result;
63
53
  }
64
54
 
65
- static int Nuitka_Frame_set_exc_traceback(struct Nuitka_FrameObject *frame, PyObject *traceback) {
55
+ static int _Nuitka_Frame_set_exc_traceback(PyObject *self, PyObject *traceback, void *data) {
56
+ assert(Nuitka_Frame_CheckExact(self));
57
+ CHECK_OBJECT(self);
58
+ assert(_PyObject_GC_IS_TRACKED(self));
59
+
60
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
66
61
  Py_XDECREF(frame->m_frame.f_exc_traceback);
67
62
 
68
63
  if (traceback == Py_None) {
@@ -75,8 +70,13 @@ static int Nuitka_Frame_set_exc_traceback(struct Nuitka_FrameObject *frame, PyOb
75
70
  return 0;
76
71
  }
77
72
 
78
- static PyObject *Nuitka_Frame_get_exc_type(struct Nuitka_FrameObject *frame) {
73
+ static PyObject *_Nuitka_Frame_get_exc_type(PyObject *self, void *data) {
74
+ assert(Nuitka_Frame_CheckExact(self));
75
+ CHECK_OBJECT(self);
76
+ assert(_PyObject_GC_IS_TRACKED(self));
77
+
79
78
  PyObject *result;
79
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
80
80
 
81
81
  if (frame->m_frame.f_exc_type != NULL) {
82
82
  result = frame->m_frame.f_exc_type;
@@ -88,7 +88,12 @@ static PyObject *Nuitka_Frame_get_exc_type(struct Nuitka_FrameObject *frame) {
88
88
  return result;
89
89
  }
90
90
 
91
- static int Nuitka_Frame_set_exc_type(struct Nuitka_FrameObject *frame, PyObject *exception_type) {
91
+ static int _Nuitka_Frame_set_exc_type(PyObject *self, PyObject *exception_type, void *data) {
92
+ assert(Nuitka_Frame_CheckExact(self));
93
+ CHECK_OBJECT(self);
94
+ assert(_PyObject_GC_IS_TRACKED(self));
95
+
96
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
92
97
  PyObject *old = frame->m_frame.f_exc_type;
93
98
 
94
99
  if (exception_type == Py_None) {
@@ -103,8 +108,13 @@ static int Nuitka_Frame_set_exc_type(struct Nuitka_FrameObject *frame, PyObject
103
108
  return 0;
104
109
  }
105
110
 
106
- static PyObject *Nuitka_Frame_get_exc_value(struct Nuitka_FrameObject *frame) {
111
+ static PyObject *_Nuitka_Frame_get_exc_value(PyObject *self, void *data) {
112
+ assert(Nuitka_Frame_CheckExact(self));
113
+ CHECK_OBJECT(self);
114
+ assert(_PyObject_GC_IS_TRACKED(self));
115
+
107
116
  PyObject *result;
117
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
108
118
 
109
119
  if (frame->m_frame.f_exc_value != NULL) {
110
120
  result = frame->m_frame.f_exc_value;
@@ -116,7 +126,12 @@ static PyObject *Nuitka_Frame_get_exc_value(struct Nuitka_FrameObject *frame) {
116
126
  return result;
117
127
  }
118
128
 
119
- static int Nuitka_Frame_set_exc_value(struct Nuitka_FrameObject *frame, PyObject *exception_value) {
129
+ static int _Nuitka_Frame_set_exc_value(PyObject *self, PyObject *exception_value, void *data) {
130
+ assert(Nuitka_Frame_CheckExact(self));
131
+ CHECK_OBJECT(self);
132
+ assert(_PyObject_GC_IS_TRACKED(self));
133
+
134
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
120
135
  PyObject *old = frame->m_frame.f_exc_value;
121
136
 
122
137
  if (exception_value == Py_None) {
@@ -130,14 +145,25 @@ static int Nuitka_Frame_set_exc_value(struct Nuitka_FrameObject *frame, PyObject
130
145
  return 0;
131
146
  }
132
147
 
133
- static PyObject *Nuitka_Frame_get_restricted(struct Nuitka_FrameObject *frame, void *closure) {
134
- Py_INCREF(Py_False);
148
+ static PyObject *_Nuitka_Frame_get_restricted(PyObject *self, void *data) {
149
+ assert(Nuitka_Frame_CheckExact(self));
150
+ CHECK_OBJECT(self);
151
+ assert(_PyObject_GC_IS_TRACKED(self));
152
+
153
+ Py_INCREF_IMMORTAL(Py_False);
135
154
  return Py_False;
136
155
  }
137
156
 
138
157
  #endif
139
158
 
140
- static PyObject *Nuitka_Frame_getlocals(struct Nuitka_FrameObject *nuitka_frame, void *closure) {
159
+ static PyObject *_Nuitka_Frame_get_locals(PyObject *self, void *data) {
160
+ assert(Nuitka_Frame_CheckExact(self));
161
+ CHECK_OBJECT(self);
162
+ assert(_PyObject_GC_IS_TRACKED(self));
163
+
164
+ NUITKA_MAY_BE_UNUSED PyThreadState *tstate = PyThreadState_GET();
165
+
166
+ struct Nuitka_FrameObject *nuitka_frame = (struct Nuitka_FrameObject *)self;
141
167
  if (nuitka_frame->m_type_description == NULL) {
142
168
  #if PYTHON_VERSION < 0x3b0
143
169
  PyFrameObject *locals_owner = &nuitka_frame->m_frame;
@@ -146,14 +172,14 @@ static PyObject *Nuitka_Frame_getlocals(struct Nuitka_FrameObject *nuitka_frame,
146
172
  #endif
147
173
 
148
174
  if (locals_owner->f_locals == NULL) {
149
- locals_owner->f_locals = MAKE_DICT_EMPTY();
175
+ locals_owner->f_locals = MAKE_DICT_EMPTY(tstate);
150
176
  }
151
177
 
152
178
  Py_INCREF(locals_owner->f_locals);
153
179
  return locals_owner->f_locals;
154
180
  } else {
155
- PyObject *result = MAKE_DICT_EMPTY();
156
- PyObject **varnames = Nuitka_GetCodeVarNames(Nuitka_GetFrameCodeObject(nuitka_frame));
181
+ PyObject *result = MAKE_DICT_EMPTY(tstate);
182
+ PyObject **var_names = Nuitka_GetCodeVarNames(Nuitka_GetFrameCodeObject(nuitka_frame));
157
183
 
158
184
  char const *w = nuitka_frame->m_type_description;
159
185
  char const *t = nuitka_frame->m_locals_storage;
@@ -166,7 +192,7 @@ static PyObject *Nuitka_Frame_getlocals(struct Nuitka_FrameObject *nuitka_frame,
166
192
  CHECK_OBJECT_X(value);
167
193
 
168
194
  if (value != NULL) {
169
- DICT_SET_ITEM(result, *varnames, value);
195
+ DICT_SET_ITEM(result, *var_names, value);
170
196
  }
171
197
 
172
198
  t += sizeof(PyObject *);
@@ -179,7 +205,7 @@ static PyObject *Nuitka_Frame_getlocals(struct Nuitka_FrameObject *nuitka_frame,
179
205
  CHECK_OBJECT(value);
180
206
 
181
207
  if (value->ob_ref != NULL) {
182
- DICT_SET_ITEM(result, *varnames, value->ob_ref);
208
+ DICT_SET_ITEM(result, *var_names, value->ob_ref);
183
209
  }
184
210
 
185
211
  t += sizeof(struct Nuitka_CellObject *);
@@ -194,11 +220,11 @@ static PyObject *Nuitka_Frame_getlocals(struct Nuitka_FrameObject *nuitka_frame,
194
220
  t += sizeof(int);
195
221
  switch ((nuitka_bool)value) {
196
222
  case NUITKA_BOOL_TRUE: {
197
- DICT_SET_ITEM(result, *varnames, Py_True);
223
+ DICT_SET_ITEM(result, *var_names, Py_True);
198
224
  break;
199
225
  }
200
226
  case NUITKA_BOOL_FALSE: {
201
- DICT_SET_ITEM(result, *varnames, Py_False);
227
+ DICT_SET_ITEM(result, *var_names, Py_False);
202
228
  break;
203
229
  }
204
230
  default:
@@ -211,24 +237,38 @@ static PyObject *Nuitka_Frame_getlocals(struct Nuitka_FrameObject *nuitka_frame,
211
237
  }
212
238
 
213
239
  w += 1;
214
- varnames += 1;
240
+ var_names += 1;
215
241
  }
216
242
 
217
243
  return result;
218
244
  }
219
245
  }
220
246
 
221
- static PyObject *Nuitka_Frame_getlineno(struct Nuitka_FrameObject *frame, void *closure) {
222
- return PyInt_FromLong(frame->m_frame.f_lineno);
247
+ static PyObject *_Nuitka_Frame_get_lineno(PyObject *self, void *data) {
248
+ assert(Nuitka_Frame_CheckExact(self));
249
+ CHECK_OBJECT(self);
250
+ assert(_PyObject_GC_IS_TRACKED(self));
251
+
252
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
253
+ return Nuitka_PyInt_FromLong(frame->m_frame.f_lineno);
223
254
  }
224
255
 
225
- static PyObject *Nuitka_Frame_gettrace(struct Nuitka_FrameObject *frame, void *closure) {
256
+ static PyObject *_Nuitka_Frame_get_trace(PyObject *self, void *data) {
257
+ assert(Nuitka_Frame_CheckExact(self));
258
+ CHECK_OBJECT(self);
259
+ assert(_PyObject_GC_IS_TRACKED(self));
260
+
261
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
226
262
  PyObject *result = frame->m_frame.f_trace;
227
263
  Py_INCREF(result);
228
264
  return result;
229
265
  }
230
266
 
231
- static int Nuitka_Frame_settrace(struct Nuitka_FrameObject *frame, PyObject *v, void *closure) {
267
+ static int _Nuitka_Frame_set_trace(PyObject *self, PyObject *value, void *data) {
268
+ assert(Nuitka_Frame_CheckExact(self));
269
+ CHECK_OBJECT(self);
270
+ assert(_PyObject_GC_IS_TRACKED(self));
271
+
232
272
  PyThreadState *tstate = PyThreadState_GET();
233
273
 
234
274
  SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_RuntimeError, "f_trace is not writable in Nuitka");
@@ -236,26 +276,42 @@ static int Nuitka_Frame_settrace(struct Nuitka_FrameObject *frame, PyObject *v,
236
276
  }
237
277
 
238
278
  #if PYTHON_VERSION >= 0x370
239
- static PyObject *Nuitka_Frame_gettracelines(struct Nuitka_FrameObject *frame, void *closure) {
279
+ static PyObject *_Nuitka_Frame_get_trace_lines(PyObject *self, void *data) {
280
+ assert(Nuitka_Frame_CheckExact(self));
281
+ CHECK_OBJECT(self);
282
+ assert(_PyObject_GC_IS_TRACKED(self));
283
+
240
284
  PyObject *result = Py_False;
241
- Py_INCREF(result);
285
+ Py_INCREF_IMMORTAL(result);
242
286
  return result;
243
287
  }
244
288
 
245
- static int Nuitka_Frame_settracelines(struct Nuitka_FrameObject *frame, PyObject *v, void *closure) {
289
+ static int _Nuitka_Frame_set_trace_lines(PyObject *self, PyObject *value, void *data) {
290
+ assert(Nuitka_Frame_CheckExact(self));
291
+ CHECK_OBJECT(self);
292
+ assert(_PyObject_GC_IS_TRACKED(self));
293
+
246
294
  PyThreadState *tstate = PyThreadState_GET();
247
295
 
248
296
  SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_RuntimeError, "f_trace_lines is not writable in Nuitka");
249
297
  return -1;
250
298
  }
251
299
 
252
- static PyObject *Nuitka_Frame_gettraceopcodes(struct Nuitka_FrameObject *frame, void *closure) {
300
+ static PyObject *_Nuitka_Frame_get_trace_opcodes(PyObject *self, void *data) {
301
+ assert(Nuitka_Frame_CheckExact(self));
302
+ CHECK_OBJECT(self);
303
+ assert(_PyObject_GC_IS_TRACKED(self));
304
+
253
305
  PyObject *result = Py_False;
254
- Py_INCREF(result);
306
+ Py_INCREF_IMMORTAL(result);
255
307
  return result;
256
308
  }
257
309
 
258
- static int Nuitka_Frame_settraceopcodes(struct Nuitka_FrameObject *frame, PyObject *v, void *closure) {
310
+ static int _Nuitka_Frame_set_trace_opcodes(PyObject *self, PyObject *value, void *data) {
311
+ assert(Nuitka_Frame_CheckExact(self));
312
+ CHECK_OBJECT(self);
313
+ assert(_PyObject_GC_IS_TRACKED(self));
314
+
259
315
  PyThreadState *tstate = PyThreadState_GET();
260
316
 
261
317
  SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_RuntimeError, "f_trace_opcodes is not writable in Nuitka");
@@ -263,33 +319,27 @@ static int Nuitka_Frame_settraceopcodes(struct Nuitka_FrameObject *frame, PyObje
263
319
  }
264
320
  #endif
265
321
 
266
- #if PYTHON_VERSION >= 0x3B0
267
- static PyObject *Nuitka_Frame_getback(struct Nuitka_FrameObject *frame, void *closure) {
268
- return (PyObject *)PyFrame_GetBack(&frame->m_frame);
269
- }
270
- #endif
271
-
272
- static PyGetSetDef Nuitka_Frame_getsetlist[] = {
273
- {(char *)"f_locals", (getter)Nuitka_Frame_getlocals, NULL, NULL},
274
- {(char *)"f_lineno", (getter)Nuitka_Frame_getlineno, NULL, NULL},
275
- {(char *)"f_trace", (getter)Nuitka_Frame_gettrace, (setter)Nuitka_Frame_settrace, NULL},
322
+ static PyGetSetDef Nuitka_Frame_tp_getset[] = {
323
+ {(char *)"f_locals", _Nuitka_Frame_get_locals, NULL, NULL},
324
+ {(char *)"f_lineno", _Nuitka_Frame_get_lineno, NULL, NULL},
325
+ {(char *)"f_trace", _Nuitka_Frame_get_trace, _Nuitka_Frame_set_trace, NULL},
276
326
  #if PYTHON_VERSION < 0x300
277
- {(char *)"f_restricted", (getter)Nuitka_Frame_get_restricted, NULL, NULL},
278
- {(char *)"f_exc_traceback", (getter)Nuitka_Frame_get_exc_traceback, (setter)Nuitka_Frame_set_exc_traceback, NULL},
279
- {(char *)"f_exc_type", (getter)Nuitka_Frame_get_exc_type, (setter)Nuitka_Frame_set_exc_type, NULL},
280
- {(char *)"f_exc_value", (getter)Nuitka_Frame_get_exc_value, (setter)Nuitka_Frame_set_exc_value, NULL},
327
+ {(char *)"f_restricted", _Nuitka_Frame_get_restricted, NULL, NULL},
328
+ {(char *)"f_exc_traceback", _Nuitka_Frame_get_exc_traceback, _Nuitka_Frame_set_exc_traceback, NULL},
329
+ {(char *)"f_exc_type", _Nuitka_Frame_get_exc_type, _Nuitka_Frame_set_exc_type, NULL},
330
+ {(char *)"f_exc_value", _Nuitka_Frame_get_exc_value, _Nuitka_Frame_set_exc_value, NULL},
281
331
  #endif
282
332
  #if PYTHON_VERSION >= 0x370
283
- {(char *)"f_trace_lines", (getter)Nuitka_Frame_gettracelines, (setter)Nuitka_Frame_settracelines, NULL},
284
- {(char *)"f_trace_opcodes", (getter)Nuitka_Frame_gettraceopcodes, (setter)Nuitka_Frame_settraceopcodes, NULL},
285
- #endif
286
- #if PYTHON_VERSION >= 0x3b0
287
- {(char *)"f_trace_lines", (getter)Nuitka_Frame_getback, NULL, NULL},
333
+ {(char *)"f_trace_lines", _Nuitka_Frame_get_trace_lines, _Nuitka_Frame_set_trace_lines, NULL},
334
+ {(char *)"f_trace_opcodes", _Nuitka_Frame_get_trace_opcodes, _Nuitka_Frame_set_trace_opcodes, NULL},
288
335
  #endif
289
336
  {NULL}};
290
337
 
291
338
  // tp_repr slot, decide how a function shall be output
292
339
  static PyObject *Nuitka_Frame_tp_repr(struct Nuitka_FrameObject *nuitka_frame) {
340
+ assert(Nuitka_Frame_CheckExact((PyObject *)nuitka_frame));
341
+ CHECK_OBJECT((PyObject *)nuitka_frame);
342
+ assert(_PyObject_GC_IS_TRACKED(nuitka_frame));
293
343
 
294
344
  #if PYTHON_VERSION >= 0x370
295
345
  PyCodeObject *code_object = Nuitka_GetFrameCodeObject(nuitka_frame);
@@ -313,7 +363,8 @@ static void Nuitka_Frame_tp_clear(struct Nuitka_FrameObject *frame) {
313
363
  while (*w != 0) {
314
364
  switch (*w) {
315
365
  case NUITKA_TYPE_DESCRIPTION_OBJECT:
316
- case NUITKA_TYPE_DESCRIPTION_OBJECT_PTR: {
366
+ case NUITKA_TYPE_DESCRIPTION_OBJECT_PTR:
367
+ case NUITKA_TYPE_DESCRIPTION_NILONG: {
317
368
  PyObject *value = *(PyObject **)t;
318
369
  CHECK_OBJECT_X(value);
319
370
 
@@ -367,10 +418,9 @@ static void Nuitka_Frame_tp_dealloc(struct Nuitka_FrameObject *nuitka_frame) {
367
418
  // Save the current exception, if any, we must to not corrupt it.
368
419
  PyThreadState *tstate = PyThreadState_GET();
369
420
 
370
- PyObject *save_exception_type, *save_exception_value;
371
- PyTracebackObject *save_exception_tb;
372
- FETCH_ERROR_OCCURRED(tstate, &save_exception_type, &save_exception_value, &save_exception_tb);
373
- RESTORE_ERROR_OCCURRED(tstate, save_exception_type, save_exception_value, save_exception_tb);
421
+ struct Nuitka_ExceptionPreservationItem saved_exception_state1;
422
+ FETCH_ERROR_OCCURRED_STATE(tstate, &saved_exception_state1);
423
+ RESTORE_ERROR_OCCURRED_STATE(tstate, &saved_exception_state1);
374
424
  #endif
375
425
 
376
426
  Nuitka_GC_UnTrack(nuitka_frame);
@@ -382,6 +432,7 @@ static void Nuitka_Frame_tp_dealloc(struct Nuitka_FrameObject *nuitka_frame) {
382
432
  _PyInterpreterFrame *locals_owner = &nuitka_frame->m_interpreter_frame;
383
433
  #endif
384
434
 
435
+ assert(Nuitka_GC_IS_TRACKED_X((PyObject *)frame->f_back));
385
436
  Py_XDECREF(frame->f_back);
386
437
  Py_DECREF(locals_owner->f_builtins);
387
438
  Py_DECREF(locals_owner->f_globals);
@@ -395,6 +446,15 @@ static void Nuitka_Frame_tp_dealloc(struct Nuitka_FrameObject *nuitka_frame) {
395
446
 
396
447
  Nuitka_Frame_tp_clear(nuitka_frame);
397
448
 
449
+ if (Py_REFCNT(nuitka_frame) > 0) {
450
+ Py_SET_REFCNT(nuitka_frame, Py_REFCNT(nuitka_frame) - 1);
451
+ if (Py_REFCNT(nuitka_frame) >= 1) {
452
+ // TODO: Allow this in debug mode, for now we would like to reproduce it.
453
+ assert(false);
454
+ return;
455
+ }
456
+ }
457
+
398
458
  #if PYTHON_VERSION >= 0x3b0
399
459
  // Restore from backup, see header comment for the field "m_ob_size" to get
400
460
  // it.
@@ -404,13 +464,19 @@ static void Nuitka_Frame_tp_dealloc(struct Nuitka_FrameObject *nuitka_frame) {
404
464
  releaseToFreeList(free_list_frames, nuitka_frame, MAX_FRAME_FREE_LIST_COUNT);
405
465
 
406
466
  #ifndef __NUITKA_NO_ASSERT__
407
- assert(tstate->curexc_type == save_exception_type);
408
- assert(tstate->curexc_value == save_exception_value);
409
- assert((PyTracebackObject *)tstate->curexc_traceback == save_exception_tb);
467
+ struct Nuitka_ExceptionPreservationItem saved_exception_state2;
468
+ FETCH_ERROR_OCCURRED_STATE(tstate, &saved_exception_state2);
469
+ RESTORE_ERROR_OCCURRED_STATE(tstate, &saved_exception_state2);
470
+
471
+ ASSERT_SAME_EXCEPTION_STATE(&saved_exception_state1, &saved_exception_state2);
410
472
  #endif
411
473
  }
412
474
 
413
475
  static int Nuitka_Frame_tp_traverse(struct Nuitka_FrameObject *frame, visitproc visit, void *arg) {
476
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
477
+ CHECK_OBJECT((PyObject *)frame);
478
+ assert(_PyObject_GC_IS_TRACKED(frame));
479
+
414
480
  Py_VISIT(frame->m_frame.f_back);
415
481
 
416
482
  #if PYTHON_VERSION < 0x3b0
@@ -465,6 +531,7 @@ static int Nuitka_Frame_tp_traverse(struct Nuitka_FrameObject *frame, visitproc
465
531
  break;
466
532
  }
467
533
  default:
534
+ NUITKA_CANNOT_GET_HERE("invalid type description");
468
535
  assert(false);
469
536
  }
470
537
 
@@ -474,9 +541,13 @@ static int Nuitka_Frame_tp_traverse(struct Nuitka_FrameObject *frame, visitproc
474
541
  return 0;
475
542
  }
476
543
 
477
- #if PYTHON_VERSION >= 0x340
544
+ #if PYTHON_VERSION >= 0x300
545
+
546
+ static PyObject *Nuitka_Frame_clear(struct Nuitka_FrameObject *frame, PyObject *unused) {
547
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
548
+ CHECK_OBJECT((PyObject *)frame);
549
+ assert(_PyObject_GC_IS_TRACKED(frame));
478
550
 
479
- static PyObject *Nuitka_Frame_clear(struct Nuitka_FrameObject *frame) {
480
551
  PyThreadState *tstate = PyThreadState_GET();
481
552
 
482
553
  if (Nuitka_Frame_IsExecuting(frame)) {
@@ -498,7 +569,7 @@ static PyObject *Nuitka_Frame_clear(struct Nuitka_FrameObject *frame) {
498
569
  }
499
570
  #endif
500
571
 
501
- #if PYTHON_VERSION >= 0x340
572
+ #if PYTHON_VERSION >= 0x300
502
573
  // For frames that are closed, we also need to close the generator.
503
574
  PyObject *f_gen = Nuitka_GetFrameGenerator(frame);
504
575
  if (f_gen != NULL) {
@@ -555,6 +626,10 @@ static PyObject *Nuitka_Frame_clear(struct Nuitka_FrameObject *frame) {
555
626
  #endif
556
627
 
557
628
  static inline Py_ssize_t Nuitka_Frame_GetSize(struct Nuitka_FrameObject *frame) {
629
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
630
+ CHECK_OBJECT((PyObject *)frame);
631
+ assert(_PyObject_GC_IS_TRACKED(frame));
632
+
558
633
  #if PYTHON_VERSION < 0x3b0
559
634
  return Py_SIZE(frame);
560
635
  #else
@@ -562,12 +637,16 @@ static inline Py_ssize_t Nuitka_Frame_GetSize(struct Nuitka_FrameObject *frame)
562
637
  #endif
563
638
  }
564
639
 
565
- static PyObject *Nuitka_Frame_sizeof(struct Nuitka_FrameObject *frame) {
640
+ static PyObject *Nuitka_Frame_sizeof(struct Nuitka_FrameObject *frame, PyObject *unused) {
641
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
642
+ CHECK_OBJECT((PyObject *)frame);
643
+ assert(_PyObject_GC_IS_TRACKED(frame));
644
+
566
645
  return PyInt_FromSsize_t(sizeof(struct Nuitka_FrameObject) + Py_SIZE(frame));
567
646
  }
568
647
 
569
648
  static PyMethodDef Nuitka_Frame_methods[] = {
570
- #if PYTHON_VERSION >= 0x340
649
+ #if PYTHON_VERSION >= 0x300
571
650
  {"clear", (PyCFunction)Nuitka_Frame_clear, METH_NOARGS, "F.clear(): clear most references held by the frame"},
572
651
  #endif
573
652
  {"__sizeof__", (PyCFunction)Nuitka_Frame_sizeof, METH_NOARGS, "F.__sizeof__() -> size of F in memory, in bytes"},
@@ -601,8 +680,8 @@ PyTypeObject Nuitka_Frame_Type = {
601
680
  0, // tp_iter
602
681
  0, // tp_iternext
603
682
  Nuitka_Frame_methods, // tp_methods
604
- Nuitka_Frame_memberlist, // tp_members
605
- Nuitka_Frame_getsetlist, // tp_getset
683
+ Nuitka_Frame_members, // tp_members
684
+ Nuitka_Frame_tp_getset, // tp_getset
606
685
  0, // tp_base
607
686
  0, // tp_dict
608
687
  };
@@ -619,23 +698,24 @@ void _initCompiledFrameType(void) {
619
698
  assert(Nuitka_Frame_Type.tp_methods != PyFrame_Type.tp_methods);
620
699
  assert(Nuitka_Frame_Type.tp_members != PyFrame_Type.tp_members);
621
700
  assert(Nuitka_Frame_Type.tp_getset != PyFrame_Type.tp_getset);
622
- assert(Nuitka_Frame_Type.tp_dict != PyFrame_Type.tp_dict);
701
+
623
702
  assert(Nuitka_Frame_Type.tp_descr_get != PyFrame_Type.tp_descr_get || PyFrame_Type.tp_descr_get == NULL);
624
703
 
625
704
  assert(Nuitka_Frame_Type.tp_descr_set != PyFrame_Type.tp_descr_set || PyFrame_Type.tp_descr_set == NULL);
626
705
  assert(Nuitka_Frame_Type.tp_dictoffset != PyFrame_Type.tp_dictoffset || PyFrame_Type.tp_dictoffset == 0);
627
706
  // TODO: These get changed and into the same thing, not sure what to compare against, project something
707
+ // assert(Nuitka_Frame_Type.tp_dict != PyFrame_Type.tp_dict);
628
708
  // assert(Nuitka_Frame_Type.tp_init != PyFrame_Type.tp_init || PyFrame_Type.tp_init == NULL);
629
709
  // assert(Nuitka_Frame_Type.tp_alloc != PyFrame_Type.tp_alloc || PyFrame_Type.tp_alloc == NULL);
630
710
  // assert(Nuitka_Frame_Type.tp_new != PyFrame_Type.tp_new || PyFrame_Type.tp_new == NULL);
631
711
  // assert(Nuitka_Frame_Type.tp_free != PyFrame_Type.tp_free || PyFrame_Type.tp_free == NULL);
712
+ // assert(Nuitka_Frame_Type.tp_weaklist != PyFrame_Type.tp_weaklist);
632
713
  assert(Nuitka_Frame_Type.tp_bases != PyFrame_Type.tp_bases);
633
714
  assert(Nuitka_Frame_Type.tp_mro != PyFrame_Type.tp_mro);
634
715
  assert(Nuitka_Frame_Type.tp_cache != PyFrame_Type.tp_cache || PyFrame_Type.tp_cache == NULL);
635
716
  assert(Nuitka_Frame_Type.tp_subclasses != PyFrame_Type.tp_subclasses || PyFrame_Type.tp_cache == NULL);
636
- assert(Nuitka_Frame_Type.tp_weaklist != PyFrame_Type.tp_weaklist);
637
717
  assert(Nuitka_Frame_Type.tp_del != PyFrame_Type.tp_del || PyFrame_Type.tp_del == NULL);
638
- #if PYTHON_VERSION >= 0x340
718
+ #if PYTHON_VERSION >= 0x300
639
719
  assert(Nuitka_Frame_Type.tp_finalize != PyFrame_Type.tp_finalize || PyFrame_Type.tp_finalize == NULL);
640
720
  #endif
641
721
  Nuitka_PyType_Ready(&Nuitka_Frame_Type, &PyFrame_Type, true, true, false, false, false);
@@ -674,7 +754,12 @@ static struct Nuitka_FrameObject *_MAKE_COMPILED_FRAME(PyCodeObject *code, PyObj
674
754
  _PyInterpreterFrame *locals_owner = &result->m_interpreter_frame;
675
755
  #endif
676
756
 
757
+ #if PYTHON_VERSION < 0x3d0
677
758
  locals_owner->f_code = code;
759
+ #else
760
+ // TODO: Why is our code object not just immortal.
761
+ locals_owner->f_executable = (PyObject *)code;
762
+ #endif
678
763
 
679
764
  frame->f_trace = Py_None;
680
765
 
@@ -702,18 +787,18 @@ static struct Nuitka_FrameObject *_MAKE_COMPILED_FRAME(PyCodeObject *code, PyObj
702
787
  CHECK_OBJECT_X(f_locals);
703
788
  locals_owner->f_locals = f_locals;
704
789
 
705
- #if PYTHON_VERSION < 0x340
790
+ #if PYTHON_VERSION < 0x300
706
791
  frame->f_tstate = PyThreadState_GET();
707
792
  #endif
708
793
 
709
794
  #if PYTHON_VERSION < 0x3b0
710
795
  frame->f_lasti = -1;
711
- frame->f_iblock = 0;
796
+ frame->f_iblock = 0; // spell-checker: ignore iblock
712
797
  #endif
713
798
 
714
799
  frame->f_lineno = code->co_firstlineno;
715
800
 
716
- #if PYTHON_VERSION >= 0x340
801
+ #if PYTHON_VERSION >= 0x300
717
802
  Nuitka_SetFrameGenerator(result, NULL);
718
803
 
719
804
  Nuitka_Frame_MarkAsNotExecuting(result);
@@ -721,9 +806,20 @@ static struct Nuitka_FrameObject *_MAKE_COMPILED_FRAME(PyCodeObject *code, PyObj
721
806
 
722
807
  #if PYTHON_VERSION >= 0x3b0
723
808
  result->m_interpreter_frame.frame_obj = &result->m_frame;
724
- result->m_interpreter_frame.owner = 0;
809
+ result->m_interpreter_frame.owner = FRAME_OWNED_BY_GENERATOR;
810
+ #if PYTHON_VERSION >= 0x3c0
811
+ result->m_interpreter_frame.f_funcobj = NULL; // spell-checker: ignore funcobj
812
+ #else
813
+ result->m_interpreter_frame.f_func = NULL;
814
+ #endif
815
+ #if PYTHON_VERSION < 0x3d0
725
816
  result->m_interpreter_frame.prev_instr = _PyCode_CODE(code);
817
+ #else
818
+ result->m_interpreter_frame.instr_ptr = _PyCode_CODE(code);
819
+ #endif
726
820
  result->m_frame.f_frame = &result->m_interpreter_frame;
821
+
822
+ assert(!_PyFrame_IsIncomplete(&result->m_interpreter_frame));
727
823
  #endif
728
824
 
729
825
  Nuitka_GC_Track(result);
@@ -769,7 +865,7 @@ PyCodeObject *makeCodeObject(PyObject *filename, int line, int flags, PyObject *
769
865
  #if PYTHON_VERSION >= 0x3b0
770
866
  PyObject *function_qualname,
771
867
  #endif
772
- PyObject *argnames, PyObject *freevars, int arg_count
868
+ PyObject *arg_names, PyObject *free_vars, int arg_count
773
869
  #if PYTHON_VERSION >= 0x300
774
870
  ,
775
871
  int kw_only_count
@@ -780,21 +876,35 @@ PyCodeObject *makeCodeObject(PyObject *filename, int line, int flags, PyObject *
780
876
  #endif
781
877
  ) {
782
878
  CHECK_OBJECT(filename);
783
- assert(Nuitka_String_CheckExact(filename));
879
+ assert(Nuitka_StringOrUnicode_CheckExact(filename));
784
880
  CHECK_OBJECT(function_name);
785
881
  assert(Nuitka_String_CheckExact(function_name));
786
882
 
787
- if (argnames == NULL) {
788
- argnames = const_tuple_empty;
883
+ #if PYTHON_VERSION < 0x300
884
+ PyObject *filename_str = NULL;
885
+
886
+ // TODO: Memory leak of filename, it might be intended transferred to the
887
+ // code object by using code.
888
+ if (PyUnicode_CheckExact(filename)) {
889
+ filename_str = PyUnicode_AsUTF8String(filename);
890
+ filename = filename_str;
891
+ } else {
892
+ filename_str = filename;
893
+ Py_INCREF(filename);
894
+ }
895
+ #endif
896
+
897
+ if (arg_names == NULL || arg_names == Py_None) {
898
+ arg_names = const_tuple_empty;
789
899
  }
790
- CHECK_OBJECT(argnames);
791
- assert(PyTuple_Check(argnames));
900
+ CHECK_OBJECT(arg_names);
901
+ assert(PyTuple_Check(arg_names));
792
902
 
793
- if (freevars == NULL) {
794
- freevars = const_tuple_empty;
903
+ if (free_vars == NULL || free_vars == Py_None) {
904
+ free_vars = const_tuple_empty;
795
905
  }
796
- CHECK_OBJECT(freevars);
797
- assert(PyTuple_Check(freevars));
906
+ CHECK_OBJECT(free_vars);
907
+ assert(PyTuple_Check(free_vars));
798
908
 
799
909
  // The PyCode_New has funny code that interns, mutating the tuple that owns
800
910
  // it. Really serious non-immutable shit. We have triggered that changes
@@ -803,36 +913,80 @@ PyCodeObject *makeCodeObject(PyObject *filename, int line, int flags, PyObject *
803
913
  // TODO: Reactivate once code object creation becomes un-streaming driven
804
914
  // and we can pass the extra args with no worries.
805
915
 
806
- // Py_hash_t hash = DEEP_HASH(argnames);
916
+ // Py_hash_t hash = DEEP_HASH(arg_names);
807
917
  #endif
808
918
 
919
+ // spell-checker: ignore lnotab
809
920
  #if PYTHON_VERSION < 0x300
810
921
  PyObject *code = const_str_empty;
811
922
  PyObject *lnotab = const_str_empty;
812
- #else
813
- #if PYTHON_VERSION < 0x3b0
923
+ PyObject *consts = const_tuple_empty;
924
+ PyObject *names = const_tuple_empty;
925
+ int stacksize = 0;
926
+ #elif PYTHON_VERSION < 0x3b0
814
927
  PyObject *code = const_bytes_empty;
815
928
  PyObject *lnotab = const_bytes_empty;
929
+ PyObject *consts = const_tuple_empty;
930
+ PyObject *names = const_tuple_empty;
931
+ int stacksize = 0;
816
932
  #else
817
933
  // Our code object needs to be recognizable, and Python doesn't store the
818
934
  // length anymore, so we need a non-empty one.
819
935
  static PyObject *empty_code = NULL;
936
+ static PyObject *lnotab = NULL;
937
+ static PyObject *consts = NULL;
938
+ static PyObject *names = NULL;
939
+ // TODO: Seems removable.
940
+ static PyObject *exception_table = NULL;
941
+ static int stacksize = 0;
942
+
820
943
  if (empty_code == NULL) {
821
- empty_code = PyBytes_FromString("\0\0");
944
+ // Only needed once here.
945
+ PyThreadState *tstate = PyThreadState_GET();
946
+
947
+ PyObject *empty_code_module_object = Py_CompileString(
948
+ "def empty(): raise RuntimeError('Compiled function bytecode used')", "<exec>", Py_file_input);
949
+ NUITKA_MAY_BE_UNUSED PyObject *module =
950
+ PyImport_ExecCodeModule("nuitka_empty_function", empty_code_module_object);
951
+ CHECK_OBJECT(module);
952
+
953
+ PyObject *empty_function = PyObject_GetAttrString(module, "empty");
954
+ CHECK_OBJECT(empty_function);
955
+ PyObject *empty_code_object = PyObject_GetAttrString(empty_function, "__code__");
956
+ CHECK_OBJECT(empty_code_object);
957
+
958
+ NUITKA_MAY_BE_UNUSED bool bool_res = Nuitka_DelModuleString(tstate, "nuitka_empty_function");
959
+ assert(bool_res != false);
960
+
961
+ empty_code = PyObject_GetAttrString(empty_code_object, "co_code");
962
+ CHECK_OBJECT(empty_code);
963
+ #if PYTHON_VERSION >= 0x3c0
964
+ lnotab = ((PyCodeObject *)empty_code_object)->co_linetable; // spell-checker: ignore linetable
965
+ #else
966
+ lnotab = PyObject_GetAttrString(empty_code_object, "co_lnotab");
967
+ CHECK_OBJECT(lnotab);
968
+ #endif
969
+ consts = PyObject_GetAttrString(empty_code_object, "co_consts");
970
+ CHECK_OBJECT(consts);
971
+ names = PyObject_GetAttrString(empty_code_object, "co_names");
972
+ CHECK_OBJECT(names);
973
+ exception_table = PyObject_GetAttrString(empty_code_object, "co_exceptiontable");
974
+ CHECK_OBJECT(exception_table);
975
+
976
+ stacksize = (int)PyLong_AsLong(PyObject_GetAttrString(empty_code_object, "co_stacksize"));
822
977
  }
978
+
823
979
  PyObject *code = empty_code;
824
- static PyObject *lnotab = NULL;
825
- if (lnotab == NULL) {
826
- lnotab = PyBytes_FromStringAndSize("\x80\x00\xd8\x04\x08\x80"
827
- "D",
828
- 7);
829
- }
830
- #endif
980
+ CHECK_OBJECT(empty_code);
981
+ CHECK_OBJECT(lnotab);
982
+ CHECK_OBJECT(consts);
983
+ CHECK_OBJECT(names);
984
+ CHECK_OBJECT(exception_table);
831
985
  #endif
832
986
 
833
987
  // For Python 3.11 this value is checked, even if not used.
834
- #if PYTHON_VERSION >= 0x3B0
835
- int nlocals = (int)PyTuple_GET_SIZE(argnames);
988
+ #if PYTHON_VERSION >= 0x3b0
989
+ int nlocals = (int)PyTuple_GET_SIZE(arg_names);
836
990
  #else
837
991
  int nlocals = 0;
838
992
  #endif
@@ -841,50 +995,52 @@ PyCodeObject *makeCodeObject(PyObject *filename, int line, int flags, PyObject *
841
995
  // and is not available for Python2.
842
996
 
843
997
  #if PYTHON_VERSION >= 0x380
844
- PyCodeObject *result = PyCode_NewWithPosOnlyArgs(arg_count, // argcount
998
+ PyCodeObject *result = PyCode_NewWithPosOnlyArgs(arg_count, // arg_count
845
999
  #else
846
- PyCodeObject *result = PyCode_New(arg_count, // argcount
1000
+ PyCodeObject *result = PyCode_New(arg_count, // arg_count
847
1001
  #endif
848
1002
 
849
1003
  #if PYTHON_VERSION >= 0x300
850
1004
  #if PYTHON_VERSION >= 0x380
851
- pos_only_count, // kw-only count
1005
+ pos_only_count, // pos-only count
852
1006
  #endif
853
1007
  kw_only_count, // kw-only count
854
1008
  #endif
855
1009
  nlocals, // nlocals
856
- 0, // stacksize
1010
+ stacksize, // stacksize
857
1011
  flags, // flags
858
1012
  code, // code (bytecode)
859
- const_tuple_empty, // consts (we are not going to be compatible)
860
- const_tuple_empty, // names (we are not going to be compatible)
861
- argnames, // varnames (we are not going to be compatible)
862
- freevars, // freevars
863
- const_tuple_empty, // cellvars (we are not going to be compatible)
1013
+ consts, // consts (we are not going to be compatible)
1014
+ names, // names (we are not going to be compatible)
1015
+ arg_names, // var_names (we are not going to be compatible)
1016
+ free_vars, // free_vars
1017
+ const_tuple_empty, // cell_vars (we are not going to be compatible)
864
1018
  filename, // filename
865
1019
  function_name, // name
866
1020
  #if PYTHON_VERSION >= 0x3b0
867
1021
  function_qualname, // qualname
868
1022
  #endif
869
- line, // firstlineno (offset of the code object)
1023
+ line, // first_lineno (offset of the code object)
870
1024
  lnotab // lnotab (table to translate code object)
871
1025
  #if PYTHON_VERSION >= 0x3b0
872
1026
  ,
873
- const_bytes_empty // exceptiontable
1027
+ exception_table // exception_table
874
1028
  #endif
875
1029
  );
876
1030
 
877
- // assert(DEEP_HASH(tstate, argnames) == hash);
1031
+ // assert(DEEP_HASH(tstate, arg_names) == hash);
878
1032
 
879
- if (result == NULL) {
880
- PyErr_PrintEx(0);
881
- }
1033
+ #if PYTHON_VERSION < 0x300
1034
+ Py_DECREF(filename_str);
1035
+ #endif
882
1036
 
883
- CHECK_OBJECT(result);
884
1037
  return result;
885
1038
  }
886
1039
 
887
1040
  void Nuitka_Frame_AttachLocals(struct Nuitka_FrameObject *frame_object, char const *type_description, ...) {
1041
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame_object));
1042
+ CHECK_OBJECT((PyObject *)frame_object);
1043
+ assert(_PyObject_GC_IS_TRACKED(frame_object));
888
1044
  assertFrameObject(frame_object);
889
1045
 
890
1046
  #if _DEBUG_FRAME
@@ -939,6 +1095,11 @@ void Nuitka_Frame_AttachLocals(struct Nuitka_FrameObject *frame_object, char con
939
1095
  CHECK_OBJECT_X(value->ob_ref);
940
1096
 
941
1097
  memcpy(t, &value, sizeof(struct Nuitka_CellObject *));
1098
+ // TODO: Reference count must become wrong here, should
1099
+ // be forced to one probably, or we should simply not
1100
+ // store cells, but their values. Take a ref off "value"
1101
+ // is probably not needed.
1102
+ // Py_SET_REFCNT((struct Nuitka_CellObject *)t, 1);
942
1103
  Py_INCREF(value);
943
1104
 
944
1105
  t += sizeof(struct Nuitka_CellObject *);
@@ -958,7 +1119,19 @@ void Nuitka_Frame_AttachLocals(struct Nuitka_FrameObject *frame_object, char con
958
1119
 
959
1120
  break;
960
1121
  }
1122
+ case NUITKA_TYPE_DESCRIPTION_NILONG: {
1123
+ nuitka_ilong value = va_arg(ap, nuitka_ilong);
1124
+ ENFORCE_NILONG_OBJECT_VALUE(&value);
1125
+
1126
+ CHECK_OBJECT(value.python_value);
1127
+ memcpy(t, &value.python_value, sizeof(PyObject *));
1128
+ Py_XINCREF(value.python_value);
1129
+ t += sizeof(PyObject *);
1130
+
1131
+ break;
1132
+ }
961
1133
  default:
1134
+ NUITKA_CANNOT_GET_HERE("invalid type description");
962
1135
  assert(false);
963
1136
  }
964
1137
 
@@ -975,10 +1148,8 @@ void Nuitka_Frame_AttachLocals(struct Nuitka_FrameObject *frame_object, char con
975
1148
  void dumpFrameStack(void) {
976
1149
  PyThreadState *tstate = PyThreadState_GET();
977
1150
 
978
- PyObject *saved_exception_type, *saved_exception_value;
979
- PyTracebackObject *saved_exception_tb;
980
-
981
- FETCH_ERROR_OCCURRED(&saved_exception_type, &saved_exception_value, &saved_exception_tb);
1151
+ struct Nuitka_ExceptionPreservationItem saved_exception_state;
1152
+ FETCH_ERROR_OCCURRED_STATE(tstate, &saved_exception_state);
982
1153
 
983
1154
  int total = 0;
984
1155
 
@@ -1014,7 +1185,7 @@ void dumpFrameStack(void) {
1014
1185
  current_repr = const_str_empty;
1015
1186
  Py_INCREF(const_str_empty);
1016
1187
  }
1017
- PyObject *code_repr = PyObject_Str((PyObject *)current->current_frame->f_code);
1188
+ PyObject *code_repr = PyObject_Str((PyObject *)Nuitka_InterpreterFrame_GetCodeObject(current->current_frame));
1018
1189
  #endif
1019
1190
 
1020
1191
  PRINT_FORMAT("Frame stack %d: %s %d %s\n", total--, Nuitka_String_AsString(current_repr), Py_REFCNT(current),
@@ -1032,7 +1203,7 @@ void dumpFrameStack(void) {
1032
1203
 
1033
1204
  PRINT_STRING(">---------<\n");
1034
1205
 
1035
- RESTORE_ERROR_OCCURRED(tstate, saved_exception_type, saved_exception_value, saved_exception_tb);
1206
+ RESTORE_ERROR_OCCURRED_STATE(tstate, &saved_exception_state);
1036
1207
  }
1037
1208
 
1038
1209
  static void PRINT_UNCOMPILED_FRAME(char const *prefix, PyFrameObject *frame) {
@@ -1070,7 +1241,7 @@ void PRINT_INTERPRETER_FRAME(char const *prefix, Nuitka_ThreadStateFrameType *fr
1070
1241
  if (frame) {
1071
1242
  PRINT_FORMAT("0x%lx ", frame);
1072
1243
 
1073
- PyObject *code_object_str = PyObject_Repr((PyObject *)frame->f_code);
1244
+ PyObject *code_object_str = PyObject_Repr((PyObject *)Nuitka_InterpreterFrame_GetCodeObject(frame));
1074
1245
  PRINT_ITEM(code_object_str);
1075
1246
  Py_DECREF(code_object_str);
1076
1247
  } else {
@@ -1087,8 +1258,22 @@ void PRINT_TOP_FRAME(char const *prefix) {
1087
1258
  #if PYTHON_VERSION < 0x3b0
1088
1259
  PRINT_UNCOMPILED_FRAME(prefix, tstate->frame);
1089
1260
  #else
1090
- PRINT_INTERPRETER_FRAME(prefix, tstate->cframe->current_frame);
1261
+ PRINT_INTERPRETER_FRAME(prefix, CURRENT_TSTATE_INTERPRETER_FRAME(tstate));
1091
1262
  #endif
1092
1263
  }
1093
1264
 
1094
- #endif
1265
+ #endif
1266
+ // Part of "Nuitka", an optimizing Python compiler that is compatible and
1267
+ // integrates with CPython, but also works on its own.
1268
+ //
1269
+ // Licensed under the Apache License, Version 2.0 (the "License");
1270
+ // you may not use this file except in compliance with the License.
1271
+ // You may obtain a copy of the License at
1272
+ //
1273
+ // http://www.apache.org/licenses/LICENSE-2.0
1274
+ //
1275
+ // Unless required by applicable law or agreed to in writing, software
1276
+ // distributed under the License is distributed on an "AS IS" BASIS,
1277
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1278
+ // See the License for the specific language governing permissions and
1279
+ // limitations under the License.