Nuitka-winsvc 1.8__cp311-cp311-win_amd64.whl → 2.4.8__cp311-cp311-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of Nuitka-winsvc might be problematic. Click here for more details.

Files changed (704) hide show
  1. Nuitka_winsvc-1.8.data/scripts/nuitka-run.bat → Nuitka_winsvc-2.4.8.data/scripts/nuitka-run.cmd +9 -9
  2. Nuitka_winsvc-1.8.data/scripts/nuitka.bat → Nuitka_winsvc-2.4.8.data/scripts/nuitka.cmd +15 -15
  3. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/METADATA +4 -3
  4. Nuitka_winsvc-2.4.8.dist-info/RECORD +954 -0
  5. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/WHEEL +1 -1
  6. nuitka/Builtins.py +18 -17
  7. nuitka/BytecodeCaching.py +24 -20
  8. nuitka/Bytecodes.py +23 -19
  9. nuitka/CacheCleanup.py +28 -23
  10. nuitka/Constants.py +19 -17
  11. nuitka/Errors.py +23 -17
  12. nuitka/HardImportRegistry.py +400 -0
  13. nuitka/MainControl.py +200 -112
  14. nuitka/ModuleRegistry.py +83 -20
  15. nuitka/OptionParsing.py +368 -175
  16. nuitka/Options.py +632 -213
  17. nuitka/OutputDirectories.py +40 -21
  18. nuitka/PostProcessing.py +73 -50
  19. nuitka/Progress.py +58 -24
  20. nuitka/PythonFlavors.py +141 -32
  21. nuitka/PythonOperators.py +18 -17
  22. nuitka/PythonVersions.py +106 -19
  23. nuitka/Serialization.py +68 -55
  24. nuitka/SourceCodeReferences.py +19 -17
  25. nuitka/Tracing.py +108 -70
  26. nuitka/TreeXML.py +31 -26
  27. nuitka/Variables.py +39 -41
  28. nuitka/Version.py +21 -7
  29. nuitka/__init__.py +5 -4
  30. nuitka/__main__.py +95 -29
  31. nuitka/__past__.py +44 -34
  32. nuitka/build/Backend.scons +202 -140
  33. nuitka/build/CCompilerVersion.scons +39 -31
  34. nuitka/build/DataComposerInterface.py +20 -17
  35. nuitka/build/Onefile.scons +50 -54
  36. nuitka/build/SconsCaching.py +93 -90
  37. nuitka/build/SconsCompilerSettings.py +157 -69
  38. nuitka/build/SconsHacks.py +25 -19
  39. nuitka/build/SconsInterface.py +154 -54
  40. nuitka/build/SconsProgress.py +19 -18
  41. nuitka/build/SconsSpawn.py +62 -33
  42. nuitka/build/SconsUtils.py +147 -55
  43. nuitka/build/__init__.py +5 -4
  44. nuitka/build/include/nuitka/allocator.h +105 -22
  45. nuitka/build/include/nuitka/builtins.h +17 -17
  46. nuitka/build/include/nuitka/calling.h +18 -18
  47. nuitka/build/include/nuitka/checkers.h +17 -18
  48. nuitka/build/include/nuitka/checksum_tools.h +14 -19
  49. nuitka/build/include/nuitka/compiled_asyncgen.h +18 -18
  50. nuitka/build/include/nuitka/compiled_cell.h +33 -18
  51. nuitka/build/include/nuitka/compiled_coroutine.h +18 -18
  52. nuitka/build/include/nuitka/compiled_frame.h +91 -53
  53. nuitka/build/include/nuitka/compiled_function.h +42 -20
  54. nuitka/build/include/nuitka/compiled_generator.h +24 -18
  55. nuitka/build/include/nuitka/compiled_method.h +17 -18
  56. nuitka/build/include/nuitka/constants.h +29 -18
  57. nuitka/build/include/nuitka/constants_blob.h +17 -17
  58. nuitka/build/include/nuitka/environment_variables.h +30 -0
  59. nuitka/build/include/nuitka/environment_variables_system.h +45 -0
  60. nuitka/build/include/nuitka/exception_groups.h +23 -26
  61. nuitka/build/include/nuitka/exceptions.h +593 -190
  62. nuitka/build/include/nuitka/filesystem_paths.h +26 -20
  63. nuitka/build/include/nuitka/freelists.h +38 -18
  64. nuitka/build/include/nuitka/helper/attributes.h +24 -18
  65. nuitka/build/include/nuitka/helper/boolean.h +17 -17
  66. nuitka/build/include/nuitka/helper/bytearrays.h +17 -17
  67. nuitka/build/include/nuitka/helper/bytes.h +14 -15
  68. nuitka/build/include/nuitka/helper/calling_generated.h +17 -17
  69. nuitka/build/include/nuitka/helper/comparisons_eq.h +17 -17
  70. nuitka/build/include/nuitka/helper/comparisons_ge.h +17 -17
  71. nuitka/build/include/nuitka/helper/comparisons_gt.h +17 -17
  72. nuitka/build/include/nuitka/helper/comparisons_le.h +17 -17
  73. nuitka/build/include/nuitka/helper/comparisons_lt.h +17 -17
  74. nuitka/build/include/nuitka/helper/comparisons_ne.h +17 -17
  75. nuitka/build/include/nuitka/helper/complex.h +17 -17
  76. nuitka/build/include/nuitka/helper/dictionaries.h +24 -22
  77. nuitka/build/include/nuitka/helper/floats.h +17 -18
  78. nuitka/build/include/nuitka/helper/import_hard.h +25 -17
  79. nuitka/build/include/nuitka/helper/indexes.h +17 -18
  80. nuitka/build/include/nuitka/helper/ints.h +32 -20
  81. nuitka/build/include/nuitka/helper/iterators.h +17 -17
  82. nuitka/build/include/nuitka/helper/lists.h +26 -24
  83. nuitka/build/include/nuitka/helper/lists_generated.h +22 -22
  84. nuitka/build/include/nuitka/helper/mappings.h +17 -18
  85. nuitka/build/include/nuitka/helper/operations.h +17 -17
  86. nuitka/build/include/nuitka/helper/operations_binary_add.h +17 -17
  87. nuitka/build/include/nuitka/helper/operations_binary_bitand.h +17 -17
  88. nuitka/build/include/nuitka/helper/operations_binary_bitor.h +17 -17
  89. nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +17 -17
  90. nuitka/build/include/nuitka/helper/operations_binary_divmod.h +17 -17
  91. nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +17 -17
  92. nuitka/build/include/nuitka/helper/operations_binary_lshift.h +17 -17
  93. nuitka/build/include/nuitka/helper/operations_binary_matmult.h +17 -17
  94. nuitka/build/include/nuitka/helper/operations_binary_mod.h +17 -17
  95. nuitka/build/include/nuitka/helper/operations_binary_mult.h +17 -17
  96. nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +17 -17
  97. nuitka/build/include/nuitka/helper/operations_binary_pow.h +17 -17
  98. nuitka/build/include/nuitka/helper/operations_binary_rshift.h +17 -17
  99. nuitka/build/include/nuitka/helper/operations_binary_sub.h +17 -17
  100. nuitka/build/include/nuitka/helper/operations_binary_truediv.h +17 -17
  101. nuitka/build/include/nuitka/helper/operations_builtin_types.h +17 -17
  102. nuitka/build/include/nuitka/helper/operations_inplace_add.h +17 -17
  103. nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +17 -17
  104. nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +17 -17
  105. nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +17 -17
  106. nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +17 -17
  107. nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +17 -17
  108. nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +17 -17
  109. nuitka/build/include/nuitka/helper/operations_inplace_mod.h +17 -17
  110. nuitka/build/include/nuitka/helper/operations_inplace_mult.h +17 -17
  111. nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +17 -17
  112. nuitka/build/include/nuitka/helper/operations_inplace_pow.h +17 -17
  113. nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +17 -17
  114. nuitka/build/include/nuitka/helper/operations_inplace_sub.h +17 -17
  115. nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
  116. nuitka/build/include/nuitka/helper/raising.h +29 -17
  117. nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
  118. nuitka/build/include/nuitka/helper/richcomparisons.h +14 -14
  119. nuitka/build/include/nuitka/helper/sequences.h +19 -13
  120. nuitka/build/include/nuitka/helper/sets.h +11 -12
  121. nuitka/build/include/nuitka/helper/slices.h +31 -25
  122. nuitka/build/include/nuitka/helper/strings.h +16 -17
  123. nuitka/build/include/nuitka/helper/subscripts.h +18 -201
  124. nuitka/build/include/nuitka/helper/tuples.h +64 -52
  125. nuitka/build/include/nuitka/helpers.h +38 -20
  126. nuitka/build/include/nuitka/importing.h +28 -21
  127. nuitka/build/include/nuitka/jit_sources.h +25 -0
  128. nuitka/build/include/nuitka/prelude.h +128 -46
  129. nuitka/build/include/nuitka/printing.h +22 -17
  130. nuitka/build/include/nuitka/python_pgo.h +19 -18
  131. nuitka/build/include/nuitka/safe_string_ops.h +20 -18
  132. nuitka/build/include/nuitka/threading.h +32 -33
  133. nuitka/build/include/nuitka/tracing.h +28 -18
  134. nuitka/build/include/nuitka/type_aliases.h +27 -0
  135. nuitka/build/include/nuitka/unfreezing.h +29 -23
  136. nuitka/build/inline_copy/bin/scons.py +14 -0
  137. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +6 -6
  138. nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +0 -3
  139. nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
  140. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
  141. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
  142. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
  143. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
  144. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
  145. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
  146. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
  147. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
  148. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
  149. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
  150. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
  151. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
  152. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
  153. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
  154. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
  155. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
  156. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
  157. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
  158. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
  159. nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
  160. nuitka/build/inline_copy/tqdm/tqdm/__init__.py +2 -2
  161. nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +4 -1
  162. nuitka/build/inline_copy/tqdm/tqdm/utils.py +14 -8
  163. nuitka/build/inline_copy/tqdm/tqdm/version.py +1 -8
  164. nuitka/build/inline_copy/zlib/LICENSE +22 -0
  165. nuitka/build/inline_copy/zlib/crc32.c +1049 -0
  166. nuitka/build/inline_copy/zlib/crc32.h +9446 -0
  167. nuitka/build/inline_copy/zlib/zconf.h +551 -0
  168. nuitka/build/inline_copy/zlib/zlib.h +1938 -0
  169. nuitka/build/inline_copy/zlib/zutil.h +275 -0
  170. nuitka/build/static_src/CompiledAsyncgenType.c +176 -182
  171. nuitka/build/static_src/CompiledCellType.c +63 -40
  172. nuitka/build/static_src/CompiledCodeHelpers.c +181 -128
  173. nuitka/build/static_src/CompiledCoroutineType.c +196 -203
  174. nuitka/build/static_src/CompiledFrameType.c +287 -133
  175. nuitka/build/static_src/CompiledFunctionType.c +389 -95
  176. nuitka/build/static_src/CompiledGeneratorType.c +376 -252
  177. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +185 -198
  178. nuitka/build/static_src/CompiledMethodType.c +83 -71
  179. nuitka/build/static_src/HelpersAllocator.c +88 -19
  180. nuitka/build/static_src/HelpersAttributes.c +33 -54
  181. nuitka/build/static_src/HelpersBuiltin.c +43 -33
  182. nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
  183. nuitka/build/static_src/HelpersBytes.c +19 -20
  184. nuitka/build/static_src/HelpersCalling.c +33 -30
  185. nuitka/build/static_src/HelpersCallingGenerated.c +1000 -181
  186. nuitka/build/static_src/HelpersChecksumTools.c +35 -21
  187. nuitka/build/static_src/HelpersClasses.c +17 -17
  188. nuitka/build/static_src/HelpersComparisonEq.c +518 -492
  189. nuitka/build/static_src/HelpersComparisonEqUtils.c +21 -19
  190. nuitka/build/static_src/HelpersComparisonGe.c +513 -497
  191. nuitka/build/static_src/HelpersComparisonGt.c +512 -496
  192. nuitka/build/static_src/HelpersComparisonLe.c +513 -497
  193. nuitka/build/static_src/HelpersComparisonLt.c +512 -496
  194. nuitka/build/static_src/HelpersComparisonNe.c +520 -492
  195. nuitka/build/static_src/HelpersConsole.c +96 -0
  196. nuitka/build/static_src/HelpersConstantsBlob.c +542 -519
  197. nuitka/build/static_src/HelpersDeepcopy.c +33 -33
  198. nuitka/build/static_src/HelpersDictionaries.c +51 -29
  199. nuitka/build/static_src/HelpersDictionariesGenerated.c +177 -68
  200. nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
  201. nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
  202. nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +93 -0
  203. nuitka/build/static_src/HelpersExceptions.c +161 -50
  204. nuitka/build/static_src/HelpersFiles.c +37 -17
  205. nuitka/build/static_src/HelpersFilesystemPaths.c +292 -181
  206. nuitka/build/static_src/HelpersFloats.c +37 -31
  207. nuitka/build/static_src/HelpersHeapStorage.c +21 -17
  208. nuitka/build/static_src/HelpersImport.c +48 -20
  209. nuitka/build/static_src/HelpersImportHard.c +53 -17
  210. nuitka/build/static_src/HelpersJitSources.c +46 -0
  211. nuitka/build/static_src/HelpersLists.c +140 -50
  212. nuitka/build/static_src/HelpersListsGenerated.c +41 -41
  213. nuitka/build/static_src/HelpersMappings.c +17 -17
  214. nuitka/build/static_src/HelpersMatching.c +137 -51
  215. nuitka/build/static_src/HelpersOperationBinaryAdd.c +173 -146
  216. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +99 -52
  217. nuitka/build/static_src/HelpersOperationBinaryBitand.c +50 -50
  218. nuitka/build/static_src/HelpersOperationBinaryBitor.c +50 -50
  219. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +50 -50
  220. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +41 -41
  221. nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
  222. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +41 -41
  223. nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +20 -21
  224. nuitka/build/static_src/HelpersOperationBinaryLshift.c +47 -47
  225. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +24 -24
  226. nuitka/build/static_src/HelpersOperationBinaryMod.c +107 -107
  227. nuitka/build/static_src/HelpersOperationBinaryMult.c +81 -75
  228. nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +33 -30
  229. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +41 -41
  230. nuitka/build/static_src/HelpersOperationBinaryPow.c +44 -44
  231. nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
  232. nuitka/build/static_src/HelpersOperationBinaryRshift.c +47 -47
  233. nuitka/build/static_src/HelpersOperationBinarySub.c +80 -80
  234. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +41 -41
  235. nuitka/build/static_src/HelpersOperationInplaceAdd.c +171 -153
  236. nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +24 -22
  237. nuitka/build/static_src/HelpersOperationInplaceBitand.c +53 -53
  238. nuitka/build/static_src/HelpersOperationInplaceBitor.c +53 -53
  239. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +53 -53
  240. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +62 -62
  241. nuitka/build/static_src/HelpersOperationInplaceLshift.c +44 -44
  242. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +37 -37
  243. nuitka/build/static_src/HelpersOperationInplaceMod.c +134 -134
  244. nuitka/build/static_src/HelpersOperationInplaceMult.c +78 -78
  245. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +62 -62
  246. nuitka/build/static_src/HelpersOperationInplacePow.c +62 -62
  247. nuitka/build/static_src/HelpersOperationInplaceRshift.c +44 -44
  248. nuitka/build/static_src/HelpersOperationInplaceSub.c +112 -112
  249. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +62 -62
  250. nuitka/build/static_src/HelpersProfiling.c +24 -23
  251. nuitka/build/static_src/HelpersPythonPgo.c +22 -22
  252. nuitka/build/static_src/HelpersRaising.c +88 -20
  253. nuitka/build/static_src/HelpersSafeStrings.c +34 -22
  254. nuitka/build/static_src/HelpersSequences.c +18 -19
  255. nuitka/build/static_src/HelpersSlices.c +29 -23
  256. nuitka/build/static_src/HelpersStrings.c +234 -37
  257. nuitka/build/static_src/HelpersTuples.c +46 -34
  258. nuitka/build/static_src/HelpersTypes.c +68 -23
  259. nuitka/build/static_src/InspectPatcher.c +108 -27
  260. nuitka/build/static_src/MainProgram.c +359 -263
  261. nuitka/build/static_src/MetaPathBasedLoader.c +367 -242
  262. nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +39 -26
  263. nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
  264. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +97 -22
  265. nuitka/build/static_src/OnefileBootstrap.c +276 -164
  266. nuitka/build/static_src/OnefileSplashScreen.cpp +51 -27
  267. nuitka/code_generation/AsyncgenCodes.py +19 -17
  268. nuitka/code_generation/AttributeCodes.py +31 -27
  269. nuitka/code_generation/BinaryOperationHelperDefinitions.py +24 -20
  270. nuitka/code_generation/BranchCodes.py +19 -17
  271. nuitka/code_generation/BuiltinCodes.py +20 -17
  272. nuitka/code_generation/CallCodes.py +19 -17
  273. nuitka/code_generation/ClassCodes.py +19 -17
  274. nuitka/code_generation/CodeGeneration.py +48 -27
  275. nuitka/code_generation/CodeHelperSelection.py +19 -17
  276. nuitka/code_generation/CodeHelpers.py +24 -20
  277. nuitka/code_generation/CodeObjectCodes.py +34 -24
  278. nuitka/code_generation/ComparisonCodes.py +38 -20
  279. nuitka/code_generation/ComparisonHelperDefinitions.py +19 -17
  280. nuitka/code_generation/ConditionalCodes.py +19 -17
  281. nuitka/code_generation/ConstantCodes.py +82 -28
  282. nuitka/code_generation/Contexts.py +152 -26
  283. nuitka/code_generation/CoroutineCodes.py +19 -17
  284. nuitka/code_generation/CtypesCodes.py +19 -17
  285. nuitka/code_generation/DictCodes.py +25 -23
  286. nuitka/code_generation/Emission.py +21 -18
  287. nuitka/code_generation/ErrorCodes.py +27 -33
  288. nuitka/code_generation/EvalCodes.py +24 -20
  289. nuitka/code_generation/ExceptionCodes.py +27 -18
  290. nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +20 -17
  291. nuitka/code_generation/ExpressionCodes.py +19 -17
  292. nuitka/code_generation/FrameCodes.py +24 -20
  293. nuitka/code_generation/FunctionCodes.py +24 -21
  294. nuitka/code_generation/GeneratorCodes.py +23 -20
  295. nuitka/code_generation/GlobalConstants.py +43 -23
  296. nuitka/code_generation/GlobalsLocalsCodes.py +21 -19
  297. nuitka/code_generation/IdCodes.py +19 -17
  298. nuitka/code_generation/ImportCodes.py +90 -50
  299. nuitka/code_generation/Indentation.py +23 -22
  300. nuitka/code_generation/IndexCodes.py +19 -17
  301. nuitka/code_generation/InjectCCodes.py +14 -12
  302. nuitka/code_generation/IntegerCodes.py +19 -17
  303. nuitka/code_generation/IteratorCodes.py +19 -17
  304. nuitka/code_generation/JitCodes.py +44 -0
  305. nuitka/code_generation/LabelCodes.py +19 -17
  306. nuitka/code_generation/LineNumberCodes.py +19 -17
  307. nuitka/code_generation/ListCodes.py +32 -36
  308. nuitka/code_generation/LoaderCodes.py +22 -17
  309. nuitka/code_generation/LocalsDictCodes.py +56 -32
  310. nuitka/code_generation/LoopCodes.py +19 -17
  311. nuitka/code_generation/MatchCodes.py +42 -22
  312. nuitka/code_generation/ModuleCodes.py +43 -25
  313. nuitka/code_generation/Namify.py +27 -23
  314. nuitka/code_generation/NetworkxCodes.py +51 -0
  315. nuitka/code_generation/OperationCodes.py +29 -31
  316. nuitka/code_generation/PackageResourceCodes.py +59 -23
  317. nuitka/code_generation/PrintCodes.py +19 -17
  318. nuitka/code_generation/PythonAPICodes.py +19 -17
  319. nuitka/code_generation/RaisingCodes.py +19 -17
  320. nuitka/code_generation/Reports.py +19 -17
  321. nuitka/code_generation/ReturnCodes.py +19 -17
  322. nuitka/code_generation/SetCodes.py +19 -17
  323. nuitka/code_generation/SliceCodes.py +22 -20
  324. nuitka/code_generation/StringCodes.py +19 -17
  325. nuitka/code_generation/SubscriptCodes.py +24 -30
  326. nuitka/code_generation/TensorflowCodes.py +54 -0
  327. nuitka/code_generation/TryCodes.py +19 -17
  328. nuitka/code_generation/TupleCodes.py +20 -18
  329. nuitka/code_generation/TypeAliasCodes.py +71 -0
  330. nuitka/code_generation/VariableCodes.py +26 -22
  331. nuitka/code_generation/VariableDeclarations.py +20 -17
  332. nuitka/code_generation/YieldCodes.py +22 -20
  333. nuitka/code_generation/__init__.py +5 -4
  334. nuitka/code_generation/c_types/CTypeBases.py +19 -17
  335. nuitka/code_generation/c_types/CTypeBooleans.py +19 -17
  336. nuitka/code_generation/c_types/CTypeCFloats.py +19 -17
  337. nuitka/code_generation/c_types/CTypeCLongs.py +19 -18
  338. nuitka/code_generation/c_types/CTypeModuleDictVariables.py +19 -17
  339. nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +19 -17
  340. nuitka/code_generation/c_types/CTypeNuitkaInts.py +19 -18
  341. nuitka/code_generation/c_types/CTypeNuitkaVoids.py +19 -17
  342. nuitka/code_generation/c_types/CTypePyObjectPointers.py +27 -25
  343. nuitka/code_generation/c_types/CTypeVoids.py +20 -17
  344. nuitka/code_generation/c_types/__init__.py +5 -4
  345. nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +18 -17
  346. nuitka/code_generation/templates/CodeTemplatesConstants.py +132 -36
  347. nuitka/code_generation/templates/CodeTemplatesCoroutines.py +18 -17
  348. nuitka/code_generation/templates/CodeTemplatesExceptions.py +19 -18
  349. nuitka/code_generation/templates/CodeTemplatesFrames.py +18 -17
  350. nuitka/code_generation/templates/CodeTemplatesFunction.py +18 -17
  351. nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +19 -17
  352. nuitka/code_generation/templates/CodeTemplatesIterators.py +18 -18
  353. nuitka/code_generation/templates/CodeTemplatesLoader.py +25 -19
  354. nuitka/code_generation/templates/CodeTemplatesModules.py +244 -165
  355. nuitka/code_generation/templates/CodeTemplatesVariables.py +42 -27
  356. nuitka/code_generation/templates/TemplateDebugWrapper.py +19 -18
  357. nuitka/code_generation/templates/__init__.py +5 -4
  358. nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +19 -19
  359. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +18 -18
  360. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +76 -25
  361. nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +22 -22
  362. nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +19 -19
  363. nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +19 -19
  364. nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +17 -17
  365. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +121 -48
  366. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +18 -18
  367. nuitka/code_generation/templates_c/HelperLongTools.c.j2 +18 -18
  368. nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +6 -6
  369. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +23 -23
  370. nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +35 -35
  371. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +28 -28
  372. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +17 -17
  373. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +18 -18
  374. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +44 -32
  375. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +20 -20
  376. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +28 -28
  377. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +24 -24
  378. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +33 -29
  379. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +20 -20
  380. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +27 -27
  381. nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +17 -17
  382. nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +17 -17
  383. nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +17 -17
  384. nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +17 -17
  385. nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +21 -18
  386. nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +26 -24
  387. nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +17 -17
  388. nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +17 -17
  389. nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +21 -18
  390. nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +17 -17
  391. nuitka/containers/Namedtuples.py +19 -18
  392. nuitka/containers/OrderedSetsFallback.py +19 -17
  393. nuitka/containers/__init__.py +5 -4
  394. nuitka/distutils/Build.py +19 -18
  395. nuitka/distutils/DistutilCommands.py +34 -23
  396. nuitka/distutils/__init__.py +5 -4
  397. nuitka/finalizations/Finalization.py +20 -17
  398. nuitka/finalizations/FinalizeMarkups.py +21 -41
  399. nuitka/finalizations/__init__.py +5 -4
  400. nuitka/freezer/DependsExe.py +48 -28
  401. nuitka/freezer/DllDependenciesCommon.py +47 -20
  402. nuitka/freezer/DllDependenciesMacOS.py +147 -57
  403. nuitka/freezer/DllDependenciesPosix.py +29 -19
  404. nuitka/freezer/DllDependenciesWin32.py +29 -21
  405. nuitka/freezer/ImportDetection.py +20 -17
  406. nuitka/freezer/IncludedDataFiles.py +118 -47
  407. nuitka/freezer/IncludedEntryPoints.py +102 -38
  408. nuitka/freezer/Onefile.py +32 -22
  409. nuitka/freezer/Standalone.py +105 -50
  410. nuitka/freezer/__init__.py +5 -4
  411. nuitka/importing/IgnoreListing.py +19 -17
  412. nuitka/importing/ImportCache.py +24 -21
  413. nuitka/importing/ImportResolving.py +103 -95
  414. nuitka/importing/Importing.py +286 -92
  415. nuitka/importing/PreloadedPackages.py +21 -18
  416. nuitka/importing/Recursion.py +131 -47
  417. nuitka/importing/StandardLibrary.py +46 -28
  418. nuitka/importing/__init__.py +5 -4
  419. nuitka/nodes/AsyncgenNodes.py +19 -17
  420. nuitka/nodes/AttributeLookupNodes.py +19 -17
  421. nuitka/nodes/AttributeNodes.py +19 -17
  422. nuitka/nodes/AttributeNodesGenerated.py +49 -24
  423. nuitka/nodes/BuiltinAllNodes.py +19 -17
  424. nuitka/nodes/BuiltinAnyNodes.py +19 -17
  425. nuitka/nodes/BuiltinComplexNodes.py +20 -17
  426. nuitka/nodes/BuiltinDecodingNodes.py +19 -17
  427. nuitka/nodes/BuiltinDecoratorNodes.py +19 -17
  428. nuitka/nodes/BuiltinDictNodes.py +19 -17
  429. nuitka/nodes/BuiltinFormatNodes.py +20 -17
  430. nuitka/nodes/BuiltinHashNodes.py +19 -17
  431. nuitka/nodes/BuiltinInputNodes.py +19 -17
  432. nuitka/nodes/BuiltinIntegerNodes.py +19 -17
  433. nuitka/nodes/BuiltinIteratorNodes.py +24 -20
  434. nuitka/nodes/BuiltinLenNodes.py +19 -17
  435. nuitka/nodes/BuiltinNextNodes.py +19 -17
  436. nuitka/nodes/BuiltinOpenNodes.py +52 -18
  437. nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +40 -23
  438. nuitka/nodes/BuiltinRangeNodes.py +21 -19
  439. nuitka/nodes/BuiltinRefNodes.py +68 -19
  440. nuitka/nodes/BuiltinSumNodes.py +20 -18
  441. nuitka/nodes/BuiltinTypeNodes.py +19 -17
  442. nuitka/nodes/BuiltinVarsNodes.py +19 -18
  443. nuitka/nodes/BytesNodes.py +19 -17
  444. nuitka/nodes/CallNodes.py +19 -17
  445. nuitka/nodes/Checkers.py +19 -17
  446. nuitka/nodes/ChildrenHavingMixins.py +1250 -302
  447. nuitka/nodes/ClassNodes.py +49 -29
  448. nuitka/nodes/CodeObjectSpecs.py +29 -18
  449. nuitka/nodes/ComparisonNodes.py +19 -17
  450. nuitka/nodes/ConditionalNodes.py +21 -23
  451. nuitka/nodes/ConstantRefNodes.py +57 -17
  452. nuitka/nodes/ContainerMakingNodes.py +19 -17
  453. nuitka/nodes/ContainerOperationNodes.py +19 -17
  454. nuitka/nodes/CoroutineNodes.py +19 -17
  455. nuitka/nodes/CtypesNodes.py +19 -18
  456. nuitka/nodes/DictionaryNodes.py +19 -18
  457. nuitka/nodes/ExceptionNodes.py +29 -17
  458. nuitka/nodes/ExecEvalNodes.py +19 -17
  459. nuitka/nodes/ExpressionBases.py +34 -26
  460. nuitka/nodes/ExpressionBasesGenerated.py +54 -32
  461. nuitka/nodes/ExpressionShapeMixins.py +19 -17
  462. nuitka/nodes/FrameNodes.py +19 -17
  463. nuitka/nodes/FunctionAttributeNodes.py +19 -17
  464. nuitka/nodes/FunctionNodes.py +81 -35
  465. nuitka/nodes/FutureSpecs.py +35 -20
  466. nuitka/nodes/GeneratorNodes.py +21 -19
  467. nuitka/nodes/GlobalsLocalsNodes.py +22 -17
  468. nuitka/nodes/HardImportNodesGenerated.py +545 -129
  469. nuitka/nodes/ImportHardNodes.py +46 -38
  470. nuitka/nodes/ImportNodes.py +436 -446
  471. nuitka/nodes/IndicatorMixins.py +19 -17
  472. nuitka/nodes/InjectCNodes.py +19 -18
  473. nuitka/nodes/IterationHandles.py +55 -34
  474. nuitka/nodes/KeyValuePairNodes.py +19 -17
  475. nuitka/nodes/ListOperationNodes.py +33 -21
  476. nuitka/nodes/LocalsDictNodes.py +19 -17
  477. nuitka/nodes/LocalsScopes.py +41 -41
  478. nuitka/nodes/LoopNodes.py +28 -17
  479. nuitka/nodes/MatchNodes.py +37 -24
  480. nuitka/nodes/ModuleAttributeNodes.py +18 -35
  481. nuitka/nodes/ModuleNodes.py +90 -31
  482. nuitka/nodes/NetworkxNodes.py +45 -0
  483. nuitka/nodes/NodeBases.py +45 -43
  484. nuitka/nodes/NodeMakingHelpers.py +21 -19
  485. nuitka/nodes/NodeMetaClasses.py +45 -28
  486. nuitka/nodes/OperatorNodes.py +28 -26
  487. nuitka/nodes/OperatorNodesUnary.py +20 -17
  488. nuitka/nodes/OsSysNodes.py +66 -18
  489. nuitka/nodes/OutlineNodes.py +22 -20
  490. nuitka/nodes/PackageMetadataNodes.py +37 -27
  491. nuitka/nodes/PackageResourceNodes.py +29 -23
  492. nuitka/nodes/PrintNodes.py +19 -17
  493. nuitka/nodes/ReturnNodes.py +20 -18
  494. nuitka/nodes/SideEffectNodes.py +19 -17
  495. nuitka/nodes/SliceNodes.py +20 -18
  496. nuitka/nodes/StatementBasesGenerated.py +125 -77
  497. nuitka/nodes/StatementNodes.py +19 -17
  498. nuitka/nodes/StrNodes.py +19 -17
  499. nuitka/nodes/StringConcatenationNodes.py +20 -17
  500. nuitka/nodes/SubscriptNodes.py +26 -24
  501. nuitka/nodes/TensorflowNodes.py +38 -0
  502. nuitka/nodes/TryNodes.py +19 -17
  503. nuitka/nodes/TypeMatchNodes.py +19 -17
  504. nuitka/nodes/TypeNodes.py +40 -17
  505. nuitka/nodes/VariableAssignNodes.py +122 -64
  506. nuitka/nodes/VariableDelNodes.py +19 -17
  507. nuitka/nodes/VariableNameNodes.py +19 -17
  508. nuitka/nodes/VariableRefNodes.py +63 -26
  509. nuitka/nodes/VariableReleaseNodes.py +19 -17
  510. nuitka/nodes/YieldNodes.py +21 -19
  511. nuitka/nodes/__init__.py +5 -4
  512. nuitka/nodes/shapes/BuiltinTypeShapes.py +145 -39
  513. nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
  514. nuitka/nodes/shapes/ShapeMixins.py +40 -17
  515. nuitka/nodes/shapes/StandardShapes.py +27 -20
  516. nuitka/nodes/shapes/__init__.py +5 -4
  517. nuitka/optimizations/BytecodeDemotion.py +19 -17
  518. nuitka/optimizations/FunctionInlining.py +22 -23
  519. nuitka/optimizations/Graphs.py +19 -17
  520. nuitka/optimizations/Optimization.py +39 -35
  521. nuitka/optimizations/OptimizeBuiltinCalls.py +31 -27
  522. nuitka/optimizations/Tags.py +19 -18
  523. nuitka/optimizations/TraceCollections.py +67 -24
  524. nuitka/optimizations/ValueTraces.py +92 -25
  525. nuitka/optimizations/__init__.py +5 -4
  526. nuitka/pgo/PGO.py +33 -23
  527. nuitka/pgo/__init__.py +5 -4
  528. nuitka/plugins/PluginBase.py +610 -109
  529. nuitka/plugins/Plugins.py +241 -58
  530. nuitka/plugins/YamlPluginBase.py +121 -0
  531. nuitka/plugins/__init__.py +5 -4
  532. nuitka/plugins/standard/AntiBloatPlugin.py +357 -129
  533. nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +20 -19
  534. nuitka/plugins/standard/DataFilesPlugin.py +65 -29
  535. nuitka/plugins/standard/DelvewheelPlugin.py +32 -24
  536. nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
  537. nuitka/plugins/standard/DillPlugin/dill-postLoad.py +256 -0
  538. nuitka/plugins/standard/DillPlugin.py +42 -134
  539. nuitka/plugins/standard/DllFilesPlugin.py +125 -42
  540. nuitka/plugins/standard/EnumPlugin.py +19 -17
  541. nuitka/plugins/standard/EventletPlugin.py +19 -17
  542. nuitka/plugins/standard/GeventPlugin.py +19 -17
  543. nuitka/plugins/standard/GiPlugin.py +44 -28
  544. nuitka/plugins/standard/GlfwPlugin.py +20 -17
  545. nuitka/plugins/standard/ImplicitImports.py +407 -46
  546. nuitka/plugins/standard/KivyPlugin.py +30 -17
  547. nuitka/plugins/standard/MatplotlibPlugin.py +88 -42
  548. nuitka/plugins/standard/MultiprocessingPlugin.py +25 -20
  549. nuitka/plugins/standard/NumpyPlugin.py +19 -17
  550. nuitka/plugins/standard/OptionsNannyPlugin.py +48 -76
  551. nuitka/plugins/standard/PbrPlugin.py +21 -19
  552. nuitka/plugins/standard/PkgResourcesPlugin.py +34 -23
  553. nuitka/plugins/standard/PmwPlugin.py +30 -27
  554. nuitka/plugins/standard/PySidePyQtPlugin.py +74 -80
  555. nuitka/plugins/standard/PywebViewPlugin.py +19 -17
  556. nuitka/plugins/standard/SpacyPlugin.py +136 -0
  557. nuitka/plugins/standard/TensorflowPlugin.py +20 -17
  558. nuitka/plugins/standard/TkinterPlugin.py +103 -53
  559. nuitka/plugins/standard/TorchPlugin.py +20 -17
  560. nuitka/plugins/standard/TransformersPlugin.py +94 -30
  561. nuitka/plugins/standard/TrioPlugin.py +18 -15
  562. nuitka/plugins/standard/UpxPlugin.py +21 -19
  563. nuitka/plugins/standard/__init__.py +5 -4
  564. nuitka/plugins/standard/standard.nuitka-package.config.yml +3449 -1299
  565. nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +14 -14
  566. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +121 -66
  567. nuitka/reports/CompilationReportReader.py +67 -0
  568. nuitka/reports/LicenseReport.rst.j2 +21 -21
  569. nuitka/reports/Reports.py +352 -76
  570. nuitka/reports/__init__.py +5 -4
  571. nuitka/specs/BuiltinBytesOperationSpecs.py +18 -17
  572. nuitka/specs/BuiltinDictOperationSpecs.py +18 -17
  573. nuitka/specs/BuiltinListOperationSpecs.py +18 -17
  574. nuitka/specs/BuiltinParameterSpecs.py +30 -20
  575. nuitka/specs/BuiltinStrOperationSpecs.py +19 -18
  576. nuitka/specs/BuiltinTypeOperationSpecs.py +18 -18
  577. nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
  578. nuitka/specs/HardImportSpecs.py +67 -22
  579. nuitka/specs/ParameterSpecs.py +56 -41
  580. nuitka/specs/__init__.py +5 -4
  581. nuitka/tools/Basics.py +20 -18
  582. nuitka/tools/__init__.py +5 -4
  583. nuitka/tools/commercial/__init__.py +7 -6
  584. nuitka/tools/data_composer/DataComposer.py +78 -62
  585. nuitka/tools/data_composer/__init__.py +5 -4
  586. nuitka/tools/data_composer/__main__.py +18 -17
  587. nuitka/tools/environments/CreateEnvironment.py +20 -17
  588. nuitka/tools/environments/Virtualenv.py +60 -32
  589. nuitka/tools/environments/__init__.py +5 -4
  590. nuitka/tools/general/__init__.py +5 -4
  591. nuitka/tools/general/dll_report/__init__.py +5 -4
  592. nuitka/tools/general/dll_report/__main__.py +19 -21
  593. nuitka/tools/general/find_module/FindModuleCode.py +35 -22
  594. nuitka/tools/general/find_module/__init__.py +5 -4
  595. nuitka/tools/onefile_compressor/OnefileCompressor.py +213 -131
  596. nuitka/tools/onefile_compressor/__init__.py +5 -4
  597. nuitka/tools/onefile_compressor/__main__.py +18 -17
  598. nuitka/tools/podman/Podman.py +19 -17
  599. nuitka/tools/podman/__init__.py +5 -4
  600. nuitka/tools/podman/__main__.py +35 -19
  601. nuitka/tools/profiler/__init__.py +5 -4
  602. nuitka/tools/profiler/__main__.py +18 -17
  603. nuitka/tools/scanning/DisplayPackageDLLs.py +47 -22
  604. nuitka/tools/scanning/DisplayPackageData.py +31 -19
  605. nuitka/tools/scanning/__init__.py +5 -4
  606. nuitka/tools/specialize/CTypeDescriptions.py +93 -71
  607. nuitka/tools/specialize/Common.py +18 -17
  608. nuitka/tools/specialize/SpecializeC.py +31 -27
  609. nuitka/tools/specialize/SpecializePython.py +108 -45
  610. nuitka/tools/specialize/__init__.py +5 -4
  611. nuitka/tools/testing/Common.py +106 -52
  612. nuitka/tools/testing/Constructs.py +19 -17
  613. nuitka/tools/testing/OutputComparison.py +54 -18
  614. nuitka/tools/testing/Pythons.py +19 -18
  615. nuitka/tools/testing/RuntimeTracing.py +20 -19
  616. nuitka/tools/testing/SearchModes.py +26 -20
  617. nuitka/tools/testing/Valgrind.py +19 -17
  618. nuitka/tools/testing/__init__.py +5 -4
  619. nuitka/tools/testing/check_reference_counts/__init__.py +5 -4
  620. nuitka/tools/testing/check_reference_counts/__main__.py +18 -18
  621. nuitka/tools/testing/compare_with_cpython/__init__.py +5 -4
  622. nuitka/tools/testing/compare_with_cpython/__main__.py +36 -29
  623. nuitka/tools/testing/find_sxs_modules/__init__.py +5 -4
  624. nuitka/tools/testing/find_sxs_modules/__main__.py +17 -17
  625. nuitka/tools/testing/measure_construct_performance/__init__.py +5 -4
  626. nuitka/tools/testing/measure_construct_performance/__main__.py +22 -25
  627. nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
  628. nuitka/tools/testing/run_nuitka_tests/__main__.py +57 -40
  629. nuitka/tools/watch/AutoStage.py +144 -0
  630. nuitka/tools/watch/GitHub.py +113 -0
  631. nuitka/tools/watch/__init__.py +5 -4
  632. nuitka/tools/watch/__main__.py +322 -91
  633. nuitka/tree/Building.py +176 -147
  634. nuitka/tree/ComplexCallHelperFunctions.py +80 -58
  635. nuitka/tree/Extractions.py +19 -17
  636. nuitka/tree/InternalModule.py +29 -20
  637. nuitka/tree/Operations.py +19 -17
  638. nuitka/tree/ReformulationAssertStatements.py +20 -17
  639. nuitka/tree/ReformulationAssignmentStatements.py +92 -91
  640. nuitka/tree/ReformulationBooleanExpressions.py +19 -17
  641. nuitka/tree/ReformulationCallExpressions.py +20 -18
  642. nuitka/tree/ReformulationClasses.py +45 -39
  643. nuitka/tree/ReformulationClasses3.py +146 -98
  644. nuitka/tree/ReformulationComparisonExpressions.py +29 -35
  645. nuitka/tree/ReformulationContractionExpressions.py +58 -55
  646. nuitka/tree/ReformulationDictionaryCreation.py +40 -35
  647. nuitka/tree/ReformulationExecStatements.py +42 -39
  648. nuitka/tree/ReformulationForLoopStatements.py +30 -34
  649. nuitka/tree/ReformulationFunctionStatements.py +58 -54
  650. nuitka/tree/ReformulationImportStatements.py +34 -29
  651. nuitka/tree/ReformulationLambdaExpressions.py +23 -24
  652. nuitka/tree/ReformulationMatchStatements.py +244 -92
  653. nuitka/tree/ReformulationMultidist.py +22 -18
  654. nuitka/tree/ReformulationNamespacePackages.py +55 -46
  655. nuitka/tree/ReformulationPrintStatements.py +23 -24
  656. nuitka/tree/ReformulationSequenceCreation.py +50 -49
  657. nuitka/tree/ReformulationSubscriptExpressions.py +19 -17
  658. nuitka/tree/ReformulationTryExceptStatements.py +19 -17
  659. nuitka/tree/ReformulationTryFinallyStatements.py +34 -17
  660. nuitka/tree/ReformulationWhileLoopStatements.py +19 -17
  661. nuitka/tree/ReformulationWithStatements.py +39 -41
  662. nuitka/tree/ReformulationYieldExpressions.py +21 -19
  663. nuitka/tree/SourceHandling.py +76 -31
  664. nuitka/tree/SyntaxErrors.py +19 -17
  665. nuitka/tree/TreeHelpers.py +33 -20
  666. nuitka/tree/VariableClosure.py +35 -39
  667. nuitka/tree/__init__.py +5 -4
  668. nuitka/utils/AppDirs.py +41 -20
  669. nuitka/utils/CStrings.py +66 -21
  670. nuitka/utils/CommandLineOptions.py +84 -19
  671. nuitka/utils/Distributions.py +445 -54
  672. nuitka/utils/Download.py +89 -57
  673. nuitka/utils/Execution.py +73 -34
  674. nuitka/utils/FileOperations.py +318 -74
  675. nuitka/utils/Hashing.py +55 -33
  676. nuitka/utils/Images.py +26 -19
  677. nuitka/utils/Importing.py +118 -24
  678. nuitka/utils/InstalledPythons.py +80 -75
  679. nuitka/utils/InstanceCounters.py +20 -17
  680. nuitka/utils/Jinja2.py +30 -22
  681. nuitka/utils/Json.py +19 -17
  682. nuitka/utils/MacOSApp.py +26 -18
  683. nuitka/utils/MemoryUsage.py +20 -18
  684. nuitka/utils/ModuleNames.py +42 -26
  685. nuitka/utils/ReExecute.py +50 -28
  686. nuitka/utils/Rest.py +20 -17
  687. nuitka/utils/SharedLibraries.py +161 -75
  688. nuitka/utils/Shebang.py +20 -17
  689. nuitka/utils/Signing.py +63 -18
  690. nuitka/utils/SlotMetaClasses.py +57 -0
  691. nuitka/utils/StaticLibraries.py +83 -56
  692. nuitka/utils/ThreadedExecutor.py +18 -17
  693. nuitka/utils/Timing.py +22 -20
  694. nuitka/utils/Utils.py +115 -25
  695. nuitka/utils/WindowsFileUsage.py +22 -20
  696. nuitka/utils/WindowsResources.py +25 -18
  697. nuitka/utils/Yaml.py +62 -24
  698. nuitka/utils/__init__.py +5 -4
  699. Nuitka_winsvc-1.8.dist-info/RECORD +0 -905
  700. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_gui.py +0 -9
  701. nuitka/build/inline_copy/tqdm/tqdm/gui.py +0 -191
  702. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/LICENSE.txt +0 -0
  703. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/entry_points.txt +0 -0
  704. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/top_level.txt +0 -0
@@ -1,20 +1,5 @@
1
- // Copyright 2023, Kay Hayen, mailto:kay.hayen@gmail.com
2
- //
3
- // Part of "Nuitka", an optimizing Python compiler that is compatible and
4
- // integrates with CPython, but also works on its own.
5
- //
6
- // Licensed under the Apache License, Version 2.0 (the "License");
7
- // you may not use this file except in compliance with the License.
8
- // You may obtain a copy of the License at
9
- //
10
- // http://www.apache.org/licenses/LICENSE-2.0
11
- //
12
- // Unless required by applicable law or agreed to in writing, software
13
- // distributed under the License is distributed on an "AS IS" BASIS,
14
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- // See the License for the specific language governing permissions and
16
- // limitations under the License.
17
- //
1
+ // Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
18
3
  /* WARNING, this code is GENERATED. Modify the template HelperOperationBinary.c.j2 instead! */
19
4
 
20
5
  /* This file is included from another C file, help IDEs to still parse it on its own. */
@@ -133,7 +118,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_OBJECT_INT(Py
133
118
  goto exit_binary_result_object;
134
119
  }
135
120
 
136
- Py_DECREF(x);
121
+ Py_DECREF_IMMORTAL(x);
137
122
  }
138
123
 
139
124
  if (slot2 != NULL) {
@@ -144,7 +129,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_OBJECT_INT(Py
144
129
  goto exit_binary_result_object;
145
130
  }
146
131
 
147
- Py_DECREF(x);
132
+ Py_DECREF_IMMORTAL(x);
148
133
  }
149
134
 
150
135
  #if PYTHON_VERSION < 0x300
@@ -356,7 +341,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_INT_OBJECT(Py
356
341
  goto exit_binary_result_object;
357
342
  }
358
343
 
359
- Py_DECREF(x);
344
+ Py_DECREF_IMMORTAL(x);
360
345
  slot2 = NULL;
361
346
  }
362
347
  }
@@ -368,7 +353,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_INT_OBJECT(Py
368
353
  goto exit_binary_result_object;
369
354
  }
370
355
 
371
- Py_DECREF(x);
356
+ Py_DECREF_IMMORTAL(x);
372
357
  }
373
358
 
374
359
  if (slot2 != NULL) {
@@ -379,7 +364,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_INT_OBJECT(Py
379
364
  goto exit_binary_result_object;
380
365
  }
381
366
 
382
- Py_DECREF(x);
367
+ Py_DECREF_IMMORTAL(x);
383
368
  }
384
369
 
385
370
  #if PYTHON_VERSION < 0x300
@@ -633,7 +618,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_OBJECT_INT(P
633
618
  goto exit_binary_result_object;
634
619
  }
635
620
 
636
- Py_DECREF(x);
621
+ Py_DECREF_IMMORTAL(x);
637
622
  }
638
623
 
639
624
  if (slot2 != NULL) {
@@ -644,7 +629,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_OBJECT_INT(P
644
629
  goto exit_binary_result_object;
645
630
  }
646
631
 
647
- Py_DECREF(x);
632
+ Py_DECREF_IMMORTAL(x);
648
633
  }
649
634
 
650
635
  #if PYTHON_VERSION < 0x300
@@ -844,7 +829,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_INT_OBJECT(P
844
829
  goto exit_binary_result_object;
845
830
  }
846
831
 
847
- Py_DECREF(x);
832
+ Py_DECREF_IMMORTAL(x);
848
833
  slot2 = NULL;
849
834
  }
850
835
  }
@@ -856,7 +841,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_INT_OBJECT(P
856
841
  goto exit_binary_result_object;
857
842
  }
858
843
 
859
- Py_DECREF(x);
844
+ Py_DECREF_IMMORTAL(x);
860
845
  }
861
846
 
862
847
  if (slot2 != NULL) {
@@ -867,7 +852,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_INT_OBJECT(P
867
852
  goto exit_binary_result_object;
868
853
  }
869
854
 
870
- Py_DECREF(x);
855
+ Py_DECREF_IMMORTAL(x);
871
856
  }
872
857
 
873
858
  #if PYTHON_VERSION < 0x300
@@ -1045,8 +1030,8 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_LONG_LONG(PyObject *operand1, PyOb
1045
1030
 
1046
1031
  PyLongObject *operand2_long_object = (PyLongObject *)operand2;
1047
1032
 
1048
- if (Py_ABS(Py_SIZE(operand1_long_object)) <= 1 && Py_ABS(Py_SIZE(operand2_long_object)) <= 1) {
1049
- long r = MEDIUM_VALUE(operand1_long_object) + MEDIUM_VALUE(operand2_long_object);
1033
+ if (Nuitka_LongGetDigitSize(operand1_long_object) <= 1 && Nuitka_LongGetDigitSize(operand2_long_object) <= 1) {
1034
+ long r = (long)(MEDIUM_VALUE(operand1_long_object) + MEDIUM_VALUE(operand2_long_object));
1050
1035
 
1051
1036
  clong_result = r;
1052
1037
  goto exit_result_ok_clong;
@@ -1055,17 +1040,17 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_LONG_LONG(PyObject *operand1, PyOb
1055
1040
  {
1056
1041
  PyLongObject *z;
1057
1042
 
1058
- digit const *a_digits = operand1_long_object->ob_digit;
1059
- Py_ssize_t a_digit_count = Py_ABS(Py_SIZE(operand1_long_object));
1060
- bool a_negative = Py_SIZE(operand1_long_object) < 0;
1061
- digit const *b_digits = operand2_long_object->ob_digit;
1062
- Py_ssize_t b_digit_count = Py_ABS(Py_SIZE(operand2_long_object));
1063
- bool b_negative = Py_SIZE(operand2_long_object) < 0;
1043
+ digit const *a_digits = Nuitka_LongGetDigitPointer(operand1_long_object);
1044
+ Py_ssize_t a_digit_count = Nuitka_LongGetDigitSize(operand1_long_object);
1045
+ bool a_negative = Nuitka_LongIsNegative(operand1_long_object);
1046
+ digit const *b_digits = Nuitka_LongGetDigitPointer(operand2_long_object);
1047
+ Py_ssize_t b_digit_count = Nuitka_LongGetDigitSize(operand2_long_object);
1048
+ bool b_negative = Nuitka_LongIsNegative(operand2_long_object);
1064
1049
 
1065
1050
  if (a_negative) {
1066
1051
  if (b_negative) {
1067
1052
  z = _Nuitka_LongAddDigits(a_digits, a_digit_count, b_digits, b_digit_count);
1068
- Py_SET_SIZE(z, -(Py_SIZE(z)));
1053
+ Nuitka_LongFlipSign(z);
1069
1054
  } else {
1070
1055
  z = _Nuitka_LongSubDigits(b_digits, b_digit_count, a_digits, a_digit_count);
1071
1056
  }
@@ -1139,7 +1124,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_OBJECT_LONG(P
1139
1124
  goto exit_binary_result_object;
1140
1125
  }
1141
1126
 
1142
- Py_DECREF(x);
1127
+ Py_DECREF_IMMORTAL(x);
1143
1128
  }
1144
1129
 
1145
1130
  if (slot2 != NULL) {
@@ -1150,7 +1135,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_OBJECT_LONG(P
1150
1135
  goto exit_binary_result_object;
1151
1136
  }
1152
1137
 
1153
- Py_DECREF(x);
1138
+ Py_DECREF_IMMORTAL(x);
1154
1139
  }
1155
1140
 
1156
1141
  #if PYTHON_VERSION < 0x300
@@ -1279,8 +1264,8 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_OBJECT_LONG(PyObject *operand1, Py
1279
1264
 
1280
1265
  PyLongObject *operand2_long_object = (PyLongObject *)operand2;
1281
1266
 
1282
- if (Py_ABS(Py_SIZE(operand1_long_object)) <= 1 && Py_ABS(Py_SIZE(operand2_long_object)) <= 1) {
1283
- long r = MEDIUM_VALUE(operand1_long_object) + MEDIUM_VALUE(operand2_long_object);
1267
+ if (Nuitka_LongGetDigitSize(operand1_long_object) <= 1 && Nuitka_LongGetDigitSize(operand2_long_object) <= 1) {
1268
+ long r = (long)(MEDIUM_VALUE(operand1_long_object) + MEDIUM_VALUE(operand2_long_object));
1284
1269
 
1285
1270
  clong_result = r;
1286
1271
  goto exit_result_ok_clong;
@@ -1289,17 +1274,17 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_OBJECT_LONG(PyObject *operand1, Py
1289
1274
  {
1290
1275
  PyLongObject *z;
1291
1276
 
1292
- digit const *a_digits = operand1_long_object->ob_digit;
1293
- Py_ssize_t a_digit_count = Py_ABS(Py_SIZE(operand1_long_object));
1294
- bool a_negative = Py_SIZE(operand1_long_object) < 0;
1295
- digit const *b_digits = operand2_long_object->ob_digit;
1296
- Py_ssize_t b_digit_count = Py_ABS(Py_SIZE(operand2_long_object));
1297
- bool b_negative = Py_SIZE(operand2_long_object) < 0;
1277
+ digit const *a_digits = Nuitka_LongGetDigitPointer(operand1_long_object);
1278
+ Py_ssize_t a_digit_count = Nuitka_LongGetDigitSize(operand1_long_object);
1279
+ bool a_negative = Nuitka_LongIsNegative(operand1_long_object);
1280
+ digit const *b_digits = Nuitka_LongGetDigitPointer(operand2_long_object);
1281
+ Py_ssize_t b_digit_count = Nuitka_LongGetDigitSize(operand2_long_object);
1282
+ bool b_negative = Nuitka_LongIsNegative(operand2_long_object);
1298
1283
 
1299
1284
  if (a_negative) {
1300
1285
  if (b_negative) {
1301
1286
  z = _Nuitka_LongAddDigits(a_digits, a_digit_count, b_digits, b_digit_count);
1302
- Py_SET_SIZE(z, -(Py_SIZE(z)));
1287
+ Nuitka_LongFlipSign(z);
1303
1288
  } else {
1304
1289
  z = _Nuitka_LongSubDigits(b_digits, b_digit_count, a_digits, a_digit_count);
1305
1290
  }
@@ -1377,7 +1362,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_LONG_OBJECT(P
1377
1362
  goto exit_binary_result_object;
1378
1363
  }
1379
1364
 
1380
- Py_DECREF(x);
1365
+ Py_DECREF_IMMORTAL(x);
1381
1366
  slot2 = NULL;
1382
1367
  }
1383
1368
  }
@@ -1389,7 +1374,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_LONG_OBJECT(P
1389
1374
  goto exit_binary_result_object;
1390
1375
  }
1391
1376
 
1392
- Py_DECREF(x);
1377
+ Py_DECREF_IMMORTAL(x);
1393
1378
  }
1394
1379
 
1395
1380
  if (slot2 != NULL) {
@@ -1400,7 +1385,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_LONG_OBJECT(P
1400
1385
  goto exit_binary_result_object;
1401
1386
  }
1402
1387
 
1403
- Py_DECREF(x);
1388
+ Py_DECREF_IMMORTAL(x);
1404
1389
  }
1405
1390
 
1406
1391
  #if PYTHON_VERSION < 0x300
@@ -1521,8 +1506,8 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_LONG_OBJECT(PyObject *operand1, Py
1521
1506
 
1522
1507
  PyLongObject *operand2_long_object = (PyLongObject *)operand2;
1523
1508
 
1524
- if (Py_ABS(Py_SIZE(operand1_long_object)) <= 1 && Py_ABS(Py_SIZE(operand2_long_object)) <= 1) {
1525
- long r = MEDIUM_VALUE(operand1_long_object) + MEDIUM_VALUE(operand2_long_object);
1509
+ if (Nuitka_LongGetDigitSize(operand1_long_object) <= 1 && Nuitka_LongGetDigitSize(operand2_long_object) <= 1) {
1510
+ long r = (long)(MEDIUM_VALUE(operand1_long_object) + MEDIUM_VALUE(operand2_long_object));
1526
1511
 
1527
1512
  clong_result = r;
1528
1513
  goto exit_result_ok_clong;
@@ -1531,17 +1516,17 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_LONG_OBJECT(PyObject *operand1, Py
1531
1516
  {
1532
1517
  PyLongObject *z;
1533
1518
 
1534
- digit const *a_digits = operand1_long_object->ob_digit;
1535
- Py_ssize_t a_digit_count = Py_ABS(Py_SIZE(operand1_long_object));
1536
- bool a_negative = Py_SIZE(operand1_long_object) < 0;
1537
- digit const *b_digits = operand2_long_object->ob_digit;
1538
- Py_ssize_t b_digit_count = Py_ABS(Py_SIZE(operand2_long_object));
1539
- bool b_negative = Py_SIZE(operand2_long_object) < 0;
1519
+ digit const *a_digits = Nuitka_LongGetDigitPointer(operand1_long_object);
1520
+ Py_ssize_t a_digit_count = Nuitka_LongGetDigitSize(operand1_long_object);
1521
+ bool a_negative = Nuitka_LongIsNegative(operand1_long_object);
1522
+ digit const *b_digits = Nuitka_LongGetDigitPointer(operand2_long_object);
1523
+ Py_ssize_t b_digit_count = Nuitka_LongGetDigitSize(operand2_long_object);
1524
+ bool b_negative = Nuitka_LongIsNegative(operand2_long_object);
1540
1525
 
1541
1526
  if (a_negative) {
1542
1527
  if (b_negative) {
1543
1528
  z = _Nuitka_LongAddDigits(a_digits, a_digit_count, b_digits, b_digit_count);
1544
- Py_SET_SIZE(z, -(Py_SIZE(z)));
1529
+ Nuitka_LongFlipSign(z);
1545
1530
  } else {
1546
1531
  z = _Nuitka_LongSubDigits(b_digits, b_digit_count, a_digits, a_digit_count);
1547
1532
  }
@@ -1606,8 +1591,8 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_LONG_LONG(PyObject *operand1, PyO
1606
1591
 
1607
1592
  PyLongObject *operand2_long_object = (PyLongObject *)operand2;
1608
1593
 
1609
- if (Py_ABS(Py_SIZE(operand1_long_object)) <= 1 && Py_ABS(Py_SIZE(operand2_long_object)) <= 1) {
1610
- long r = MEDIUM_VALUE(operand1_long_object) + MEDIUM_VALUE(operand2_long_object);
1594
+ if (Nuitka_LongGetDigitSize(operand1_long_object) <= 1 && Nuitka_LongGetDigitSize(operand2_long_object) <= 1) {
1595
+ long r = (long)(MEDIUM_VALUE(operand1_long_object) + MEDIUM_VALUE(operand2_long_object));
1611
1596
 
1612
1597
  clong_result = r;
1613
1598
  goto exit_result_ok_clong;
@@ -1616,17 +1601,17 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_LONG_LONG(PyObject *operand1, PyO
1616
1601
  {
1617
1602
  PyLongObject *z;
1618
1603
 
1619
- digit const *a_digits = operand1_long_object->ob_digit;
1620
- Py_ssize_t a_digit_count = Py_ABS(Py_SIZE(operand1_long_object));
1621
- bool a_negative = Py_SIZE(operand1_long_object) < 0;
1622
- digit const *b_digits = operand2_long_object->ob_digit;
1623
- Py_ssize_t b_digit_count = Py_ABS(Py_SIZE(operand2_long_object));
1624
- bool b_negative = Py_SIZE(operand2_long_object) < 0;
1604
+ digit const *a_digits = Nuitka_LongGetDigitPointer(operand1_long_object);
1605
+ Py_ssize_t a_digit_count = Nuitka_LongGetDigitSize(operand1_long_object);
1606
+ bool a_negative = Nuitka_LongIsNegative(operand1_long_object);
1607
+ digit const *b_digits = Nuitka_LongGetDigitPointer(operand2_long_object);
1608
+ Py_ssize_t b_digit_count = Nuitka_LongGetDigitSize(operand2_long_object);
1609
+ bool b_negative = Nuitka_LongIsNegative(operand2_long_object);
1625
1610
 
1626
1611
  if (a_negative) {
1627
1612
  if (b_negative) {
1628
1613
  z = _Nuitka_LongAddDigits(a_digits, a_digit_count, b_digits, b_digit_count);
1629
- Py_SET_SIZE(z, -(Py_SIZE(z)));
1614
+ Nuitka_LongFlipSign(z);
1630
1615
  } else {
1631
1616
  z = _Nuitka_LongSubDigits(b_digits, b_digit_count, a_digits, a_digit_count);
1632
1617
  }
@@ -1702,7 +1687,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_OBJECT_LONG(
1702
1687
  goto exit_binary_result_object;
1703
1688
  }
1704
1689
 
1705
- Py_DECREF(x);
1690
+ Py_DECREF_IMMORTAL(x);
1706
1691
  }
1707
1692
 
1708
1693
  if (slot2 != NULL) {
@@ -1713,7 +1698,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_OBJECT_LONG(
1713
1698
  goto exit_binary_result_object;
1714
1699
  }
1715
1700
 
1716
- Py_DECREF(x);
1701
+ Py_DECREF_IMMORTAL(x);
1717
1702
  }
1718
1703
 
1719
1704
  #if PYTHON_VERSION < 0x300
@@ -1850,8 +1835,8 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_OBJECT_LONG(PyObject *operand1, P
1850
1835
 
1851
1836
  PyLongObject *operand2_long_object = (PyLongObject *)operand2;
1852
1837
 
1853
- if (Py_ABS(Py_SIZE(operand1_long_object)) <= 1 && Py_ABS(Py_SIZE(operand2_long_object)) <= 1) {
1854
- long r = MEDIUM_VALUE(operand1_long_object) + MEDIUM_VALUE(operand2_long_object);
1838
+ if (Nuitka_LongGetDigitSize(operand1_long_object) <= 1 && Nuitka_LongGetDigitSize(operand2_long_object) <= 1) {
1839
+ long r = (long)(MEDIUM_VALUE(operand1_long_object) + MEDIUM_VALUE(operand2_long_object));
1855
1840
 
1856
1841
  clong_result = r;
1857
1842
  goto exit_result_ok_clong;
@@ -1860,17 +1845,17 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_OBJECT_LONG(PyObject *operand1, P
1860
1845
  {
1861
1846
  PyLongObject *z;
1862
1847
 
1863
- digit const *a_digits = operand1_long_object->ob_digit;
1864
- Py_ssize_t a_digit_count = Py_ABS(Py_SIZE(operand1_long_object));
1865
- bool a_negative = Py_SIZE(operand1_long_object) < 0;
1866
- digit const *b_digits = operand2_long_object->ob_digit;
1867
- Py_ssize_t b_digit_count = Py_ABS(Py_SIZE(operand2_long_object));
1868
- bool b_negative = Py_SIZE(operand2_long_object) < 0;
1848
+ digit const *a_digits = Nuitka_LongGetDigitPointer(operand1_long_object);
1849
+ Py_ssize_t a_digit_count = Nuitka_LongGetDigitSize(operand1_long_object);
1850
+ bool a_negative = Nuitka_LongIsNegative(operand1_long_object);
1851
+ digit const *b_digits = Nuitka_LongGetDigitPointer(operand2_long_object);
1852
+ Py_ssize_t b_digit_count = Nuitka_LongGetDigitSize(operand2_long_object);
1853
+ bool b_negative = Nuitka_LongIsNegative(operand2_long_object);
1869
1854
 
1870
1855
  if (a_negative) {
1871
1856
  if (b_negative) {
1872
1857
  z = _Nuitka_LongAddDigits(a_digits, a_digit_count, b_digits, b_digit_count);
1873
- Py_SET_SIZE(z, -(Py_SIZE(z)));
1858
+ Nuitka_LongFlipSign(z);
1874
1859
  } else {
1875
1860
  z = _Nuitka_LongSubDigits(b_digits, b_digit_count, a_digits, a_digit_count);
1876
1861
  }
@@ -1950,7 +1935,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_LONG_OBJECT(
1950
1935
  goto exit_binary_result_object;
1951
1936
  }
1952
1937
 
1953
- Py_DECREF(x);
1938
+ Py_DECREF_IMMORTAL(x);
1954
1939
  slot2 = NULL;
1955
1940
  }
1956
1941
  }
@@ -1962,7 +1947,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_LONG_OBJECT(
1962
1947
  goto exit_binary_result_object;
1963
1948
  }
1964
1949
 
1965
- Py_DECREF(x);
1950
+ Py_DECREF_IMMORTAL(x);
1966
1951
  }
1967
1952
 
1968
1953
  if (slot2 != NULL) {
@@ -1973,7 +1958,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_LONG_OBJECT(
1973
1958
  goto exit_binary_result_object;
1974
1959
  }
1975
1960
 
1976
- Py_DECREF(x);
1961
+ Py_DECREF_IMMORTAL(x);
1977
1962
  }
1978
1963
 
1979
1964
  #if PYTHON_VERSION < 0x300
@@ -2102,8 +2087,8 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_LONG_OBJECT(PyObject *operand1, P
2102
2087
 
2103
2088
  PyLongObject *operand2_long_object = (PyLongObject *)operand2;
2104
2089
 
2105
- if (Py_ABS(Py_SIZE(operand1_long_object)) <= 1 && Py_ABS(Py_SIZE(operand2_long_object)) <= 1) {
2106
- long r = MEDIUM_VALUE(operand1_long_object) + MEDIUM_VALUE(operand2_long_object);
2090
+ if (Nuitka_LongGetDigitSize(operand1_long_object) <= 1 && Nuitka_LongGetDigitSize(operand2_long_object) <= 1) {
2091
+ long r = (long)(MEDIUM_VALUE(operand1_long_object) + MEDIUM_VALUE(operand2_long_object));
2107
2092
 
2108
2093
  clong_result = r;
2109
2094
  goto exit_result_ok_clong;
@@ -2112,17 +2097,17 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_LONG_OBJECT(PyObject *operand1, P
2112
2097
  {
2113
2098
  PyLongObject *z;
2114
2099
 
2115
- digit const *a_digits = operand1_long_object->ob_digit;
2116
- Py_ssize_t a_digit_count = Py_ABS(Py_SIZE(operand1_long_object));
2117
- bool a_negative = Py_SIZE(operand1_long_object) < 0;
2118
- digit const *b_digits = operand2_long_object->ob_digit;
2119
- Py_ssize_t b_digit_count = Py_ABS(Py_SIZE(operand2_long_object));
2120
- bool b_negative = Py_SIZE(operand2_long_object) < 0;
2100
+ digit const *a_digits = Nuitka_LongGetDigitPointer(operand1_long_object);
2101
+ Py_ssize_t a_digit_count = Nuitka_LongGetDigitSize(operand1_long_object);
2102
+ bool a_negative = Nuitka_LongIsNegative(operand1_long_object);
2103
+ digit const *b_digits = Nuitka_LongGetDigitPointer(operand2_long_object);
2104
+ Py_ssize_t b_digit_count = Nuitka_LongGetDigitSize(operand2_long_object);
2105
+ bool b_negative = Nuitka_LongIsNegative(operand2_long_object);
2121
2106
 
2122
2107
  if (a_negative) {
2123
2108
  if (b_negative) {
2124
2109
  z = _Nuitka_LongAddDigits(a_digits, a_digit_count, b_digits, b_digit_count);
2125
- Py_SET_SIZE(z, -(Py_SIZE(z)));
2110
+ Nuitka_LongFlipSign(z);
2126
2111
  } else {
2127
2112
  z = _Nuitka_LongSubDigits(b_digits, b_digit_count, a_digits, a_digit_count);
2128
2113
  }
@@ -2247,7 +2232,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_OBJECT_FLOAT(
2247
2232
  goto exit_binary_result_object;
2248
2233
  }
2249
2234
 
2250
- Py_DECREF(x);
2235
+ Py_DECREF_IMMORTAL(x);
2251
2236
  }
2252
2237
 
2253
2238
  if (slot2 != NULL) {
@@ -2258,7 +2243,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_OBJECT_FLOAT(
2258
2243
  goto exit_binary_result_object;
2259
2244
  }
2260
2245
 
2261
- Py_DECREF(x);
2246
+ Py_DECREF_IMMORTAL(x);
2262
2247
  }
2263
2248
 
2264
2249
  #if PYTHON_VERSION < 0x300
@@ -2446,7 +2431,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_FLOAT_OBJECT(
2446
2431
  goto exit_binary_result_object;
2447
2432
  }
2448
2433
 
2449
- Py_DECREF(x);
2434
+ Py_DECREF_IMMORTAL(x);
2450
2435
  slot2 = NULL;
2451
2436
  }
2452
2437
  }
@@ -2458,7 +2443,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_FLOAT_OBJECT(
2458
2443
  goto exit_binary_result_object;
2459
2444
  }
2460
2445
 
2461
- Py_DECREF(x);
2446
+ Py_DECREF_IMMORTAL(x);
2462
2447
  }
2463
2448
 
2464
2449
  if (slot2 != NULL) {
@@ -2469,7 +2454,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_FLOAT_OBJECT(
2469
2454
  goto exit_binary_result_object;
2470
2455
  }
2471
2456
 
2472
- Py_DECREF(x);
2457
+ Py_DECREF_IMMORTAL(x);
2473
2458
  }
2474
2459
 
2475
2460
  #if PYTHON_VERSION < 0x300
@@ -2694,7 +2679,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_OBJECT_FLOAT
2694
2679
  goto exit_binary_result_object;
2695
2680
  }
2696
2681
 
2697
- Py_DECREF(x);
2682
+ Py_DECREF_IMMORTAL(x);
2698
2683
  }
2699
2684
 
2700
2685
  if (slot2 != NULL) {
@@ -2705,7 +2690,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_OBJECT_FLOAT
2705
2690
  goto exit_binary_result_object;
2706
2691
  }
2707
2692
 
2708
- Py_DECREF(x);
2693
+ Py_DECREF_IMMORTAL(x);
2709
2694
  }
2710
2695
 
2711
2696
  #if PYTHON_VERSION < 0x300
@@ -2901,7 +2886,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_FLOAT_OBJECT
2901
2886
  goto exit_binary_result_object;
2902
2887
  }
2903
2888
 
2904
- Py_DECREF(x);
2889
+ Py_DECREF_IMMORTAL(x);
2905
2890
  slot2 = NULL;
2906
2891
  }
2907
2892
  }
@@ -2913,7 +2898,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_FLOAT_OBJECT
2913
2898
  goto exit_binary_result_object;
2914
2899
  }
2915
2900
 
2916
- Py_DECREF(x);
2901
+ Py_DECREF_IMMORTAL(x);
2917
2902
  }
2918
2903
 
2919
2904
  if (slot2 != NULL) {
@@ -2924,7 +2909,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_FLOAT_OBJECT
2924
2909
  goto exit_binary_result_object;
2925
2910
  }
2926
2911
 
2927
- Py_DECREF(x);
2912
+ Py_DECREF_IMMORTAL(x);
2928
2913
  }
2929
2914
 
2930
2915
  #if PYTHON_VERSION < 0x300
@@ -3102,7 +3087,7 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_FLOAT_LONG(PyObject *operand1, PyO
3102
3087
  goto exit_binary_result_object;
3103
3088
  }
3104
3089
 
3105
- Py_DECREF(x);
3090
+ Py_DECREF_IMMORTAL(x);
3106
3091
  }
3107
3092
 
3108
3093
  // Statically recognized that coercion is not possible with these types
@@ -3157,7 +3142,7 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_FLOAT_LONG(PyObject *operand1, Py
3157
3142
  goto exit_binary_result_object;
3158
3143
  }
3159
3144
 
3160
- Py_DECREF(x);
3145
+ Py_DECREF_IMMORTAL(x);
3161
3146
  }
3162
3147
 
3163
3148
  // Statically recognized that coercion is not possible with these types
@@ -3221,7 +3206,7 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_FLOAT_INT(PyObject *operand1, PyOb
3221
3206
  goto exit_binary_result_object;
3222
3207
  }
3223
3208
 
3224
- Py_DECREF(x);
3209
+ Py_DECREF_IMMORTAL(x);
3225
3210
  }
3226
3211
 
3227
3212
  // Statically recognized that coercion is not possible with these types
@@ -3274,7 +3259,7 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_FLOAT_INT(PyObject *operand1, PyO
3274
3259
  goto exit_binary_result_object;
3275
3260
  }
3276
3261
 
3277
- Py_DECREF(x);
3262
+ Py_DECREF_IMMORTAL(x);
3278
3263
  }
3279
3264
 
3280
3265
  // Statically recognized that coercion is not possible with these types
@@ -3335,7 +3320,7 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_LONG_INT(PyObject *operand1, PyObj
3335
3320
  goto exit_binary_result_object;
3336
3321
  }
3337
3322
 
3338
- Py_DECREF(x);
3323
+ Py_DECREF_IMMORTAL(x);
3339
3324
  }
3340
3325
 
3341
3326
  // Statically recognized that coercion is not possible with these types
@@ -3388,7 +3373,7 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_LONG_INT(PyObject *operand1, PyOb
3388
3373
  goto exit_binary_result_object;
3389
3374
  }
3390
3375
 
3391
- Py_DECREF(x);
3376
+ Py_DECREF_IMMORTAL(x);
3392
3377
  }
3393
3378
 
3394
3379
  // Statically recognized that coercion is not possible with these types
@@ -3558,8 +3543,8 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_LONG_DIGIT(PyObject *operand1, lon
3558
3543
 
3559
3544
  PyLongObject *operand1_long_object = (PyLongObject *)operand1;
3560
3545
 
3561
- if (Py_ABS(Py_SIZE(operand1_long_object)) <= 1 && (operand2 == 0 ? 0 : 1) <= 1) {
3562
- long r = MEDIUM_VALUE(operand1_long_object) + (sdigit)operand2;
3546
+ if (Nuitka_LongGetDigitSize(operand1_long_object) <= 1 && (operand2 == 0 ? 0 : 1) <= 1) {
3547
+ long r = (long)(MEDIUM_VALUE(operand1_long_object) + (sdigit)operand2);
3563
3548
 
3564
3549
  clong_result = r;
3565
3550
  goto exit_result_ok_clong;
@@ -3568,9 +3553,9 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_LONG_DIGIT(PyObject *operand1, lon
3568
3553
  {
3569
3554
  PyLongObject *z;
3570
3555
 
3571
- digit const *a_digits = operand1_long_object->ob_digit;
3572
- Py_ssize_t a_digit_count = Py_ABS(Py_SIZE(operand1_long_object));
3573
- bool a_negative = Py_SIZE(operand1_long_object) < 0;
3556
+ digit const *a_digits = Nuitka_LongGetDigitPointer(operand1_long_object);
3557
+ Py_ssize_t a_digit_count = Nuitka_LongGetDigitSize(operand1_long_object);
3558
+ bool a_negative = Nuitka_LongIsNegative(operand1_long_object);
3574
3559
  digit const *b_digits = (digit *)&operand2;
3575
3560
  Py_ssize_t b_digit_count = (operand2 == 0 ? 0 : 1);
3576
3561
  bool b_negative = operand2 < 0;
@@ -3578,7 +3563,7 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_LONG_DIGIT(PyObject *operand1, lon
3578
3563
  if (a_negative) {
3579
3564
  if (b_negative) {
3580
3565
  z = _Nuitka_LongAddDigits(a_digits, a_digit_count, b_digits, b_digit_count);
3581
- Py_SET_SIZE(z, -(Py_SIZE(z)));
3566
+ Nuitka_LongFlipSign(z);
3582
3567
  } else {
3583
3568
  z = _Nuitka_LongSubDigits(b_digits, b_digit_count, a_digits, a_digit_count);
3584
3569
  }
@@ -3638,8 +3623,8 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_LONG_DIGIT(PyObject *operand1, lo
3638
3623
 
3639
3624
  PyLongObject *operand1_long_object = (PyLongObject *)operand1;
3640
3625
 
3641
- if (Py_ABS(Py_SIZE(operand1_long_object)) <= 1 && (operand2 == 0 ? 0 : 1) <= 1) {
3642
- long r = MEDIUM_VALUE(operand1_long_object) + (sdigit)operand2;
3626
+ if (Nuitka_LongGetDigitSize(operand1_long_object) <= 1 && (operand2 == 0 ? 0 : 1) <= 1) {
3627
+ long r = (long)(MEDIUM_VALUE(operand1_long_object) + (sdigit)operand2);
3643
3628
 
3644
3629
  clong_result = r;
3645
3630
  goto exit_result_ok_clong;
@@ -3648,9 +3633,9 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_LONG_DIGIT(PyObject *operand1, lo
3648
3633
  {
3649
3634
  PyLongObject *z;
3650
3635
 
3651
- digit const *a_digits = operand1_long_object->ob_digit;
3652
- Py_ssize_t a_digit_count = Py_ABS(Py_SIZE(operand1_long_object));
3653
- bool a_negative = Py_SIZE(operand1_long_object) < 0;
3636
+ digit const *a_digits = Nuitka_LongGetDigitPointer(operand1_long_object);
3637
+ Py_ssize_t a_digit_count = Nuitka_LongGetDigitSize(operand1_long_object);
3638
+ bool a_negative = Nuitka_LongIsNegative(operand1_long_object);
3654
3639
  digit const *b_digits = (digit *)&operand2;
3655
3640
  Py_ssize_t b_digit_count = (operand2 == 0 ? 0 : 1);
3656
3641
  bool b_negative = operand2 < 0;
@@ -3658,7 +3643,7 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_LONG_DIGIT(PyObject *operand1, lo
3658
3643
  if (a_negative) {
3659
3644
  if (b_negative) {
3660
3645
  z = _Nuitka_LongAddDigits(a_digits, a_digit_count, b_digits, b_digit_count);
3661
- Py_SET_SIZE(z, -(Py_SIZE(z)));
3646
+ Nuitka_LongFlipSign(z);
3662
3647
  } else {
3663
3648
  z = _Nuitka_LongSubDigits(b_digits, b_digit_count, a_digits, a_digit_count);
3664
3649
  }
@@ -3845,7 +3830,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_OBJECT_STR(Py
3845
3830
  goto exit_binary_result_object;
3846
3831
  }
3847
3832
 
3848
- Py_DECREF(x);
3833
+ Py_DECREF_IMMORTAL(x);
3849
3834
  }
3850
3835
 
3851
3836
  #if PYTHON_VERSION < 0x300
@@ -3983,7 +3968,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_STR_OBJECT(Py
3983
3968
  goto exit_binary_result_object;
3984
3969
  }
3985
3970
 
3986
- Py_DECREF(x);
3971
+ Py_DECREF_IMMORTAL(x);
3987
3972
  }
3988
3973
 
3989
3974
  #if PYTHON_VERSION < 0x300
@@ -4150,7 +4135,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_OBJECT_UNICOD
4150
4135
  goto exit_binary_result_object;
4151
4136
  }
4152
4137
 
4153
- Py_DECREF(x);
4138
+ Py_DECREF_IMMORTAL(x);
4154
4139
  }
4155
4140
 
4156
4141
  #if PYTHON_VERSION < 0x300
@@ -4293,7 +4278,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_UNICODE_OBJEC
4293
4278
  goto exit_binary_result_object;
4294
4279
  }
4295
4280
 
4296
- Py_DECREF(x);
4281
+ Py_DECREF_IMMORTAL(x);
4297
4282
  }
4298
4283
 
4299
4284
  #if PYTHON_VERSION < 0x300
@@ -4461,7 +4446,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_OBJECT_BYTES(
4461
4446
  goto exit_binary_result_object;
4462
4447
  }
4463
4448
 
4464
- Py_DECREF(x);
4449
+ Py_DECREF_IMMORTAL(x);
4465
4450
  }
4466
4451
 
4467
4452
  #if PYTHON_VERSION < 0x300
@@ -4600,7 +4585,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_BYTES_OBJECT(
4600
4585
  goto exit_binary_result_object;
4601
4586
  }
4602
4587
 
4603
- Py_DECREF(x);
4588
+ Py_DECREF_IMMORTAL(x);
4604
4589
  }
4605
4590
 
4606
4591
  #if PYTHON_VERSION < 0x300
@@ -4714,7 +4699,10 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_TUPLE_TUPLE(PyObject *operand1, Py
4714
4699
  // Not every code path will make use of all possible results.
4715
4700
  NUITKA_MAY_BE_UNUSED PyObject *obj_result;
4716
4701
 
4717
- PyObject *x = TUPLE_CONCAT(operand1, operand2);
4702
+ // TODO: Have this more globally passed in
4703
+ PyThreadState *tstate = PyThreadState_GET();
4704
+
4705
+ PyObject *x = TUPLE_CONCAT(tstate, operand1, operand2);
4718
4706
 
4719
4707
  assert(x != Py_NotImplemented);
4720
4708
  obj_result = x;
@@ -4764,7 +4752,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_OBJECT_TUPLE(
4764
4752
  goto exit_binary_result_object;
4765
4753
  }
4766
4754
 
4767
- Py_DECREF(x);
4755
+ Py_DECREF_IMMORTAL(x);
4768
4756
  }
4769
4757
 
4770
4758
  #if PYTHON_VERSION < 0x300
@@ -4843,7 +4831,10 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_OBJECT_TUPLE(PyObject *operand1, P
4843
4831
  // Not every code path will make use of all possible results.
4844
4832
  NUITKA_MAY_BE_UNUSED PyObject *obj_result;
4845
4833
 
4846
- PyObject *x = TUPLE_CONCAT(operand1, operand2);
4834
+ // TODO: Have this more globally passed in
4835
+ PyThreadState *tstate = PyThreadState_GET();
4836
+
4837
+ PyObject *x = TUPLE_CONCAT(tstate, operand1, operand2);
4847
4838
 
4848
4839
  assert(x != Py_NotImplemented);
4849
4840
  obj_result = x;
@@ -4901,7 +4892,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_TUPLE_OBJECT(
4901
4892
  goto exit_binary_result_object;
4902
4893
  }
4903
4894
 
4904
- Py_DECREF(x);
4895
+ Py_DECREF_IMMORTAL(x);
4905
4896
  }
4906
4897
 
4907
4898
  #if PYTHON_VERSION < 0x300
@@ -4975,7 +4966,10 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_TUPLE_OBJECT(PyObject *operand1, P
4975
4966
  // Not every code path will make use of all possible results.
4976
4967
  NUITKA_MAY_BE_UNUSED PyObject *obj_result;
4977
4968
 
4978
- PyObject *x = TUPLE_CONCAT(operand1, operand2);
4969
+ // TODO: Have this more globally passed in
4970
+ PyThreadState *tstate = PyThreadState_GET();
4971
+
4972
+ PyObject *x = TUPLE_CONCAT(tstate, operand1, operand2);
4979
4973
 
4980
4974
  assert(x != Py_NotImplemented);
4981
4975
  obj_result = x;
@@ -5014,7 +5008,10 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_LIST_LIST(PyObject *operand1, PyOb
5014
5008
  // Not every code path will make use of all possible results.
5015
5009
  NUITKA_MAY_BE_UNUSED PyObject *obj_result;
5016
5010
 
5017
- PyObject *x = LIST_CONCAT(operand1, operand2);
5011
+ // TODO: Have this more globally passed in
5012
+ PyThreadState *tstate = PyThreadState_GET();
5013
+
5014
+ PyObject *x = LIST_CONCAT(tstate, operand1, operand2);
5018
5015
  assert(x != Py_NotImplemented);
5019
5016
 
5020
5017
  obj_result = x;
@@ -5063,7 +5060,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_OBJECT_LIST(P
5063
5060
  goto exit_binary_result_object;
5064
5061
  }
5065
5062
 
5066
- Py_DECREF(x);
5063
+ Py_DECREF_IMMORTAL(x);
5067
5064
  }
5068
5065
 
5069
5066
  #if PYTHON_VERSION < 0x300
@@ -5142,7 +5139,10 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_OBJECT_LIST(PyObject *operand1, Py
5142
5139
  // Not every code path will make use of all possible results.
5143
5140
  NUITKA_MAY_BE_UNUSED PyObject *obj_result;
5144
5141
 
5145
- PyObject *x = LIST_CONCAT(operand1, operand2);
5142
+ // TODO: Have this more globally passed in
5143
+ PyThreadState *tstate = PyThreadState_GET();
5144
+
5145
+ PyObject *x = LIST_CONCAT(tstate, operand1, operand2);
5146
5146
  assert(x != Py_NotImplemented);
5147
5147
 
5148
5148
  obj_result = x;
@@ -5199,7 +5199,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_LIST_OBJECT(P
5199
5199
  goto exit_binary_result_object;
5200
5200
  }
5201
5201
 
5202
- Py_DECREF(x);
5202
+ Py_DECREF_IMMORTAL(x);
5203
5203
  }
5204
5204
 
5205
5205
  #if PYTHON_VERSION < 0x300
@@ -5273,7 +5273,10 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_LIST_OBJECT(PyObject *operand1, Py
5273
5273
  // Not every code path will make use of all possible results.
5274
5274
  NUITKA_MAY_BE_UNUSED PyObject *obj_result;
5275
5275
 
5276
- PyObject *x = LIST_CONCAT(operand1, operand2);
5276
+ // TODO: Have this more globally passed in
5277
+ PyThreadState *tstate = PyThreadState_GET();
5278
+
5279
+ PyObject *x = LIST_CONCAT(tstate, operand1, operand2);
5277
5280
  assert(x != Py_NotImplemented);
5278
5281
 
5279
5282
  obj_result = x;
@@ -5312,7 +5315,10 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_LIST_LIST(PyObject *operand1, PyO
5312
5315
  // Not every code path will make use of all possible results.
5313
5316
  NUITKA_MAY_BE_UNUSED PyObject *obj_result;
5314
5317
 
5315
- PyObject *x = LIST_CONCAT(operand1, operand2);
5318
+ // TODO: Have this more globally passed in
5319
+ PyThreadState *tstate = PyThreadState_GET();
5320
+
5321
+ PyObject *x = LIST_CONCAT(tstate, operand1, operand2);
5316
5322
  assert(x != Py_NotImplemented);
5317
5323
 
5318
5324
  obj_result = x;
@@ -5363,7 +5369,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_OBJECT_LIST(
5363
5369
  goto exit_binary_result_object;
5364
5370
  }
5365
5371
 
5366
- Py_DECREF(x);
5372
+ Py_DECREF_IMMORTAL(x);
5367
5373
  }
5368
5374
 
5369
5375
  #if PYTHON_VERSION < 0x300
@@ -5450,7 +5456,10 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_OBJECT_LIST(PyObject *operand1, P
5450
5456
  // Not every code path will make use of all possible results.
5451
5457
  NUITKA_MAY_BE_UNUSED PyObject *obj_result;
5452
5458
 
5453
- PyObject *x = LIST_CONCAT(operand1, operand2);
5459
+ // TODO: Have this more globally passed in
5460
+ PyThreadState *tstate = PyThreadState_GET();
5461
+
5462
+ PyObject *x = LIST_CONCAT(tstate, operand1, operand2);
5454
5463
  assert(x != Py_NotImplemented);
5455
5464
 
5456
5465
  obj_result = x;
@@ -5509,7 +5518,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_LIST_OBJECT(
5509
5518
  goto exit_binary_result_object;
5510
5519
  }
5511
5520
 
5512
- Py_DECREF(x);
5521
+ Py_DECREF_IMMORTAL(x);
5513
5522
  }
5514
5523
 
5515
5524
  #if PYTHON_VERSION < 0x300
@@ -5591,7 +5600,10 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_LIST_OBJECT(PyObject *operand1, P
5591
5600
  // Not every code path will make use of all possible results.
5592
5601
  NUITKA_MAY_BE_UNUSED PyObject *obj_result;
5593
5602
 
5594
- PyObject *x = LIST_CONCAT(operand1, operand2);
5603
+ // TODO: Have this more globally passed in
5604
+ PyThreadState *tstate = PyThreadState_GET();
5605
+
5606
+ PyObject *x = LIST_CONCAT(tstate, operand1, operand2);
5595
5607
  assert(x != Py_NotImplemented);
5596
5608
 
5597
5609
  obj_result = x;
@@ -5886,7 +5898,7 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_OBJECT_OBJECT(PyObject *operand1,
5886
5898
  goto exit_binary_result_object;
5887
5899
  }
5888
5900
 
5889
- Py_DECREF(x);
5901
+ Py_DECREF_IMMORTAL(x);
5890
5902
  slot2 = NULL;
5891
5903
  }
5892
5904
  }
@@ -5898,7 +5910,7 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_OBJECT_OBJECT(PyObject *operand1,
5898
5910
  goto exit_binary_result_object;
5899
5911
  }
5900
5912
 
5901
- Py_DECREF(x);
5913
+ Py_DECREF_IMMORTAL(x);
5902
5914
  }
5903
5915
 
5904
5916
  if (slot2 != NULL) {
@@ -5909,7 +5921,7 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_OBJECT_OBJECT(PyObject *operand1,
5909
5921
  goto exit_binary_result_object;
5910
5922
  }
5911
5923
 
5912
- Py_DECREF(x);
5924
+ Py_DECREF_IMMORTAL(x);
5913
5925
  }
5914
5926
 
5915
5927
  #if PYTHON_VERSION < 0x300
@@ -6096,7 +6108,7 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_OBJECT_OBJECT(PyObject *operand1,
6096
6108
  goto exit_binary_result_object;
6097
6109
  }
6098
6110
 
6099
- Py_DECREF(x);
6111
+ Py_DECREF_IMMORTAL(x);
6100
6112
  slot2 = NULL;
6101
6113
  }
6102
6114
  }
@@ -6108,7 +6120,7 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_OBJECT_OBJECT(PyObject *operand1,
6108
6120
  goto exit_binary_result_object;
6109
6121
  }
6110
6122
 
6111
- Py_DECREF(x);
6123
+ Py_DECREF_IMMORTAL(x);
6112
6124
  }
6113
6125
 
6114
6126
  if (slot2 != NULL) {
@@ -6119,7 +6131,7 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_OBJECT_OBJECT(PyObject *operand1,
6119
6131
  goto exit_binary_result_object;
6120
6132
  }
6121
6133
 
6122
- Py_DECREF(x);
6134
+ Py_DECREF_IMMORTAL(x);
6123
6135
  }
6124
6136
 
6125
6137
  #if PYTHON_VERSION < 0x300
@@ -6230,3 +6242,18 @@ exit_binary_exception:
6230
6242
  nuitka_bool BINARY_OPERATION_ADD_NBOOL_OBJECT_OBJECT(PyObject *operand1, PyObject *operand2) {
6231
6243
  return _BINARY_OPERATION_ADD_NBOOL_OBJECT_OBJECT(operand1, operand2);
6232
6244
  }
6245
+
6246
+ // Part of "Nuitka", an optimizing Python compiler that is compatible and
6247
+ // integrates with CPython, but also works on its own.
6248
+ //
6249
+ // Licensed under the Apache License, Version 2.0 (the "License");
6250
+ // you may not use this file except in compliance with the License.
6251
+ // You may obtain a copy of the License at
6252
+ //
6253
+ // http://www.apache.org/licenses/LICENSE-2.0
6254
+ //
6255
+ // Unless required by applicable law or agreed to in writing, software
6256
+ // distributed under the License is distributed on an "AS IS" BASIS,
6257
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
6258
+ // See the License for the specific language governing permissions and
6259
+ // limitations under the License.