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 HelperOperationInplace.c.j2 instead! */
19
4
 
20
5
  /* This file is included from another C file, help IDEs to still parse it on its own. */
@@ -130,7 +115,7 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_OBJECT_INT(PyObject **op
130
115
  goto exit_inplace_result_object;
131
116
  }
132
117
 
133
- Py_DECREF(x);
118
+ Py_DECREF_IMMORTAL(x);
134
119
  }
135
120
 
136
121
  {
@@ -156,7 +141,7 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_OBJECT_INT(PyObject **op
156
141
  goto exit_inplace_result_object;
157
142
  }
158
143
 
159
- Py_DECREF(x);
144
+ Py_DECREF_IMMORTAL(x);
160
145
  }
161
146
 
162
147
  if (slot2 != NULL) {
@@ -167,7 +152,7 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_OBJECT_INT(PyObject **op
167
152
  goto exit_inplace_result_object;
168
153
  }
169
154
 
170
- Py_DECREF(x);
155
+ Py_DECREF_IMMORTAL(x);
171
156
  }
172
157
 
173
158
  #if PYTHON_VERSION < 0x300
@@ -244,7 +229,7 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_OBJECT_INT(PyObject **op
244
229
  }
245
230
  #endif
246
231
 
247
- PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -: '%s' and 'int'", type1->tp_name);
232
+ PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -=: '%s' and 'int'", type1->tp_name);
248
233
  goto exit_inplace_exception;
249
234
  }
250
235
 
@@ -392,7 +377,7 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_INT_OBJECT(PyObject **op
392
377
  goto exit_inplace_result_object;
393
378
  }
394
379
 
395
- Py_DECREF(x);
380
+ Py_DECREF_IMMORTAL(x);
396
381
  slot2 = NULL;
397
382
  }
398
383
  }
@@ -404,7 +389,7 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_INT_OBJECT(PyObject **op
404
389
  goto exit_inplace_result_object;
405
390
  }
406
391
 
407
- Py_DECREF(x);
392
+ Py_DECREF_IMMORTAL(x);
408
393
  }
409
394
 
410
395
  if (slot2 != NULL) {
@@ -415,7 +400,7 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_INT_OBJECT(PyObject **op
415
400
  goto exit_inplace_result_object;
416
401
  }
417
402
 
418
- Py_DECREF(x);
403
+ Py_DECREF_IMMORTAL(x);
419
404
  }
420
405
 
421
406
  #if PYTHON_VERSION < 0x300
@@ -492,7 +477,7 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_INT_OBJECT(PyObject **op
492
477
  }
493
478
  #endif
494
479
 
495
- PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -: 'int' and '%s'", type2->tp_name);
480
+ PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -=: 'int' and '%s'", type2->tp_name);
496
481
  goto exit_inplace_exception;
497
482
  }
498
483
 
@@ -622,8 +607,8 @@ static inline bool _INPLACE_OPERATION_SUB_LONG_LONG(PyObject **operand1, PyObjec
622
607
 
623
608
  PyLongObject *operand2_long_object = (PyLongObject *)operand2;
624
609
 
625
- if (Py_ABS(Py_SIZE(operand1_long_object)) <= 1 && Py_ABS(Py_SIZE(operand2_long_object)) <= 1) {
626
- long r = MEDIUM_VALUE(operand1_long_object) - MEDIUM_VALUE(operand2_long_object);
610
+ if (Nuitka_LongGetDigitSize(operand1_long_object) <= 1 && Nuitka_LongGetDigitSize(operand2_long_object) <= 1) {
611
+ long r = (long)(MEDIUM_VALUE(operand1_long_object) - MEDIUM_VALUE(operand2_long_object));
627
612
 
628
613
  if (Py_REFCNT(*operand1) == 1) {
629
614
  Nuitka_LongUpdateFromCLong(&*operand1, r);
@@ -639,18 +624,18 @@ static inline bool _INPLACE_OPERATION_SUB_LONG_LONG(PyObject **operand1, PyObjec
639
624
  }
640
625
 
641
626
  if (Py_REFCNT(*operand1) == 1) {
642
- digit const *b_digits = operand2_long_object->ob_digit;
643
- Py_ssize_t b_digit_count = Py_ABS(Py_SIZE(operand2_long_object));
627
+ digit const *b_digits = Nuitka_LongGetDigitPointer(operand2_long_object);
628
+ Py_ssize_t b_digit_count = Nuitka_LongGetDigitSize(operand2_long_object);
644
629
 
645
- bool a_negative = Py_SIZE(operand1_long_object) < 0;
646
- bool b_negative = Py_SIZE(operand2_long_object) < 0;
630
+ bool a_negative = Nuitka_LongIsNegative(operand1_long_object);
631
+ bool b_negative = Nuitka_LongIsNegative(operand2_long_object);
647
632
 
648
633
  if (a_negative) {
649
634
  if (b_negative) {
650
635
  *operand1 = _Nuitka_LongSubInplaceDigits(*operand1, b_digits, b_digit_count, -1);
651
636
  } else {
652
637
  *operand1 = _Nuitka_LongAddInplaceDigits(*operand1, b_digits, b_digit_count);
653
- Py_SET_SIZE(*operand1, -Py_ABS(Py_SIZE(*operand1)));
638
+ Nuitka_LongSetSignNegative(*operand1);
654
639
  }
655
640
  } else {
656
641
  if (b_negative) {
@@ -665,12 +650,12 @@ static inline bool _INPLACE_OPERATION_SUB_LONG_LONG(PyObject **operand1, PyObjec
665
650
  {
666
651
  PyLongObject *z;
667
652
 
668
- digit const *a_digits = operand1_long_object->ob_digit;
669
- Py_ssize_t a_digit_count = Py_ABS(Py_SIZE(operand1_long_object));
670
- bool a_negative = Py_SIZE(operand1_long_object) < 0;
671
- digit const *b_digits = operand2_long_object->ob_digit;
672
- Py_ssize_t b_digit_count = Py_ABS(Py_SIZE(operand2_long_object));
673
- bool b_negative = Py_SIZE(operand2_long_object) < 0;
653
+ digit const *a_digits = Nuitka_LongGetDigitPointer(operand1_long_object);
654
+ Py_ssize_t a_digit_count = Nuitka_LongGetDigitSize(operand1_long_object);
655
+ bool a_negative = Nuitka_LongIsNegative(operand1_long_object);
656
+ digit const *b_digits = Nuitka_LongGetDigitPointer(operand2_long_object);
657
+ Py_ssize_t b_digit_count = Nuitka_LongGetDigitSize(operand2_long_object);
658
+ bool b_negative = Nuitka_LongIsNegative(operand2_long_object);
674
659
 
675
660
  if (a_negative) {
676
661
  if (b_negative) {
@@ -679,7 +664,7 @@ static inline bool _INPLACE_OPERATION_SUB_LONG_LONG(PyObject **operand1, PyObjec
679
664
  z = _Nuitka_LongAddDigits(a_digits, a_digit_count, b_digits, b_digit_count);
680
665
  }
681
666
 
682
- Py_SET_SIZE(z, -(Py_SIZE(z)));
667
+ Nuitka_LongFlipSign(z);
683
668
  } else {
684
669
  if (b_negative) {
685
670
  z = _Nuitka_LongAddDigits(a_digits, a_digit_count, b_digits, b_digit_count);
@@ -747,7 +732,7 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_OBJECT_LONG(PyObject **o
747
732
  goto exit_inplace_result_object;
748
733
  }
749
734
 
750
- Py_DECREF(x);
735
+ Py_DECREF_IMMORTAL(x);
751
736
  }
752
737
 
753
738
  {
@@ -773,7 +758,7 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_OBJECT_LONG(PyObject **o
773
758
  goto exit_inplace_result_object;
774
759
  }
775
760
 
776
- Py_DECREF(x);
761
+ Py_DECREF_IMMORTAL(x);
777
762
  }
778
763
 
779
764
  if (slot2 != NULL) {
@@ -784,7 +769,7 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_OBJECT_LONG(PyObject **o
784
769
  goto exit_inplace_result_object;
785
770
  }
786
771
 
787
- Py_DECREF(x);
772
+ Py_DECREF_IMMORTAL(x);
788
773
  }
789
774
 
790
775
  #if PYTHON_VERSION < 0x300
@@ -862,9 +847,9 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_OBJECT_LONG(PyObject **o
862
847
  #endif
863
848
 
864
849
  #if PYTHON_VERSION < 0x300
865
- PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -: '%s' and 'long'", type1->tp_name);
850
+ PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -=: '%s' and 'long'", type1->tp_name);
866
851
  #else
867
- PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -: '%s' and 'int'", type1->tp_name);
852
+ PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -=: '%s' and 'int'", type1->tp_name);
868
853
  #endif
869
854
  goto exit_inplace_exception;
870
855
  }
@@ -913,8 +898,8 @@ static inline bool _INPLACE_OPERATION_SUB_OBJECT_LONG(PyObject **operand1, PyObj
913
898
 
914
899
  PyLongObject *operand2_long_object = (PyLongObject *)operand2;
915
900
 
916
- if (Py_ABS(Py_SIZE(operand1_long_object)) <= 1 && Py_ABS(Py_SIZE(operand2_long_object)) <= 1) {
917
- long r = MEDIUM_VALUE(operand1_long_object) - MEDIUM_VALUE(operand2_long_object);
901
+ if (Nuitka_LongGetDigitSize(operand1_long_object) <= 1 && Nuitka_LongGetDigitSize(operand2_long_object) <= 1) {
902
+ long r = (long)(MEDIUM_VALUE(operand1_long_object) - MEDIUM_VALUE(operand2_long_object));
918
903
 
919
904
  if (Py_REFCNT(*operand1) == 1) {
920
905
  Nuitka_LongUpdateFromCLong(&*operand1, r);
@@ -930,18 +915,18 @@ static inline bool _INPLACE_OPERATION_SUB_OBJECT_LONG(PyObject **operand1, PyObj
930
915
  }
931
916
 
932
917
  if (Py_REFCNT(*operand1) == 1) {
933
- digit const *b_digits = operand2_long_object->ob_digit;
934
- Py_ssize_t b_digit_count = Py_ABS(Py_SIZE(operand2_long_object));
918
+ digit const *b_digits = Nuitka_LongGetDigitPointer(operand2_long_object);
919
+ Py_ssize_t b_digit_count = Nuitka_LongGetDigitSize(operand2_long_object);
935
920
 
936
- bool a_negative = Py_SIZE(operand1_long_object) < 0;
937
- bool b_negative = Py_SIZE(operand2_long_object) < 0;
921
+ bool a_negative = Nuitka_LongIsNegative(operand1_long_object);
922
+ bool b_negative = Nuitka_LongIsNegative(operand2_long_object);
938
923
 
939
924
  if (a_negative) {
940
925
  if (b_negative) {
941
926
  *operand1 = _Nuitka_LongSubInplaceDigits(*operand1, b_digits, b_digit_count, -1);
942
927
  } else {
943
928
  *operand1 = _Nuitka_LongAddInplaceDigits(*operand1, b_digits, b_digit_count);
944
- Py_SET_SIZE(*operand1, -Py_ABS(Py_SIZE(*operand1)));
929
+ Nuitka_LongSetSignNegative(*operand1);
945
930
  }
946
931
  } else {
947
932
  if (b_negative) {
@@ -956,12 +941,12 @@ static inline bool _INPLACE_OPERATION_SUB_OBJECT_LONG(PyObject **operand1, PyObj
956
941
  {
957
942
  PyLongObject *z;
958
943
 
959
- digit const *a_digits = operand1_long_object->ob_digit;
960
- Py_ssize_t a_digit_count = Py_ABS(Py_SIZE(operand1_long_object));
961
- bool a_negative = Py_SIZE(operand1_long_object) < 0;
962
- digit const *b_digits = operand2_long_object->ob_digit;
963
- Py_ssize_t b_digit_count = Py_ABS(Py_SIZE(operand2_long_object));
964
- bool b_negative = Py_SIZE(operand2_long_object) < 0;
944
+ digit const *a_digits = Nuitka_LongGetDigitPointer(operand1_long_object);
945
+ Py_ssize_t a_digit_count = Nuitka_LongGetDigitSize(operand1_long_object);
946
+ bool a_negative = Nuitka_LongIsNegative(operand1_long_object);
947
+ digit const *b_digits = Nuitka_LongGetDigitPointer(operand2_long_object);
948
+ Py_ssize_t b_digit_count = Nuitka_LongGetDigitSize(operand2_long_object);
949
+ bool b_negative = Nuitka_LongIsNegative(operand2_long_object);
965
950
 
966
951
  if (a_negative) {
967
952
  if (b_negative) {
@@ -970,7 +955,7 @@ static inline bool _INPLACE_OPERATION_SUB_OBJECT_LONG(PyObject **operand1, PyObj
970
955
  z = _Nuitka_LongAddDigits(a_digits, a_digit_count, b_digits, b_digit_count);
971
956
  }
972
957
 
973
- Py_SET_SIZE(z, -(Py_SIZE(z)));
958
+ Nuitka_LongFlipSign(z);
974
959
  } else {
975
960
  if (b_negative) {
976
961
  z = _Nuitka_LongAddDigits(a_digits, a_digit_count, b_digits, b_digit_count);
@@ -1057,7 +1042,7 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_LONG_OBJECT(PyObject **o
1057
1042
  goto exit_inplace_result_object;
1058
1043
  }
1059
1044
 
1060
- Py_DECREF(x);
1045
+ Py_DECREF_IMMORTAL(x);
1061
1046
  slot2 = NULL;
1062
1047
  }
1063
1048
  }
@@ -1069,7 +1054,7 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_LONG_OBJECT(PyObject **o
1069
1054
  goto exit_inplace_result_object;
1070
1055
  }
1071
1056
 
1072
- Py_DECREF(x);
1057
+ Py_DECREF_IMMORTAL(x);
1073
1058
  }
1074
1059
 
1075
1060
  if (slot2 != NULL) {
@@ -1080,7 +1065,7 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_LONG_OBJECT(PyObject **o
1080
1065
  goto exit_inplace_result_object;
1081
1066
  }
1082
1067
 
1083
- Py_DECREF(x);
1068
+ Py_DECREF_IMMORTAL(x);
1084
1069
  }
1085
1070
 
1086
1071
  #if PYTHON_VERSION < 0x300
@@ -1158,9 +1143,9 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_LONG_OBJECT(PyObject **o
1158
1143
  #endif
1159
1144
 
1160
1145
  #if PYTHON_VERSION < 0x300
1161
- PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -: 'long' and '%s'", type2->tp_name);
1146
+ PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -=: 'long' and '%s'", type2->tp_name);
1162
1147
  #else
1163
- PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -: 'int' and '%s'", type2->tp_name);
1148
+ PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -=: 'int' and '%s'", type2->tp_name);
1164
1149
  #endif
1165
1150
  goto exit_inplace_exception;
1166
1151
  }
@@ -1209,8 +1194,8 @@ static inline bool _INPLACE_OPERATION_SUB_LONG_OBJECT(PyObject **operand1, PyObj
1209
1194
 
1210
1195
  PyLongObject *operand2_long_object = (PyLongObject *)operand2;
1211
1196
 
1212
- if (Py_ABS(Py_SIZE(operand1_long_object)) <= 1 && Py_ABS(Py_SIZE(operand2_long_object)) <= 1) {
1213
- long r = MEDIUM_VALUE(operand1_long_object) - MEDIUM_VALUE(operand2_long_object);
1197
+ if (Nuitka_LongGetDigitSize(operand1_long_object) <= 1 && Nuitka_LongGetDigitSize(operand2_long_object) <= 1) {
1198
+ long r = (long)(MEDIUM_VALUE(operand1_long_object) - MEDIUM_VALUE(operand2_long_object));
1214
1199
 
1215
1200
  if (Py_REFCNT(*operand1) == 1) {
1216
1201
  Nuitka_LongUpdateFromCLong(&*operand1, r);
@@ -1226,18 +1211,18 @@ static inline bool _INPLACE_OPERATION_SUB_LONG_OBJECT(PyObject **operand1, PyObj
1226
1211
  }
1227
1212
 
1228
1213
  if (Py_REFCNT(*operand1) == 1) {
1229
- digit const *b_digits = operand2_long_object->ob_digit;
1230
- Py_ssize_t b_digit_count = Py_ABS(Py_SIZE(operand2_long_object));
1214
+ digit const *b_digits = Nuitka_LongGetDigitPointer(operand2_long_object);
1215
+ Py_ssize_t b_digit_count = Nuitka_LongGetDigitSize(operand2_long_object);
1231
1216
 
1232
- bool a_negative = Py_SIZE(operand1_long_object) < 0;
1233
- bool b_negative = Py_SIZE(operand2_long_object) < 0;
1217
+ bool a_negative = Nuitka_LongIsNegative(operand1_long_object);
1218
+ bool b_negative = Nuitka_LongIsNegative(operand2_long_object);
1234
1219
 
1235
1220
  if (a_negative) {
1236
1221
  if (b_negative) {
1237
1222
  *operand1 = _Nuitka_LongSubInplaceDigits(*operand1, b_digits, b_digit_count, -1);
1238
1223
  } else {
1239
1224
  *operand1 = _Nuitka_LongAddInplaceDigits(*operand1, b_digits, b_digit_count);
1240
- Py_SET_SIZE(*operand1, -Py_ABS(Py_SIZE(*operand1)));
1225
+ Nuitka_LongSetSignNegative(*operand1);
1241
1226
  }
1242
1227
  } else {
1243
1228
  if (b_negative) {
@@ -1252,12 +1237,12 @@ static inline bool _INPLACE_OPERATION_SUB_LONG_OBJECT(PyObject **operand1, PyObj
1252
1237
  {
1253
1238
  PyLongObject *z;
1254
1239
 
1255
- digit const *a_digits = operand1_long_object->ob_digit;
1256
- Py_ssize_t a_digit_count = Py_ABS(Py_SIZE(operand1_long_object));
1257
- bool a_negative = Py_SIZE(operand1_long_object) < 0;
1258
- digit const *b_digits = operand2_long_object->ob_digit;
1259
- Py_ssize_t b_digit_count = Py_ABS(Py_SIZE(operand2_long_object));
1260
- bool b_negative = Py_SIZE(operand2_long_object) < 0;
1240
+ digit const *a_digits = Nuitka_LongGetDigitPointer(operand1_long_object);
1241
+ Py_ssize_t a_digit_count = Nuitka_LongGetDigitSize(operand1_long_object);
1242
+ bool a_negative = Nuitka_LongIsNegative(operand1_long_object);
1243
+ digit const *b_digits = Nuitka_LongGetDigitPointer(operand2_long_object);
1244
+ Py_ssize_t b_digit_count = Nuitka_LongGetDigitSize(operand2_long_object);
1245
+ bool b_negative = Nuitka_LongIsNegative(operand2_long_object);
1261
1246
 
1262
1247
  if (a_negative) {
1263
1248
  if (b_negative) {
@@ -1266,7 +1251,7 @@ static inline bool _INPLACE_OPERATION_SUB_LONG_OBJECT(PyObject **operand1, PyObj
1266
1251
  z = _Nuitka_LongAddDigits(a_digits, a_digit_count, b_digits, b_digit_count);
1267
1252
  }
1268
1253
 
1269
- Py_SET_SIZE(z, -(Py_SIZE(z)));
1254
+ Nuitka_LongFlipSign(z);
1270
1255
  } else {
1271
1256
  if (b_negative) {
1272
1257
  z = _Nuitka_LongAddDigits(a_digits, a_digit_count, b_digits, b_digit_count);
@@ -1390,7 +1375,7 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_OBJECT_FLOAT(PyObject **
1390
1375
  goto exit_inplace_result_object;
1391
1376
  }
1392
1377
 
1393
- Py_DECREF(x);
1378
+ Py_DECREF_IMMORTAL(x);
1394
1379
  }
1395
1380
 
1396
1381
  {
@@ -1416,7 +1401,7 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_OBJECT_FLOAT(PyObject **
1416
1401
  goto exit_inplace_result_object;
1417
1402
  }
1418
1403
 
1419
- Py_DECREF(x);
1404
+ Py_DECREF_IMMORTAL(x);
1420
1405
  }
1421
1406
 
1422
1407
  if (slot2 != NULL) {
@@ -1427,7 +1412,7 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_OBJECT_FLOAT(PyObject **
1427
1412
  goto exit_inplace_result_object;
1428
1413
  }
1429
1414
 
1430
- Py_DECREF(x);
1415
+ Py_DECREF_IMMORTAL(x);
1431
1416
  }
1432
1417
 
1433
1418
  #if PYTHON_VERSION < 0x300
@@ -1504,7 +1489,7 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_OBJECT_FLOAT(PyObject **
1504
1489
  }
1505
1490
  #endif
1506
1491
 
1507
- PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -: '%s' and 'float'", type1->tp_name);
1492
+ PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -=: '%s' and 'float'", type1->tp_name);
1508
1493
  goto exit_inplace_exception;
1509
1494
  }
1510
1495
 
@@ -1625,7 +1610,7 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_FLOAT_OBJECT(PyObject **
1625
1610
  goto exit_inplace_result_object;
1626
1611
  }
1627
1612
 
1628
- Py_DECREF(x);
1613
+ Py_DECREF_IMMORTAL(x);
1629
1614
  slot2 = NULL;
1630
1615
  }
1631
1616
  }
@@ -1637,7 +1622,7 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_FLOAT_OBJECT(PyObject **
1637
1622
  goto exit_inplace_result_object;
1638
1623
  }
1639
1624
 
1640
- Py_DECREF(x);
1625
+ Py_DECREF_IMMORTAL(x);
1641
1626
  }
1642
1627
 
1643
1628
  if (slot2 != NULL) {
@@ -1648,7 +1633,7 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_FLOAT_OBJECT(PyObject **
1648
1633
  goto exit_inplace_result_object;
1649
1634
  }
1650
1635
 
1651
- Py_DECREF(x);
1636
+ Py_DECREF_IMMORTAL(x);
1652
1637
  }
1653
1638
 
1654
1639
  #if PYTHON_VERSION < 0x300
@@ -1725,7 +1710,7 @@ static HEDLEY_NEVER_INLINE bool __INPLACE_OPERATION_SUB_FLOAT_OBJECT(PyObject **
1725
1710
  }
1726
1711
  #endif
1727
1712
 
1728
- PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -: 'float' and '%s'", type2->tp_name);
1713
+ PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -=: 'float' and '%s'", type2->tp_name);
1729
1714
  goto exit_inplace_exception;
1730
1715
  }
1731
1716
 
@@ -1838,15 +1823,15 @@ static inline bool _INPLACE_OPERATION_SUB_FLOAT_LONG(PyObject **operand1, PyObje
1838
1823
  goto exit_inplace_result_object;
1839
1824
  }
1840
1825
 
1841
- Py_DECREF(x);
1826
+ Py_DECREF_IMMORTAL(x);
1842
1827
  }
1843
1828
 
1844
1829
  // Statically recognized that coercion is not possible with these types
1845
1830
 
1846
1831
  #if PYTHON_VERSION < 0x300
1847
- PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -: 'float' and 'long'");
1832
+ PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -=: 'float' and 'long'");
1848
1833
  #else
1849
- PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -: 'float' and 'int'");
1834
+ PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -=: 'float' and 'int'");
1850
1835
  #endif
1851
1836
  goto exit_inplace_exception;
1852
1837
  }
@@ -1912,15 +1897,15 @@ static inline bool _INPLACE_OPERATION_SUB_LONG_FLOAT(PyObject **operand1, PyObje
1912
1897
  goto exit_inplace_result_object;
1913
1898
  }
1914
1899
 
1915
- Py_DECREF(x);
1900
+ Py_DECREF_IMMORTAL(x);
1916
1901
  }
1917
1902
 
1918
1903
  // Statically recognized that coercion is not possible with these types
1919
1904
 
1920
1905
  #if PYTHON_VERSION < 0x300
1921
- PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -: 'long' and 'float'");
1906
+ PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -=: 'long' and 'float'");
1922
1907
  #else
1923
- PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -: 'int' and 'float'");
1908
+ PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -=: 'int' and 'float'");
1924
1909
  #endif
1925
1910
  goto exit_inplace_exception;
1926
1911
  }
@@ -1981,12 +1966,12 @@ static inline bool _INPLACE_OPERATION_SUB_FLOAT_INT(PyObject **operand1, PyObjec
1981
1966
  goto exit_inplace_result_object;
1982
1967
  }
1983
1968
 
1984
- Py_DECREF(x);
1969
+ Py_DECREF_IMMORTAL(x);
1985
1970
  }
1986
1971
 
1987
1972
  // Statically recognized that coercion is not possible with these types
1988
1973
 
1989
- PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -: 'float' and 'int'");
1974
+ PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -=: 'float' and 'int'");
1990
1975
  goto exit_inplace_exception;
1991
1976
  }
1992
1977
 
@@ -2053,12 +2038,12 @@ static inline bool _INPLACE_OPERATION_SUB_INT_FLOAT(PyObject **operand1, PyObjec
2053
2038
  goto exit_inplace_result_object;
2054
2039
  }
2055
2040
 
2056
- Py_DECREF(x);
2041
+ Py_DECREF_IMMORTAL(x);
2057
2042
  }
2058
2043
 
2059
2044
  // Statically recognized that coercion is not possible with these types
2060
2045
 
2061
- PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -: 'int' and 'float'");
2046
+ PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -=: 'int' and 'float'");
2062
2047
  goto exit_inplace_exception;
2063
2048
  }
2064
2049
 
@@ -2119,12 +2104,12 @@ static inline bool _INPLACE_OPERATION_SUB_LONG_INT(PyObject **operand1, PyObject
2119
2104
  goto exit_inplace_result_object;
2120
2105
  }
2121
2106
 
2122
- Py_DECREF(x);
2107
+ Py_DECREF_IMMORTAL(x);
2123
2108
  }
2124
2109
 
2125
2110
  // Statically recognized that coercion is not possible with these types
2126
2111
 
2127
- PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -: 'long' and 'int'");
2112
+ PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -=: 'long' and 'int'");
2128
2113
  goto exit_inplace_exception;
2129
2114
  }
2130
2115
 
@@ -2191,12 +2176,12 @@ static inline bool _INPLACE_OPERATION_SUB_INT_LONG(PyObject **operand1, PyObject
2191
2176
  goto exit_inplace_result_object;
2192
2177
  }
2193
2178
 
2194
- Py_DECREF(x);
2179
+ Py_DECREF_IMMORTAL(x);
2195
2180
  }
2196
2181
 
2197
2182
  // Statically recognized that coercion is not possible with these types
2198
2183
 
2199
- PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -: 'int' and 'long'");
2184
+ PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -=: 'int' and 'long'");
2200
2185
  goto exit_inplace_exception;
2201
2186
  }
2202
2187
 
@@ -2323,8 +2308,8 @@ static inline bool _INPLACE_OPERATION_SUB_LONG_DIGIT(PyObject **operand1, long o
2323
2308
 
2324
2309
  PyLongObject *operand1_long_object = (PyLongObject *)*operand1;
2325
2310
 
2326
- if (Py_ABS(Py_SIZE(operand1_long_object)) <= 1 && (operand2 == 0 ? 0 : 1) <= 1) {
2327
- long r = MEDIUM_VALUE(operand1_long_object) - (sdigit)operand2;
2311
+ if (Nuitka_LongGetDigitSize(operand1_long_object) <= 1 && (operand2 == 0 ? 0 : 1) <= 1) {
2312
+ long r = (long)(MEDIUM_VALUE(operand1_long_object) - (sdigit)operand2);
2328
2313
 
2329
2314
  if (Py_REFCNT(*operand1) == 1) {
2330
2315
  Nuitka_LongUpdateFromCLong(&*operand1, r);
@@ -2343,7 +2328,7 @@ static inline bool _INPLACE_OPERATION_SUB_LONG_DIGIT(PyObject **operand1, long o
2343
2328
  digit const *b_digits = (digit *)&operand2;
2344
2329
  Py_ssize_t b_digit_count = (operand2 == 0 ? 0 : 1);
2345
2330
 
2346
- bool a_negative = Py_SIZE(operand1_long_object) < 0;
2331
+ bool a_negative = Nuitka_LongIsNegative(operand1_long_object);
2347
2332
  bool b_negative = operand2 < 0;
2348
2333
 
2349
2334
  if (a_negative) {
@@ -2351,7 +2336,7 @@ static inline bool _INPLACE_OPERATION_SUB_LONG_DIGIT(PyObject **operand1, long o
2351
2336
  *operand1 = _Nuitka_LongSubInplaceDigits(*operand1, b_digits, b_digit_count, -1);
2352
2337
  } else {
2353
2338
  *operand1 = _Nuitka_LongAddInplaceDigits(*operand1, b_digits, b_digit_count);
2354
- Py_SET_SIZE(*operand1, -Py_ABS(Py_SIZE(*operand1)));
2339
+ Nuitka_LongSetSignNegative(*operand1);
2355
2340
  }
2356
2341
  } else {
2357
2342
  if (b_negative) {
@@ -2366,9 +2351,9 @@ static inline bool _INPLACE_OPERATION_SUB_LONG_DIGIT(PyObject **operand1, long o
2366
2351
  {
2367
2352
  PyLongObject *z;
2368
2353
 
2369
- digit const *a_digits = operand1_long_object->ob_digit;
2370
- Py_ssize_t a_digit_count = Py_ABS(Py_SIZE(operand1_long_object));
2371
- bool a_negative = Py_SIZE(operand1_long_object) < 0;
2354
+ digit const *a_digits = Nuitka_LongGetDigitPointer(operand1_long_object);
2355
+ Py_ssize_t a_digit_count = Nuitka_LongGetDigitSize(operand1_long_object);
2356
+ bool a_negative = Nuitka_LongIsNegative(operand1_long_object);
2372
2357
  digit const *b_digits = (digit *)&operand2;
2373
2358
  Py_ssize_t b_digit_count = (operand2 == 0 ? 0 : 1);
2374
2359
  bool b_negative = operand2 < 0;
@@ -2380,7 +2365,7 @@ static inline bool _INPLACE_OPERATION_SUB_LONG_DIGIT(PyObject **operand1, long o
2380
2365
  z = _Nuitka_LongAddDigits(a_digits, a_digit_count, b_digits, b_digit_count);
2381
2366
  }
2382
2367
 
2383
- Py_SET_SIZE(z, -(Py_SIZE(z)));
2368
+ Nuitka_LongFlipSign(z);
2384
2369
  } else {
2385
2370
  if (b_negative) {
2386
2371
  z = _Nuitka_LongAddDigits(a_digits, a_digit_count, b_digits, b_digit_count);
@@ -2583,7 +2568,7 @@ static inline bool _INPLACE_OPERATION_SUB_OBJECT_OBJECT(PyObject **operand1, PyO
2583
2568
  goto exit_inplace_result_object;
2584
2569
  }
2585
2570
 
2586
- Py_DECREF(x);
2571
+ Py_DECREF_IMMORTAL(x);
2587
2572
  }
2588
2573
 
2589
2574
  {
@@ -2612,7 +2597,7 @@ static inline bool _INPLACE_OPERATION_SUB_OBJECT_OBJECT(PyObject **operand1, PyO
2612
2597
  goto exit_inplace_result_object;
2613
2598
  }
2614
2599
 
2615
- Py_DECREF(x);
2600
+ Py_DECREF_IMMORTAL(x);
2616
2601
  slot2 = NULL;
2617
2602
  }
2618
2603
  }
@@ -2624,7 +2609,7 @@ static inline bool _INPLACE_OPERATION_SUB_OBJECT_OBJECT(PyObject **operand1, PyO
2624
2609
  goto exit_inplace_result_object;
2625
2610
  }
2626
2611
 
2627
- Py_DECREF(x);
2612
+ Py_DECREF_IMMORTAL(x);
2628
2613
  }
2629
2614
 
2630
2615
  if (slot2 != NULL) {
@@ -2635,7 +2620,7 @@ static inline bool _INPLACE_OPERATION_SUB_OBJECT_OBJECT(PyObject **operand1, PyO
2635
2620
  goto exit_inplace_result_object;
2636
2621
  }
2637
2622
 
2638
- Py_DECREF(x);
2623
+ Py_DECREF_IMMORTAL(x);
2639
2624
  }
2640
2625
 
2641
2626
  #if PYTHON_VERSION < 0x300
@@ -2713,7 +2698,7 @@ static inline bool _INPLACE_OPERATION_SUB_OBJECT_OBJECT(PyObject **operand1, PyO
2713
2698
  }
2714
2699
  #endif
2715
2700
 
2716
- PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -: '%s' and '%s'", type1->tp_name,
2701
+ PyErr_Format(PyExc_TypeError, "unsupported operand type(s) for -=: '%s' and '%s'", type1->tp_name,
2717
2702
  type2->tp_name);
2718
2703
  goto exit_inplace_exception;
2719
2704
  }
@@ -2739,3 +2724,18 @@ exit_inplace_exception:
2739
2724
  bool INPLACE_OPERATION_SUB_OBJECT_OBJECT(PyObject **operand1, PyObject *operand2) {
2740
2725
  return _INPLACE_OPERATION_SUB_OBJECT_OBJECT(operand1, operand2);
2741
2726
  }
2727
+
2728
+ // Part of "Nuitka", an optimizing Python compiler that is compatible and
2729
+ // integrates with CPython, but also works on its own.
2730
+ //
2731
+ // Licensed under the Apache License, Version 2.0 (the "License");
2732
+ // you may not use this file except in compliance with the License.
2733
+ // You may obtain a copy of the License at
2734
+ //
2735
+ // http://www.apache.org/licenses/LICENSE-2.0
2736
+ //
2737
+ // Unless required by applicable law or agreed to in writing, software
2738
+ // distributed under the License is distributed on an "AS IS" BASIS,
2739
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2740
+ // See the License for the specific language governing permissions and
2741
+ // limitations under the License.