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,6 @@
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
+
3
+
18
4
  """ C type descriptions. For specific or general C types, provide code generation help.
19
5
 
20
6
  """
@@ -22,11 +8,15 @@
22
8
  import math
23
9
  from abc import abstractmethod
24
10
 
25
- from nuitka.__past__ import getMetaClassBase, long
11
+ from nuitka.__past__ import long
12
+ from nuitka.code_generation.BinaryOperationHelperDefinitions import (
13
+ isCommutativeType,
14
+ )
26
15
  from nuitka.code_generation.Namify import namifyConstant
16
+ from nuitka.utils.SlotMetaClasses import getMetaClassBase
27
17
 
28
18
 
29
- class TypeDescBase(getMetaClassBase("Type")):
19
+ class TypeDescBase(getMetaClassBase("Type", require_slots=False)):
30
20
  # To be overloaded
31
21
  type_name = None
32
22
  type_desc = None
@@ -288,9 +278,11 @@ class TypeDescBase(getMetaClassBase("Type")):
288
278
  if self is object_desc or other is object_desc:
289
279
  return "%s == %s" % (
290
280
  self.getTypeValueExpression(None) if self is not object_desc else type1,
291
- other.getTypeValueExpression(None)
292
- if other is not object_desc
293
- else type2,
281
+ (
282
+ other.getTypeValueExpression(None)
283
+ if other is not object_desc
284
+ else type2
285
+ ),
294
286
  )
295
287
  elif self is other:
296
288
  return "1"
@@ -301,9 +293,11 @@ class TypeDescBase(getMetaClassBase("Type")):
301
293
  if self is object_desc or other is object_desc:
302
294
  return "%s != %s" % (
303
295
  self.getTypeValueExpression(None) if self is not object_desc else type1,
304
- other.getTypeValueExpression(None)
305
- if other is not object_desc
306
- else type2,
296
+ (
297
+ other.getTypeValueExpression(None)
298
+ if other is not object_desc
299
+ else type2
300
+ ),
307
301
  )
308
302
  elif self is other:
309
303
  return "0"
@@ -350,10 +344,10 @@ class TypeDescBase(getMetaClassBase("Type")):
350
344
  )
351
345
  elif slot == "tp_richcompare":
352
346
  # Try to detect fallbacks, this needs version specific management
353
- # for at least "LONG", maybe others.
347
+ # for at least "LONG", maybe others. spell-checker: ignore RICHCOMPARE
354
348
 
355
349
  assert self is object_desc, self
356
- return "RICHCOMPARE(%s)" % operand
350
+ return "TP_RICHCOMPARE(%s)" % operand
357
351
  elif slot == "tp_compare":
358
352
  return operand + "->tp_compare"
359
353
  else:
@@ -396,15 +390,21 @@ class TypeDescBase(getMetaClassBase("Type")):
396
390
  pass
397
391
 
398
392
  @staticmethod
399
- def getOperationErrorMessageName(operator):
400
- if operator == "%":
401
- return "%%"
402
- elif operator == "**":
393
+ def getOperationErrorMessageName(operator, inplace):
394
+ operator = operator.replace("%", "%%")
395
+
396
+ if operator == "**" and not inplace:
403
397
  return "** or pow()"
404
398
  elif operator == "divmod":
399
+ assert not inplace
405
400
  return "divmod()"
406
- else:
407
- return operator
401
+
402
+ assert "=" not in operator, operator
403
+
404
+ if inplace:
405
+ operator = operator + "="
406
+
407
+ return operator
408
408
 
409
409
  def getReturnUnorderableTypeErrorCode(
410
410
  self, operator, left, right, operand1, operand2
@@ -461,22 +461,26 @@ return %(return_value)s;""" % {
461
461
  def hasSameTypeOperationSpecializationCode(self, other, nb_slot, sq_slot):
462
462
  # Many cases, pylint: disable=too-many-branches,too-many-return-statements
463
463
 
464
- cand = self if self is not object_desc else other
464
+ candidate = self if self is not object_desc else other
465
465
 
466
466
  # Both are objects, nothing to be done.
467
- if cand is object_desc:
467
+ if candidate is object_desc:
468
468
  assert self is object_desc
469
469
  assert other is object_desc
470
470
  return False
471
471
 
472
- # Special case for sequence concats/repeats.
473
- if sq_slot is not None and not cand.hasSlot(nb_slot) and cand.hasSlot(sq_slot):
472
+ # Special case for sequence concat/repeats.
473
+ if (
474
+ sq_slot is not None
475
+ and not candidate.hasSlot(nb_slot)
476
+ and candidate.hasSlot(sq_slot)
477
+ ):
474
478
  slot = sq_slot
475
479
  else:
476
480
  slot = nb_slot
477
481
 
478
482
  if slot == "sq_repeat":
479
- if cand in (
483
+ if candidate in (
480
484
  list_desc,
481
485
  tuple_desc,
482
486
  set_desc,
@@ -489,12 +493,12 @@ return %(return_value)s;""" % {
489
493
  return False
490
494
 
491
495
  if slot == "nb_remainder":
492
- if cand in (list_desc, tuple_desc, set_desc, dict_desc):
496
+ if candidate in (list_desc, tuple_desc, set_desc, dict_desc):
493
497
  # No remainder with themselves.
494
498
  return False
495
499
 
496
500
  if slot == "nb_multiply":
497
- if cand in (
501
+ if candidate in (
498
502
  str_desc,
499
503
  bytes_desc,
500
504
  list_desc,
@@ -508,7 +512,7 @@ return %(return_value)s;""" % {
508
512
  if slot == "nb_add":
509
513
  # Tuple and list, etc. use sq_concat.
510
514
  # TODO: What about unicode_desc
511
- if cand in (
515
+ if candidate in (
512
516
  str_desc,
513
517
  bytes_desc,
514
518
  tuple_desc,
@@ -520,7 +524,7 @@ return %(return_value)s;""" % {
520
524
  return False
521
525
 
522
526
  if slot in ("nb_and", "nb_or", "nb_xor"):
523
- if cand in (
527
+ if candidate in (
524
528
  str_desc,
525
529
  bytes_desc,
526
530
  unicode_desc,
@@ -532,7 +536,7 @@ return %(return_value)s;""" % {
532
536
  return False
533
537
 
534
538
  if slot in ("nb_lshift", "nb_rshift"):
535
- if cand in (
539
+ if candidate in (
536
540
  str_desc,
537
541
  bytes_desc,
538
542
  unicode_desc,
@@ -561,12 +565,11 @@ return %(return_value)s;""" % {
561
565
  else:
562
566
  return object_desc
563
567
 
564
- def isSimilarOrSameTypesAsOneOf(self, *others):
565
- for other in others:
566
- assert other is not None
568
+ def isSimilarOrSameTypesAsOneOf(self, other):
569
+ assert other is not None
567
570
 
568
- if self is other or other in related_types.get(self, ()):
569
- return True
571
+ if self is other or other in related_types.get(self, ()):
572
+ return True
570
573
 
571
574
  return False
572
575
 
@@ -588,26 +591,29 @@ return %(return_value)s;""" % {
588
591
  def getTypeComparisonSpecializationHelper(
589
592
  self, other, op_code, target, operand1, operand2
590
593
  ):
591
- cand1 = self if self is not object_desc else other
592
- cand2 = other if other is not object_desc else self
594
+ candidate1 = self if self is not object_desc else other
595
+ candidate2 = other if other is not object_desc else self
593
596
 
594
- if cand1 is object_desc:
597
+ if candidate1 is object_desc:
595
598
  return "", None, None, None, None, None
596
599
 
597
- if long_desc in (cand1, cand2) and int_desc in (cand1, cand2):
598
- if cand1 == int_desc:
600
+ if long_desc in (candidate1, candidate2) and int_desc in (
601
+ candidate1,
602
+ candidate2,
603
+ ):
604
+ if candidate1 == int_desc:
599
605
  operand1 = int_desc.getAsLongValueExpression(operand1)
600
- cand1 = c_long_desc
601
- elif cand2 == int_desc:
606
+ candidate1 = c_long_desc
607
+ elif candidate2 == int_desc:
602
608
  operand2 = int_desc.getAsLongValueExpression(operand1)
603
- cand2 = c_long_desc
609
+ candidate2 = c_long_desc
604
610
  else:
605
611
  assert False
606
612
 
607
613
  if (
608
614
  target is n_bool_desc
609
- and cand1 is cand2
610
- and cand1 not in (tuple_desc, list_desc)
615
+ and candidate1 is candidate2
616
+ and candidate1 not in (tuple_desc, list_desc)
611
617
  ):
612
618
  target = c_bool_desc
613
619
 
@@ -616,12 +622,12 @@ return %(return_value)s;""" % {
616
622
  % (
617
623
  op_code,
618
624
  target.getHelperCodeName(),
619
- cand1.getHelperCodeName(),
620
- cand2.getHelperCodeName(),
625
+ candidate1.getHelperCodeName(),
626
+ candidate2.getHelperCodeName(),
621
627
  ),
622
628
  target,
623
- cand1,
624
- cand2,
629
+ candidate1,
630
+ candidate2,
625
631
  operand1,
626
632
  operand2,
627
633
  )
@@ -672,8 +678,11 @@ return %(return_value)s;""" % {
672
678
  )
673
679
 
674
680
  @staticmethod
675
- def getTakeReferenceStatement(operand):
676
- return "Py_INCREF(%s);" % operand
681
+ def getTakeReferenceStatement(operand, immortal):
682
+ return "%s(%s);" % (
683
+ ("Py_INCREF_IMMORTAL" if immortal else "Py_INCREF"),
684
+ operand,
685
+ )
677
686
 
678
687
  @classmethod
679
688
  def hasReferenceCounting(cls):
@@ -702,6 +711,10 @@ return %(return_value)s;""" % {
702
711
  return "Py_INCREF(%s); %s = %s;" % (operand, result, operand)
703
712
  else:
704
713
  return "%s = %s;" % (result, operand)
714
+ elif cls.isDualType():
715
+ ref_taking = "Py_INCREF(%s); " if take_ref else ""
716
+
717
+ return "%sSET_NILONG_OBJECT_VALUE(%s, %s);" % (ref_taking, result, operand)
705
718
  else:
706
719
  if take_ref:
707
720
  return """%s = %s; """ % (
@@ -752,7 +765,7 @@ return %(return_value)s;""" % {
752
765
  # Need to not use that, but pick one.
753
766
  assert False
754
767
  elif cls.type_name == "int":
755
- return "%s = PyInt_FromLong(%s);" % (result, operand)
768
+ return "%s = Nuitka_PyInt_FromLong(%s);" % (result, operand)
756
769
  elif cls.type_name == "long":
757
770
  return "%s = Nuitka_LongFromCLong(%s);" % (result, operand)
758
771
  elif cls.type_name == "nbool":
@@ -760,16 +773,17 @@ return %(return_value)s;""" % {
760
773
  result,
761
774
  cls.getToValueFromBoolExpression("%s != 0" % operand),
762
775
  )
776
+ elif cls.type_name == "nilong":
777
+ return "SET_NILONG_C_VALUE(%s, %s);" % (result, operand)
763
778
  else:
764
779
  assert False, cls
765
780
 
766
781
  @classmethod
767
782
  def getAssignFromBoolExpressionCode(cls, result, operand, give_ref):
768
783
  if cls.type_name == "object":
769
- # TODO: Python3?
770
784
  code = "%s = BOOL_FROM(%s);" % (result, operand)
771
785
  if give_ref:
772
- code += "Py_INCREF(%s);" % result
786
+ code += "Py_INCREF_IMMORTAL(%s);" % result
773
787
 
774
788
  return code
775
789
  elif cls.type_name == "nbool":
@@ -905,7 +919,7 @@ Py_INCREF(%(result)s);""" % {
905
919
  def getAssignConversionCode(cls, result, left, value):
906
920
  def _getObjectObject():
907
921
  code = "%s = %s;" % (result, value)
908
- code += cls.getTakeReferenceStatement(result)
922
+ code += cls.getTakeReferenceStatement(result, immortal=False)
909
923
 
910
924
  return code
911
925
 
@@ -939,6 +953,14 @@ Py_INCREF(%(result)s);""" % {
939
953
  else:
940
954
  assert False, cls.type_name
941
955
 
956
+ @classmethod
957
+ def isDualType(cls):
958
+ return False
959
+
960
+ @classmethod
961
+ def isCommutativeType(cls):
962
+ return isCommutativeType(cls.getHelperCodeName())
963
+
942
964
 
943
965
  class ConcreteTypeBase(TypeDescBase):
944
966
  type_decl = "PyObject *"
@@ -966,7 +988,7 @@ assert(%(type_name)s_CheckExact(%(operand)s));""" % {
966
988
  pass
967
989
 
968
990
  @staticmethod
969
- def getTakeReferenceStatement(operand):
991
+ def getTakeReferenceStatement(operand, immortal):
970
992
  return ""
971
993
 
972
994
 
@@ -1378,23 +1400,23 @@ class LongDesc(ConcreteNonSequenceTypeBase):
1378
1400
 
1379
1401
  @staticmethod
1380
1402
  def getLongValueSizeExpression(operand):
1381
- return "Py_SIZE(%s_long_object)" % operand
1403
+ return "Nuitka_LongGetSignedDigitSize(%s_long_object)" % operand
1382
1404
 
1383
1405
  @staticmethod
1384
1406
  def getLongValueIsNegativeTestExpression(operand):
1385
- return "Py_SIZE(%s_long_object) < 0" % operand
1407
+ return "Nuitka_LongIsNegative(%s_long_object)" % operand
1386
1408
 
1387
1409
  @staticmethod
1388
1410
  def getLongValueDigitCountExpression(operand):
1389
- return "Py_ABS(Py_SIZE(%s_long_object))" % operand
1411
+ return "Nuitka_LongGetDigitSize(%s_long_object)" % operand
1390
1412
 
1391
1413
  @staticmethod
1392
1414
  def getLongValueDigitExpression(operand, index):
1393
- return "%s_long_object->ob_digit[%s]" % (operand, index)
1415
+ return "Nuitka_LongGetDigitPointer(%s_long_object)[%s]" % (operand, index)
1394
1416
 
1395
1417
  @staticmethod
1396
1418
  def getLongValueDigitsPointerExpression(operand):
1397
- return "%s_long_object->ob_digit" % operand
1419
+ return "Nuitka_LongGetDigitPointer(%s_long_object)" % operand
1398
1420
 
1399
1421
  @staticmethod
1400
1422
  def getLongValueMediumValueExpression(operand):
@@ -1441,6 +1463,12 @@ class ObjectDesc(TypeDescBase):
1441
1463
  def getNoSequenceSlotAccessTestCode(self, type_name):
1442
1464
  return "%s->tp_as_sequence == NULL" % type_name
1443
1465
 
1466
+ @classmethod
1467
+ def getDualValidityCheckCode(cls, value_choice, operand):
1468
+ # Virtual method, pylint: disable=unused-argument
1469
+ assert value_choice == "C", value_choice
1470
+ return "false"
1471
+
1444
1472
 
1445
1473
  object_desc = ObjectDesc()
1446
1474
 
@@ -1466,6 +1494,25 @@ class ConcreteCTypeBase(TypeDescBase):
1466
1494
  def hasPreferredSlot(right, slot):
1467
1495
  return False
1468
1496
 
1497
+ @classmethod
1498
+ def isDualType(cls):
1499
+ return False
1500
+
1501
+ @classmethod
1502
+ def getDualValidityCheckCode(cls, value_choice, operand):
1503
+ # Virtual method, pylint: disable=unused-argument
1504
+ assert value_choice == "C", value_choice
1505
+ return "true"
1506
+
1507
+ def getDualType(self, value_choice):
1508
+ assert value_choice == "C", value_choice
1509
+ return self
1510
+
1511
+ @classmethod
1512
+ def getDualTypeAccessCode(cls, value_choice, operand):
1513
+ assert value_choice == "C", (value_choice, cls)
1514
+ return operand
1515
+
1469
1516
 
1470
1517
  class CLongDesc(ConcreteCTypeBase):
1471
1518
  type_name = "clong"
@@ -1490,7 +1537,7 @@ class CLongDesc(ConcreteCTypeBase):
1490
1537
 
1491
1538
  @staticmethod
1492
1539
  def getAsObjectValueExpression(operand):
1493
- return "PyLong_FromLong(%s)" % operand
1540
+ return "Nuitka_PyLong_FromLong(%s)" % operand
1494
1541
 
1495
1542
  @staticmethod
1496
1543
  def releaseAsObjectValueStatement(operand):
@@ -1518,6 +1565,7 @@ class CLongDesc(ConcreteCTypeBase):
1518
1565
 
1519
1566
  @staticmethod
1520
1567
  def getLongValueMediumValueExpression(operand):
1568
+ # spell-checker: disable=sdigit
1521
1569
  return "(sdigit)%s" % (operand)
1522
1570
 
1523
1571
 
@@ -1599,7 +1647,7 @@ class CBoolDesc(ConcreteCTypeBase):
1599
1647
  return "CHECK_IF_TRUE(%s) == 1" % operand
1600
1648
 
1601
1649
  @staticmethod
1602
- def getTakeReferenceStatement(operand):
1650
+ def getTakeReferenceStatement(operand, immortal):
1603
1651
  return ""
1604
1652
 
1605
1653
  @staticmethod
@@ -1645,7 +1693,7 @@ class NBoolDesc(ConcreteCTypeBase):
1645
1693
  return cls.getToValueFromBoolExpression("CHECK_IF_TRUE(%s)" % operand)
1646
1694
 
1647
1695
  @staticmethod
1648
- def getTakeReferenceStatement(operand):
1696
+ def getTakeReferenceStatement(operand, immortal):
1649
1697
  return ""
1650
1698
 
1651
1699
  @staticmethod
@@ -1656,6 +1704,108 @@ class NBoolDesc(ConcreteCTypeBase):
1656
1704
  n_bool_desc = NBoolDesc()
1657
1705
 
1658
1706
 
1707
+ class DualTypeBase(ConcreteCTypeBase):
1708
+ @classmethod
1709
+ def getDualValidityCheckCode(cls, value_choice, operand):
1710
+ if value_choice == "C":
1711
+ helper = "IS_%s_C_VALUE_VALID" % cls.type_name.upper()
1712
+ elif value_choice == "Python":
1713
+ helper = "IS_%s_OBJECT_VALUE_VALID" % cls.type_name.upper()
1714
+ else:
1715
+ assert False
1716
+
1717
+ return "%s(%s)" % (helper, operand)
1718
+
1719
+ @classmethod
1720
+ def getDualType(cls, value_choice):
1721
+ if value_choice == "C":
1722
+ return cls.type_dual_types[1]
1723
+ elif value_choice == "Python":
1724
+ return cls.type_dual_types[0]
1725
+ else:
1726
+ assert False
1727
+
1728
+ @classmethod
1729
+ def getDualTypeAccessCode(cls, value_choice, operand):
1730
+ if value_choice == "C":
1731
+ return "%s->c_value" % operand
1732
+ elif value_choice == "Python":
1733
+ return "%s->python_value" % operand
1734
+ else:
1735
+ assert False
1736
+
1737
+ @classmethod
1738
+ def getSetDualValueCode(cls, value_choice, target, value):
1739
+ if value_choice == "C":
1740
+ helper = "SET_%s_C_VALUE" % cls.type_name.upper()
1741
+ elif value_choice == "Python":
1742
+ helper = "SET_%s_OBJECT_VALUE" % cls.type_name.upper()
1743
+ else:
1744
+ assert False
1745
+
1746
+ return "%s(%s, %s);" % (helper, target, value)
1747
+
1748
+ @classmethod
1749
+ def isDualType(cls):
1750
+ return True
1751
+
1752
+ @classmethod
1753
+ def getDualTypeEnsurePythonObjectCode(cls, operand):
1754
+ return "ENFORCE_%s_OBJECT_VALUE(%s);" % (cls.type_name.upper(), operand)
1755
+
1756
+
1757
+ class NILongDesc(DualTypeBase):
1758
+ type_name = "nilong"
1759
+ type_desc = "Nuitka int/long/C long value"
1760
+ type_decl = "nuitka_ilong *"
1761
+
1762
+ type_dual_types = long_desc, c_long_desc
1763
+
1764
+ @classmethod
1765
+ def getCheckValueCode(cls, operand):
1766
+ return "CHECK_NILONG_OBJECT(%s);" % operand
1767
+
1768
+ @classmethod
1769
+ def getTypeValueExpression(cls, operand):
1770
+ assert False
1771
+ return "NULL"
1772
+
1773
+ @classmethod
1774
+ def getNewStyleNumberTypeCheckExpression(cls, operand):
1775
+ return "0"
1776
+
1777
+ @staticmethod
1778
+ def getAsLongValueExpression(operand):
1779
+ return "GET_NILONG_C_VALUE(%s)" % operand
1780
+
1781
+ @staticmethod
1782
+ def getAsObjectValueExpression(operand):
1783
+ return "GET_NILONG_OBJECT_VALUE(%s)" % operand
1784
+
1785
+ @staticmethod
1786
+ def getToValueFromBoolExpression(operand):
1787
+ assert False
1788
+ return "%s ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE" % operand
1789
+
1790
+ @classmethod
1791
+ def getToValueFromObjectExpression(cls, operand):
1792
+ # TODO: Seems wrong, int return values only happen to match nuitka_bool here
1793
+ return cls.getToValueFromBoolExpression("CHECK_IF_TRUE(%s)" % operand)
1794
+
1795
+ @staticmethod
1796
+ def getTakeReferenceStatement(operand, immortal):
1797
+ assert False
1798
+ return ""
1799
+
1800
+ @staticmethod
1801
+ def getExceptionResultIndicatorValue():
1802
+ assert False
1803
+ return "NUITKA_BOOL_EXCEPTION"
1804
+
1805
+
1806
+ n_ilong_desc = NILongDesc()
1807
+
1808
+
1659
1809
  class NVoidDesc(ConcreteCTypeBase):
1660
1810
  type_name = "nvoid"
1661
1811
  type_desc = "Nuitka C void value"
@@ -1696,7 +1846,7 @@ class NVoidDesc(ConcreteCTypeBase):
1696
1846
  return "NUITKA_VOID_OK"
1697
1847
 
1698
1848
  @staticmethod
1699
- def getTakeReferenceStatement(operand):
1849
+ def getTakeReferenceStatement(operand, immortal):
1700
1850
  return ""
1701
1851
 
1702
1852
  @staticmethod
@@ -1748,10 +1898,31 @@ related_types = {}
1748
1898
 
1749
1899
 
1750
1900
  def _addRelatedTypes(type_desc_1, type_desc_2):
1751
- related_types[type_desc_1] = (type_desc_2,)
1752
- related_types[type_desc_2] = (type_desc_1,)
1901
+ if type_desc_1 not in related_types:
1902
+ related_types[type_desc_1] = set()
1903
+ if type_desc_2 not in related_types:
1904
+ related_types[type_desc_2] = set()
1905
+
1906
+ related_types[type_desc_1].add(type_desc_2)
1907
+ related_types[type_desc_2].add(type_desc_1)
1753
1908
 
1754
1909
 
1755
1910
  _addRelatedTypes(int_desc, c_long_desc)
1756
1911
  _addRelatedTypes(long_desc, c_digit_desc)
1912
+ _addRelatedTypes(long_desc, c_long_desc)
1757
1913
  _addRelatedTypes(float_desc, c_float_desc)
1914
+
1915
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
1916
+ # integrates with CPython, but also works on its own.
1917
+ #
1918
+ # Licensed under the Apache License, Version 2.0 (the "License");
1919
+ # you may not use this file except in compliance with the License.
1920
+ # You may obtain a copy of the License at
1921
+ #
1922
+ # http://www.apache.org/licenses/LICENSE-2.0
1923
+ #
1924
+ # Unless required by applicable law or agreed to in writing, software
1925
+ # distributed under the License is distributed on an "AS IS" BASIS,
1926
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1927
+ # See the License for the specific language governing permissions and
1928
+ # limitations under the License.
@@ -1,20 +1,6 @@
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
+
3
+
18
4
  """ Common helper functions for specializing code."""
19
5
 
20
6
  from nuitka.Constants import the_empty_unicode
@@ -377,3 +363,18 @@ def check():
377
363
 
378
364
 
379
365
  check()
366
+
367
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
368
+ # integrates with CPython, but also works on its own.
369
+ #
370
+ # Licensed under the Apache License, Version 2.0 (the "License");
371
+ # you may not use this file except in compliance with the License.
372
+ # You may obtain a copy of the License at
373
+ #
374
+ # http://www.apache.org/licenses/LICENSE-2.0
375
+ #
376
+ # Unless required by applicable law or agreed to in writing, software
377
+ # distributed under the License is distributed on an "AS IS" BASIS,
378
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
379
+ # See the License for the specific language governing permissions and
380
+ # limitations under the License.