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,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,16 @@ 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(struct Nuitka_FrameObject *frame) {
40
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
41
+ CHECK_OBJECT((PyObject *)frame);
42
+ assert(_PyObject_GC_IS_TRACKED(frame));
43
+
55
44
  PyObject *result = frame->m_frame.f_exc_traceback;
56
45
 
57
46
  if (result == NULL) {
@@ -62,7 +51,11 @@ static PyObject *Nuitka_Frame_get_exc_traceback(struct Nuitka_FrameObject *frame
62
51
  return result;
63
52
  }
64
53
 
65
- static int Nuitka_Frame_set_exc_traceback(struct Nuitka_FrameObject *frame, PyObject *traceback) {
54
+ static int _Nuitka_Frame_set_exc_traceback(struct Nuitka_FrameObject *frame, PyObject *traceback) {
55
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
56
+ CHECK_OBJECT((PyObject *)frame);
57
+ assert(_PyObject_GC_IS_TRACKED(frame));
58
+
66
59
  Py_XDECREF(frame->m_frame.f_exc_traceback);
67
60
 
68
61
  if (traceback == Py_None) {
@@ -75,7 +68,11 @@ static int Nuitka_Frame_set_exc_traceback(struct Nuitka_FrameObject *frame, PyOb
75
68
  return 0;
76
69
  }
77
70
 
78
- static PyObject *Nuitka_Frame_get_exc_type(struct Nuitka_FrameObject *frame) {
71
+ static PyObject *_Nuitka_Frame_get_exc_type(struct Nuitka_FrameObject *frame) {
72
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
73
+ CHECK_OBJECT((PyObject *)frame);
74
+ assert(_PyObject_GC_IS_TRACKED(frame));
75
+
79
76
  PyObject *result;
80
77
 
81
78
  if (frame->m_frame.f_exc_type != NULL) {
@@ -88,7 +85,11 @@ static PyObject *Nuitka_Frame_get_exc_type(struct Nuitka_FrameObject *frame) {
88
85
  return result;
89
86
  }
90
87
 
91
- static int Nuitka_Frame_set_exc_type(struct Nuitka_FrameObject *frame, PyObject *exception_type) {
88
+ static int _Nuitka_Frame_set_exc_type(struct Nuitka_FrameObject *frame, PyObject *exception_type) {
89
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
90
+ CHECK_OBJECT((PyObject *)frame);
91
+ assert(_PyObject_GC_IS_TRACKED(frame));
92
+
92
93
  PyObject *old = frame->m_frame.f_exc_type;
93
94
 
94
95
  if (exception_type == Py_None) {
@@ -103,7 +104,11 @@ static int Nuitka_Frame_set_exc_type(struct Nuitka_FrameObject *frame, PyObject
103
104
  return 0;
104
105
  }
105
106
 
106
- static PyObject *Nuitka_Frame_get_exc_value(struct Nuitka_FrameObject *frame) {
107
+ static PyObject *_Nuitka_Frame_get_exc_value(struct Nuitka_FrameObject *frame) {
108
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
109
+ CHECK_OBJECT((PyObject *)frame);
110
+ assert(_PyObject_GC_IS_TRACKED(frame));
111
+
107
112
  PyObject *result;
108
113
 
109
114
  if (frame->m_frame.f_exc_value != NULL) {
@@ -116,7 +121,11 @@ static PyObject *Nuitka_Frame_get_exc_value(struct Nuitka_FrameObject *frame) {
116
121
  return result;
117
122
  }
118
123
 
119
- static int Nuitka_Frame_set_exc_value(struct Nuitka_FrameObject *frame, PyObject *exception_value) {
124
+ static int _Nuitka_Frame_set_exc_value(struct Nuitka_FrameObject *frame, PyObject *exception_value) {
125
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
126
+ CHECK_OBJECT((PyObject *)frame);
127
+ assert(_PyObject_GC_IS_TRACKED(frame));
128
+
120
129
  PyObject *old = frame->m_frame.f_exc_value;
121
130
 
122
131
  if (exception_value == Py_None) {
@@ -130,14 +139,24 @@ static int Nuitka_Frame_set_exc_value(struct Nuitka_FrameObject *frame, PyObject
130
139
  return 0;
131
140
  }
132
141
 
133
- static PyObject *Nuitka_Frame_get_restricted(struct Nuitka_FrameObject *frame, void *closure) {
134
- Py_INCREF(Py_False);
142
+ static PyObject *_Nuitka_Frame_get_restricted(struct Nuitka_FrameObject *frame, void *closure) {
143
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
144
+ CHECK_OBJECT((PyObject *)frame);
145
+ assert(_PyObject_GC_IS_TRACKED(frame));
146
+
147
+ Py_INCREF_IMMORTAL(Py_False);
135
148
  return Py_False;
136
149
  }
137
150
 
138
151
  #endif
139
152
 
140
- static PyObject *Nuitka_Frame_getlocals(struct Nuitka_FrameObject *nuitka_frame, void *closure) {
153
+ static PyObject *_Nuitka_Frame_get_locals(struct Nuitka_FrameObject *nuitka_frame, void *closure) {
154
+ assert(Nuitka_Frame_CheckExact((PyObject *)nuitka_frame));
155
+ CHECK_OBJECT((PyObject *)nuitka_frame);
156
+ assert(_PyObject_GC_IS_TRACKED(nuitka_frame));
157
+
158
+ NUITKA_MAY_BE_UNUSED PyThreadState *tstate = PyThreadState_GET();
159
+
141
160
  if (nuitka_frame->m_type_description == NULL) {
142
161
  #if PYTHON_VERSION < 0x3b0
143
162
  PyFrameObject *locals_owner = &nuitka_frame->m_frame;
@@ -146,14 +165,14 @@ static PyObject *Nuitka_Frame_getlocals(struct Nuitka_FrameObject *nuitka_frame,
146
165
  #endif
147
166
 
148
167
  if (locals_owner->f_locals == NULL) {
149
- locals_owner->f_locals = MAKE_DICT_EMPTY();
168
+ locals_owner->f_locals = MAKE_DICT_EMPTY(tstate);
150
169
  }
151
170
 
152
171
  Py_INCREF(locals_owner->f_locals);
153
172
  return locals_owner->f_locals;
154
173
  } else {
155
- PyObject *result = MAKE_DICT_EMPTY();
156
- PyObject **varnames = Nuitka_GetCodeVarNames(Nuitka_GetFrameCodeObject(nuitka_frame));
174
+ PyObject *result = MAKE_DICT_EMPTY(tstate);
175
+ PyObject **var_names = Nuitka_GetCodeVarNames(Nuitka_GetFrameCodeObject(nuitka_frame));
157
176
 
158
177
  char const *w = nuitka_frame->m_type_description;
159
178
  char const *t = nuitka_frame->m_locals_storage;
@@ -166,7 +185,7 @@ static PyObject *Nuitka_Frame_getlocals(struct Nuitka_FrameObject *nuitka_frame,
166
185
  CHECK_OBJECT_X(value);
167
186
 
168
187
  if (value != NULL) {
169
- DICT_SET_ITEM(result, *varnames, value);
188
+ DICT_SET_ITEM(result, *var_names, value);
170
189
  }
171
190
 
172
191
  t += sizeof(PyObject *);
@@ -179,7 +198,7 @@ static PyObject *Nuitka_Frame_getlocals(struct Nuitka_FrameObject *nuitka_frame,
179
198
  CHECK_OBJECT(value);
180
199
 
181
200
  if (value->ob_ref != NULL) {
182
- DICT_SET_ITEM(result, *varnames, value->ob_ref);
201
+ DICT_SET_ITEM(result, *var_names, value->ob_ref);
183
202
  }
184
203
 
185
204
  t += sizeof(struct Nuitka_CellObject *);
@@ -194,11 +213,11 @@ static PyObject *Nuitka_Frame_getlocals(struct Nuitka_FrameObject *nuitka_frame,
194
213
  t += sizeof(int);
195
214
  switch ((nuitka_bool)value) {
196
215
  case NUITKA_BOOL_TRUE: {
197
- DICT_SET_ITEM(result, *varnames, Py_True);
216
+ DICT_SET_ITEM(result, *var_names, Py_True);
198
217
  break;
199
218
  }
200
219
  case NUITKA_BOOL_FALSE: {
201
- DICT_SET_ITEM(result, *varnames, Py_False);
220
+ DICT_SET_ITEM(result, *var_names, Py_False);
202
221
  break;
203
222
  }
204
223
  default:
@@ -211,24 +230,36 @@ static PyObject *Nuitka_Frame_getlocals(struct Nuitka_FrameObject *nuitka_frame,
211
230
  }
212
231
 
213
232
  w += 1;
214
- varnames += 1;
233
+ var_names += 1;
215
234
  }
216
235
 
217
236
  return result;
218
237
  }
219
238
  }
220
239
 
221
- static PyObject *Nuitka_Frame_getlineno(struct Nuitka_FrameObject *frame, void *closure) {
240
+ static PyObject *_Nuitka_Frame_get_lineno(struct Nuitka_FrameObject *frame, void *closure) {
241
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
242
+ CHECK_OBJECT((PyObject *)frame);
243
+ assert(_PyObject_GC_IS_TRACKED(frame));
244
+
222
245
  return PyInt_FromLong(frame->m_frame.f_lineno);
223
246
  }
224
247
 
225
- static PyObject *Nuitka_Frame_gettrace(struct Nuitka_FrameObject *frame, void *closure) {
248
+ static PyObject *_Nuitka_Frame_get_trace(struct Nuitka_FrameObject *frame, void *closure) {
249
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
250
+ CHECK_OBJECT((PyObject *)frame);
251
+ assert(_PyObject_GC_IS_TRACKED(frame));
252
+
226
253
  PyObject *result = frame->m_frame.f_trace;
227
254
  Py_INCREF(result);
228
255
  return result;
229
256
  }
230
257
 
231
- static int Nuitka_Frame_settrace(struct Nuitka_FrameObject *frame, PyObject *v, void *closure) {
258
+ static int _Nuitka_Frame_set_trace(struct Nuitka_FrameObject *frame, PyObject *v, void *closure) {
259
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
260
+ CHECK_OBJECT((PyObject *)frame);
261
+ assert(_PyObject_GC_IS_TRACKED(frame));
262
+
232
263
  PyThreadState *tstate = PyThreadState_GET();
233
264
 
234
265
  SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_RuntimeError, "f_trace is not writable in Nuitka");
@@ -236,26 +267,42 @@ static int Nuitka_Frame_settrace(struct Nuitka_FrameObject *frame, PyObject *v,
236
267
  }
237
268
 
238
269
  #if PYTHON_VERSION >= 0x370
239
- static PyObject *Nuitka_Frame_gettracelines(struct Nuitka_FrameObject *frame, void *closure) {
270
+ static PyObject *_Nuitka_Frame_get_trace_lines(struct Nuitka_FrameObject *frame, void *closure) {
271
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
272
+ CHECK_OBJECT((PyObject *)frame);
273
+ assert(_PyObject_GC_IS_TRACKED(frame));
274
+
240
275
  PyObject *result = Py_False;
241
- Py_INCREF(result);
276
+ Py_INCREF_IMMORTAL(result);
242
277
  return result;
243
278
  }
244
279
 
245
- static int Nuitka_Frame_settracelines(struct Nuitka_FrameObject *frame, PyObject *v, void *closure) {
280
+ static int _Nuitka_Frame_set_trace_lines(struct Nuitka_FrameObject *frame, PyObject *v, void *closure) {
281
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
282
+ CHECK_OBJECT((PyObject *)frame);
283
+ assert(_PyObject_GC_IS_TRACKED(frame));
284
+
246
285
  PyThreadState *tstate = PyThreadState_GET();
247
286
 
248
287
  SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_RuntimeError, "f_trace_lines is not writable in Nuitka");
249
288
  return -1;
250
289
  }
251
290
 
252
- static PyObject *Nuitka_Frame_gettraceopcodes(struct Nuitka_FrameObject *frame, void *closure) {
291
+ static PyObject *_Nuitka_Frame_get_trace_opcodes(struct Nuitka_FrameObject *frame, void *closure) {
292
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
293
+ CHECK_OBJECT((PyObject *)frame);
294
+ assert(_PyObject_GC_IS_TRACKED(frame));
295
+
253
296
  PyObject *result = Py_False;
254
- Py_INCREF(result);
297
+ Py_INCREF_IMMORTAL(result);
255
298
  return result;
256
299
  }
257
300
 
258
- static int Nuitka_Frame_settraceopcodes(struct Nuitka_FrameObject *frame, PyObject *v, void *closure) {
301
+ static int _Nuitka_Frame_set_trace_opcodes(struct Nuitka_FrameObject *frame, PyObject *v, void *closure) {
302
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
303
+ CHECK_OBJECT((PyObject *)frame);
304
+ assert(_PyObject_GC_IS_TRACKED(frame));
305
+
259
306
  PyThreadState *tstate = PyThreadState_GET();
260
307
 
261
308
  SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_RuntimeError, "f_trace_opcodes is not writable in Nuitka");
@@ -263,33 +310,27 @@ static int Nuitka_Frame_settraceopcodes(struct Nuitka_FrameObject *frame, PyObje
263
310
  }
264
311
  #endif
265
312
 
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},
313
+ static PyGetSetDef Nuitka_Frame_tp_getset[] = {
314
+ {(char *)"f_locals", (getter)_Nuitka_Frame_get_locals, NULL, NULL},
315
+ {(char *)"f_lineno", (getter)_Nuitka_Frame_get_lineno, NULL, NULL},
316
+ {(char *)"f_trace", (getter)_Nuitka_Frame_get_trace, (setter)_Nuitka_Frame_set_trace, NULL},
276
317
  #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},
318
+ {(char *)"f_restricted", (getter)_Nuitka_Frame_get_restricted, NULL, NULL},
319
+ {(char *)"f_exc_traceback", (getter)_Nuitka_Frame_get_exc_traceback, (setter)_Nuitka_Frame_set_exc_traceback, NULL},
320
+ {(char *)"f_exc_type", (getter)_Nuitka_Frame_get_exc_type, (setter)_Nuitka_Frame_set_exc_type, NULL},
321
+ {(char *)"f_exc_value", (getter)_Nuitka_Frame_get_exc_value, (setter)_Nuitka_Frame_set_exc_value, NULL},
281
322
  #endif
282
323
  #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},
324
+ {(char *)"f_trace_lines", (getter)_Nuitka_Frame_get_trace_lines, (setter)_Nuitka_Frame_set_trace_lines, NULL},
325
+ {(char *)"f_trace_opcodes", (getter)_Nuitka_Frame_get_trace_opcodes, (setter)_Nuitka_Frame_set_trace_opcodes, NULL},
288
326
  #endif
289
327
  {NULL}};
290
328
 
291
329
  // tp_repr slot, decide how a function shall be output
292
330
  static PyObject *Nuitka_Frame_tp_repr(struct Nuitka_FrameObject *nuitka_frame) {
331
+ assert(Nuitka_Frame_CheckExact((PyObject *)nuitka_frame));
332
+ CHECK_OBJECT((PyObject *)nuitka_frame);
333
+ assert(_PyObject_GC_IS_TRACKED(nuitka_frame));
293
334
 
294
335
  #if PYTHON_VERSION >= 0x370
295
336
  PyCodeObject *code_object = Nuitka_GetFrameCodeObject(nuitka_frame);
@@ -367,10 +408,9 @@ static void Nuitka_Frame_tp_dealloc(struct Nuitka_FrameObject *nuitka_frame) {
367
408
  // Save the current exception, if any, we must to not corrupt it.
368
409
  PyThreadState *tstate = PyThreadState_GET();
369
410
 
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);
411
+ struct Nuitka_ExceptionPreservationItem saved_exception_state1;
412
+ FETCH_ERROR_OCCURRED_STATE(tstate, &saved_exception_state1);
413
+ RESTORE_ERROR_OCCURRED_STATE(tstate, &saved_exception_state1);
374
414
  #endif
375
415
 
376
416
  Nuitka_GC_UnTrack(nuitka_frame);
@@ -382,6 +422,7 @@ static void Nuitka_Frame_tp_dealloc(struct Nuitka_FrameObject *nuitka_frame) {
382
422
  _PyInterpreterFrame *locals_owner = &nuitka_frame->m_interpreter_frame;
383
423
  #endif
384
424
 
425
+ assert(Nuitka_GC_IS_TRACKED_X((PyObject *)frame->f_back));
385
426
  Py_XDECREF(frame->f_back);
386
427
  Py_DECREF(locals_owner->f_builtins);
387
428
  Py_DECREF(locals_owner->f_globals);
@@ -395,6 +436,13 @@ static void Nuitka_Frame_tp_dealloc(struct Nuitka_FrameObject *nuitka_frame) {
395
436
 
396
437
  Nuitka_Frame_tp_clear(nuitka_frame);
397
438
 
439
+ Py_SET_REFCNT(nuitka_frame, Py_REFCNT(nuitka_frame) - 1);
440
+ if (Py_REFCNT(nuitka_frame) >= 1) {
441
+ // TODO: Allow this in debug mode, for now we would like to reproduce it.
442
+ assert(false);
443
+ return;
444
+ }
445
+
398
446
  #if PYTHON_VERSION >= 0x3b0
399
447
  // Restore from backup, see header comment for the field "m_ob_size" to get
400
448
  // it.
@@ -404,13 +452,19 @@ static void Nuitka_Frame_tp_dealloc(struct Nuitka_FrameObject *nuitka_frame) {
404
452
  releaseToFreeList(free_list_frames, nuitka_frame, MAX_FRAME_FREE_LIST_COUNT);
405
453
 
406
454
  #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);
455
+ struct Nuitka_ExceptionPreservationItem saved_exception_state2;
456
+ FETCH_ERROR_OCCURRED_STATE(tstate, &saved_exception_state2);
457
+ RESTORE_ERROR_OCCURRED_STATE(tstate, &saved_exception_state2);
458
+
459
+ ASSERT_SAME_EXCEPTION_STATE(&saved_exception_state1, &saved_exception_state2);
410
460
  #endif
411
461
  }
412
462
 
413
463
  static int Nuitka_Frame_tp_traverse(struct Nuitka_FrameObject *frame, visitproc visit, void *arg) {
464
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
465
+ CHECK_OBJECT((PyObject *)frame);
466
+ assert(_PyObject_GC_IS_TRACKED(frame));
467
+
414
468
  Py_VISIT(frame->m_frame.f_back);
415
469
 
416
470
  #if PYTHON_VERSION < 0x3b0
@@ -474,9 +528,13 @@ static int Nuitka_Frame_tp_traverse(struct Nuitka_FrameObject *frame, visitproc
474
528
  return 0;
475
529
  }
476
530
 
477
- #if PYTHON_VERSION >= 0x340
531
+ #if PYTHON_VERSION >= 0x300
478
532
 
479
533
  static PyObject *Nuitka_Frame_clear(struct Nuitka_FrameObject *frame) {
534
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
535
+ CHECK_OBJECT((PyObject *)frame);
536
+ assert(_PyObject_GC_IS_TRACKED(frame));
537
+
480
538
  PyThreadState *tstate = PyThreadState_GET();
481
539
 
482
540
  if (Nuitka_Frame_IsExecuting(frame)) {
@@ -498,7 +556,7 @@ static PyObject *Nuitka_Frame_clear(struct Nuitka_FrameObject *frame) {
498
556
  }
499
557
  #endif
500
558
 
501
- #if PYTHON_VERSION >= 0x340
559
+ #if PYTHON_VERSION >= 0x300
502
560
  // For frames that are closed, we also need to close the generator.
503
561
  PyObject *f_gen = Nuitka_GetFrameGenerator(frame);
504
562
  if (f_gen != NULL) {
@@ -555,6 +613,10 @@ static PyObject *Nuitka_Frame_clear(struct Nuitka_FrameObject *frame) {
555
613
  #endif
556
614
 
557
615
  static inline Py_ssize_t Nuitka_Frame_GetSize(struct Nuitka_FrameObject *frame) {
616
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
617
+ CHECK_OBJECT((PyObject *)frame);
618
+ assert(_PyObject_GC_IS_TRACKED(frame));
619
+
558
620
  #if PYTHON_VERSION < 0x3b0
559
621
  return Py_SIZE(frame);
560
622
  #else
@@ -563,11 +625,15 @@ static inline Py_ssize_t Nuitka_Frame_GetSize(struct Nuitka_FrameObject *frame)
563
625
  }
564
626
 
565
627
  static PyObject *Nuitka_Frame_sizeof(struct Nuitka_FrameObject *frame) {
628
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
629
+ CHECK_OBJECT((PyObject *)frame);
630
+ assert(_PyObject_GC_IS_TRACKED(frame));
631
+
566
632
  return PyInt_FromSsize_t(sizeof(struct Nuitka_FrameObject) + Py_SIZE(frame));
567
633
  }
568
634
 
569
635
  static PyMethodDef Nuitka_Frame_methods[] = {
570
- #if PYTHON_VERSION >= 0x340
636
+ #if PYTHON_VERSION >= 0x300
571
637
  {"clear", (PyCFunction)Nuitka_Frame_clear, METH_NOARGS, "F.clear(): clear most references held by the frame"},
572
638
  #endif
573
639
  {"__sizeof__", (PyCFunction)Nuitka_Frame_sizeof, METH_NOARGS, "F.__sizeof__() -> size of F in memory, in bytes"},
@@ -601,8 +667,8 @@ PyTypeObject Nuitka_Frame_Type = {
601
667
  0, // tp_iter
602
668
  0, // tp_iternext
603
669
  Nuitka_Frame_methods, // tp_methods
604
- Nuitka_Frame_memberlist, // tp_members
605
- Nuitka_Frame_getsetlist, // tp_getset
670
+ Nuitka_Frame_members, // tp_members
671
+ Nuitka_Frame_tp_getset, // tp_getset
606
672
  0, // tp_base
607
673
  0, // tp_dict
608
674
  };
@@ -619,23 +685,24 @@ void _initCompiledFrameType(void) {
619
685
  assert(Nuitka_Frame_Type.tp_methods != PyFrame_Type.tp_methods);
620
686
  assert(Nuitka_Frame_Type.tp_members != PyFrame_Type.tp_members);
621
687
  assert(Nuitka_Frame_Type.tp_getset != PyFrame_Type.tp_getset);
622
- assert(Nuitka_Frame_Type.tp_dict != PyFrame_Type.tp_dict);
688
+
623
689
  assert(Nuitka_Frame_Type.tp_descr_get != PyFrame_Type.tp_descr_get || PyFrame_Type.tp_descr_get == NULL);
624
690
 
625
691
  assert(Nuitka_Frame_Type.tp_descr_set != PyFrame_Type.tp_descr_set || PyFrame_Type.tp_descr_set == NULL);
626
692
  assert(Nuitka_Frame_Type.tp_dictoffset != PyFrame_Type.tp_dictoffset || PyFrame_Type.tp_dictoffset == 0);
627
693
  // TODO: These get changed and into the same thing, not sure what to compare against, project something
694
+ // assert(Nuitka_Frame_Type.tp_dict != PyFrame_Type.tp_dict);
628
695
  // assert(Nuitka_Frame_Type.tp_init != PyFrame_Type.tp_init || PyFrame_Type.tp_init == NULL);
629
696
  // assert(Nuitka_Frame_Type.tp_alloc != PyFrame_Type.tp_alloc || PyFrame_Type.tp_alloc == NULL);
630
697
  // assert(Nuitka_Frame_Type.tp_new != PyFrame_Type.tp_new || PyFrame_Type.tp_new == NULL);
631
698
  // assert(Nuitka_Frame_Type.tp_free != PyFrame_Type.tp_free || PyFrame_Type.tp_free == NULL);
699
+ // assert(Nuitka_Frame_Type.tp_weaklist != PyFrame_Type.tp_weaklist);
632
700
  assert(Nuitka_Frame_Type.tp_bases != PyFrame_Type.tp_bases);
633
701
  assert(Nuitka_Frame_Type.tp_mro != PyFrame_Type.tp_mro);
634
702
  assert(Nuitka_Frame_Type.tp_cache != PyFrame_Type.tp_cache || PyFrame_Type.tp_cache == NULL);
635
703
  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
704
  assert(Nuitka_Frame_Type.tp_del != PyFrame_Type.tp_del || PyFrame_Type.tp_del == NULL);
638
- #if PYTHON_VERSION >= 0x340
705
+ #if PYTHON_VERSION >= 0x300
639
706
  assert(Nuitka_Frame_Type.tp_finalize != PyFrame_Type.tp_finalize || PyFrame_Type.tp_finalize == NULL);
640
707
  #endif
641
708
  Nuitka_PyType_Ready(&Nuitka_Frame_Type, &PyFrame_Type, true, true, false, false, false);
@@ -674,7 +741,12 @@ static struct Nuitka_FrameObject *_MAKE_COMPILED_FRAME(PyCodeObject *code, PyObj
674
741
  _PyInterpreterFrame *locals_owner = &result->m_interpreter_frame;
675
742
  #endif
676
743
 
744
+ #if PYTHON_VERSION < 0x3d0
677
745
  locals_owner->f_code = code;
746
+ #else
747
+ // TODO: Why is our code object not just immortal.
748
+ locals_owner->f_executable = (PyObject *)code;
749
+ #endif
678
750
 
679
751
  frame->f_trace = Py_None;
680
752
 
@@ -708,12 +780,12 @@ static struct Nuitka_FrameObject *_MAKE_COMPILED_FRAME(PyCodeObject *code, PyObj
708
780
 
709
781
  #if PYTHON_VERSION < 0x3b0
710
782
  frame->f_lasti = -1;
711
- frame->f_iblock = 0;
783
+ frame->f_iblock = 0; // spell-checker: ignore iblock
712
784
  #endif
713
785
 
714
786
  frame->f_lineno = code->co_firstlineno;
715
787
 
716
- #if PYTHON_VERSION >= 0x340
788
+ #if PYTHON_VERSION >= 0x300
717
789
  Nuitka_SetFrameGenerator(result, NULL);
718
790
 
719
791
  Nuitka_Frame_MarkAsNotExecuting(result);
@@ -721,9 +793,18 @@ static struct Nuitka_FrameObject *_MAKE_COMPILED_FRAME(PyCodeObject *code, PyObj
721
793
 
722
794
  #if PYTHON_VERSION >= 0x3b0
723
795
  result->m_interpreter_frame.frame_obj = &result->m_frame;
724
- result->m_interpreter_frame.owner = 0;
796
+ result->m_interpreter_frame.owner = FRAME_OWNED_BY_GENERATOR;
797
+ #if PYTHON_VERSION >= 0x3c0
798
+ result->m_interpreter_frame.f_funcobj = NULL; // spell-checker: ignore funcobj
799
+ #else
800
+ result->m_interpreter_frame.f_func = NULL;
801
+ #endif
802
+ #if PYTHON_VERSION < 0x3d0
725
803
  result->m_interpreter_frame.prev_instr = _PyCode_CODE(code);
804
+ #endif
726
805
  result->m_frame.f_frame = &result->m_interpreter_frame;
806
+
807
+ assert(!_PyFrame_IsIncomplete(&result->m_interpreter_frame));
727
808
  #endif
728
809
 
729
810
  Nuitka_GC_Track(result);
@@ -769,7 +850,7 @@ PyCodeObject *makeCodeObject(PyObject *filename, int line, int flags, PyObject *
769
850
  #if PYTHON_VERSION >= 0x3b0
770
851
  PyObject *function_qualname,
771
852
  #endif
772
- PyObject *argnames, PyObject *freevars, int arg_count
853
+ PyObject *arg_names, PyObject *free_vars, int arg_count
773
854
  #if PYTHON_VERSION >= 0x300
774
855
  ,
775
856
  int kw_only_count
@@ -780,21 +861,35 @@ PyCodeObject *makeCodeObject(PyObject *filename, int line, int flags, PyObject *
780
861
  #endif
781
862
  ) {
782
863
  CHECK_OBJECT(filename);
783
- assert(Nuitka_String_CheckExact(filename));
864
+ assert(Nuitka_StringOrUnicode_CheckExact(filename));
784
865
  CHECK_OBJECT(function_name);
785
866
  assert(Nuitka_String_CheckExact(function_name));
786
867
 
787
- if (argnames == NULL) {
788
- argnames = const_tuple_empty;
868
+ #if PYTHON_VERSION < 0x300
869
+ PyObject *filename_str = NULL;
870
+
871
+ // TODO: Memory leak of filename, it might be intended transferred to the
872
+ // code object by using code.
873
+ if (PyUnicode_CheckExact(filename)) {
874
+ filename_str = PyUnicode_AsUTF8String(filename);
875
+ filename = filename_str;
876
+ } else {
877
+ filename_str = filename;
878
+ Py_INCREF(filename);
879
+ }
880
+ #endif
881
+
882
+ if (arg_names == NULL || arg_names == Py_None) {
883
+ arg_names = const_tuple_empty;
789
884
  }
790
- CHECK_OBJECT(argnames);
791
- assert(PyTuple_Check(argnames));
885
+ CHECK_OBJECT(arg_names);
886
+ assert(PyTuple_Check(arg_names));
792
887
 
793
- if (freevars == NULL) {
794
- freevars = const_tuple_empty;
888
+ if (free_vars == NULL || free_vars == Py_None) {
889
+ free_vars = const_tuple_empty;
795
890
  }
796
- CHECK_OBJECT(freevars);
797
- assert(PyTuple_Check(freevars));
891
+ CHECK_OBJECT(free_vars);
892
+ assert(PyTuple_Check(free_vars));
798
893
 
799
894
  // The PyCode_New has funny code that interns, mutating the tuple that owns
800
895
  // it. Really serious non-immutable shit. We have triggered that changes
@@ -803,36 +898,76 @@ PyCodeObject *makeCodeObject(PyObject *filename, int line, int flags, PyObject *
803
898
  // TODO: Reactivate once code object creation becomes un-streaming driven
804
899
  // and we can pass the extra args with no worries.
805
900
 
806
- // Py_hash_t hash = DEEP_HASH(argnames);
901
+ // Py_hash_t hash = DEEP_HASH(arg_names);
807
902
  #endif
808
903
 
904
+ // spell-checker: ignore lnotab
809
905
  #if PYTHON_VERSION < 0x300
810
906
  PyObject *code = const_str_empty;
811
907
  PyObject *lnotab = const_str_empty;
812
- #else
813
- #if PYTHON_VERSION < 0x3b0
908
+ PyObject *consts = const_tuple_empty;
909
+ PyObject *names = const_tuple_empty;
910
+ int stacksize = 0;
911
+ #elif PYTHON_VERSION < 0x3b0
814
912
  PyObject *code = const_bytes_empty;
815
913
  PyObject *lnotab = const_bytes_empty;
914
+ PyObject *consts = const_tuple_empty;
915
+ PyObject *names = const_tuple_empty;
916
+ int stacksize = 0;
816
917
  #else
817
918
  // Our code object needs to be recognizable, and Python doesn't store the
818
919
  // length anymore, so we need a non-empty one.
819
920
  static PyObject *empty_code = NULL;
921
+ static PyObject *lnotab = NULL;
922
+ static PyObject *consts = NULL;
923
+ static PyObject *names = NULL;
924
+ // TODO: Seems removable.
925
+ static PyObject *exception_table = NULL;
926
+ static int stacksize = 0;
927
+
820
928
  if (empty_code == NULL) {
821
- empty_code = PyBytes_FromString("\0\0");
929
+ // Only needed once here.
930
+ PyThreadState *tstate = PyThreadState_GET();
931
+
932
+ PyObject *empty_code_module_object = Py_CompileString(
933
+ "def empty(): raise RuntimeError('Compiled function bytecode used')", "<exec>", Py_file_input);
934
+ NUITKA_MAY_BE_UNUSED PyObject *module =
935
+ PyImport_ExecCodeModule("nuitka_empty_function", empty_code_module_object);
936
+ CHECK_OBJECT(module);
937
+
938
+ PyObject *empty_function = PyObject_GetAttrString(module, "empty");
939
+ CHECK_OBJECT(empty_function);
940
+ PyObject *empty_code_object = PyObject_GetAttrString(empty_function, "__code__");
941
+ CHECK_OBJECT(empty_code_object);
942
+
943
+ NUITKA_MAY_BE_UNUSED bool bool_res = Nuitka_DelModuleString(tstate, "nuitka_empty_function");
944
+ assert(bool_res != false);
945
+
946
+ empty_code = PyObject_GetAttrString(empty_code_object, "co_code");
947
+ CHECK_OBJECT(empty_code);
948
+ lnotab = PyObject_GetAttrString(empty_code_object, "co_lnotab");
949
+ CHECK_OBJECT(lnotab);
950
+ consts = PyObject_GetAttrString(empty_code_object, "co_consts");
951
+ CHECK_OBJECT(consts);
952
+ names = PyObject_GetAttrString(empty_code_object, "co_names");
953
+ CHECK_OBJECT(names);
954
+ exception_table = PyObject_GetAttrString(empty_code_object, "co_exceptiontable");
955
+ CHECK_OBJECT(exception_table);
956
+
957
+ stacksize = (int)PyLong_AsLong(PyObject_GetAttrString(empty_code_object, "co_stacksize"));
822
958
  }
959
+
823
960
  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
961
+ CHECK_OBJECT(empty_code);
962
+ CHECK_OBJECT(lnotab);
963
+ CHECK_OBJECT(consts);
964
+ CHECK_OBJECT(names);
965
+ CHECK_OBJECT(exception_table);
831
966
  #endif
832
967
 
833
968
  // 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);
969
+ #if PYTHON_VERSION >= 0x3b0
970
+ int nlocals = (int)PyTuple_GET_SIZE(arg_names);
836
971
  #else
837
972
  int nlocals = 0;
838
973
  #endif
@@ -841,50 +976,52 @@ PyCodeObject *makeCodeObject(PyObject *filename, int line, int flags, PyObject *
841
976
  // and is not available for Python2.
842
977
 
843
978
  #if PYTHON_VERSION >= 0x380
844
- PyCodeObject *result = PyCode_NewWithPosOnlyArgs(arg_count, // argcount
979
+ PyCodeObject *result = PyCode_NewWithPosOnlyArgs(arg_count, // arg_count
845
980
  #else
846
- PyCodeObject *result = PyCode_New(arg_count, // argcount
981
+ PyCodeObject *result = PyCode_New(arg_count, // arg_count
847
982
  #endif
848
983
 
849
984
  #if PYTHON_VERSION >= 0x300
850
985
  #if PYTHON_VERSION >= 0x380
851
- pos_only_count, // kw-only count
986
+ pos_only_count, // pos-only count
852
987
  #endif
853
988
  kw_only_count, // kw-only count
854
989
  #endif
855
990
  nlocals, // nlocals
856
- 0, // stacksize
991
+ stacksize, // stacksize
857
992
  flags, // flags
858
993
  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)
994
+ consts, // consts (we are not going to be compatible)
995
+ names, // names (we are not going to be compatible)
996
+ arg_names, // var_names (we are not going to be compatible)
997
+ free_vars, // free_vars
998
+ const_tuple_empty, // cell_vars (we are not going to be compatible)
864
999
  filename, // filename
865
1000
  function_name, // name
866
1001
  #if PYTHON_VERSION >= 0x3b0
867
1002
  function_qualname, // qualname
868
1003
  #endif
869
- line, // firstlineno (offset of the code object)
1004
+ line, // first_lineno (offset of the code object)
870
1005
  lnotab // lnotab (table to translate code object)
871
1006
  #if PYTHON_VERSION >= 0x3b0
872
1007
  ,
873
- const_bytes_empty // exceptiontable
1008
+ exception_table // exception_table
874
1009
  #endif
875
1010
  );
876
1011
 
877
- // assert(DEEP_HASH(tstate, argnames) == hash);
1012
+ // assert(DEEP_HASH(tstate, arg_names) == hash);
878
1013
 
879
- if (result == NULL) {
880
- PyErr_PrintEx(0);
881
- }
1014
+ #if PYTHON_VERSION < 0x300
1015
+ Py_DECREF(filename_str);
1016
+ #endif
882
1017
 
883
- CHECK_OBJECT(result);
884
1018
  return result;
885
1019
  }
886
1020
 
887
1021
  void Nuitka_Frame_AttachLocals(struct Nuitka_FrameObject *frame_object, char const *type_description, ...) {
1022
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame_object));
1023
+ CHECK_OBJECT((PyObject *)frame_object);
1024
+ assert(_PyObject_GC_IS_TRACKED(frame_object));
888
1025
  assertFrameObject(frame_object);
889
1026
 
890
1027
  #if _DEBUG_FRAME
@@ -939,6 +1076,11 @@ void Nuitka_Frame_AttachLocals(struct Nuitka_FrameObject *frame_object, char con
939
1076
  CHECK_OBJECT_X(value->ob_ref);
940
1077
 
941
1078
  memcpy(t, &value, sizeof(struct Nuitka_CellObject *));
1079
+ // TODO: Reference count must become wrong here, should
1080
+ // be forced to one probably, or we should simply not
1081
+ // store cells, but their values. Take a ref off "value"
1082
+ // is probably not needed.
1083
+ // Py_SET_REFCNT((struct Nuitka_CellObject *)t, 1);
942
1084
  Py_INCREF(value);
943
1085
 
944
1086
  t += sizeof(struct Nuitka_CellObject *);
@@ -975,10 +1117,8 @@ void Nuitka_Frame_AttachLocals(struct Nuitka_FrameObject *frame_object, char con
975
1117
  void dumpFrameStack(void) {
976
1118
  PyThreadState *tstate = PyThreadState_GET();
977
1119
 
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);
1120
+ struct Nuitka_ExceptionPreservationItem saved_exception_state;
1121
+ FETCH_ERROR_OCCURRED_STATE(tstate, &saved_exception_state);
982
1122
 
983
1123
  int total = 0;
984
1124
 
@@ -1014,7 +1154,7 @@ void dumpFrameStack(void) {
1014
1154
  current_repr = const_str_empty;
1015
1155
  Py_INCREF(const_str_empty);
1016
1156
  }
1017
- PyObject *code_repr = PyObject_Str((PyObject *)current->current_frame->f_code);
1157
+ PyObject *code_repr = PyObject_Str((PyObject *)Nuitka_InterpreterFrame_GetCodeObject(current->current_frame));
1018
1158
  #endif
1019
1159
 
1020
1160
  PRINT_FORMAT("Frame stack %d: %s %d %s\n", total--, Nuitka_String_AsString(current_repr), Py_REFCNT(current),
@@ -1032,7 +1172,7 @@ void dumpFrameStack(void) {
1032
1172
 
1033
1173
  PRINT_STRING(">---------<\n");
1034
1174
 
1035
- RESTORE_ERROR_OCCURRED(tstate, saved_exception_type, saved_exception_value, saved_exception_tb);
1175
+ RESTORE_ERROR_OCCURRED_STATE(tstate, &saved_exception_state);
1036
1176
  }
1037
1177
 
1038
1178
  static void PRINT_UNCOMPILED_FRAME(char const *prefix, PyFrameObject *frame) {
@@ -1070,7 +1210,7 @@ void PRINT_INTERPRETER_FRAME(char const *prefix, Nuitka_ThreadStateFrameType *fr
1070
1210
  if (frame) {
1071
1211
  PRINT_FORMAT("0x%lx ", frame);
1072
1212
 
1073
- PyObject *code_object_str = PyObject_Repr((PyObject *)frame->f_code);
1213
+ PyObject *code_object_str = PyObject_Repr((PyObject *)Nuitka_InterpreterFrame_GetCodeObject(frame));
1074
1214
  PRINT_ITEM(code_object_str);
1075
1215
  Py_DECREF(code_object_str);
1076
1216
  } else {
@@ -1087,8 +1227,22 @@ void PRINT_TOP_FRAME(char const *prefix) {
1087
1227
  #if PYTHON_VERSION < 0x3b0
1088
1228
  PRINT_UNCOMPILED_FRAME(prefix, tstate->frame);
1089
1229
  #else
1090
- PRINT_INTERPRETER_FRAME(prefix, tstate->cframe->current_frame);
1230
+ PRINT_INTERPRETER_FRAME(prefix, CURRENT_TSTATE_INTERPRETER_FRAME(tstate));
1091
1231
  #endif
1092
1232
  }
1093
1233
 
1094
- #endif
1234
+ #endif
1235
+ // Part of "Nuitka", an optimizing Python compiler that is compatible and
1236
+ // integrates with CPython, but also works on its own.
1237
+ //
1238
+ // Licensed under the Apache License, Version 2.0 (the "License");
1239
+ // you may not use this file except in compliance with the License.
1240
+ // You may obtain a copy of the License at
1241
+ //
1242
+ // http://www.apache.org/licenses/LICENSE-2.0
1243
+ //
1244
+ // Unless required by applicable law or agreed to in writing, software
1245
+ // distributed under the License is distributed on an "AS IS" BASIS,
1246
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1247
+ // See the License for the specific language governing permissions and
1248
+ // limitations under the License.