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,20 +1,5 @@
1
- // Copyright 2023, Kay Hayen, mailto:kay.hayen@gmail.com
2
- //
3
- // Part of "Nuitka", an optimizing Python compiler that is compatible and
4
- // integrates with CPython, but also works on its own.
5
- //
6
- // Licensed under the Apache License, Version 2.0 (the "License");
7
- // you may not use this file except in compliance with the License.
8
- // You may obtain a copy of the License at
9
- //
10
- // http://www.apache.org/licenses/LICENSE-2.0
11
- //
12
- // Unless required by applicable law or agreed to in writing, software
13
- // distributed under the License is distributed on an "AS IS" BASIS,
14
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- // See the License for the specific language governing permissions and
16
- // limitations under the License.
17
- //
1
+ // Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
18
3
  /* Implementations of compiled code helpers.
19
4
 
20
5
  * The definition of a compiled code helper is that it's being used in
@@ -45,7 +30,7 @@ static void _initBuiltinTypeMethods(void) {
45
30
  _initListBuiltinMethods();
46
31
  }
47
32
 
48
- #if PYTHON_VERSION >= 0x3b0
33
+ #if PYTHON_VERSION >= 0x350
49
34
  #include "HelpersAllocator.c"
50
35
  #endif
51
36
 
@@ -67,6 +52,7 @@ static void _initBuiltinTypeMethods(void) {
67
52
  #include "HelpersStrings.c"
68
53
  #include "HelpersTuples.c"
69
54
 
55
+ #include "HelpersEnvironmentVariables.c"
70
56
  #include "HelpersFilesystemPaths.c"
71
57
  #include "HelpersSafeStrings.c"
72
58
 
@@ -95,12 +81,12 @@ static PyObject *_BUILTIN_RANGE_INT3(long low, long high, long step) {
95
81
  size = ESTIMATE_RANGE(high, low, -step);
96
82
  }
97
83
 
98
- PyObject *result = MAKE_LIST_EMPTY(size);
84
+ PyObject *result = MAKE_LIST_EMPTY(tstate, size);
99
85
 
100
86
  long current = low;
101
87
 
102
88
  for (int i = 0; i < size; i++) {
103
- PyList_SET_ITEM(result, i, PyInt_FromLong(current));
89
+ PyList_SET_ITEM(result, i, Nuitka_PyInt_FromLong(current));
104
90
  current += step;
105
91
  }
106
92
 
@@ -110,10 +96,10 @@ static PyObject *_BUILTIN_RANGE_INT3(long low, long high, long step) {
110
96
  static PyObject *_BUILTIN_RANGE_INT2(long low, long high) { return _BUILTIN_RANGE_INT3(low, high, 1); }
111
97
 
112
98
  static PyObject *_BUILTIN_RANGE_INT(long boundary) {
113
- PyObject *result = MAKE_LIST_EMPTY(boundary > 0 ? boundary : 0);
99
+ PyObject *result = MAKE_LIST_EMPTY(tstate, boundary > 0 ? boundary : 0);
114
100
 
115
101
  for (int i = 0; i < boundary; i++) {
116
- PyList_SET_ITEM(result, i, PyInt_FromLong(i));
102
+ PyList_SET_ITEM(result, i, Nuitka_PyInt_FromLong(i));
117
103
  }
118
104
 
119
105
  return result;
@@ -205,10 +191,10 @@ PyObject *BUILTIN_RANGE2(PyThreadState *tstate, PyObject *low, PyObject *high) {
205
191
 
206
192
  if (fallback) {
207
193
  // Transfers references to tuple.
208
- PyObject *pos_args = MAKE_TUPLE2_0(low_temp, high_temp);
194
+ PyObject *pos_args = MAKE_TUPLE2_0(tstate, low_temp, high_temp);
209
195
  NUITKA_ASSIGN_BUILTIN(range);
210
196
 
211
- PyObject *result = CALL_FUNCTION_WITH_POSARGS2(tstate, NUITKA_ACCESS_BUILTIN(range), pos_args);
197
+ PyObject *result = CALL_FUNCTION_WITH_POS_ARGS2(tstate, NUITKA_ACCESS_BUILTIN(range), pos_args);
212
198
 
213
199
  Py_DECREF(pos_args);
214
200
 
@@ -264,11 +250,11 @@ PyObject *BUILTIN_RANGE3(PyThreadState *tstate, PyObject *low, PyObject *high, P
264
250
  }
265
251
 
266
252
  if (fallback) {
267
- PyObject *pos_args = MAKE_TUPLE3_0(low_temp, high_temp, step_temp);
253
+ PyObject *pos_args = MAKE_TUPLE3_0(tstate, low_temp, high_temp, step_temp);
268
254
 
269
255
  NUITKA_ASSIGN_BUILTIN(range);
270
256
 
271
- PyObject *result = CALL_FUNCTION_WITH_POSARGS3(tstate, NUITKA_ACCESS_BUILTIN(range), pos_args);
257
+ PyObject *result = CALL_FUNCTION_WITH_POS_ARGS3(tstate, NUITKA_ACCESS_BUILTIN(range), pos_args);
272
258
 
273
259
  Py_DECREF(pos_args);
274
260
 
@@ -315,6 +301,8 @@ PyObject *MAKE_XRANGE(PyThreadState *tstate, long start, long stop, long step) {
315
301
  return NULL;
316
302
  }
317
303
 
304
+ // spell-checker: ignore rangeobject
305
+
318
306
  struct _rangeobject2 *result = (struct _rangeobject2 *)PyObject_New(struct _rangeobject2, &PyRange_Type);
319
307
  assert(result != NULL);
320
308
 
@@ -599,7 +587,7 @@ PyObject *BUILTIN_ALL(PyThreadState *tstate, PyObject *value) {
599
587
 
600
588
  if (cmp == 0) {
601
589
  Py_DECREF(it);
602
- Py_INCREF(Py_False);
590
+ Py_INCREF_IMMORTAL(Py_False);
603
591
  return Py_False;
604
592
  }
605
593
  }
@@ -610,7 +598,7 @@ PyObject *BUILTIN_ALL(PyThreadState *tstate, PyObject *value) {
610
598
  return NULL;
611
599
  }
612
600
 
613
- Py_INCREF(Py_True);
601
+ Py_INCREF_IMMORTAL(Py_True);
614
602
  return Py_True;
615
603
  }
616
604
 
@@ -649,7 +637,7 @@ PyObject *BUILTIN_ANY(PyThreadState *tstate, PyObject *value) {
649
637
  }
650
638
  if (cmp > 0) {
651
639
  Py_DECREF(it);
652
- Py_INCREF(Py_True);
640
+ Py_INCREF_IMMORTAL(Py_True);
653
641
  return Py_True;
654
642
  }
655
643
  }
@@ -659,7 +647,7 @@ PyObject *BUILTIN_ANY(PyThreadState *tstate, PyObject *value) {
659
647
  return NULL;
660
648
  }
661
649
 
662
- Py_INCREF(Py_False);
650
+ Py_INCREF_IMMORTAL(Py_False);
663
651
  return Py_False;
664
652
  }
665
653
 
@@ -688,7 +676,7 @@ PyObject *BUILTIN_FORMAT(PyThreadState *tstate, PyObject *value, PyObject *forma
688
676
  }
689
677
 
690
678
  // Helper functions for print. Need to play nice with Python softspace
691
- // behaviour.
679
+ // behavior. spell-checker: ignore softspace
692
680
 
693
681
  #if PYTHON_VERSION >= 0x300
694
682
  NUITKA_DEFINE_BUILTIN(print);
@@ -724,10 +712,9 @@ bool PRINT_NEW_LINE_TO(PyObject *file) {
724
712
  #else
725
713
  NUITKA_ASSIGN_BUILTIN(print);
726
714
 
727
- PyObject *exception_type, *exception_value;
728
- PyTracebackObject *exception_tb;
715
+ struct Nuitka_ExceptionPreservationItem saved_exception_state;
729
716
 
730
- FETCH_ERROR_OCCURRED_UNTRACED(tstate, &exception_type, &exception_value, &exception_tb);
717
+ FETCH_ERROR_OCCURRED_STATE_UNTRACED(tstate, &saved_exception_state);
731
718
 
732
719
  PyObject *result;
733
720
 
@@ -739,14 +726,14 @@ bool PRINT_NEW_LINE_TO(PyObject *file) {
739
726
 
740
727
  // TODO: This should use something that does not build a dictionary at all, and not
741
728
  // uses a tuple.
742
- result = CALL_FUNCTION_WITH_KEYARGS(tstate, NUITKA_ACCESS_BUILTIN(print), kw_args);
729
+ result = CALL_FUNCTION_WITH_KW_ARGS(tstate, NUITKA_ACCESS_BUILTIN(print), kw_args);
743
730
 
744
731
  Py_DECREF(kw_args);
745
732
  }
746
733
 
747
734
  Py_XDECREF(result);
748
735
 
749
- RESTORE_ERROR_OCCURRED_UNTRACED(tstate, exception_type, exception_value, exception_tb);
736
+ RESTORE_ERROR_OCCURRED_STATE_UNTRACED(tstate, &saved_exception_state);
750
737
 
751
738
  return result != NULL;
752
739
  #endif
@@ -818,13 +805,12 @@ bool PRINT_ITEM_TO(PyObject *file, PyObject *object) {
818
805
  #else
819
806
  NUITKA_ASSIGN_BUILTIN(print);
820
807
 
821
- PyObject *exception_type, *exception_value;
822
- PyTracebackObject *exception_tb;
808
+ struct Nuitka_ExceptionPreservationItem saved_exception_state;
823
809
 
824
- FETCH_ERROR_OCCURRED_UNTRACED(tstate, &exception_type, &exception_value, &exception_tb);
810
+ FETCH_ERROR_OCCURRED_STATE_UNTRACED(tstate, &saved_exception_state);
825
811
 
826
812
  // TODO: Have a helper that creates a dictionary for PyObject **
827
- PyObject *print_kw = MAKE_DICT_EMPTY();
813
+ PyObject *print_kw = MAKE_DICT_EMPTY(tstate);
828
814
  DICT_SET_ITEM(print_kw, const_str_plain_end, const_str_empty);
829
815
 
830
816
  if (file == NULL) {
@@ -833,7 +819,7 @@ bool PRINT_ITEM_TO(PyObject *file, PyObject *object) {
833
819
  DICT_SET_ITEM(print_kw, const_str_plain_file, file);
834
820
  }
835
821
 
836
- PyObject *print_args = MAKE_TUPLE1(object);
822
+ PyObject *print_args = MAKE_TUPLE1(tstate, object);
837
823
 
838
824
  PyObject *result = CALL_FUNCTION(tstate, NUITKA_ACCESS_BUILTIN(print), print_args, print_kw);
839
825
 
@@ -842,7 +828,7 @@ bool PRINT_ITEM_TO(PyObject *file, PyObject *object) {
842
828
 
843
829
  Py_XDECREF(result);
844
830
 
845
- RESTORE_ERROR_OCCURRED_UNTRACED(tstate, exception_type, exception_value, exception_tb);
831
+ RESTORE_ERROR_OCCURRED_STATE_UNTRACED(tstate, &saved_exception_state);
846
832
 
847
833
  return result != NULL;
848
834
  #endif
@@ -850,12 +836,18 @@ bool PRINT_ITEM_TO(PyObject *file, PyObject *object) {
850
836
 
851
837
  void PRINT_REFCOUNT(PyObject *object) {
852
838
  if (object) {
839
+ #if PYTHON_VERSION >= 0x3c0
840
+ if (_Py_IsImmortal(object)) {
841
+ PRINT_STRING(" refcnt IMMORTAL");
842
+ return;
843
+ }
844
+ #endif
853
845
  char buffer[1024];
854
846
  snprintf(buffer, sizeof(buffer) - 1, " refcnt %" PY_FORMAT_SIZE_T "d ", Py_REFCNT(object));
855
847
 
856
848
  PRINT_STRING(buffer);
857
849
  } else {
858
- PRINT_STRING("<null>");
850
+ PRINT_STRING(" <null>");
859
851
  }
860
852
  }
861
853
 
@@ -870,6 +862,17 @@ bool PRINT_STRING(char const *str) {
870
862
  }
871
863
  }
872
864
 
865
+ bool PRINT_STRING_W(wchar_t const *str) {
866
+ if (str) {
867
+ PyObject *tmp = NuitkaUnicode_FromWideChar(str, -1);
868
+ bool res = PRINT_ITEM(tmp);
869
+ Py_DECREF(tmp);
870
+ return res;
871
+ } else {
872
+ return PRINT_STRING("<nullstr>");
873
+ }
874
+ }
875
+
873
876
  bool PRINT_FORMAT(char const *fmt, ...) {
874
877
  va_list args;
875
878
  va_start(args, fmt);
@@ -878,16 +881,17 @@ bool PRINT_FORMAT(char const *fmt, ...) {
878
881
  char buffer[4096];
879
882
 
880
883
  vsprintf(buffer, fmt, args);
884
+ va_end(args);
885
+
881
886
  return PRINT_STRING(buffer);
882
887
  }
883
888
 
884
889
  bool PRINT_REPR(PyObject *object) {
885
- PyObject *exception_type, *exception_value;
886
- PyTracebackObject *exception_tb;
887
-
888
890
  PyThreadState *tstate = PyThreadState_GET();
889
891
 
890
- FETCH_ERROR_OCCURRED_UNTRACED(tstate, &exception_type, &exception_value, &exception_tb);
892
+ struct Nuitka_ExceptionPreservationItem saved_exception_state;
893
+
894
+ FETCH_ERROR_OCCURRED_STATE_UNTRACED(tstate, &saved_exception_state);
891
895
 
892
896
  bool res;
893
897
 
@@ -904,7 +908,7 @@ bool PRINT_REPR(PyObject *object) {
904
908
  res = PRINT_NULL();
905
909
  }
906
910
 
907
- RESTORE_ERROR_OCCURRED_UNTRACED(tstate, exception_type, exception_value, exception_tb);
911
+ RESTORE_ERROR_OCCURRED_STATE_UNTRACED(tstate, &saved_exception_state);
908
912
 
909
913
  return res;
910
914
  }
@@ -913,50 +917,63 @@ bool PRINT_NULL(void) { return PRINT_STRING("<NULL>"); }
913
917
 
914
918
  bool PRINT_TYPE(PyObject *object) { return PRINT_ITEM((PyObject *)Py_TYPE(object)); }
915
919
 
916
- #if PYTHON_VERSION < 0x3b0
917
- void _PRINT_EXCEPTION(PyObject *exception_type, PyObject *exception_value, PyTracebackObject *exception_tb) {
918
- #else
919
- void _PRINT_EXCEPTION(PyObject *exception_value) {
920
- PyObject *exception_type = exception_value ? PyExceptionInstance_Class(exception_value) : NULL;
921
- PyTracebackObject *exception_tb = (exception_value && PyExceptionInstance_Check(exception_value))
922
- ? GET_EXCEPTION_TRACEBACK(exception_value)
923
- : NULL;
924
- #endif
920
+ void _PRINT_EXCEPTION3(PyObject *exception_type, PyObject *exception_value, PyTracebackObject *exception_tb) {
925
921
  PRINT_REPR(exception_type);
926
- if (exception_type) {
922
+ if (exception_type != NULL) {
927
923
  PRINT_REFCOUNT(exception_type);
928
924
  }
929
925
  PRINT_STRING("|");
930
926
  PRINT_REPR(exception_value);
931
- if (exception_value) {
927
+ if (exception_value != NULL) {
932
928
  PRINT_REFCOUNT(exception_value);
933
929
  }
934
930
  #if PYTHON_VERSION >= 0x300
935
931
  if (exception_value != NULL && PyExceptionInstance_Check(exception_value)) {
936
932
  PRINT_STRING(" <- context ");
937
- PyObject *context = PyException_GetContext(exception_value);
933
+ PyObject *context = Nuitka_Exception_GetContext(exception_value);
938
934
  PRINT_REPR(context);
939
- Py_XDECREF(context);
940
935
  }
941
936
  #endif
942
937
  PRINT_STRING("|");
943
938
  PRINT_REPR((PyObject *)exception_tb);
939
+ if (exception_tb != NULL) {
940
+ PRINT_REFCOUNT((PyObject *)exception_tb);
941
+ }
944
942
 
945
943
  PRINT_NEW_LINE();
946
944
  }
947
945
 
946
+ #if PYTHON_VERSION >= 0x3b0
947
+ void _PRINT_EXCEPTION1(PyObject *exception_value) {
948
+ PyObject *exception_type = exception_value ? PyExceptionInstance_Class(exception_value) : NULL;
949
+ PyTracebackObject *exception_tb = (exception_value && PyExceptionInstance_Check(exception_value))
950
+ ? GET_EXCEPTION_TRACEBACK(exception_value)
951
+ : NULL;
952
+
953
+ _PRINT_EXCEPTION3(exception_type, exception_value, exception_tb);
954
+ }
955
+ #endif
956
+
948
957
  void PRINT_CURRENT_EXCEPTION(void) {
949
958
  PyThreadState *tstate = PyThreadState_GET();
950
959
 
951
960
  PRINT_STRING("current_exc=");
961
+ #if PYTHON_VERSION < 0x3c0
952
962
  PRINT_EXCEPTION(tstate->curexc_type, tstate->curexc_value, (PyTracebackObject *)tstate->curexc_traceback);
963
+ #else
964
+ _PRINT_EXCEPTION1(tstate->exc_info->exc_value);
965
+ #endif
953
966
  }
954
967
 
955
968
  void PRINT_PUBLISHED_EXCEPTION(void) {
956
969
  PyThreadState *tstate = PyThreadState_GET();
957
970
 
958
971
  PRINT_STRING("thread_exc=");
972
+ #if PYTHON_VERSION < 0x3b0
959
973
  PRINT_EXCEPTION(EXC_TYPE(tstate), EXC_VALUE(tstate), EXC_TRACEBACK(tstate));
974
+ #else
975
+ PRINT_EXCEPTION(EXC_TYPE(tstate), EXC_VALUE(tstate), GET_EXCEPTION_TRACEBACK(EXC_VALUE(tstate)));
976
+ #endif
960
977
  }
961
978
 
962
979
  // TODO: Could be ported, the "printf" stuff would need to be split. On Python3
@@ -974,7 +991,7 @@ void PRINT_TRACEBACK(PyTracebackObject *traceback) {
974
991
  PyFrameObject *frame = traceback->tb_frame;
975
992
 
976
993
  while (frame != NULL) {
977
- printf(" Frame at %s\n", PyString_AsString(PyObject_Str((PyObject *)frame->f_code)));
994
+ printf(" Frame at %s\n", PyString_AsString(PyObject_Str((PyObject *)Nuitka_Frame_GetCodeObject(frame))));
978
995
 
979
996
  frame = frame->f_back;
980
997
  }
@@ -1023,6 +1040,8 @@ bool PRINT_ITEM(PyObject *object) {
1023
1040
  }
1024
1041
  }
1025
1042
 
1043
+ bool PRINT_ITEM_LINE(PyObject *object) { return PRINT_ITEM(object) && PRINT_NEW_LINE(); }
1044
+
1026
1045
  #if PYTHON_VERSION < 0x300
1027
1046
 
1028
1047
  static void set_slot(PyObject **slot, PyObject *value) {
@@ -1032,26 +1051,26 @@ static void set_slot(PyObject **slot, PyObject *value) {
1032
1051
  Py_XDECREF(temp);
1033
1052
  }
1034
1053
 
1035
- static void set_attr_slots(PyClassObject *klass) {
1036
- set_slot(&klass->cl_getattr, FIND_ATTRIBUTE_IN_CLASS(klass, const_str_plain___getattr__));
1037
- set_slot(&klass->cl_setattr, FIND_ATTRIBUTE_IN_CLASS(klass, const_str_plain___setattr__));
1038
- set_slot(&klass->cl_delattr, FIND_ATTRIBUTE_IN_CLASS(klass, const_str_plain___delattr__));
1054
+ static void set_attr_slots(PyClassObject *class_object) {
1055
+ set_slot(&class_object->cl_getattr, FIND_ATTRIBUTE_IN_CLASS(class_object, const_str_plain___getattr__));
1056
+ set_slot(&class_object->cl_setattr, FIND_ATTRIBUTE_IN_CLASS(class_object, const_str_plain___setattr__));
1057
+ set_slot(&class_object->cl_delattr, FIND_ATTRIBUTE_IN_CLASS(class_object, const_str_plain___delattr__));
1039
1058
  }
1040
1059
 
1041
- static bool set_dict(PyClassObject *klass, PyObject *value) {
1060
+ static bool set_dict(PyClassObject *class_object, PyObject *value) {
1042
1061
  if (value == NULL || !PyDict_Check(value)) {
1043
1062
  PyThreadState *tstate = PyThreadState_GET();
1044
1063
  SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_TypeError, "__dict__ must be a dictionary object");
1045
1064
  return false;
1046
1065
  } else {
1047
- set_slot(&klass->cl_dict, value);
1048
- set_attr_slots(klass);
1066
+ set_slot(&class_object->cl_dict, value);
1067
+ set_attr_slots(class_object);
1049
1068
 
1050
1069
  return true;
1051
1070
  }
1052
1071
  }
1053
1072
 
1054
- static bool set_bases(PyClassObject *klass, PyObject *value) {
1073
+ static bool set_bases(PyClassObject *class_object, PyObject *value) {
1055
1074
  if (value == NULL || !PyTuple_Check(value)) {
1056
1075
 
1057
1076
  PyThreadState *tstate = PyThreadState_GET();
@@ -1071,7 +1090,7 @@ static bool set_bases(PyClassObject *klass, PyObject *value) {
1071
1090
  return false;
1072
1091
  }
1073
1092
 
1074
- if (unlikely(PyClass_IsSubclass(base, (PyObject *)klass))) {
1093
+ if (unlikely(PyClass_IsSubclass(base, (PyObject *)class_object))) {
1075
1094
  PyThreadState *tstate = PyThreadState_GET();
1076
1095
 
1077
1096
  SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_TypeError,
@@ -1080,14 +1099,14 @@ static bool set_bases(PyClassObject *klass, PyObject *value) {
1080
1099
  }
1081
1100
  }
1082
1101
 
1083
- set_slot(&klass->cl_bases, value);
1084
- set_attr_slots(klass);
1102
+ set_slot(&class_object->cl_bases, value);
1103
+ set_attr_slots(class_object);
1085
1104
 
1086
1105
  return true;
1087
1106
  }
1088
1107
  }
1089
1108
 
1090
- static bool set_name(PyClassObject *klass, PyObject *value) {
1109
+ static bool set_name(PyClassObject *class_object, PyObject *value) {
1091
1110
  if (value == NULL || !PyDict_Check(value)) {
1092
1111
  PyThreadState *tstate = PyThreadState_GET();
1093
1112
 
@@ -1102,11 +1121,11 @@ static bool set_name(PyClassObject *klass, PyObject *value) {
1102
1121
  return false;
1103
1122
  }
1104
1123
 
1105
- set_slot(&klass->cl_name, value);
1124
+ set_slot(&class_object->cl_name, value);
1106
1125
  return true;
1107
1126
  }
1108
1127
 
1109
- static int nuitka_class_setattr(PyClassObject *klass, PyObject *attr_name, PyObject *value) {
1128
+ static int nuitka_class_setattr(PyClassObject *class_object, PyObject *attr_name, PyObject *value) {
1110
1129
  char const *sattr_name = PyString_AsString(attr_name);
1111
1130
 
1112
1131
  if (sattr_name[0] == '_' && sattr_name[1] == '_') {
@@ -1114,72 +1133,72 @@ static int nuitka_class_setattr(PyClassObject *klass, PyObject *attr_name, PyObj
1114
1133
 
1115
1134
  if (sattr_name[n - 2] == '_' && sattr_name[n - 1] == '_') {
1116
1135
  if (strcmp(sattr_name, "__dict__") == 0) {
1117
- if (set_dict(klass, value) == false) {
1136
+ if (set_dict(class_object, value) == false) {
1118
1137
  return -1;
1119
1138
  } else {
1120
1139
  return 0;
1121
1140
  }
1122
1141
  } else if (strcmp(sattr_name, "__bases__") == 0) {
1123
- if (set_bases(klass, value) == false) {
1142
+ if (set_bases(class_object, value) == false) {
1124
1143
  return -1;
1125
1144
  } else {
1126
1145
  return 0;
1127
1146
  }
1128
1147
  } else if (strcmp(sattr_name, "__name__") == 0) {
1129
- if (set_name(klass, value) == false) {
1148
+ if (set_name(class_object, value) == false) {
1130
1149
  return -1;
1131
1150
  } else {
1132
1151
  return 0;
1133
1152
  }
1134
1153
  } else if (strcmp(sattr_name, "__getattr__") == 0) {
1135
- set_slot(&klass->cl_getattr, value);
1154
+ set_slot(&class_object->cl_getattr, value);
1136
1155
  } else if (strcmp(sattr_name, "__setattr__") == 0) {
1137
- set_slot(&klass->cl_setattr, value);
1156
+ set_slot(&class_object->cl_setattr, value);
1138
1157
  } else if (strcmp(sattr_name, "__delattr__") == 0) {
1139
- set_slot(&klass->cl_delattr, value);
1158
+ set_slot(&class_object->cl_delattr, value);
1140
1159
  }
1141
1160
  }
1142
1161
  }
1143
1162
 
1144
1163
  if (value == NULL) {
1145
- int status = DICT_REMOVE_ITEM(klass->cl_dict, attr_name);
1164
+ int status = DICT_REMOVE_ITEM(class_object->cl_dict, attr_name);
1146
1165
 
1147
1166
  if (status < 0) {
1148
- PyErr_Format(PyExc_AttributeError, "class %s has no attribute '%s'", PyString_AS_STRING(klass->cl_name),
1149
- sattr_name);
1167
+ PyErr_Format(PyExc_AttributeError, "class %s has no attribute '%s'",
1168
+ PyString_AS_STRING(class_object->cl_name), sattr_name);
1150
1169
  }
1151
1170
 
1152
1171
  return status;
1153
1172
  } else {
1154
- return DICT_SET_ITEM(klass->cl_dict, attr_name, value) ? 0 : -1;
1173
+ return DICT_SET_ITEM(class_object->cl_dict, attr_name, value) ? 0 : -1;
1155
1174
  }
1156
1175
  }
1157
1176
 
1158
- static PyObject *nuitka_class_getattr(PyClassObject *klass, PyObject *attr_name) {
1177
+ static PyObject *nuitka_class_getattr(PyClassObject *class_object, PyObject *attr_name) {
1159
1178
  char const *sattr_name = PyString_AsString(attr_name);
1160
1179
 
1161
1180
  if (sattr_name[0] == '_' && sattr_name[1] == '_') {
1162
1181
  if (strcmp(sattr_name, "__dict__") == 0) {
1163
- Py_INCREF(klass->cl_dict);
1164
- return klass->cl_dict;
1182
+ Py_INCREF(class_object->cl_dict);
1183
+ return class_object->cl_dict;
1165
1184
  } else if (strcmp(sattr_name, "__bases__") == 0) {
1166
- Py_INCREF(klass->cl_bases);
1167
- return klass->cl_bases;
1185
+ Py_INCREF(class_object->cl_bases);
1186
+ return class_object->cl_bases;
1168
1187
  } else if (strcmp(sattr_name, "__name__") == 0) {
1169
- if (klass->cl_name == NULL) {
1170
- Py_INCREF(Py_None);
1188
+ if (class_object->cl_name == NULL) {
1189
+ Py_INCREF_IMMORTAL(Py_None);
1171
1190
  return Py_None;
1172
1191
  } else {
1173
- Py_INCREF(klass->cl_name);
1174
- return klass->cl_name;
1192
+ Py_INCREF(class_object->cl_name);
1193
+ return class_object->cl_name;
1175
1194
  }
1176
1195
  }
1177
1196
  }
1178
1197
 
1179
- PyObject *value = FIND_ATTRIBUTE_IN_CLASS(klass, attr_name);
1198
+ PyObject *value = FIND_ATTRIBUTE_IN_CLASS(class_object, attr_name);
1180
1199
 
1181
1200
  if (unlikely(value == NULL)) {
1182
- PyErr_Format(PyExc_AttributeError, "class %s has no attribute '%s'", PyString_AS_STRING(klass->cl_name),
1201
+ PyErr_Format(PyExc_AttributeError, "class %s has no attribute '%s'", PyString_AS_STRING(class_object->cl_name),
1183
1202
  sattr_name);
1184
1203
  return NULL;
1185
1204
  }
@@ -1192,7 +1211,7 @@ static PyObject *nuitka_class_getattr(PyClassObject *klass, PyObject *attr_name)
1192
1211
  Py_INCREF(value);
1193
1212
  return value;
1194
1213
  } else {
1195
- return tp_descr_get(value, (PyObject *)NULL, (PyObject *)klass);
1214
+ return tp_descr_get(value, (PyObject *)NULL, (PyObject *)class_object);
1196
1215
  }
1197
1216
  }
1198
1217
 
@@ -1269,7 +1288,7 @@ static PyObject *QUICK_ITERATOR_NEXT(PyThreadState *tstate, struct Nuitka_QuickI
1269
1288
 
1270
1289
  switch (qiter->iterator_mode) {
1271
1290
  case ITERATOR_GENERIC:
1272
- result = ITERATOR_NEXT(qiter->iterator_data.iter);
1291
+ result = ITERATOR_NEXT_ITERATOR(qiter->iterator_data.iter);
1273
1292
 
1274
1293
  if (result == NULL) {
1275
1294
  Py_DECREF(qiter->iterator_data.iter);
@@ -1341,11 +1360,7 @@ PyObject *BUILTIN_SUM1(PyThreadState *tstate, PyObject *sequence) {
1341
1360
  item = QUICK_ITERATOR_NEXT(tstate, &qiter, &finished);
1342
1361
 
1343
1362
  if (finished) {
1344
- #if PYTHON_VERSION < 0x300
1345
- return PyInt_FromLong(int_result);
1346
- #else
1347
- return PyLong_FromLong(int_result);
1348
- #endif
1363
+ return Nuitka_PyInt_FromLong(int_result);
1349
1364
  } else if (item == NULL) {
1350
1365
  return NULL;
1351
1366
  }
@@ -1389,7 +1404,7 @@ PyObject *BUILTIN_SUM1(PyThreadState *tstate, PyObject *sequence) {
1389
1404
  #endif
1390
1405
 
1391
1406
  if (item == Py_False) {
1392
- Py_DECREF(item);
1407
+ Py_DECREF_IMMORTAL(item);
1393
1408
  continue;
1394
1409
  }
1395
1410
 
@@ -1409,12 +1424,8 @@ PyObject *BUILTIN_SUM1(PyThreadState *tstate, PyObject *sequence) {
1409
1424
  break;
1410
1425
  }
1411
1426
 
1412
- /* Switch over to objects, and redo last step. */
1413
- #if PYTHON_VERSION < 0x300
1414
- result = PyInt_FromLong(int_result);
1415
- #else
1416
- result = PyLong_FromLong(int_result);
1417
- #endif
1427
+ /* Switch over to objects, and redo last step. */
1428
+ result = Nuitka_PyInt_FromLong(int_result);
1418
1429
  CHECK_OBJECT(result);
1419
1430
 
1420
1431
  PyObject *temp = PyNumber_Add(result, item);
@@ -1466,9 +1477,9 @@ PyObject *BUILTIN_SUM2(PyThreadState *tstate, PyObject *sequence, PyObject *star
1466
1477
  CHECK_OBJECT(sequence);
1467
1478
  CHECK_OBJECT(start);
1468
1479
 
1469
- PyObject *pos_args = MAKE_TUPLE2(sequence, start);
1480
+ PyObject *pos_args = MAKE_TUPLE2(tstate, sequence, start);
1470
1481
 
1471
- PyObject *result = CALL_FUNCTION_WITH_POSARGS2(tstate, NUITKA_ACCESS_BUILTIN(sum), pos_args);
1482
+ PyObject *result = CALL_FUNCTION_WITH_POS_ARGS2(tstate, NUITKA_ACCESS_BUILTIN(sum), pos_args);
1472
1483
 
1473
1484
  Py_DECREF(pos_args);
1474
1485
 
@@ -1709,8 +1720,8 @@ char const *getBinaryDirectoryHostEncoded(bool resolve_symlinks) {
1709
1720
 
1710
1721
  #endif
1711
1722
 
1712
- #ifdef _NUITKA_STANDALONE
1713
- static PyObject *getBinaryFilenameObject(bool resolve_symlinks) {
1723
+ #ifdef _NUITKA_EXE
1724
+ PyObject *getBinaryFilenameObject(bool resolve_symlinks) {
1714
1725
  static PyObject *binary_filename = NULL;
1715
1726
  static PyObject *binary_filename_resolved = NULL;
1716
1727
 
@@ -1753,7 +1764,7 @@ static PyObject *getBinaryFilenameObject(bool resolve_symlinks) {
1753
1764
  }
1754
1765
  #endif
1755
1766
 
1756
- static PyObject *getBinaryDirectoryObject(bool resolve_symlinks) {
1767
+ PyObject *getBinaryDirectoryObject(bool resolve_symlinks) {
1757
1768
  static PyObject *binary_directory = NULL;
1758
1769
  static PyObject *binary_directory_resolved = NULL;
1759
1770
 
@@ -1808,7 +1819,7 @@ PyObject *getStandaloneSysExecutablePath(PyObject *basename) {
1808
1819
  #else
1809
1820
 
1810
1821
  #if defined(_WIN32)
1811
- /* Small helper function to get current DLL handle. */
1822
+ // Small helper function to get current DLL handle, spell-checker: ignore lpcstr
1812
1823
  static HMODULE getDllModuleHandle(void) {
1813
1824
  static HMODULE hm = NULL;
1814
1825
 
@@ -1824,58 +1835,127 @@ static HMODULE getDllModuleHandle(void) {
1824
1835
  }
1825
1836
  #endif
1826
1837
 
1838
+ filename_char_t const *getDllDirectory(void) {
1827
1839
  #if defined(_WIN32)
1828
- // Replacement for RemoveFileSpecA, slightly smaller.
1829
- static void stripFilenameA(char *path) {
1830
- char *last_slash = NULL;
1840
+ static WCHAR path[MAXPATHLEN + 1];
1841
+ path[0] = 0;
1831
1842
 
1832
- while (*path != 0) {
1833
- if (*path == '\\') {
1834
- last_slash = path;
1835
- }
1843
+ int res = GetModuleFileNameW(getDllModuleHandle(), path, MAXPATHLEN);
1844
+ assert(res != 0);
1836
1845
 
1837
- path++;
1846
+ stripFilenameW(path);
1847
+
1848
+ return path;
1849
+ #else
1850
+ Dl_info where;
1851
+
1852
+ {
1853
+ NUITKA_MAY_BE_UNUSED int res = dladdr((void *)getDllDirectory, &where);
1854
+ assert(res != 0);
1838
1855
  }
1839
1856
 
1840
- if (last_slash != NULL) {
1841
- *last_slash = 0;
1857
+ return dirname((char *)where.dli_fname);
1858
+ #endif
1859
+ }
1860
+ static PyObject *getDllDirectoryObject(void) {
1861
+ static PyObject *dll_directory = NULL;
1862
+
1863
+ if (dll_directory == NULL) {
1864
+ filename_char_t const *dll_directory_filename = getDllDirectory();
1865
+
1866
+ dll_directory = Nuitka_String_FromFilename(dll_directory_filename);
1867
+
1868
+ #if PYTHON_VERSION < 0x300
1869
+ // Avoid unnecessary unicode values.
1870
+ PyObject *decoded_dll_directory = PyObject_Str(dll_directory);
1871
+
1872
+ if (decoded_dll_directory == NULL) {
1873
+ PyThreadState *tstate = PyThreadState_GET();
1874
+ DROP_ERROR_OCCURRED(tstate);
1875
+ } else {
1876
+ Py_DECREF(dll_directory);
1877
+ dll_directory = decoded_dll_directory;
1878
+ }
1879
+ #endif
1842
1880
  }
1881
+
1882
+ CHECK_OBJECT(dll_directory);
1883
+
1884
+ return dll_directory;
1843
1885
  }
1844
1886
  #endif
1845
1887
 
1846
- static char const *getDllDirectory(void) {
1888
+ #if defined(_NUITKA_MODULE)
1889
+ static filename_char_t const *getDllFilename(void) {
1847
1890
  #if defined(_WIN32)
1848
- static char path[MAXPATHLEN + 1];
1849
- path[0] = '\0';
1850
-
1851
- #if PYTHON_VERSION >= 0x300
1852
- WCHAR path2[MAXPATHLEN + 1];
1853
- path2[0] = 0;
1891
+ static WCHAR path[MAXPATHLEN + 1];
1892
+ path[0] = 0;
1854
1893
 
1855
- int res = GetModuleFileNameW(getDllModuleHandle(), path2, MAXPATHLEN + 1);
1894
+ int res = GetModuleFileNameW(getDllModuleHandle(), path, MAXPATHLEN);
1856
1895
  assert(res != 0);
1857
1896
 
1858
- int res2 = WideCharToMultiByte(CP_UTF8, 0, path2, -1, path, MAXPATHLEN + 1, NULL, NULL);
1859
- assert(res2 != 0);
1897
+ return path;
1860
1898
  #else
1861
- int res = GetModuleFileNameA(getDllModuleHandle(), path, MAXPATHLEN + 1);
1862
- assert(res != 0);
1899
+ Dl_info where;
1900
+
1901
+ {
1902
+ NUITKA_MAY_BE_UNUSED int res = dladdr((void *)getDllDirectory, &where);
1903
+ assert(res != 0);
1904
+ }
1905
+
1906
+ return where.dli_fname;
1863
1907
  #endif
1908
+ }
1864
1909
 
1865
- stripFilenameA(path);
1910
+ PyObject *getDllFilenameObject(void) {
1911
+ static PyObject *dll_filename = NULL;
1866
1912
 
1867
- return path;
1913
+ if (dll_filename == NULL) {
1914
+ filename_char_t const *dll_filename_str = getDllFilename();
1868
1915
 
1869
- #else
1870
- Dl_info where;
1871
- int res = dladdr((void *)getDllDirectory, &where);
1872
- assert(res != 0);
1916
+ dll_filename = Nuitka_String_FromFilename(dll_filename_str);
1873
1917
 
1874
- return dirname((char *)where.dli_fname);
1918
+ #if PYTHON_VERSION < 0x300
1919
+ // Avoid unnecessary unicode values.
1920
+ PyObject *decoded_dll_filename = PyObject_Str(dll_filename);
1921
+
1922
+ if (decoded_dll_filename == NULL) {
1923
+ PyThreadState *tstate = PyThreadState_GET();
1924
+ DROP_ERROR_OCCURRED(tstate);
1925
+ } else {
1926
+ Py_DECREF(dll_filename);
1927
+ dll_filename = decoded_dll_filename;
1928
+ }
1875
1929
  #endif
1930
+ }
1931
+
1932
+ CHECK_OBJECT(dll_filename);
1933
+
1934
+ return dll_filename;
1876
1935
  }
1877
1936
  #endif
1878
1937
 
1938
+ PyObject *getContainingDirectoryObject(bool resolve_symlinks) {
1939
+ #if defined(_NUITKA_EXE)
1940
+ #if defined(_NUITKA_ONEFILE_MODE)
1941
+ environment_char_t const *onefile_binary = getEnvironmentVariable("NUITKA_ONEFILE_BINARY");
1942
+ if (onefile_binary != NULL) {
1943
+ PyObject *result = Nuitka_String_FromFilename(onefile_binary);
1944
+ unsetEnvironmentVariable("NUITKA_ONEFILE_BINARY");
1945
+
1946
+ PyThreadState *tstate = PyThreadState_GET();
1947
+ return OS_PATH_DIRNAME(tstate, result);
1948
+ }
1949
+
1950
+ return getBinaryDirectoryObject(resolve_symlinks);
1951
+ #else
1952
+ return getBinaryDirectoryObject(resolve_symlinks);
1953
+ #endif
1954
+ #else
1955
+ return getDllDirectoryObject();
1956
+ #endif
1957
+ }
1958
+
1879
1959
  static void _initDeepCopy(void);
1880
1960
 
1881
1961
  void _initBuiltinModule(void) {
@@ -1902,10 +1982,13 @@ void _initBuiltinModule(void) {
1902
1982
  assert(PyDict_Check(dict_builtin));
1903
1983
 
1904
1984
  #ifdef _NUITKA_STANDALONE
1905
- int res = PyDict_SetItemString((PyObject *)dict_builtin, "__nuitka_binary_dir", getBinaryDirectoryObject(true));
1906
- assert(res == 0);
1907
- PyDict_SetItemString((PyObject *)dict_builtin, "__nuitka_binary_exe", getBinaryFilenameObject(true));
1908
- assert(res == 0);
1985
+ {
1986
+ NUITKA_MAY_BE_UNUSED int res =
1987
+ PyDict_SetItemString((PyObject *)dict_builtin, "__nuitka_binary_dir", getBinaryDirectoryObject(true));
1988
+ assert(res == 0);
1989
+ PyDict_SetItemString((PyObject *)dict_builtin, "__nuitka_binary_exe", getBinaryFilenameObject(true));
1990
+ assert(res == 0);
1991
+ }
1909
1992
  #endif
1910
1993
 
1911
1994
  // init Nuitka_BuiltinModule_Type, PyType_Ready won't copy all member from
@@ -1927,7 +2010,7 @@ void _initBuiltinModule(void) {
1927
2010
  Nuitka_BuiltinModule_Type.tp_alloc = PyModule_Type.tp_alloc;
1928
2011
  Nuitka_BuiltinModule_Type.tp_new = PyModule_Type.tp_new;
1929
2012
  Nuitka_BuiltinModule_Type.tp_free = PyModule_Type.tp_free;
1930
- int res2 = PyType_Ready(&Nuitka_BuiltinModule_Type);
2013
+ NUITKA_MAY_BE_UNUSED int res2 = PyType_Ready(&Nuitka_BuiltinModule_Type);
1931
2014
  assert(res2 >= 0);
1932
2015
 
1933
2016
  // Replace type of builtin module to take over.
@@ -1943,11 +2026,7 @@ PyObject *MAKE_RELATIVE_PATH(PyObject *relative) {
1943
2026
  static PyObject *our_path_object = NULL;
1944
2027
 
1945
2028
  if (our_path_object == NULL) {
1946
- #if defined(_NUITKA_EXE)
1947
- our_path_object = getBinaryDirectoryObject(true);
1948
- #else
1949
- our_path_object = Nuitka_String_FromString(getDllDirectory());
1950
- #endif
2029
+ our_path_object = getContainingDirectoryObject(true);
1951
2030
  }
1952
2031
 
1953
2032
  return JOIN_PATH2(our_path_object, relative);
@@ -1991,7 +2070,9 @@ volatile int _Py_Ticker = _Py_CheckInterval;
1991
2070
  iternextfunc default_iternext;
1992
2071
 
1993
2072
  void _initSlotIterNext(void) {
1994
- PyObject *pos_args = MAKE_TUPLE1((PyObject *)&PyBaseObject_Type);
2073
+ PyThreadState *tstate = PyThreadState_GET();
2074
+
2075
+ PyObject *pos_args = MAKE_TUPLE1(tstate, (PyObject *)&PyBaseObject_Type);
1995
2076
 
1996
2077
  // Note: Not using MAKE_DICT_EMPTY on purpose, this is called early on.
1997
2078
  PyObject *kw_args = PyDict_New();
@@ -2061,6 +2142,8 @@ PyObject *MAKE_UNION_TYPE(PyObject *args) {
2061
2142
  #include "HelpersOperationBinaryMatmult.c"
2062
2143
  #endif
2063
2144
 
2145
+ #include "HelpersOperationBinaryDualAdd.c"
2146
+
2064
2147
  #include "HelpersOperationInplaceAdd.c"
2065
2148
  #include "HelpersOperationInplaceBitand.c"
2066
2149
  #include "HelpersOperationInplaceBitor.c"
@@ -2081,12 +2164,21 @@ PyObject *MAKE_UNION_TYPE(PyObject *args) {
2081
2164
  #endif
2082
2165
 
2083
2166
  #include "HelpersComparisonEq.c"
2084
- #include "HelpersComparisonGe.c"
2085
- #include "HelpersComparisonGt.c"
2086
2167
  #include "HelpersComparisonLe.c"
2087
2168
  #include "HelpersComparisonLt.c"
2169
+
2170
+ #include "HelpersComparisonGe.c"
2171
+ #include "HelpersComparisonGt.c"
2088
2172
  #include "HelpersComparisonNe.c"
2089
2173
 
2174
+ #include "HelpersComparisonDualEq.c"
2175
+ #include "HelpersComparisonDualLe.c"
2176
+ #include "HelpersComparisonDualLt.c"
2177
+
2178
+ #include "HelpersComparisonDualGe.c"
2179
+ #include "HelpersComparisonDualGt.c"
2180
+ #include "HelpersComparisonDualNe.c"
2181
+
2090
2182
  #include "HelpersChecksumTools.c"
2091
2183
  #include "HelpersConstantsBlob.c"
2092
2184
 
@@ -2099,3 +2191,28 @@ PyObject *MAKE_UNION_TYPE(PyObject *args) {
2099
2191
  #endif
2100
2192
 
2101
2193
  #include "MetaPathBasedLoader.c"
2194
+
2195
+ #ifdef _NUITKA_EXPERIMENTAL_DUMP_C_TRACEBACKS
2196
+ #include "HelpersDumpBacktraces.c"
2197
+ #endif
2198
+
2199
+ #ifdef _NUITKA_INLINE_COPY_HACL
2200
+ #include "Hacl_Hash_SHA2.c"
2201
+ #endif
2202
+
2203
+ #include "HelpersJitSources.c"
2204
+
2205
+ // Part of "Nuitka", an optimizing Python compiler that is compatible and
2206
+ // integrates with CPython, but also works on its own.
2207
+ //
2208
+ // Licensed under the Apache License, Version 2.0 (the "License");
2209
+ // you may not use this file except in compliance with the License.
2210
+ // You may obtain a copy of the License at
2211
+ //
2212
+ // http://www.apache.org/licenses/LICENSE-2.0
2213
+ //
2214
+ // Unless required by applicable law or agreed to in writing, software
2215
+ // distributed under the License is distributed on an "AS IS" BASIS,
2216
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2217
+ // See the License for the specific language governing permissions and
2218
+ // limitations under the License.