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

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

Potentially problematic release.


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

Files changed (728) hide show
  1. Nuitka_winsvc-1.8.data/scripts/nuitka-run.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka-run.cmd +9 -9
  2. Nuitka_winsvc-1.8.data/scripts/nuitka.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka.cmd +15 -15
  3. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/METADATA +5 -3
  4. Nuitka_winsvc-2.5.1.dist-info/RECORD +977 -0
  5. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/WHEEL +1 -1
  6. nuitka/Builtins.py +49 -17
  7. nuitka/BytecodeCaching.py +24 -20
  8. nuitka/Bytecodes.py +23 -19
  9. nuitka/CacheCleanup.py +28 -23
  10. nuitka/Constants.py +19 -17
  11. nuitka/Errors.py +23 -17
  12. nuitka/HardImportRegistry.py +408 -0
  13. nuitka/MainControl.py +209 -116
  14. nuitka/ModuleRegistry.py +83 -20
  15. nuitka/OptionParsing.py +467 -221
  16. nuitka/Options.py +701 -225
  17. nuitka/OutputDirectories.py +47 -23
  18. nuitka/PostProcessing.py +133 -79
  19. nuitka/Progress.py +73 -24
  20. nuitka/PythonFlavors.py +141 -32
  21. nuitka/PythonOperators.py +18 -17
  22. nuitka/PythonVersions.py +107 -19
  23. nuitka/Serialization.py +70 -55
  24. nuitka/SourceCodeReferences.py +19 -17
  25. nuitka/Tracing.py +176 -70
  26. nuitka/TreeXML.py +31 -26
  27. nuitka/Variables.py +39 -41
  28. nuitka/Version.py +22 -8
  29. nuitka/__init__.py +5 -4
  30. nuitka/__main__.py +95 -29
  31. nuitka/__past__.py +44 -34
  32. nuitka/build/Backend.scons +243 -141
  33. nuitka/build/CCompilerVersion.scons +45 -31
  34. nuitka/build/DataComposerInterface.py +20 -17
  35. nuitka/build/Onefile.scons +56 -54
  36. nuitka/build/SconsCaching.py +105 -92
  37. nuitka/build/SconsCompilerSettings.py +167 -68
  38. nuitka/build/SconsHacks.py +25 -19
  39. nuitka/build/SconsInterface.py +155 -54
  40. nuitka/build/SconsProgress.py +19 -18
  41. nuitka/build/SconsSpawn.py +62 -33
  42. nuitka/build/SconsUtils.py +152 -55
  43. nuitka/build/__init__.py +5 -4
  44. nuitka/build/include/nuitka/allocator.h +228 -22
  45. nuitka/build/include/nuitka/builtins.h +17 -17
  46. nuitka/build/include/nuitka/calling.h +24 -24
  47. nuitka/build/include/nuitka/checkers.h +17 -18
  48. nuitka/build/include/nuitka/checksum_tools.h +14 -19
  49. nuitka/build/include/nuitka/compiled_asyncgen.h +28 -25
  50. nuitka/build/include/nuitka/compiled_cell.h +33 -18
  51. nuitka/build/include/nuitka/compiled_coroutine.h +18 -18
  52. nuitka/build/include/nuitka/compiled_frame.h +93 -54
  53. nuitka/build/include/nuitka/compiled_function.h +42 -20
  54. nuitka/build/include/nuitka/compiled_generator.h +24 -18
  55. nuitka/build/include/nuitka/compiled_method.h +17 -18
  56. nuitka/build/include/nuitka/constants.h +35 -18
  57. nuitka/build/include/nuitka/constants_blob.h +17 -17
  58. nuitka/build/include/nuitka/debug_settings.h +60 -0
  59. nuitka/build/include/nuitka/environment_variables.h +30 -0
  60. nuitka/build/include/nuitka/environment_variables_system.h +45 -0
  61. nuitka/build/include/nuitka/exception_groups.h +23 -26
  62. nuitka/build/include/nuitka/exceptions.h +717 -171
  63. nuitka/build/include/nuitka/filesystem_paths.h +26 -20
  64. nuitka/build/include/nuitka/freelists.h +38 -18
  65. nuitka/build/include/nuitka/helper/attributes.h +24 -22
  66. nuitka/build/include/nuitka/helper/boolean.h +17 -17
  67. nuitka/build/include/nuitka/helper/bytearrays.h +17 -17
  68. nuitka/build/include/nuitka/helper/bytes.h +14 -15
  69. nuitka/build/include/nuitka/helper/calling_generated.h +69 -69
  70. nuitka/build/include/nuitka/helper/comparisons_dual_eq.h +47 -0
  71. nuitka/build/include/nuitka/helper/comparisons_dual_ge.h +39 -0
  72. nuitka/build/include/nuitka/helper/comparisons_dual_gt.h +39 -0
  73. nuitka/build/include/nuitka/helper/comparisons_dual_le.h +47 -0
  74. nuitka/build/include/nuitka/helper/comparisons_dual_lt.h +47 -0
  75. nuitka/build/include/nuitka/helper/comparisons_dual_ne.h +39 -0
  76. nuitka/build/include/nuitka/helper/comparisons_eq.h +17 -17
  77. nuitka/build/include/nuitka/helper/comparisons_ge.h +17 -17
  78. nuitka/build/include/nuitka/helper/comparisons_gt.h +17 -17
  79. nuitka/build/include/nuitka/helper/comparisons_le.h +17 -17
  80. nuitka/build/include/nuitka/helper/comparisons_lt.h +17 -17
  81. nuitka/build/include/nuitka/helper/comparisons_ne.h +17 -17
  82. nuitka/build/include/nuitka/helper/complex.h +17 -17
  83. nuitka/build/include/nuitka/helper/dictionaries.h +89 -51
  84. nuitka/build/include/nuitka/helper/floats.h +17 -18
  85. nuitka/build/include/nuitka/helper/import_hard.h +25 -17
  86. nuitka/build/include/nuitka/helper/indexes.h +17 -18
  87. nuitka/build/include/nuitka/helper/ints.h +115 -54
  88. nuitka/build/include/nuitka/helper/iterators.h +99 -51
  89. nuitka/build/include/nuitka/helper/lists.h +26 -24
  90. nuitka/build/include/nuitka/helper/lists_generated.h +22 -22
  91. nuitka/build/include/nuitka/helper/mappings.h +17 -18
  92. nuitka/build/include/nuitka/helper/operations.h +20 -17
  93. nuitka/build/include/nuitka/helper/operations_binary_add.h +23 -17
  94. nuitka/build/include/nuitka/helper/operations_binary_bitand.h +17 -17
  95. nuitka/build/include/nuitka/helper/operations_binary_bitor.h +17 -17
  96. nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +17 -17
  97. nuitka/build/include/nuitka/helper/operations_binary_divmod.h +17 -17
  98. nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
  99. nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +17 -17
  100. nuitka/build/include/nuitka/helper/operations_binary_lshift.h +17 -17
  101. nuitka/build/include/nuitka/helper/operations_binary_matmult.h +17 -17
  102. nuitka/build/include/nuitka/helper/operations_binary_mod.h +17 -17
  103. nuitka/build/include/nuitka/helper/operations_binary_mult.h +17 -17
  104. nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +17 -17
  105. nuitka/build/include/nuitka/helper/operations_binary_pow.h +17 -17
  106. nuitka/build/include/nuitka/helper/operations_binary_rshift.h +17 -17
  107. nuitka/build/include/nuitka/helper/operations_binary_sub.h +23 -17
  108. nuitka/build/include/nuitka/helper/operations_binary_truediv.h +17 -17
  109. nuitka/build/include/nuitka/helper/operations_builtin_types.h +17 -17
  110. nuitka/build/include/nuitka/helper/operations_inplace_add.h +20 -17
  111. nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +17 -17
  112. nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +17 -17
  113. nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +17 -17
  114. nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +17 -17
  115. nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +17 -17
  116. nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +17 -17
  117. nuitka/build/include/nuitka/helper/operations_inplace_mod.h +17 -17
  118. nuitka/build/include/nuitka/helper/operations_inplace_mult.h +17 -17
  119. nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +17 -17
  120. nuitka/build/include/nuitka/helper/operations_inplace_pow.h +17 -17
  121. nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +17 -17
  122. nuitka/build/include/nuitka/helper/operations_inplace_sub.h +20 -17
  123. nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
  124. nuitka/build/include/nuitka/helper/raising.h +68 -37
  125. nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
  126. nuitka/build/include/nuitka/helper/richcomparisons.h +21 -14
  127. nuitka/build/include/nuitka/helper/sequences.h +19 -13
  128. nuitka/build/include/nuitka/helper/sets.h +11 -12
  129. nuitka/build/include/nuitka/helper/slices.h +31 -25
  130. nuitka/build/include/nuitka/helper/strings.h +16 -17
  131. nuitka/build/include/nuitka/helper/subscripts.h +18 -201
  132. nuitka/build/include/nuitka/helper/tuples.h +64 -52
  133. nuitka/build/include/nuitka/helpers.h +50 -22
  134. nuitka/build/include/nuitka/importing.h +28 -21
  135. nuitka/build/include/nuitka/jit_sources.h +25 -0
  136. nuitka/build/include/nuitka/prelude.h +163 -71
  137. nuitka/build/include/nuitka/printing.h +29 -22
  138. nuitka/build/include/nuitka/python_pgo.h +19 -18
  139. nuitka/build/include/nuitka/safe_string_ops.h +20 -18
  140. nuitka/build/include/nuitka/threading.h +45 -32
  141. nuitka/build/include/nuitka/tracing.h +28 -18
  142. nuitka/build/include/nuitka/type_aliases.h +30 -0
  143. nuitka/build/include/nuitka/unfreezing.h +29 -23
  144. nuitka/build/inline_copy/bin/scons.py +14 -0
  145. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +6 -6
  146. nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +0 -3
  147. nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
  148. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
  149. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
  150. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
  151. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
  152. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
  153. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
  154. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
  155. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
  156. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
  157. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
  158. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
  159. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
  160. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
  161. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
  162. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
  163. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
  164. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
  165. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
  166. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
  167. nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
  168. nuitka/build/inline_copy/stubgen/astunparse.py +938 -0
  169. nuitka/build/inline_copy/stubgen/six.py +998 -0
  170. nuitka/build/inline_copy/stubgen/stubgen.py +307 -0
  171. nuitka/build/inline_copy/tqdm/tqdm/__init__.py +2 -2
  172. nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +4 -1
  173. nuitka/build/inline_copy/tqdm/tqdm/utils.py +14 -8
  174. nuitka/build/inline_copy/tqdm/tqdm/version.py +1 -8
  175. nuitka/build/inline_copy/zlib/LICENSE +22 -0
  176. nuitka/build/inline_copy/zlib/crc32.c +1049 -0
  177. nuitka/build/inline_copy/zlib/crc32.h +9446 -0
  178. nuitka/build/inline_copy/zlib/zconf.h +551 -0
  179. nuitka/build/inline_copy/zlib/zlib.h +1938 -0
  180. nuitka/build/inline_copy/zlib/zutil.h +275 -0
  181. nuitka/build/static_src/CompiledAsyncgenType.c +221 -221
  182. nuitka/build/static_src/CompiledCellType.c +69 -44
  183. nuitka/build/static_src/CompiledCodeHelpers.c +276 -159
  184. nuitka/build/static_src/CompiledCoroutineType.c +229 -226
  185. nuitka/build/static_src/CompiledFrameType.c +323 -138
  186. nuitka/build/static_src/CompiledFunctionType.c +547 -231
  187. nuitka/build/static_src/CompiledGeneratorType.c +416 -290
  188. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +593 -228
  189. nuitka/build/static_src/CompiledMethodType.c +91 -82
  190. nuitka/build/static_src/HelpersAllocator.c +352 -45
  191. nuitka/build/static_src/HelpersAttributes.c +30 -72
  192. nuitka/build/static_src/HelpersBuiltin.c +65 -46
  193. nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
  194. nuitka/build/static_src/HelpersBytes.c +19 -20
  195. nuitka/build/static_src/HelpersCalling.c +40 -37
  196. nuitka/build/static_src/HelpersCallingGenerated.c +1061 -242
  197. nuitka/build/static_src/HelpersChecksumTools.c +35 -21
  198. nuitka/build/static_src/HelpersClasses.c +17 -17
  199. nuitka/build/static_src/HelpersComparisonDualEq.c +183 -0
  200. nuitka/build/static_src/HelpersComparisonDualGe.c +121 -0
  201. nuitka/build/static_src/HelpersComparisonDualGt.c +121 -0
  202. nuitka/build/static_src/HelpersComparisonDualLe.c +183 -0
  203. nuitka/build/static_src/HelpersComparisonDualLt.c +183 -0
  204. nuitka/build/static_src/HelpersComparisonDualNe.c +121 -0
  205. nuitka/build/static_src/HelpersComparisonEq.c +536 -496
  206. nuitka/build/static_src/HelpersComparisonEqUtils.c +22 -19
  207. nuitka/build/static_src/HelpersComparisonGe.c +531 -501
  208. nuitka/build/static_src/HelpersComparisonGt.c +530 -500
  209. nuitka/build/static_src/HelpersComparisonLe.c +531 -501
  210. nuitka/build/static_src/HelpersComparisonLt.c +530 -500
  211. nuitka/build/static_src/HelpersComparisonNe.c +538 -496
  212. nuitka/build/static_src/HelpersConsole.c +122 -0
  213. nuitka/build/static_src/HelpersConstantsBlob.c +550 -521
  214. nuitka/build/static_src/HelpersDeepcopy.c +33 -33
  215. nuitka/build/static_src/HelpersDictionaries.c +232 -63
  216. nuitka/build/static_src/HelpersDictionariesGenerated.c +130 -127
  217. nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
  218. nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
  219. nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +93 -0
  220. nuitka/build/static_src/HelpersExceptions.c +147 -62
  221. nuitka/build/static_src/HelpersFiles.c +116 -22
  222. nuitka/build/static_src/HelpersFilesystemPaths.c +292 -181
  223. nuitka/build/static_src/HelpersFloats.c +37 -31
  224. nuitka/build/static_src/HelpersHeapStorage.c +21 -17
  225. nuitka/build/static_src/HelpersImport.c +61 -29
  226. nuitka/build/static_src/HelpersImportHard.c +74 -61
  227. nuitka/build/static_src/HelpersJitSources.c +46 -0
  228. nuitka/build/static_src/HelpersLists.c +237 -58
  229. nuitka/build/static_src/HelpersListsGenerated.c +41 -41
  230. nuitka/build/static_src/HelpersMappings.c +17 -17
  231. nuitka/build/static_src/HelpersMatching.c +137 -51
  232. nuitka/build/static_src/HelpersOperationBinaryAdd.c +397 -152
  233. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +102 -52
  234. nuitka/build/static_src/HelpersOperationBinaryBitand.c +55 -55
  235. nuitka/build/static_src/HelpersOperationBinaryBitor.c +55 -55
  236. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +55 -55
  237. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +49 -43
  238. nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
  239. nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
  240. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +55 -49
  241. nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +20 -21
  242. nuitka/build/static_src/HelpersOperationBinaryLshift.c +83 -83
  243. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +25 -24
  244. nuitka/build/static_src/HelpersOperationBinaryMod.c +129 -117
  245. nuitka/build/static_src/HelpersOperationBinaryMult.c +98 -82
  246. nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +33 -30
  247. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +55 -49
  248. nuitka/build/static_src/HelpersOperationBinaryPow.c +68 -68
  249. nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
  250. nuitka/build/static_src/HelpersOperationBinaryRshift.c +51 -51
  251. nuitka/build/static_src/HelpersOperationBinarySub.c +309 -88
  252. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +49 -43
  253. nuitka/build/static_src/HelpersOperationInplaceAdd.c +333 -163
  254. nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +24 -22
  255. nuitka/build/static_src/HelpersOperationInplaceBitand.c +58 -58
  256. nuitka/build/static_src/HelpersOperationInplaceBitor.c +58 -58
  257. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +58 -58
  258. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +73 -68
  259. nuitka/build/static_src/HelpersOperationInplaceLshift.c +64 -64
  260. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +38 -37
  261. nuitka/build/static_src/HelpersOperationInplaceMod.c +145 -140
  262. nuitka/build/static_src/HelpersOperationInplaceMult.c +89 -84
  263. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +73 -68
  264. nuitka/build/static_src/HelpersOperationInplacePow.c +82 -82
  265. nuitka/build/static_src/HelpersOperationInplaceRshift.c +48 -48
  266. nuitka/build/static_src/HelpersOperationInplaceSub.c +275 -122
  267. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +68 -63
  268. nuitka/build/static_src/HelpersProfiling.c +25 -24
  269. nuitka/build/static_src/HelpersPythonPgo.c +22 -22
  270. nuitka/build/static_src/HelpersRaising.c +296 -283
  271. nuitka/build/static_src/HelpersSafeStrings.c +34 -22
  272. nuitka/build/static_src/HelpersSequences.c +18 -19
  273. nuitka/build/static_src/HelpersSlices.c +29 -23
  274. nuitka/build/static_src/HelpersStrings.c +235 -38
  275. nuitka/build/static_src/HelpersTuples.c +46 -34
  276. nuitka/build/static_src/HelpersTypes.c +166 -25
  277. nuitka/build/static_src/InspectPatcher.c +108 -27
  278. nuitka/build/static_src/MainProgram.c +464 -280
  279. nuitka/build/static_src/MetaPathBasedLoader.c +381 -257
  280. nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +39 -26
  281. nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
  282. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +227 -29
  283. nuitka/build/static_src/OnefileBootstrap.c +281 -164
  284. nuitka/build/static_src/OnefileSplashScreen.cpp +51 -27
  285. nuitka/code_generation/AsyncgenCodes.py +21 -23
  286. nuitka/code_generation/AttributeCodes.py +31 -27
  287. nuitka/code_generation/BinaryOperationHelperDefinitions.py +290 -184
  288. nuitka/code_generation/BranchCodes.py +19 -17
  289. nuitka/code_generation/BuiltinCodes.py +29 -18
  290. nuitka/code_generation/CallCodes.py +35 -33
  291. nuitka/code_generation/ClassCodes.py +19 -17
  292. nuitka/code_generation/CodeGeneration.py +61 -28
  293. nuitka/code_generation/CodeHelperSelection.py +20 -18
  294. nuitka/code_generation/CodeHelpers.py +28 -21
  295. nuitka/code_generation/CodeObjectCodes.py +36 -26
  296. nuitka/code_generation/ComparisonCodes.py +51 -22
  297. nuitka/code_generation/ComparisonHelperDefinitions.py +42 -25
  298. nuitka/code_generation/ConditionalCodes.py +19 -17
  299. nuitka/code_generation/ConstantCodes.py +82 -28
  300. nuitka/code_generation/Contexts.py +180 -42
  301. nuitka/code_generation/CoroutineCodes.py +21 -23
  302. nuitka/code_generation/CtypesCodes.py +19 -17
  303. nuitka/code_generation/DictCodes.py +28 -26
  304. nuitka/code_generation/Emission.py +21 -18
  305. nuitka/code_generation/ErrorCodes.py +57 -79
  306. nuitka/code_generation/EvalCodes.py +24 -20
  307. nuitka/code_generation/ExceptionCodes.py +182 -104
  308. nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +45 -27
  309. nuitka/code_generation/ExpressionCodes.py +19 -17
  310. nuitka/code_generation/FrameCodes.py +28 -31
  311. nuitka/code_generation/FunctionCodes.py +26 -27
  312. nuitka/code_generation/GeneratorCodes.py +25 -26
  313. nuitka/code_generation/GlobalConstants.py +51 -25
  314. nuitka/code_generation/GlobalsLocalsCodes.py +23 -21
  315. nuitka/code_generation/IdCodes.py +19 -17
  316. nuitka/code_generation/ImportCodes.py +90 -50
  317. nuitka/code_generation/Indentation.py +23 -22
  318. nuitka/code_generation/IndexCodes.py +19 -17
  319. nuitka/code_generation/InjectCCodes.py +14 -12
  320. nuitka/code_generation/IntegerCodes.py +19 -17
  321. nuitka/code_generation/IteratorCodes.py +86 -71
  322. nuitka/code_generation/JitCodes.py +44 -0
  323. nuitka/code_generation/LabelCodes.py +19 -17
  324. nuitka/code_generation/LineNumberCodes.py +20 -20
  325. nuitka/code_generation/ListCodes.py +32 -36
  326. nuitka/code_generation/LoaderCodes.py +22 -17
  327. nuitka/code_generation/LocalsDictCodes.py +56 -32
  328. nuitka/code_generation/LoopCodes.py +19 -17
  329. nuitka/code_generation/MatchCodes.py +42 -22
  330. nuitka/code_generation/ModuleCodes.py +71 -29
  331. nuitka/code_generation/Namify.py +27 -23
  332. nuitka/code_generation/NetworkxCodes.py +51 -0
  333. nuitka/code_generation/OperationCodes.py +80 -51
  334. nuitka/code_generation/PackageResourceCodes.py +96 -23
  335. nuitka/code_generation/PrintCodes.py +19 -17
  336. nuitka/code_generation/PythonAPICodes.py +19 -17
  337. nuitka/code_generation/RaisingCodes.py +183 -107
  338. nuitka/code_generation/Reports.py +32 -22
  339. nuitka/code_generation/ReturnCodes.py +20 -32
  340. nuitka/code_generation/SetCodes.py +19 -17
  341. nuitka/code_generation/SliceCodes.py +22 -20
  342. nuitka/code_generation/StringCodes.py +19 -17
  343. nuitka/code_generation/SubscriptCodes.py +24 -30
  344. nuitka/code_generation/TensorflowCodes.py +54 -0
  345. nuitka/code_generation/TryCodes.py +31 -41
  346. nuitka/code_generation/TupleCodes.py +20 -18
  347. nuitka/code_generation/TypeAliasCodes.py +119 -0
  348. nuitka/code_generation/VariableCodes.py +118 -55
  349. nuitka/code_generation/VariableDeclarations.py +28 -25
  350. nuitka/code_generation/YieldCodes.py +23 -21
  351. nuitka/code_generation/__init__.py +5 -4
  352. nuitka/code_generation/c_types/CTypeBases.py +29 -19
  353. nuitka/code_generation/c_types/CTypeBooleans.py +19 -17
  354. nuitka/code_generation/c_types/CTypeCFloats.py +19 -17
  355. nuitka/code_generation/c_types/CTypeCLongs.py +19 -18
  356. nuitka/code_generation/c_types/CTypeModuleDictVariables.py +22 -17
  357. nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +22 -21
  358. nuitka/code_generation/c_types/CTypeNuitkaInts.py +89 -43
  359. nuitka/code_generation/c_types/CTypeNuitkaVoids.py +20 -18
  360. nuitka/code_generation/c_types/CTypePyObjectPointers.py +43 -31
  361. nuitka/code_generation/c_types/CTypeVoids.py +20 -17
  362. nuitka/code_generation/c_types/__init__.py +5 -4
  363. nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +20 -19
  364. nuitka/code_generation/templates/CodeTemplatesConstants.py +143 -39
  365. nuitka/code_generation/templates/CodeTemplatesCoroutines.py +20 -19
  366. nuitka/code_generation/templates/CodeTemplatesExceptions.py +33 -33
  367. nuitka/code_generation/templates/CodeTemplatesFrames.py +36 -27
  368. nuitka/code_generation/templates/CodeTemplatesFunction.py +20 -19
  369. nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +21 -19
  370. nuitka/code_generation/templates/CodeTemplatesIterators.py +19 -53
  371. nuitka/code_generation/templates/CodeTemplatesLoader.py +25 -19
  372. nuitka/code_generation/templates/CodeTemplatesModules.py +278 -169
  373. nuitka/code_generation/templates/CodeTemplatesVariables.py +115 -27
  374. nuitka/code_generation/templates/TemplateDebugWrapper.py +19 -18
  375. nuitka/code_generation/templates/__init__.py +5 -4
  376. nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +19 -19
  377. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +21 -21
  378. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +79 -28
  379. nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +22 -22
  380. nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +19 -19
  381. nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +19 -19
  382. nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +17 -17
  383. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +74 -106
  384. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +19 -20
  385. nuitka/code_generation/templates_c/HelperLongTools.c.j2 +19 -19
  386. nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +6 -6
  387. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +23 -23
  388. nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
  389. nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +35 -35
  390. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +37 -37
  391. nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
  392. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +17 -17
  393. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +18 -18
  394. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +50 -38
  395. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +27 -27
  396. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +37 -37
  397. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +31 -31
  398. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +35 -31
  399. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +20 -20
  400. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +28 -28
  401. nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +17 -17
  402. nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +17 -17
  403. nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +17 -17
  404. nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +48 -48
  405. nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +21 -18
  406. nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +27 -25
  407. nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +17 -17
  408. nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +17 -17
  409. nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +21 -18
  410. nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +17 -17
  411. nuitka/containers/Namedtuples.py +25 -18
  412. nuitka/containers/OrderedSets.py +105 -5
  413. nuitka/containers/OrderedSetsFallback.py +19 -17
  414. nuitka/containers/__init__.py +5 -4
  415. nuitka/distutils/Build.py +33 -18
  416. nuitka/distutils/DistutilCommands.py +84 -33
  417. nuitka/distutils/__init__.py +5 -4
  418. nuitka/finalizations/Finalization.py +21 -18
  419. nuitka/finalizations/FinalizeMarkups.py +31 -55
  420. nuitka/finalizations/__init__.py +5 -4
  421. nuitka/freezer/DependsExe.py +60 -30
  422. nuitka/freezer/DllDependenciesCommon.py +47 -20
  423. nuitka/freezer/DllDependenciesMacOS.py +165 -58
  424. nuitka/freezer/DllDependenciesPosix.py +29 -19
  425. nuitka/freezer/DllDependenciesWin32.py +55 -33
  426. nuitka/freezer/ImportDetection.py +23 -17
  427. nuitka/freezer/IncludedDataFiles.py +142 -48
  428. nuitka/freezer/IncludedEntryPoints.py +104 -39
  429. nuitka/freezer/Onefile.py +32 -22
  430. nuitka/freezer/Standalone.py +166 -53
  431. nuitka/freezer/__init__.py +5 -4
  432. nuitka/importing/IgnoreListing.py +19 -17
  433. nuitka/importing/ImportCache.py +24 -21
  434. nuitka/importing/ImportResolving.py +103 -95
  435. nuitka/importing/Importing.py +319 -98
  436. nuitka/importing/PreloadedPackages.py +21 -18
  437. nuitka/importing/Recursion.py +142 -47
  438. nuitka/importing/StandardLibrary.py +96 -80
  439. nuitka/importing/__init__.py +5 -4
  440. nuitka/nodes/AsyncgenNodes.py +22 -23
  441. nuitka/nodes/AttributeLookupNodes.py +19 -17
  442. nuitka/nodes/AttributeNodes.py +19 -17
  443. nuitka/nodes/AttributeNodesGenerated.py +49 -24
  444. nuitka/nodes/BuiltinAllNodes.py +19 -17
  445. nuitka/nodes/BuiltinAnyNodes.py +19 -17
  446. nuitka/nodes/BuiltinComplexNodes.py +20 -17
  447. nuitka/nodes/BuiltinDecodingNodes.py +19 -17
  448. nuitka/nodes/BuiltinDecoratorNodes.py +19 -17
  449. nuitka/nodes/BuiltinDictNodes.py +19 -17
  450. nuitka/nodes/BuiltinFormatNodes.py +20 -17
  451. nuitka/nodes/BuiltinHashNodes.py +19 -17
  452. nuitka/nodes/BuiltinInputNodes.py +19 -17
  453. nuitka/nodes/BuiltinIntegerNodes.py +19 -17
  454. nuitka/nodes/BuiltinIteratorNodes.py +25 -21
  455. nuitka/nodes/BuiltinLenNodes.py +19 -17
  456. nuitka/nodes/BuiltinNextNodes.py +19 -17
  457. nuitka/nodes/BuiltinOpenNodes.py +52 -18
  458. nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +40 -23
  459. nuitka/nodes/BuiltinRangeNodes.py +21 -19
  460. nuitka/nodes/BuiltinRefNodes.py +73 -40
  461. nuitka/nodes/BuiltinSumNodes.py +20 -18
  462. nuitka/nodes/BuiltinTypeNodes.py +19 -17
  463. nuitka/nodes/BuiltinVarsNodes.py +19 -18
  464. nuitka/nodes/BytesNodes.py +19 -17
  465. nuitka/nodes/CallNodes.py +19 -17
  466. nuitka/nodes/Checkers.py +19 -17
  467. nuitka/nodes/ChildrenHavingMixins.py +1624 -283
  468. nuitka/nodes/ClassNodes.py +49 -29
  469. nuitka/nodes/CodeObjectSpecs.py +29 -18
  470. nuitka/nodes/ComparisonNodes.py +19 -17
  471. nuitka/nodes/ConditionalNodes.py +24 -25
  472. nuitka/nodes/ConstantRefNodes.py +57 -17
  473. nuitka/nodes/ContainerMakingNodes.py +19 -17
  474. nuitka/nodes/ContainerOperationNodes.py +19 -17
  475. nuitka/nodes/CoroutineNodes.py +22 -23
  476. nuitka/nodes/CtypesNodes.py +19 -18
  477. nuitka/nodes/DictionaryNodes.py +19 -18
  478. nuitka/nodes/ExceptionNodes.py +131 -43
  479. nuitka/nodes/ExecEvalNodes.py +19 -17
  480. nuitka/nodes/ExpressionBases.py +34 -26
  481. nuitka/nodes/ExpressionBasesGenerated.py +341 -35
  482. nuitka/nodes/ExpressionShapeMixins.py +19 -17
  483. nuitka/nodes/FrameNodes.py +41 -28
  484. nuitka/nodes/FunctionAttributeNodes.py +19 -17
  485. nuitka/nodes/FunctionNodes.py +84 -38
  486. nuitka/nodes/FutureSpecs.py +35 -20
  487. nuitka/nodes/GeneratorNodes.py +24 -25
  488. nuitka/nodes/GlobalsLocalsNodes.py +22 -17
  489. nuitka/nodes/HardImportNodesGenerated.py +746 -148
  490. nuitka/nodes/ImportHardNodes.py +46 -38
  491. nuitka/nodes/ImportNodes.py +438 -448
  492. nuitka/nodes/IndicatorMixins.py +19 -17
  493. nuitka/nodes/InjectCNodes.py +19 -18
  494. nuitka/nodes/IterationHandles.py +55 -34
  495. nuitka/nodes/KeyValuePairNodes.py +19 -17
  496. nuitka/nodes/ListOperationNodes.py +33 -21
  497. nuitka/nodes/LocalsDictNodes.py +19 -17
  498. nuitka/nodes/LocalsScopes.py +41 -41
  499. nuitka/nodes/LoopNodes.py +28 -17
  500. nuitka/nodes/MatchNodes.py +37 -24
  501. nuitka/nodes/ModuleAttributeNodes.py +18 -35
  502. nuitka/nodes/ModuleNodes.py +90 -31
  503. nuitka/nodes/NetworkxNodes.py +45 -0
  504. nuitka/nodes/NodeBases.py +73 -44
  505. nuitka/nodes/NodeMakingHelpers.py +92 -69
  506. nuitka/nodes/NodeMetaClasses.py +45 -28
  507. nuitka/nodes/OperatorNodes.py +28 -26
  508. nuitka/nodes/OperatorNodesUnary.py +148 -20
  509. nuitka/nodes/OsSysNodes.py +97 -18
  510. nuitka/nodes/OutlineNodes.py +24 -22
  511. nuitka/nodes/PackageMetadataNodes.py +37 -27
  512. nuitka/nodes/PackageResourceNodes.py +29 -23
  513. nuitka/nodes/PrintNodes.py +19 -17
  514. nuitka/nodes/ReturnNodes.py +20 -18
  515. nuitka/nodes/SideEffectNodes.py +19 -17
  516. nuitka/nodes/SliceNodes.py +20 -18
  517. nuitka/nodes/StatementBasesGenerated.py +125 -79
  518. nuitka/nodes/StatementNodes.py +27 -24
  519. nuitka/nodes/StrNodes.py +19 -17
  520. nuitka/nodes/StringConcatenationNodes.py +20 -17
  521. nuitka/nodes/SubscriptNodes.py +27 -25
  522. nuitka/nodes/TensorflowNodes.py +38 -0
  523. nuitka/nodes/TryNodes.py +19 -17
  524. nuitka/nodes/TypeMatchNodes.py +19 -17
  525. nuitka/nodes/TypeNodes.py +68 -18
  526. nuitka/nodes/VariableAssignNodes.py +122 -64
  527. nuitka/nodes/VariableDelNodes.py +19 -17
  528. nuitka/nodes/VariableNameNodes.py +19 -17
  529. nuitka/nodes/VariableRefNodes.py +63 -26
  530. nuitka/nodes/VariableReleaseNodes.py +19 -17
  531. nuitka/nodes/YieldNodes.py +21 -19
  532. nuitka/nodes/__init__.py +5 -4
  533. nuitka/nodes/shapes/BuiltinTypeShapes.py +169 -46
  534. nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
  535. nuitka/nodes/shapes/ShapeMixins.py +57 -17
  536. nuitka/nodes/shapes/StandardShapes.py +80 -21
  537. nuitka/nodes/shapes/__init__.py +5 -4
  538. nuitka/optimizations/BytecodeDemotion.py +21 -18
  539. nuitka/optimizations/FunctionInlining.py +22 -23
  540. nuitka/optimizations/Graphs.py +19 -17
  541. nuitka/optimizations/Optimization.py +39 -35
  542. nuitka/optimizations/OptimizeBuiltinCalls.py +31 -27
  543. nuitka/optimizations/Tags.py +19 -18
  544. nuitka/optimizations/TraceCollections.py +67 -24
  545. nuitka/optimizations/ValueTraces.py +92 -25
  546. nuitka/optimizations/__init__.py +5 -4
  547. nuitka/pgo/PGO.py +33 -23
  548. nuitka/pgo/__init__.py +5 -4
  549. nuitka/plugins/PluginBase.py +655 -112
  550. nuitka/plugins/Plugins.py +247 -61
  551. nuitka/plugins/YamlPluginBase.py +121 -0
  552. nuitka/plugins/__init__.py +5 -4
  553. nuitka/plugins/standard/AntiBloatPlugin.py +374 -135
  554. nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +20 -19
  555. nuitka/plugins/standard/DataFilesPlugin.py +65 -29
  556. nuitka/plugins/standard/DelvewheelPlugin.py +32 -24
  557. nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
  558. nuitka/plugins/standard/DillPlugin/dill-postLoad.py +256 -0
  559. nuitka/plugins/standard/DillPlugin.py +42 -134
  560. nuitka/plugins/standard/DllFilesPlugin.py +125 -42
  561. nuitka/plugins/standard/EnumPlugin.py +19 -17
  562. nuitka/plugins/standard/EventletPlugin.py +19 -17
  563. nuitka/plugins/standard/GeventPlugin.py +19 -17
  564. nuitka/plugins/standard/GiPlugin.py +44 -28
  565. nuitka/plugins/standard/GlfwPlugin.py +20 -17
  566. nuitka/plugins/standard/ImplicitImports.py +403 -54
  567. nuitka/plugins/standard/KivyPlugin.py +24 -20
  568. nuitka/plugins/standard/MatplotlibPlugin.py +99 -42
  569. nuitka/plugins/standard/MultiprocessingPlugin.py +35 -39
  570. nuitka/plugins/standard/NumpyPlugin.py +19 -17
  571. nuitka/plugins/standard/OptionsNannyPlugin.py +48 -76
  572. nuitka/plugins/standard/PbrPlugin.py +21 -19
  573. nuitka/plugins/standard/PkgResourcesPlugin.py +34 -23
  574. nuitka/plugins/standard/PlaywrightPlugin.py +184 -0
  575. nuitka/plugins/standard/PmwPlugin.py +30 -27
  576. nuitka/plugins/standard/PySidePyQtPlugin.py +82 -80
  577. nuitka/plugins/standard/PywebViewPlugin.py +19 -17
  578. nuitka/plugins/standard/SpacyPlugin.py +136 -0
  579. nuitka/plugins/standard/TensorflowPlugin.py +20 -17
  580. nuitka/plugins/standard/TkinterPlugin.py +102 -108
  581. nuitka/plugins/standard/TorchPlugin.py +20 -17
  582. nuitka/plugins/standard/TransformersPlugin.py +90 -231
  583. nuitka/plugins/standard/TrioPlugin.py +18 -15
  584. nuitka/plugins/standard/UpxPlugin.py +21 -19
  585. nuitka/plugins/standard/__init__.py +5 -4
  586. nuitka/plugins/standard/standard.nuitka-package.config.yml +3925 -1293
  587. nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +14 -14
  588. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +154 -66
  589. nuitka/reports/CompilationReportReader.py +79 -0
  590. nuitka/reports/LicenseReport.rst.j2 +21 -21
  591. nuitka/reports/Reports.py +363 -76
  592. nuitka/reports/__init__.py +5 -4
  593. nuitka/specs/BuiltinBytesOperationSpecs.py +18 -17
  594. nuitka/specs/BuiltinDictOperationSpecs.py +18 -17
  595. nuitka/specs/BuiltinListOperationSpecs.py +18 -17
  596. nuitka/specs/BuiltinParameterSpecs.py +35 -21
  597. nuitka/specs/BuiltinStrOperationSpecs.py +19 -18
  598. nuitka/specs/BuiltinTypeOperationSpecs.py +18 -18
  599. nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
  600. nuitka/specs/HardImportSpecs.py +74 -22
  601. nuitka/specs/ParameterSpecs.py +60 -45
  602. nuitka/specs/__init__.py +5 -4
  603. nuitka/tools/Basics.py +20 -18
  604. nuitka/tools/__init__.py +5 -4
  605. nuitka/tools/commercial/__init__.py +7 -6
  606. nuitka/tools/data_composer/DataComposer.py +78 -62
  607. nuitka/tools/data_composer/__init__.py +5 -4
  608. nuitka/tools/data_composer/__main__.py +18 -17
  609. nuitka/tools/environments/CreateEnvironment.py +20 -17
  610. nuitka/tools/environments/Virtualenv.py +60 -32
  611. nuitka/tools/environments/__init__.py +5 -4
  612. nuitka/tools/general/__init__.py +5 -4
  613. nuitka/tools/general/dll_report/__init__.py +5 -4
  614. nuitka/tools/general/dll_report/__main__.py +29 -22
  615. nuitka/tools/general/find_module/FindModuleCode.py +35 -22
  616. nuitka/tools/general/find_module/__init__.py +5 -4
  617. nuitka/tools/onefile_compressor/OnefileCompressor.py +213 -131
  618. nuitka/tools/onefile_compressor/__init__.py +5 -4
  619. nuitka/tools/onefile_compressor/__main__.py +18 -17
  620. nuitka/tools/podman/Podman.py +19 -17
  621. nuitka/tools/podman/__init__.py +5 -4
  622. nuitka/tools/podman/__main__.py +35 -19
  623. nuitka/tools/profiler/__init__.py +5 -4
  624. nuitka/tools/profiler/__main__.py +18 -17
  625. nuitka/tools/scanning/DisplayPackageDLLs.py +47 -22
  626. nuitka/tools/scanning/DisplayPackageData.py +31 -19
  627. nuitka/tools/scanning/__init__.py +5 -4
  628. nuitka/tools/specialize/CTypeDescriptions.py +251 -80
  629. nuitka/tools/specialize/Common.py +18 -17
  630. nuitka/tools/specialize/SpecializeC.py +248 -82
  631. nuitka/tools/specialize/SpecializePython.py +108 -45
  632. nuitka/tools/specialize/__init__.py +5 -4
  633. nuitka/tools/testing/Common.py +175 -114
  634. nuitka/tools/testing/Constructs.py +19 -17
  635. nuitka/tools/testing/OutputComparison.py +54 -18
  636. nuitka/tools/testing/Pythons.py +19 -18
  637. nuitka/tools/testing/RuntimeTracing.py +20 -19
  638. nuitka/tools/testing/SearchModes.py +26 -20
  639. nuitka/tools/testing/Valgrind.py +19 -17
  640. nuitka/tools/testing/__init__.py +5 -4
  641. nuitka/tools/testing/check_reference_counts/__init__.py +5 -4
  642. nuitka/tools/testing/check_reference_counts/__main__.py +18 -18
  643. nuitka/tools/testing/compare_with_cpython/__init__.py +5 -4
  644. nuitka/tools/testing/compare_with_cpython/__main__.py +39 -30
  645. nuitka/tools/testing/find_sxs_modules/__init__.py +5 -4
  646. nuitka/tools/testing/find_sxs_modules/__main__.py +17 -17
  647. nuitka/tools/testing/measure_construct_performance/__init__.py +5 -4
  648. nuitka/tools/testing/measure_construct_performance/__main__.py +23 -33
  649. nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
  650. nuitka/tools/testing/run_nuitka_tests/__main__.py +134 -51
  651. nuitka/tools/watch/AutoStage.py +145 -0
  652. nuitka/tools/watch/GitHub.py +113 -0
  653. nuitka/tools/watch/__init__.py +5 -4
  654. nuitka/tools/watch/__main__.py +322 -91
  655. nuitka/tree/Building.py +184 -182
  656. nuitka/tree/ComplexCallHelperFunctions.py +84 -58
  657. nuitka/tree/Extractions.py +19 -17
  658. nuitka/tree/InternalModule.py +29 -20
  659. nuitka/tree/Operations.py +19 -17
  660. nuitka/tree/ReformulationAssertStatements.py +51 -31
  661. nuitka/tree/ReformulationAssignmentStatements.py +96 -91
  662. nuitka/tree/ReformulationBooleanExpressions.py +19 -17
  663. nuitka/tree/ReformulationCallExpressions.py +20 -18
  664. nuitka/tree/ReformulationClasses.py +45 -39
  665. nuitka/tree/ReformulationClasses3.py +239 -116
  666. nuitka/tree/ReformulationComparisonExpressions.py +29 -35
  667. nuitka/tree/ReformulationContractionExpressions.py +58 -55
  668. nuitka/tree/ReformulationDictionaryCreation.py +41 -35
  669. nuitka/tree/ReformulationExecStatements.py +42 -39
  670. nuitka/tree/ReformulationForLoopStatements.py +30 -34
  671. nuitka/tree/ReformulationFunctionStatements.py +59 -55
  672. nuitka/tree/ReformulationImportStatements.py +34 -29
  673. nuitka/tree/ReformulationLambdaExpressions.py +23 -24
  674. nuitka/tree/ReformulationMatchStatements.py +246 -92
  675. nuitka/tree/ReformulationMultidist.py +22 -18
  676. nuitka/tree/ReformulationNamespacePackages.py +55 -46
  677. nuitka/tree/ReformulationPrintStatements.py +23 -24
  678. nuitka/tree/ReformulationSequenceCreation.py +50 -49
  679. nuitka/tree/ReformulationSubscriptExpressions.py +19 -17
  680. nuitka/tree/ReformulationTryExceptStatements.py +19 -17
  681. nuitka/tree/ReformulationTryFinallyStatements.py +34 -17
  682. nuitka/tree/ReformulationWhileLoopStatements.py +19 -17
  683. nuitka/tree/ReformulationWithStatements.py +39 -41
  684. nuitka/tree/ReformulationYieldExpressions.py +44 -24
  685. nuitka/tree/SourceHandling.py +76 -31
  686. nuitka/tree/SyntaxErrors.py +19 -17
  687. nuitka/tree/TreeHelpers.py +33 -20
  688. nuitka/tree/VariableClosure.py +35 -39
  689. nuitka/tree/__init__.py +5 -4
  690. nuitka/utils/AppDirs.py +41 -20
  691. nuitka/utils/CStrings.py +66 -21
  692. nuitka/utils/CommandLineOptions.py +111 -22
  693. nuitka/utils/Distributions.py +445 -54
  694. nuitka/utils/Download.py +89 -57
  695. nuitka/utils/Execution.py +102 -58
  696. nuitka/utils/FileOperations.py +357 -128
  697. nuitka/utils/Hashing.py +55 -33
  698. nuitka/utils/Images.py +26 -19
  699. nuitka/utils/Importing.py +119 -37
  700. nuitka/utils/InlineCopies.py +52 -0
  701. nuitka/utils/InstalledPythons.py +85 -75
  702. nuitka/utils/InstanceCounters.py +20 -17
  703. nuitka/utils/Jinja2.py +30 -22
  704. nuitka/utils/Json.py +21 -19
  705. nuitka/utils/MacOSApp.py +26 -18
  706. nuitka/utils/MemoryUsage.py +20 -18
  707. nuitka/utils/ModuleNames.py +42 -26
  708. nuitka/utils/PackageResources.py +44 -0
  709. nuitka/utils/ReExecute.py +50 -28
  710. nuitka/utils/Rest.py +20 -17
  711. nuitka/utils/SharedLibraries.py +161 -75
  712. nuitka/utils/Shebang.py +20 -17
  713. nuitka/utils/Signing.py +63 -18
  714. nuitka/utils/SlotMetaClasses.py +57 -0
  715. nuitka/utils/StaticLibraries.py +83 -56
  716. nuitka/utils/ThreadedExecutor.py +18 -17
  717. nuitka/utils/Timing.py +22 -20
  718. nuitka/utils/Utils.py +132 -25
  719. nuitka/utils/WindowsFileUsage.py +22 -20
  720. nuitka/utils/WindowsResources.py +25 -18
  721. nuitka/utils/Yaml.py +62 -24
  722. nuitka/utils/__init__.py +5 -4
  723. Nuitka_winsvc-1.8.dist-info/RECORD +0 -905
  724. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_gui.py +0 -9
  725. nuitka/build/inline_copy/tqdm/tqdm/gui.py +0 -191
  726. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/LICENSE.txt +0 -0
  727. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/entry_points.txt +0 -0
  728. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/top_level.txt +0 -0
@@ -1,20 +1,5 @@
1
- // Copyright 2023, Kay Hayen, mailto:kay.hayen@gmail.com
2
- //
3
- // Part of "Nuitka", an optimizing Python compiler that is compatible and
4
- // integrates with CPython, but also works on its own.
5
- //
6
- // Licensed under the Apache License, Version 2.0 (the "License");
7
- // you may not use this file except in compliance with the License.
8
- // You may obtain a copy of the License at
9
- //
10
- // http://www.apache.org/licenses/LICENSE-2.0
11
- //
12
- // Unless required by applicable law or agreed to in writing, software
13
- // distributed under the License is distributed on an "AS IS" BASIS,
14
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- // See the License for the specific language governing permissions and
16
- // limitations under the License.
17
- //
1
+ // Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
18
3
  /* This helpers is used to work with lists.
19
4
 
20
5
  */
@@ -29,23 +14,65 @@
29
14
 
30
15
  static PyObject *Nuitka_LongFromCLong(long ival);
31
16
 
32
- #if NUITKA_LIST_HAS_FREELIST
33
- static struct _Py_list_state *_Nuitka_Py_get_list_state(void) {
34
- PyInterpreterState *interp = _PyInterpreterState_GET();
35
- return &interp->list;
17
+ #ifdef Py_GIL_DISABLED
18
+ typedef struct {
19
+ Py_ssize_t allocated;
20
+ PyObject *ob_item[];
21
+ } _PyListArray;
22
+
23
+ static _PyListArray *Nuitka_AllocateListArray(size_t capacity) {
24
+ if (unlikely(capacity > PY_SSIZE_T_MAX / sizeof(PyObject *) - 1)) {
25
+ return NULL;
26
+ }
27
+
28
+ _PyListArray *list_array = PyMem_Malloc(sizeof(_PyListArray) + capacity * sizeof(PyObject *));
29
+
30
+ if (unlikely(list_array == NULL)) {
31
+ return NULL;
32
+ }
33
+
34
+ list_array->allocated = capacity;
35
+ return list_array;
36
36
  }
37
37
 
38
- PyObject *MAKE_LIST_EMPTY(Py_ssize_t size) {
38
+ // spell-checker: ignore use_qsbr
39
+ static void Nuitka_FreeListArray(PyObject **items, bool use_qsbr) {
40
+ _PyListArray *array = _Py_CONTAINER_OF(items, _PyListArray, ob_item);
41
+
42
+ if (use_qsbr) {
43
+ NuitkaMem_FreeDelayed(array);
44
+ } else {
45
+ NuitkaMem_Free(array);
46
+ }
47
+ }
48
+
49
+ #endif
50
+
51
+ #if NUITKA_LIST_HAS_FREELIST
52
+
53
+ PyObject *MAKE_LIST_EMPTY(PyThreadState *tstate, Py_ssize_t size) {
39
54
  assert(size >= 0);
40
55
 
41
- struct _Py_list_state *state = _Nuitka_Py_get_list_state();
42
- PyListObject *result_list;
56
+ #if _NUITKA_EXPERIMENTAL_DISABLE_LIST_OPT
57
+ return PyList_New(size);
58
+ #else
59
+ // This is the CPython name, spell-checker: ignore numfree
43
60
 
44
- assert(state->numfree >= 0);
61
+ #if PYTHON_VERSION < 0x3d0
62
+ PyListObject **items = tstate->interp->list.free_list;
63
+ int *numfree = &tstate->interp->list.numfree;
64
+ #else
65
+ struct _Py_object_freelists *freelists = _Nuitka_object_freelists_GET(tstate);
66
+ struct _Py_list_freelist *state = &freelists->lists;
67
+ PyListObject **items = state->items;
68
+ int *numfree = &state->numfree;
69
+ #endif
70
+ assert(*numfree >= 0);
71
+ PyListObject *result_list;
45
72
 
46
- if (state->numfree) {
47
- state->numfree -= 1;
48
- result_list = state->free_list[state->numfree];
73
+ if (*numfree) {
74
+ (*numfree) -= 1;
75
+ result_list = items[*numfree];
49
76
 
50
77
  Nuitka_Py_NewReference((PyObject *)result_list);
51
78
  } else {
@@ -54,12 +81,21 @@ PyObject *MAKE_LIST_EMPTY(Py_ssize_t size) {
54
81
 
55
82
  // Elements are allocated separately.
56
83
  if (size > 0) {
57
- result_list->ob_item = (PyObject **)PyMem_Calloc(size, sizeof(PyObject *));
84
+ #ifdef Py_GIL_DISABLED
85
+ _PyListArray *list_array = Nuitka_AllocateListArray(size);
86
+
87
+ if (unlikely(list_array == NULL)) {
88
+ Py_DECREF(result_list);
89
+ return PyErr_NoMemory();
90
+ }
91
+ #else
92
+ result_list->ob_item = (PyObject **)NuitkaMem_Calloc(size, sizeof(PyObject *));
58
93
 
59
94
  if (unlikely(result_list->ob_item == NULL)) {
60
95
  Py_DECREF(result_list);
61
96
  return PyErr_NoMemory();
62
97
  }
98
+ #endif
63
99
  } else {
64
100
  result_list->ob_item = NULL;
65
101
  }
@@ -70,15 +106,16 @@ PyObject *MAKE_LIST_EMPTY(Py_ssize_t size) {
70
106
  Nuitka_GC_Track(result_list);
71
107
 
72
108
  return (PyObject *)result_list;
109
+ #endif
73
110
  }
74
111
  #endif
75
112
 
76
- PyObject *LIST_COPY(PyObject *list) {
113
+ PyObject *LIST_COPY(PyThreadState *tstate, PyObject *list) {
77
114
  CHECK_OBJECT(list);
78
115
  assert(PyList_CheckExact(list));
79
116
 
80
117
  Py_ssize_t size = PyList_GET_SIZE(list);
81
- PyObject *result = MAKE_LIST_EMPTY(size);
118
+ PyObject *result = MAKE_LIST_EMPTY(tstate, size);
82
119
 
83
120
  if (unlikely(result == NULL)) {
84
121
  return NULL;
@@ -93,34 +130,67 @@ PyObject *LIST_COPY(PyObject *list) {
93
130
  return result;
94
131
  }
95
132
 
96
- static bool LIST_RESIZE(PyListObject *list, Py_ssize_t newsize) {
133
+ static bool LIST_RESIZE(PyListObject *list, Py_ssize_t new_size) {
134
+ CHECK_OBJECT(list);
135
+ assert(new_size >= 0);
136
+
97
137
  Py_ssize_t allocated = list->allocated;
98
138
 
99
- if (allocated >= newsize && newsize >= (allocated >> 1)) {
100
- Py_SET_SIZE(list, newsize);
139
+ if (allocated >= new_size && new_size >= (allocated >> 1)) {
140
+ Py_SET_SIZE(list, new_size);
101
141
 
102
142
  return true;
103
143
  }
104
144
 
105
145
  size_t new_allocated;
106
146
 
107
- if (newsize == 0) {
147
+ if (new_size == 0) {
108
148
  new_allocated = 0;
109
149
  } else {
110
- new_allocated = ((size_t)newsize + (newsize >> 3) + 6) & ~(size_t)3;
150
+ new_allocated = ((size_t)new_size + (new_size >> 3) + 6) & ~(size_t)3;
151
+ assert(new_allocated >= (size_t)new_size);
111
152
  }
112
153
 
154
+ #ifdef Py_GIL_DISABLED
155
+ _PyListArray *array = Nuitka_AllocateListArray(new_allocated);
156
+
157
+ if (array == NULL) {
158
+ PyErr_NoMemory();
159
+ return -1;
160
+ }
161
+ PyObject **old_items = list->ob_item;
162
+ if (list->ob_item != NULL) {
163
+ size_t num_allocated_bytes;
164
+ if (new_allocated < (size_t)allocated) {
165
+ num_allocated_bytes = new_allocated * sizeof(PyObject *);
166
+ } else {
167
+ num_allocated_bytes = allocated * sizeof(PyObject *);
168
+ }
169
+ memcpy(array->ob_item, list->ob_item, num_allocated_bytes);
170
+ }
171
+ if (new_allocated > (size_t)allocated) {
172
+ memset(array->ob_item + allocated, 0, sizeof(PyObject *) * (new_allocated - allocated));
173
+ }
174
+ _Py_atomic_store_ptr_release(&list->ob_item, &array->ob_item);
175
+ list->allocated = new_allocated;
176
+ Py_SET_SIZE(list, new_size);
177
+ if (old_items != NULL) {
178
+ Nuitka_FreeListArray(old_items, _PyObject_GC_IS_SHARED(list));
179
+ }
180
+ #else
113
181
  size_t num_allocated_bytes = new_allocated * sizeof(PyObject *);
114
182
 
115
- PyObject **items = (PyObject **)PyMem_Realloc(list->ob_item, num_allocated_bytes);
183
+ // TODO: For Python3.13 No-GIL this is different code
184
+ PyObject **items = (PyObject **)NuitkaMem_Realloc(list->ob_item, num_allocated_bytes);
116
185
  if (unlikely(items == NULL)) {
117
186
  PyErr_NoMemory();
118
187
  return false;
119
188
  }
120
189
 
121
190
  list->ob_item = items;
122
- Py_SET_SIZE(list, newsize);
191
+ Py_SET_SIZE(list, new_size);
123
192
  list->allocated = new_allocated;
193
+ #endif
124
194
 
125
195
  return true;
126
196
  }
@@ -233,7 +303,7 @@ bool LIST_EXTEND_FROM_ITERABLE(PyThreadState *tstate, PyObject *target, PyObject
233
303
 
234
304
  Py_ssize_t cur_size = PyList_GET_SIZE(list);
235
305
 
236
- #if PYTHON_VERSION >= 0x340
306
+ #if PYTHON_VERSION >= 0x300
237
307
  // Guess a iterator size if possible
238
308
  src_size = PyObject_LengthHint(other, 8);
239
309
 
@@ -322,6 +392,8 @@ bool LIST_EXTEND_FOR_UNPACK(PyThreadState *tstate, PyObject *list, PyObject *oth
322
392
 
323
393
  PyObject *error = GET_ERROR_OCCURRED(tstate);
324
394
 
395
+ assert(error != NULL);
396
+
325
397
  if (EXCEPTION_MATCH_BOOL_SINGLE(tstate, error, PyExc_TypeError) &&
326
398
  (Py_TYPE(other)->tp_iter == NULL && !PySequence_Check(other))) {
327
399
  CLEAR_ERROR_OCCURRED(tstate);
@@ -333,16 +405,16 @@ bool LIST_EXTEND_FOR_UNPACK(PyThreadState *tstate, PyObject *list, PyObject *oth
333
405
  #endif
334
406
 
335
407
  bool LIST_APPEND1(PyObject *target, PyObject *item) {
336
- #if _NUITKA_EXPERIMENTAL_DISABLE_LIST_OPT
337
- int res = PyList_Append(target, item);
338
- Py_DECREF(item);
339
- return res == 0;
340
- #else
341
408
  CHECK_OBJECT(target);
342
409
  assert(PyList_CheckExact(target));
343
410
 
344
411
  CHECK_OBJECT(item);
345
412
 
413
+ #if _NUITKA_EXPERIMENTAL_DISABLE_LIST_OPT
414
+ int res = PyList_Append(target, item);
415
+ Py_DECREF(item);
416
+ return res == 0;
417
+ #else
346
418
  PyListObject *list = (PyListObject *)target;
347
419
 
348
420
  Py_ssize_t cur_size = PyList_GET_SIZE(list);
@@ -361,15 +433,15 @@ bool LIST_APPEND1(PyObject *target, PyObject *item) {
361
433
  }
362
434
 
363
435
  bool LIST_APPEND0(PyObject *target, PyObject *item) {
364
- #if _NUITKA_EXPERIMENTAL_DISABLE_LIST_OPT
365
- int res = PyList_Append(target, item);
366
- return res == 0;
367
- #else
368
436
  CHECK_OBJECT(target);
369
437
  assert(PyList_CheckExact(target));
370
438
 
371
439
  CHECK_OBJECT(item);
372
440
 
441
+ #if _NUITKA_EXPERIMENTAL_DISABLE_LIST_OPT
442
+ int res = PyList_Append(target, item);
443
+ return res == 0;
444
+ #else
373
445
  PyListObject *list = (PyListObject *)target;
374
446
 
375
447
  Py_ssize_t cur_size = PyList_GET_SIZE(list);
@@ -387,6 +459,47 @@ bool LIST_APPEND0(PyObject *target, PyObject *item) {
387
459
  #endif
388
460
  }
389
461
 
462
+ bool LIST_REMOVE(PyObject *target, PyObject *item) {
463
+ CHECK_OBJECT(target);
464
+ assert(PyList_CheckExact(target));
465
+
466
+ CHECK_OBJECT(item);
467
+
468
+ #if _NUITKA_EXPERIMENTAL_DISABLE_LIST_OPT && 0
469
+ // TODO: This is not exposed, would need to delete as slice instead.
470
+ int res = PyList_Remove(target, item);
471
+ return res == 0;
472
+ #else
473
+ PyListObject *list = (PyListObject *)target;
474
+
475
+ Py_ssize_t cur_size = PyList_GET_SIZE(list);
476
+
477
+ for (Py_ssize_t i = 0; i < cur_size; i++) {
478
+ PyObject *element = list->ob_item[i];
479
+
480
+ Py_INCREF(element);
481
+ nuitka_bool cmp = RICH_COMPARE_EQ_NBOOL_OBJECT_OBJECT(element, item);
482
+ Py_DECREF(element);
483
+
484
+ if (cmp == NUITKA_BOOL_TRUE) {
485
+ Py_DECREF(element);
486
+ Py_SET_SIZE(list, cur_size - 1);
487
+
488
+ memmove(list->ob_item + i, list->ob_item + i + 1, sizeof(PyObject *) * (cur_size - i - 1));
489
+
490
+ return true;
491
+ } else if (unlikely(cmp == NUITKA_BOOL_EXCEPTION)) {
492
+ return false;
493
+ }
494
+ }
495
+
496
+ PyThreadState *tstate = PyThreadState_GET();
497
+
498
+ SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_ValueError, "list.remove(x): x not in list");
499
+ return false;
500
+ #endif
501
+ }
502
+
390
503
  void LIST_CLEAR(PyObject *target) {
391
504
  CHECK_OBJECT(target);
392
505
  assert(PyList_CheckExact(target));
@@ -494,7 +607,7 @@ static PyObject *_LIST_INDEX_COMMON(PyThreadState *tstate, PyListObject *list, P
494
607
 
495
608
  #if PYTHON_VERSION < 0x300
496
609
  PyObject *err_format = PyString_FromString("%r is not in list");
497
- PyObject *format_tuple = MAKE_TUPLE1_0(item);
610
+ PyObject *format_tuple = MAKE_TUPLE1_0(tstate, item);
498
611
  PyObject *err_string = PyString_Format(err_format, format_tuple);
499
612
  Py_DECREF(format_tuple);
500
613
 
@@ -532,7 +645,18 @@ PyObject *LIST_INDEX3(PyThreadState *tstate, PyObject *list, PyObject *item, PyO
532
645
  return NULL;
533
646
  }
534
647
 
535
- Py_ssize_t start_ssize = PyLong_AsSsize_t(start_index);
648
+ Py_ssize_t start_ssize;
649
+ #if PYTHON_VERSION < 0x300
650
+ if (PyInt_CheckExact(start_index)) {
651
+ start_ssize = PyInt_AS_LONG(start_index);
652
+ } else {
653
+ start_ssize = PyLong_AsSsize_t(start_index);
654
+ }
655
+ #else
656
+ start_ssize = PyLong_AsSsize_t(start_index);
657
+ #endif
658
+
659
+ Py_DECREF(start_index);
536
660
 
537
661
  return _LIST_INDEX_COMMON(tstate, (PyListObject *)list, item, start_ssize, Py_SIZE(list));
538
662
  }
@@ -551,11 +675,24 @@ PyObject *LIST_INDEX4(PyThreadState *tstate, PyObject *list, PyObject *item, PyO
551
675
  return NULL;
552
676
  }
553
677
 
554
- Py_ssize_t start_ssize = PyLong_AsSsize_t(start_index);
678
+ Py_ssize_t start_ssize;
679
+ #if PYTHON_VERSION < 0x300
680
+ if (PyInt_CheckExact(start_index)) {
681
+ start_ssize = PyInt_AS_LONG(start_index);
682
+ } else {
683
+ start_ssize = PyLong_AsSsize_t(start_index);
684
+ }
685
+ #else
686
+ start_ssize = PyLong_AsSsize_t(start_index);
687
+ #endif
688
+
689
+ Py_DECREF(start_index);
555
690
 
556
691
  PyObject *stop_index = Nuitka_Number_IndexAsLong(stop);
557
692
 
558
693
  if (unlikely(stop_index == NULL)) {
694
+ Py_DECREF(start_index);
695
+
559
696
  CLEAR_ERROR_OCCURRED(tstate);
560
697
 
561
698
  SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_TypeError,
@@ -563,7 +700,18 @@ PyObject *LIST_INDEX4(PyThreadState *tstate, PyObject *list, PyObject *item, PyO
563
700
  return NULL;
564
701
  }
565
702
 
566
- Py_ssize_t stop_ssize = PyLong_AsSsize_t(stop_index);
703
+ Py_ssize_t stop_ssize;
704
+ #if PYTHON_VERSION < 0x300
705
+ if (PyInt_CheckExact(stop_index)) {
706
+ stop_ssize = PyInt_AS_LONG(stop_index);
707
+ } else {
708
+ stop_ssize = PyLong_AsSsize_t(stop_index);
709
+ }
710
+ #else
711
+ stop_ssize = PyLong_AsSsize_t(stop_index);
712
+ #endif
713
+
714
+ Py_DECREF(stop_index);
567
715
 
568
716
  return _LIST_INDEX_COMMON(tstate, (PyListObject *)list, item, start_ssize, stop_ssize);
569
717
  }
@@ -571,6 +719,7 @@ PyObject *LIST_INDEX4(PyThreadState *tstate, PyObject *list, PyObject *item, PyO
571
719
  bool LIST_INSERT(PyThreadState *tstate, PyObject *list, PyObject *index, PyObject *item) {
572
720
  CHECK_OBJECT(list);
573
721
  assert(PyList_CheckExact(list));
722
+ CHECK_OBJECT(index);
574
723
  CHECK_OBJECT(item);
575
724
 
576
725
  // TODO: Avoid the clear, by having this as a variant that doesn't set the
@@ -584,7 +733,18 @@ bool LIST_INSERT(PyThreadState *tstate, PyObject *list, PyObject *index, PyObjec
584
733
  return false;
585
734
  }
586
735
 
587
- Py_ssize_t index_ssize = PyLong_AsSsize_t(index_long);
736
+ Py_ssize_t index_ssize;
737
+ #if PYTHON_VERSION < 0x300
738
+ if (PyInt_CheckExact(index_long)) {
739
+ index_ssize = PyInt_AS_LONG(index_long);
740
+ } else {
741
+ index_ssize = PyLong_AsSsize_t(index_long);
742
+ }
743
+ #else
744
+ index_ssize = PyLong_AsSsize_t(index_long);
745
+ #endif
746
+
747
+ Py_DECREF(index_long);
588
748
 
589
749
  LIST_INSERT_CONST(list, index_ssize, item);
590
750
  return true;
@@ -654,7 +814,7 @@ void LIST_REVERSE(PyObject *list) {
654
814
  }
655
815
  }
656
816
 
657
- #if PYTHON_VERSION >= 0x340
817
+ #if PYTHON_VERSION >= 0x300 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_LIST_OPT)
658
818
  static bool allocateListItems(PyListObject *list, Py_ssize_t size) {
659
819
  PyObject **items = PyMem_New(PyObject *, size);
660
820
 
@@ -668,12 +828,13 @@ static bool allocateListItems(PyListObject *list, Py_ssize_t size) {
668
828
 
669
829
  return true;
670
830
  }
831
+
671
832
  #endif
672
833
 
673
834
  PyObject *MAKE_LIST(PyThreadState *tstate, PyObject *iterable) {
674
835
  // Can leave the size hinting to later functions, because the list is allocated empty without
675
836
  // items, and when then extending, etc. length hints can be used.
676
- PyObject *list = MAKE_LIST_EMPTY(0);
837
+ PyObject *list = MAKE_LIST_EMPTY(tstate, 0);
677
838
 
678
839
  #if _NUITKA_EXPERIMENTAL_DISABLE_LIST_OPT
679
840
  PyObject *result = _PyList_Extend((PyListObject *)list, iterable);
@@ -685,8 +846,10 @@ PyObject *MAKE_LIST(PyThreadState *tstate, PyObject *iterable) {
685
846
  return list;
686
847
  }
687
848
  #else
688
- #if PYTHON_VERSION >= 0x340
689
- if (_PyObject_HasLen(iterable)) {
849
+ Py_INCREF(iterable);
850
+
851
+ #if PYTHON_VERSION >= 0x300
852
+ if (Nuitka_PyObject_HasLen(iterable)) {
690
853
  Py_ssize_t iter_len = Nuitka_PyObject_Size(iterable);
691
854
 
692
855
  if (unlikely(iter_len == -1)) {
@@ -707,6 +870,8 @@ PyObject *MAKE_LIST(PyThreadState *tstate, PyObject *iterable) {
707
870
 
708
871
  bool res = LIST_EXTEND_FROM_ITERABLE(tstate, list, iterable);
709
872
 
873
+ Py_DECREF(iterable);
874
+
710
875
  if (unlikely(res == false)) {
711
876
  Py_DECREF(list);
712
877
  return NULL;
@@ -716,4 +881,18 @@ PyObject *MAKE_LIST(PyThreadState *tstate, PyObject *iterable) {
716
881
  #endif
717
882
  }
718
883
 
719
- #include "HelpersListsGenerated.c"
884
+ #include "HelpersListsGenerated.c"
885
+ // Part of "Nuitka", an optimizing Python compiler that is compatible and
886
+ // integrates with CPython, but also works on its own.
887
+ //
888
+ // Licensed under the Apache License, Version 2.0 (the "License");
889
+ // you may not use this file except in compliance with the License.
890
+ // You may obtain a copy of the License at
891
+ //
892
+ // http://www.apache.org/licenses/LICENSE-2.0
893
+ //
894
+ // Unless required by applicable law or agreed to in writing, software
895
+ // distributed under the License is distributed on an "AS IS" BASIS,
896
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
897
+ // See the License for the specific language governing permissions and
898
+ // limitations under the License.
@@ -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 CodeTemplateMakeListSmall.c.j2 instead! */
19
4
 
20
5
  /* This file is included from another C file, help IDEs to still parse it on its own. */
@@ -22,9 +7,9 @@
22
7
  #include "nuitka/prelude.h"
23
8
  #endif
24
9
 
25
- PyObject *MAKE_LIST1(PyObject *arg0) {
10
+ PyObject *MAKE_LIST1(PyThreadState *tstate, PyObject *arg0) {
26
11
 
27
- PyObject *result = MAKE_LIST_EMPTY(1);
12
+ PyObject *result = MAKE_LIST_EMPTY(tstate, 1);
28
13
 
29
14
  if (unlikely(result == NULL)) {
30
15
  return NULL;
@@ -36,9 +21,9 @@ PyObject *MAKE_LIST1(PyObject *arg0) {
36
21
 
37
22
  return result;
38
23
  }
39
- PyObject *MAKE_LIST2(PyObject *arg0, PyObject *arg1) {
24
+ PyObject *MAKE_LIST2(PyThreadState *tstate, PyObject *arg0, PyObject *arg1) {
40
25
 
41
- PyObject *result = MAKE_LIST_EMPTY(2);
26
+ PyObject *result = MAKE_LIST_EMPTY(tstate, 2);
42
27
 
43
28
  if (unlikely(result == NULL)) {
44
29
  return NULL;
@@ -54,9 +39,9 @@ PyObject *MAKE_LIST2(PyObject *arg0, PyObject *arg1) {
54
39
 
55
40
  return result;
56
41
  }
57
- PyObject *MAKE_LIST3(PyObject *arg0, PyObject *arg1, PyObject *arg2) {
42
+ PyObject *MAKE_LIST3(PyThreadState *tstate, PyObject *arg0, PyObject *arg1, PyObject *arg2) {
58
43
 
59
- PyObject *result = MAKE_LIST_EMPTY(3);
44
+ PyObject *result = MAKE_LIST_EMPTY(tstate, 3);
60
45
 
61
46
  if (unlikely(result == NULL)) {
62
47
  return NULL;
@@ -76,12 +61,12 @@ PyObject *MAKE_LIST3(PyObject *arg0, PyObject *arg1, PyObject *arg2) {
76
61
 
77
62
  return result;
78
63
  }
79
- PyObject *MAKE_LIST4(PyObject *list) {
64
+ PyObject *MAKE_LIST4(PyThreadState *tstate, PyObject *list) {
80
65
  CHECK_OBJECT(list);
81
66
  assert(PyList_CheckExact(list));
82
67
  assert(PyList_GET_SIZE(list) == 4);
83
68
 
84
- PyObject *result = MAKE_LIST_EMPTY(4);
69
+ PyObject *result = MAKE_LIST_EMPTY(tstate, 4);
85
70
 
86
71
  if (unlikely(result == NULL)) {
87
72
  return NULL;
@@ -110,12 +95,12 @@ PyObject *MAKE_LIST4(PyObject *list) {
110
95
 
111
96
  return result;
112
97
  }
113
- PyObject *MAKE_LIST5(PyObject *list) {
98
+ PyObject *MAKE_LIST5(PyThreadState *tstate, PyObject *list) {
114
99
  CHECK_OBJECT(list);
115
100
  assert(PyList_CheckExact(list));
116
101
  assert(PyList_GET_SIZE(list) == 5);
117
102
 
118
- PyObject *result = MAKE_LIST_EMPTY(5);
103
+ PyObject *result = MAKE_LIST_EMPTY(tstate, 5);
119
104
 
120
105
  if (unlikely(result == NULL)) {
121
106
  return NULL;
@@ -149,12 +134,12 @@ PyObject *MAKE_LIST5(PyObject *list) {
149
134
 
150
135
  return result;
151
136
  }
152
- PyObject *MAKE_LIST6(PyObject *list) {
137
+ PyObject *MAKE_LIST6(PyThreadState *tstate, PyObject *list) {
153
138
  CHECK_OBJECT(list);
154
139
  assert(PyList_CheckExact(list));
155
140
  assert(PyList_GET_SIZE(list) == 6);
156
141
 
157
- PyObject *result = MAKE_LIST_EMPTY(6);
142
+ PyObject *result = MAKE_LIST_EMPTY(tstate, 6);
158
143
 
159
144
  if (unlikely(result == NULL)) {
160
145
  return NULL;
@@ -193,12 +178,12 @@ PyObject *MAKE_LIST6(PyObject *list) {
193
178
 
194
179
  return result;
195
180
  }
196
- PyObject *MAKE_LIST7(PyObject *list) {
181
+ PyObject *MAKE_LIST7(PyThreadState *tstate, PyObject *list) {
197
182
  CHECK_OBJECT(list);
198
183
  assert(PyList_CheckExact(list));
199
184
  assert(PyList_GET_SIZE(list) == 7);
200
185
 
201
- PyObject *result = MAKE_LIST_EMPTY(7);
186
+ PyObject *result = MAKE_LIST_EMPTY(tstate, 7);
202
187
 
203
188
  if (unlikely(result == NULL)) {
204
189
  return NULL;
@@ -242,12 +227,12 @@ PyObject *MAKE_LIST7(PyObject *list) {
242
227
 
243
228
  return result;
244
229
  }
245
- PyObject *MAKE_LIST8(PyObject *list) {
230
+ PyObject *MAKE_LIST8(PyThreadState *tstate, PyObject *list) {
246
231
  CHECK_OBJECT(list);
247
232
  assert(PyList_CheckExact(list));
248
233
  assert(PyList_GET_SIZE(list) == 8);
249
234
 
250
- PyObject *result = MAKE_LIST_EMPTY(8);
235
+ PyObject *result = MAKE_LIST_EMPTY(tstate, 8);
251
236
 
252
237
  if (unlikely(result == NULL)) {
253
238
  return NULL;
@@ -296,12 +281,12 @@ PyObject *MAKE_LIST8(PyObject *list) {
296
281
 
297
282
  return result;
298
283
  }
299
- PyObject *MAKE_LIST9(PyObject *list) {
284
+ PyObject *MAKE_LIST9(PyThreadState *tstate, PyObject *list) {
300
285
  CHECK_OBJECT(list);
301
286
  assert(PyList_CheckExact(list));
302
287
  assert(PyList_GET_SIZE(list) == 9);
303
288
 
304
- PyObject *result = MAKE_LIST_EMPTY(9);
289
+ PyObject *result = MAKE_LIST_EMPTY(tstate, 9);
305
290
 
306
291
  if (unlikely(result == NULL)) {
307
292
  return NULL;
@@ -355,12 +340,12 @@ PyObject *MAKE_LIST9(PyObject *list) {
355
340
 
356
341
  return result;
357
342
  }
358
- PyObject *MAKE_LIST10(PyObject *list) {
343
+ PyObject *MAKE_LIST10(PyThreadState *tstate, PyObject *list) {
359
344
  CHECK_OBJECT(list);
360
345
  assert(PyList_CheckExact(list));
361
346
  assert(PyList_GET_SIZE(list) == 10);
362
347
 
363
- PyObject *result = MAKE_LIST_EMPTY(10);
348
+ PyObject *result = MAKE_LIST_EMPTY(tstate, 10);
364
349
 
365
350
  if (unlikely(result == NULL)) {
366
351
  return NULL;
@@ -419,12 +404,12 @@ PyObject *MAKE_LIST10(PyObject *list) {
419
404
 
420
405
  return result;
421
406
  }
422
- PyObject *MAKE_LIST11(PyObject *list) {
407
+ PyObject *MAKE_LIST11(PyThreadState *tstate, PyObject *list) {
423
408
  CHECK_OBJECT(list);
424
409
  assert(PyList_CheckExact(list));
425
410
  assert(PyList_GET_SIZE(list) == 11);
426
411
 
427
- PyObject *result = MAKE_LIST_EMPTY(11);
412
+ PyObject *result = MAKE_LIST_EMPTY(tstate, 11);
428
413
 
429
414
  if (unlikely(result == NULL)) {
430
415
  return NULL;
@@ -488,12 +473,12 @@ PyObject *MAKE_LIST11(PyObject *list) {
488
473
 
489
474
  return result;
490
475
  }
491
- PyObject *MAKE_LIST12(PyObject *list) {
476
+ PyObject *MAKE_LIST12(PyThreadState *tstate, PyObject *list) {
492
477
  CHECK_OBJECT(list);
493
478
  assert(PyList_CheckExact(list));
494
479
  assert(PyList_GET_SIZE(list) == 12);
495
480
 
496
- PyObject *result = MAKE_LIST_EMPTY(12);
481
+ PyObject *result = MAKE_LIST_EMPTY(tstate, 12);
497
482
 
498
483
  if (unlikely(result == NULL)) {
499
484
  return NULL;
@@ -562,3 +547,18 @@ PyObject *MAKE_LIST12(PyObject *list) {
562
547
 
563
548
  return result;
564
549
  }
550
+
551
+ // Part of "Nuitka", an optimizing Python compiler that is compatible and
552
+ // integrates with CPython, but also works on its own.
553
+ //
554
+ // Licensed under the Apache License, Version 2.0 (the "License");
555
+ // you may not use this file except in compliance with the License.
556
+ // You may obtain a copy of the License at
557
+ //
558
+ // http://www.apache.org/licenses/LICENSE-2.0
559
+ //
560
+ // Unless required by applicable law or agreed to in writing, software
561
+ // distributed under the License is distributed on an "AS IS" BASIS,
562
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
563
+ // See the License for the specific language governing permissions and
564
+ // limitations under the License.