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
  """ Shared definitions of what binary operation helpers are available.
19
5
 
20
6
  These are functions to work with helper names, as well as sets of functions to
@@ -68,47 +54,50 @@ def deriveInplaceFromBinaryOperations(operations_set):
68
54
  )
69
55
 
70
56
 
71
- def _makeTypeSemiOps(op_code, type_name, in_place=False):
72
- if in_place:
73
- yield "INPLACE_OPERATION_%s_%s_OBJECT" % (op_code, type_name)
74
- else:
75
- yield "BINARY_OPERATION_%s_OBJECT_OBJECT_%s" % (op_code, type_name)
76
- yield "BINARY_OPERATION_%s_OBJECT_%s_OBJECT" % (op_code, type_name)
57
+ def _makeTypeSemiOps(op_code, type_name, result_types):
58
+ for result_type in result_types or (None,):
59
+ if result_type is None:
60
+ yield "INPLACE_OPERATION_%s_%s_OBJECT" % (op_code, type_name)
61
+ else:
62
+ yield "BINARY_OPERATION_%s_%s_OBJECT_%s" % (op_code, result_type, type_name)
63
+ yield "BINARY_OPERATION_%s_%s_%s_OBJECT" % (op_code, result_type, type_name)
77
64
 
78
65
 
79
- def _makeTypeOps(op_code, type_name, include_nbool, in_place=False):
80
- if in_place:
66
+ def _makeTypeOps(op_code, type_name, result_types):
67
+ if result_types is None:
68
+ # Inplace has no result type.
81
69
  yield "INPLACE_OPERATION_%s_%s_%s" % (op_code, type_name, type_name)
82
70
  yield "INPLACE_OPERATION_%s_OBJECT_%s" % (op_code, type_name)
83
71
  yield "INPLACE_OPERATION_%s_%s_OBJECT" % (op_code, type_name)
84
72
  else:
85
- yield "BINARY_OPERATION_%s_OBJECT_%s_%s" % (op_code, type_name, type_name)
86
- yield "BINARY_OPERATION_%s_OBJECT_OBJECT_%s" % (op_code, type_name)
87
- yield "BINARY_OPERATION_%s_OBJECT_%s_OBJECT" % (op_code, type_name)
88
-
89
- if include_nbool and not in_place:
90
- for helper in _makeTypeOpsNbool(op_code, type_name):
91
- yield helper
73
+ for result_type in result_types:
74
+ yield "BINARY_OPERATION_%s_%s_%s_%s" % (
75
+ op_code,
76
+ result_type,
77
+ type_name,
78
+ type_name,
79
+ )
80
+ yield "BINARY_OPERATION_%s_%s_OBJECT_%s" % (op_code, result_type, type_name)
81
+ yield "BINARY_OPERATION_%s_%s_%s_OBJECT" % (op_code, result_type, type_name)
92
82
 
93
83
 
94
84
  def _makeTypeOpsNbool(op_code, type_name):
95
- yield "BINARY_OPERATION_%s_NBOOL_%s_%s" % (op_code, type_name, type_name)
96
- yield "BINARY_OPERATION_%s_NBOOL_OBJECT_%s" % (op_code, type_name)
97
- yield "BINARY_OPERATION_%s_NBOOL_%s_OBJECT" % (op_code, type_name)
85
+ return _makeTypeOps(op_code=op_code, type_name=type_name, result_types=("NBOOL",))
98
86
 
99
87
 
100
- def _isCommutativeOperation(op_code):
88
+ def isCommutativeOperation(op_code):
101
89
  return op_code in ("ADD", "MULT", "BITOR", "BITAND", "BITXOR")
102
90
 
103
91
 
104
- def _isCommutativeType(type_name):
105
- return type_name in ("INT", "LONG", "FLOAT", "CLONG", "DIGIT", "CFLOAT")
92
+ def isCommutativeType(type_name):
93
+ return type_name in ("INT", "LONG", "FLOAT", "CLONG", "DIGIT", "CFLOAT", "NILONG")
106
94
 
107
95
 
108
96
  _type_order = (
109
97
  "CLONG",
110
98
  "INT",
111
99
  "DIGIT",
100
+ "NILONG",
112
101
  "CFLOAT",
113
102
  "LONG",
114
103
  "FLOAT",
@@ -122,76 +111,61 @@ _type_order = (
122
111
  _no_inplace_target_types = ("CLONG", "DIGIT", "CFLOAT")
123
112
 
124
113
 
125
- def _makeFriendOps(op_code, include_nbool, in_place, *type_names):
126
- assert len(type_names) == len(set(type_names)), type_names
127
-
128
- type_names = tuple(
129
- sorted(type_names, key=lambda type_name: -_type_order.index(type_name))
114
+ def _makeFriendOps(op_code, friend_type_names, result_types):
115
+ friend_type_names = tuple(
116
+ sorted(friend_type_names, key=lambda type_name: -_type_order.index(type_name))
130
117
  )
131
118
 
132
- for type_name1 in type_names:
133
- for type_name2 in type_names[type_names.index(type_name1) + 1 :]:
134
- # These should be used with reversed arguments, and only have the
135
- # dominant type as the first argument.
136
- arg_swap = (
137
- _isCommutativeOperation(op_code)
138
- and not in_place
139
- and _isCommutativeType(type_name1)
140
- and _isCommutativeType(type_name2)
141
- )
142
-
143
- if in_place:
144
- if type_name1 not in _no_inplace_target_types:
145
- yield "INPLACE_OPERATION_%s_%s_%s" % (
146
- op_code,
147
- type_name1,
148
- type_name2,
149
- )
150
- else:
151
- yield "BINARY_OPERATION_%s_OBJECT_%s_%s" % (
152
- op_code,
153
- type_name1,
154
- type_name2,
119
+ for type_name1 in friend_type_names:
120
+ for type_name2 in friend_type_names[friend_type_names.index(type_name1) + 1 :]:
121
+ for result_type in result_types or (None,):
122
+ # These should be used with reversed arguments, and only have the
123
+ # dominant type as the first argument.
124
+ arg_swap = (
125
+ isCommutativeOperation(op_code)
126
+ and result_type is not None
127
+ and isCommutativeType(type_name1)
128
+ and isCommutativeType(type_name2)
155
129
  )
156
130
 
157
- if not arg_swap:
158
- if in_place:
159
- if type_name2 not in _no_inplace_target_types:
131
+ if result_type is None:
132
+ if type_name1 not in _no_inplace_target_types:
160
133
  yield "INPLACE_OPERATION_%s_%s_%s" % (
161
134
  op_code,
162
- type_name2,
163
135
  type_name1,
136
+ type_name2,
164
137
  )
165
138
  else:
166
- yield "BINARY_OPERATION_%s_OBJECT_%s_%s" % (
139
+ yield "BINARY_OPERATION_%s_%s_%s_%s" % (
167
140
  op_code,
168
- type_name2,
141
+ result_type,
169
142
  type_name1,
170
- )
171
-
172
- if include_nbool and not in_place:
173
- yield "BINARY_OPERATION_%s_NBOOL_%s_%s" % (
174
- op_code,
175
- type_name1,
176
- type_name2,
177
- )
178
-
179
- if not arg_swap:
180
- yield "BINARY_OPERATION_%s_NBOOL_%s_%s" % (
181
- op_code,
182
143
  type_name2,
183
- type_name1,
184
144
  )
185
145
 
146
+ if not arg_swap:
147
+ if result_type is None:
148
+ if type_name2 not in _no_inplace_target_types:
149
+ yield "INPLACE_OPERATION_%s_%s_%s" % (
150
+ op_code,
151
+ type_name2,
152
+ type_name1,
153
+ )
154
+ else:
155
+ yield "BINARY_OPERATION_%s_%s_%s_%s" % (
156
+ op_code,
157
+ result_type,
158
+ type_name2,
159
+ type_name1,
160
+ )
186
161
 
187
- def _makeDefaultOps(op_code, include_nbool, in_place=False):
188
- if in_place:
189
- yield "INPLACE_OPERATION_%s_OBJECT_OBJECT" % op_code
190
- else:
191
- yield "BINARY_OPERATION_%s_OBJECT_OBJECT_OBJECT" % op_code
192
162
 
193
- if include_nbool and not in_place:
194
- yield "BINARY_OPERATION_%s_NBOOL_OBJECT_OBJECT" % op_code
163
+ def _makeDefaultOps(op_code, result_types):
164
+ for result_type in result_types or (None,):
165
+ if result_type is None:
166
+ yield "INPLACE_OPERATION_%s_OBJECT_OBJECT" % op_code
167
+ else:
168
+ yield "BINARY_OPERATION_%s_%s_OBJECT_OBJECT" % (op_code, result_type)
195
169
 
196
170
 
197
171
  def _makeNonContainerMathOps(op_code):
@@ -201,41 +175,81 @@ def _makeNonContainerMathOps(op_code):
201
175
  if "SUB" in op_code and type_name == "SET":
202
176
  continue
203
177
 
204
- for value in _makeTypeOps(op_code, type_name, include_nbool=True):
178
+ for value in _makeTypeOps(
179
+ op_code, type_name, result_types=standard_result_types
180
+ ):
205
181
  yield value
206
182
 
207
183
 
208
- def _makeNumberOps(op_code, include_nbool, in_place):
184
+ def _makeNumberOps(op_code, result_types):
209
185
  return buildOrderedSet(
210
- _makeTypeOps(op_code, "INT", include_nbool=include_nbool, in_place=in_place),
211
- _makeTypeOps(op_code, "LONG", include_nbool=include_nbool, in_place=in_place),
212
- _makeTypeOps(op_code, "FLOAT", include_nbool=include_nbool, in_place=in_place),
186
+ _makeTypeOps(op_code=op_code, type_name="INT", result_types=result_types),
187
+ _makeTypeOps(op_code=op_code, type_name="LONG", result_types=result_types),
188
+ _makeTypeOps(op_code=op_code, type_name="FLOAT", result_types=result_types),
213
189
  # These are friends naturally, they all add with another.
214
- _makeFriendOps(op_code, include_nbool, in_place, "INT", "LONG", "FLOAT"),
190
+ _makeFriendOps(
191
+ op_code=op_code,
192
+ friend_type_names=("INT", "LONG", "FLOAT"),
193
+ result_types=result_types,
194
+ ),
215
195
  # Special operations, currently used with constant values mostly.
216
- _makeFriendOps(op_code, include_nbool, in_place, "INT", "CLONG"),
217
- _makeFriendOps(op_code, include_nbool, in_place, "LONG", "DIGIT")
218
- if op_code in ("ADD", "SUB") # TODO: Add more
219
- else (),
220
- _makeFriendOps(op_code, include_nbool, in_place, "FLOAT", "CFLOAT"),
196
+ _makeFriendOps(
197
+ op_code, friend_type_names=("INT", "CLONG"), result_types=result_types
198
+ ),
199
+ (
200
+ _makeFriendOps(
201
+ op_code, friend_type_names=("LONG", "DIGIT"), result_types=result_types
202
+ )
203
+ if op_code in ("ADD", "SUB") # TODO: Add more
204
+ else ()
205
+ ),
206
+ (
207
+ _makeFriendOps(
208
+ op_code, friend_type_names=("LONG", "CLONG"), result_types=result_types
209
+ )
210
+ if op_code in ("ADD", "SUB") # TODO: Add more
211
+ else ()
212
+ ),
213
+ _makeFriendOps(
214
+ op_code, friend_type_names=("FLOAT", "CFLOAT"), result_types=result_types
215
+ ),
216
+ (
217
+ _makeFriendOps(
218
+ op_code,
219
+ friend_type_names=("NILONG", "NILONG", "DIGIT"),
220
+ result_types=("NILONG",),
221
+ )
222
+ if op_code in ("ADD", "SUB") and result_types is not None
223
+ else ()
224
+ ),
221
225
  )
222
226
 
223
227
 
224
228
  def _makeAddOps(in_place):
225
229
  return buildOrderedSet(
226
- _makeNumberOps("ADD", include_nbool=True, in_place=in_place),
227
- _makeTypeOps("ADD", "STR", include_nbool=False, in_place=in_place),
228
- _makeTypeOps("ADD", "UNICODE", include_nbool=False, in_place=in_place),
229
- _makeTypeOps("ADD", "BYTES", include_nbool=False, in_place=in_place),
230
- _makeTypeOps("ADD", "TUPLE", include_nbool=False, in_place=in_place),
231
- _makeTypeOps("ADD", "LIST", include_nbool=True, in_place=in_place),
230
+ _makeNumberOps("ADD", result_types=None if in_place else standard_result_types),
231
+ _makeTypeOps("ADD", "STR", result_types=None if in_place else ("OBJECT",)),
232
+ _makeTypeOps("ADD", "UNICODE", result_types=None if in_place else ("OBJECT",)),
233
+ _makeTypeOps("ADD", "BYTES", result_types=None if in_place else ("OBJECT",)),
234
+ _makeTypeOps("ADD", "TUPLE", result_types=None if in_place else ("OBJECT",)),
235
+ _makeTypeOps(
236
+ "ADD", "LIST", result_types=None if in_place else standard_result_types
237
+ ),
232
238
  # These are friends too.
233
- _makeFriendOps("ADD", True, in_place, "STR", "UNICODE"),
239
+ _makeFriendOps(
240
+ "ADD",
241
+ friend_type_names=("STR", "UNICODE"),
242
+ result_types=None if in_place else standard_result_types,
243
+ ),
234
244
  # Default implementation.
235
- _makeDefaultOps("ADD", include_nbool=True, in_place=in_place),
245
+ _makeDefaultOps(
246
+ "ADD", result_types=None if in_place else standard_result_types
247
+ ),
236
248
  )
237
249
 
238
250
 
251
+ standard_result_types = ("OBJECT", "NBOOL")
252
+
239
253
  specialized_add_helpers_set = _makeAddOps(in_place=False)
240
254
 
241
255
  nonspecialized_add_helpers_set = buildOrderedSet(
@@ -246,42 +260,86 @@ nonspecialized_add_helpers_set = buildOrderedSet(
246
260
  )
247
261
 
248
262
 
249
- def makeSubOps(in_place):
263
+ def makeSubOps(result_types):
250
264
  return buildOrderedSet(
251
- _makeNumberOps("SUB", include_nbool=False, in_place=in_place),
252
- _makeDefaultOps("SUB", include_nbool=False, in_place=in_place),
265
+ _makeNumberOps("SUB", result_types=result_types),
266
+ _makeDefaultOps("SUB", result_types=result_types),
253
267
  )
254
268
 
255
269
 
256
- specialized_sub_helpers_set = makeSubOps(in_place=False)
270
+ specialized_sub_helpers_set = makeSubOps(result_types=("OBJECT",))
257
271
 
258
272
  # These made no sense to specialize for, nothing to gain.
259
273
  nonspecialized_sub_helpers_set = buildOrderedSet(
260
- _makeTypeOps("SUB", "STR", include_nbool=True),
261
- _makeTypeOps("SUB", "UNICODE", include_nbool=True),
262
- _makeTypeOps("SUB", "BYTES", include_nbool=True),
274
+ _makeTypeOps("SUB", "STR", result_types=standard_result_types),
275
+ _makeTypeOps("SUB", "UNICODE", result_types=standard_result_types),
276
+ _makeTypeOps("SUB", "BYTES", result_types=standard_result_types),
263
277
  _makeNonContainerMathOps("SUB"),
264
278
  )
265
279
 
266
280
 
267
281
  def _makeMultOps(in_place):
268
282
  return buildOrderedSet(
269
- _makeNumberOps("MULT", include_nbool=True, in_place=in_place),
270
- _makeFriendOps("MULT", False, in_place, "INT", "STR"),
271
- _makeFriendOps("MULT", False, in_place, "INT", "UNICODE"),
272
- _makeFriendOps("MULT", False, in_place, "INT", "TUPLE"),
273
- _makeFriendOps("MULT", False, in_place, "INT", "LIST"),
274
- _makeFriendOps("MULT", False, in_place, "LONG", "UNICODE"),
275
- _makeFriendOps("MULT", False, in_place, "LONG", "BYTES"),
276
- _makeFriendOps("MULT", False, in_place, "LONG", "TUPLE"),
277
- _makeFriendOps("MULT", False, in_place, "LONG", "LIST"),
278
- _makeTypeSemiOps("MULT", "STR", in_place=in_place),
279
- _makeTypeSemiOps("MULT", "UNICODE", in_place=in_place),
280
- _makeTypeSemiOps("MULT", "BYTES", in_place=in_place),
281
- _makeTypeSemiOps("MULT", "TUPLE", in_place=in_place),
282
- _makeTypeSemiOps("MULT", "LIST", in_place=in_place),
283
+ _makeNumberOps(
284
+ "MULT", result_types=None if in_place else standard_result_types
285
+ ),
286
+ _makeFriendOps(
287
+ "MULT",
288
+ friend_type_names=("INT", "STR"),
289
+ result_types=None if in_place else ("OBJECT",),
290
+ ),
291
+ _makeFriendOps(
292
+ "MULT",
293
+ friend_type_names=("INT", "UNICODE"),
294
+ result_types=None if in_place else ("OBJECT",),
295
+ ),
296
+ _makeFriendOps(
297
+ "MULT",
298
+ friend_type_names=("INT", "TUPLE"),
299
+ result_types=None if in_place else ("OBJECT",),
300
+ ),
301
+ _makeFriendOps(
302
+ "MULT",
303
+ friend_type_names=("INT", "LIST"),
304
+ result_types=None if in_place else ("OBJECT",),
305
+ ),
306
+ _makeFriendOps(
307
+ "MULT",
308
+ friend_type_names=("LONG", "UNICODE"),
309
+ result_types=None if in_place else ("OBJECT",),
310
+ ),
311
+ _makeFriendOps(
312
+ "MULT",
313
+ friend_type_names=("LONG", "BYTES"),
314
+ result_types=None if in_place else ("OBJECT",),
315
+ ),
316
+ _makeFriendOps(
317
+ "MULT",
318
+ friend_type_names=("LONG", "TUPLE"),
319
+ result_types=None if in_place else ("OBJECT",),
320
+ ),
321
+ _makeFriendOps(
322
+ "MULT",
323
+ friend_type_names=("LONG", "LIST"),
324
+ result_types=None if in_place else ("OBJECT",),
325
+ ),
326
+ _makeTypeSemiOps("MULT", "STR", result_types=None if in_place else ("OBJECT",)),
327
+ _makeTypeSemiOps(
328
+ "MULT", "UNICODE", result_types=None if in_place else ("OBJECT",)
329
+ ),
330
+ _makeTypeSemiOps(
331
+ "MULT", "BYTES", result_types=None if in_place else ("OBJECT",)
332
+ ),
333
+ _makeTypeSemiOps(
334
+ "MULT", "TUPLE", result_types=None if in_place else ("OBJECT",)
335
+ ),
336
+ _makeTypeSemiOps(
337
+ "MULT", "LIST", result_types=None if in_place else ("OBJECT",)
338
+ ),
283
339
  # These are friends naturally, they all mul with another
284
- _makeDefaultOps("MULT", include_nbool=True, in_place=in_place),
340
+ _makeDefaultOps(
341
+ "MULT", result_types=None if in_place else standard_result_types
342
+ ),
285
343
  )
286
344
 
287
345
 
@@ -291,29 +349,29 @@ specialized_mult_helpers_set = _makeMultOps(in_place=False)
291
349
  nonspecialized_mult_helpers_set = None
292
350
 
293
351
 
294
- def _makeDivOps(op_code, in_place):
352
+ def _makeDivOps(op_code, result_types):
295
353
  return buildOrderedSet(
296
- _makeNumberOps(op_code, include_nbool=False, in_place=in_place),
297
- _makeDefaultOps(op_code, include_nbool=False, in_place=in_place),
354
+ _makeNumberOps(op_code, result_types=result_types),
355
+ _makeDefaultOps(op_code, result_types=result_types),
298
356
  )
299
357
 
300
358
 
301
- specialized_truediv_helpers_set = _makeDivOps("TRUEDIV", in_place=False)
359
+ specialized_truediv_helpers_set = _makeDivOps("TRUEDIV", result_types=("OBJECT",))
302
360
 
303
361
  nonspecialized_truediv_helpers_set = buildOrderedSet(
304
- _makeTypeOps("TRUEDIV", "UNICODE", include_nbool=True),
305
- _makeTypeOps("TRUEDIV", "STR", include_nbool=True),
306
- _makeTypeOps("TRUEDIV", "BYTES", include_nbool=True),
362
+ _makeTypeOps("TRUEDIV", "UNICODE", result_types=standard_result_types),
363
+ _makeTypeOps("TRUEDIV", "STR", result_types=standard_result_types),
364
+ _makeTypeOps("TRUEDIV", "BYTES", result_types=standard_result_types),
307
365
  _makeNonContainerMathOps("TRUEDIV"),
308
366
  )
309
367
 
310
- specialized_olddiv_helpers_set = _makeDivOps("OLDDIV", in_place=False)
368
+ specialized_olddiv_helpers_set = _makeDivOps("OLDDIV", result_types=("OBJECT",))
311
369
 
312
370
  nonspecialized_olddiv_helpers_set = OrderedSet(
313
371
  helper.replace("TRUEDIV", "OLDDIV") for helper in nonspecialized_truediv_helpers_set
314
372
  )
315
373
 
316
- specialized_floordiv_helpers_set = _makeDivOps("FLOORDIV", in_place=False)
374
+ specialized_floordiv_helpers_set = _makeDivOps("FLOORDIV", result_types=("OBJECT",))
317
375
 
318
376
  nonspecialized_floordiv_helpers_set = OrderedSet(
319
377
  helper.replace("TRUEDIV", "FLOORDIV")
@@ -352,14 +410,20 @@ def _makeModOps(in_place):
352
410
  )
353
411
 
354
412
  return buildOrderedSet(
355
- _makeNumberOps("MOD", include_nbool=True, in_place=in_place),
413
+ _makeNumberOps("MOD", result_types=None if in_place else standard_result_types),
356
414
  # These are friends naturally, they mod with another
357
- _makeFriendOps("MOD", True, in_place, "INT", "LONG", "FLOAT"),
415
+ _makeFriendOps(
416
+ "MOD",
417
+ friend_type_names=("INT", "LONG", "FLOAT"),
418
+ result_types=None if in_place else standard_result_types,
419
+ ),
358
420
  # String interpolation:
359
421
  _makeFormatOps(str_type_name="STR"),
360
422
  _makeFormatOps(str_type_name="UNICODE"),
361
423
  _makeFormatOps(str_type_name="BYTES"),
362
- _makeDefaultOps("MOD", include_nbool=True, in_place=in_place),
424
+ _makeDefaultOps(
425
+ "MOD", result_types=None if in_place else standard_result_types
426
+ ),
363
427
  )
364
428
 
365
429
 
@@ -402,23 +466,37 @@ nonspecialized_imod_helpers_set = deriveInplaceFromBinaryOperations(
402
466
 
403
467
  def _makeBitOps(op_name, in_place):
404
468
  return buildOrderedSet(
405
- _makeTypeOps(op_name, "LONG", include_nbool=True, in_place=in_place),
406
- _makeTypeOps(op_name, "INT", include_nbool=True, in_place=in_place),
407
- _makeFriendOps(op_name, True, in_place, "INT", "CLONG"),
408
- _makeFriendOps(op_name, True, in_place, "INT", "LONG"),
409
- _makeTypeOps(op_name, "SET", include_nbool=False, in_place=in_place),
410
- _makeDefaultOps(op_name, include_nbool=True, in_place=in_place),
469
+ _makeTypeOps(
470
+ op_name, "LONG", result_types=None if in_place else standard_result_types
471
+ ),
472
+ _makeTypeOps(
473
+ op_name, "INT", result_types=None if in_place else standard_result_types
474
+ ),
475
+ _makeFriendOps(
476
+ op_name,
477
+ friend_type_names=("INT", "CLONG"),
478
+ result_types=None if in_place else standard_result_types,
479
+ ),
480
+ _makeFriendOps(
481
+ op_name,
482
+ friend_type_names=("INT", "LONG"),
483
+ result_types=None if in_place else standard_result_types,
484
+ ),
485
+ _makeTypeOps(op_name, "SET", result_types=None if in_place else ("OBJECT",)),
486
+ _makeDefaultOps(
487
+ op_name, result_types=None if in_place else standard_result_types
488
+ ),
411
489
  )
412
490
 
413
491
 
414
492
  specialized_bitor_helpers_set = _makeBitOps("BITOR", in_place=False)
415
493
 
416
494
  nonspecialized_bitor_helpers_set = buildOrderedSet(
417
- _makeTypeOps("BITOR", "FLOAT", include_nbool=True),
495
+ _makeTypeOps("BITOR", "FLOAT", result_types=standard_result_types),
418
496
  _makeNonContainerMathOps("BITOR"),
419
- _makeTypeOps("BITOR", "UNICODE", include_nbool=True),
420
- _makeTypeOps("BITOR", "STR", include_nbool=True),
421
- _makeTypeOps("BITOR", "BYTES", include_nbool=True),
497
+ _makeTypeOps("BITOR", "UNICODE", result_types=standard_result_types),
498
+ _makeTypeOps("BITOR", "STR", result_types=standard_result_types),
499
+ _makeTypeOps("BITOR", "BYTES", result_types=standard_result_types),
422
500
  )
423
501
 
424
502
  specialized_bitand_helpers_set = _makeBitOps("BITAND", in_place=False)
@@ -434,17 +512,27 @@ nonspecialized_bitxor_helpers_set = OrderedSet(
434
512
 
435
513
  def _makeShiftOps(op_name, in_place):
436
514
  return buildOrderedSet(
437
- _makeTypeOps(op_name, "LONG", include_nbool=True, in_place=in_place),
438
- _makeTypeOps(op_name, "INT", include_nbool=True, in_place=in_place),
439
- _makeFriendOps(op_name, True, in_place, "INT", "LONG"),
440
- _makeDefaultOps(op_name, include_nbool=True, in_place=in_place),
515
+ _makeTypeOps(
516
+ op_name, "LONG", result_types=None if in_place else standard_result_types
517
+ ),
518
+ _makeTypeOps(
519
+ op_name, "INT", result_types=None if in_place else standard_result_types
520
+ ),
521
+ _makeFriendOps(
522
+ op_name,
523
+ friend_type_names=("INT", "LONG"),
524
+ result_types=None if in_place else standard_result_types,
525
+ ),
526
+ _makeDefaultOps(
527
+ op_name, result_types=None if in_place else standard_result_types
528
+ ),
441
529
  )
442
530
 
443
531
 
444
532
  specialized_lshift_helpers_set = _makeShiftOps("LSHIFT", in_place=False)
445
533
 
446
534
  nonspecialized_lshift_helpers_set = buildOrderedSet(
447
- _makeTypeOps("LSHIFT", "FLOAT", include_nbool=True),
535
+ _makeTypeOps("LSHIFT", "FLOAT", result_types=standard_result_types),
448
536
  _makeNonContainerMathOps("LSHIFT"),
449
537
  )
450
538
  specialized_rshift_helpers_set = _makeShiftOps("RSHIFT", in_place=False)
@@ -456,11 +544,13 @@ nonspecialized_rshift_helpers_set = OrderedSet(
456
544
 
457
545
 
458
546
  specialized_pow_helpers_set = buildOrderedSet(
459
- _makeTypeOps("POW", "FLOAT", include_nbool=False),
460
- _makeTypeOps("POW", "LONG", include_nbool=False),
461
- _makeTypeOps("POW", "INT", include_nbool=False),
462
- _makeFriendOps("POW", False, False, "INT", "LONG", "FLOAT"),
463
- _makeDefaultOps("POW", include_nbool=True),
547
+ _makeTypeOps("POW", "FLOAT", result_types=("OBJECT",)),
548
+ _makeTypeOps("POW", "LONG", result_types=("OBJECT",)),
549
+ _makeTypeOps("POW", "INT", result_types=("OBJECT",)),
550
+ _makeFriendOps(
551
+ "POW", friend_type_names=("INT", "LONG", "FLOAT"), result_types=("OBJECT",)
552
+ ),
553
+ _makeDefaultOps("POW", result_types=standard_result_types),
464
554
  (
465
555
  # Float is used by other types for ** operations.
466
556
  # TODO: Enable these later.
@@ -469,39 +559,39 @@ specialized_pow_helpers_set = buildOrderedSet(
469
559
  ),
470
560
  )
471
561
  nonspecialized_pow_helpers_set = buildOrderedSet(
472
- _makeTypeOps("POW", "STR", include_nbool=True),
473
- _makeTypeOps("POW", "UNICODE", include_nbool=True),
474
- _makeTypeOps("POW", "BYTES", include_nbool=True),
562
+ _makeTypeOps("POW", "STR", result_types=standard_result_types),
563
+ _makeTypeOps("POW", "UNICODE", result_types=standard_result_types),
564
+ _makeTypeOps("POW", "BYTES", result_types=standard_result_types),
475
565
  _makeNonContainerMathOps("POW"),
476
566
  )
477
567
 
478
568
 
479
- specialized_divmod_helpers_set = _makeDivOps("DIVMOD", in_place=False)
569
+ specialized_divmod_helpers_set = _makeDivOps("DIVMOD", result_types=("OBJECT",))
480
570
 
481
571
  nonspecialized_divmod_helpers_set = buildOrderedSet(
482
572
  _makeTypeOpsNbool("DIVMOD", "INT"),
483
573
  _makeTypeOpsNbool("DIVMOD", "LONG"),
484
574
  _makeTypeOpsNbool("DIVMOD", "FLOAT"),
485
- _makeTypeOps("DIVMOD", "UNICODE", include_nbool=True),
486
- _makeTypeOps("DIVMOD", "STR", include_nbool=True),
487
- _makeTypeOps("DIVMOD", "BYTES", include_nbool=True),
575
+ _makeTypeOps("DIVMOD", "UNICODE", result_types=standard_result_types),
576
+ _makeTypeOps("DIVMOD", "STR", result_types=standard_result_types),
577
+ _makeTypeOps("DIVMOD", "BYTES", result_types=standard_result_types),
488
578
  _makeNonContainerMathOps("DIVMOD"),
489
579
  )
490
580
 
491
581
  specialized_matmult_helpers_set = buildOrderedSet(
492
- _makeTypeOps("MATMULT", "LONG", include_nbool=False),
493
- _makeTypeOps("MATMULT", "FLOAT", include_nbool=False),
494
- _makeDefaultOps("MATMULT", include_nbool=False),
582
+ _makeTypeOps("MATMULT", "LONG", result_types=("OBJECT",)),
583
+ _makeTypeOps("MATMULT", "FLOAT", result_types=("OBJECT",)),
584
+ _makeDefaultOps("MATMULT", result_types=("OBJECT",)),
495
585
  )
496
586
 
497
587
  nonspecialized_matmult_helpers_set = buildOrderedSet(
498
588
  _makeTypeOpsNbool("MATMULT", "LONG"),
499
589
  _makeTypeOpsNbool("MATMULT", "FLOAT"),
500
- _makeTypeOps("MATMULT", "TUPLE", include_nbool=True),
501
- _makeTypeOps("MATMULT", "LIST", include_nbool=True),
502
- _makeTypeOps("MATMULT", "DICT", include_nbool=True),
503
- _makeTypeOps("MATMULT", "BYTES", include_nbool=True),
504
- _makeTypeOps("MATMULT", "UNICODE", include_nbool=True),
590
+ _makeTypeOps("MATMULT", "TUPLE", result_types=standard_result_types),
591
+ _makeTypeOps("MATMULT", "LIST", result_types=standard_result_types),
592
+ _makeTypeOps("MATMULT", "DICT", result_types=standard_result_types),
593
+ _makeTypeOps("MATMULT", "BYTES", result_types=standard_result_types),
594
+ _makeTypeOps("MATMULT", "UNICODE", result_types=standard_result_types),
505
595
  )
506
596
 
507
597
  specialized_iadd_helpers_set = buildOrderedSet(
@@ -521,7 +611,7 @@ nonspecialized_iadd_helpers_set = buildOrderedSet(
521
611
  ),
522
612
  )
523
613
 
524
- specialized_isub_helpers_set = makeSubOps(in_place=True)
614
+ specialized_isub_helpers_set = makeSubOps(result_types=None)
525
615
 
526
616
  nonspecialized_isub_helpers_set = deriveInplaceFromBinaryOperations(
527
617
  nonspecialized_sub_helpers_set
@@ -567,19 +657,19 @@ nonspecialized_irshift_helpers_set = deriveInplaceFromBinaryOperations(
567
657
  nonspecialized_rshift_helpers_set
568
658
  )
569
659
 
570
- specialized_ifloordiv_helpers_set = _makeDivOps("FLOORDIV", in_place=True)
660
+ specialized_ifloordiv_helpers_set = _makeDivOps("FLOORDIV", result_types=None)
571
661
 
572
662
  nonspecialized_ifloordiv_helpers_set = deriveInplaceFromBinaryOperations(
573
663
  nonspecialized_floordiv_helpers_set
574
664
  )
575
665
 
576
- specialized_itruediv_helpers_set = _makeDivOps("TRUEDIV", in_place=True)
666
+ specialized_itruediv_helpers_set = _makeDivOps("TRUEDIV", result_types=None)
577
667
 
578
668
  nonspecialized_itruediv_helpers_set = deriveInplaceFromBinaryOperations(
579
669
  nonspecialized_truediv_helpers_set
580
670
  )
581
671
 
582
- specialized_iolddiv_helpers_set = _makeDivOps("OLDDIV", in_place=True)
672
+ specialized_iolddiv_helpers_set = _makeDivOps("OLDDIV", result_types=None)
583
673
 
584
674
  nonspecialized_iolddiv_helpers_set = deriveInplaceFromBinaryOperations(
585
675
  nonspecialized_olddiv_helpers_set
@@ -612,3 +702,19 @@ def getNonSpecializedBinaryOperations(operator):
612
702
 
613
703
  def getCodeNameForBinaryOperation(operator):
614
704
  return operator[1:].upper() if operator[0] == "I" else operator.upper()
705
+
706
+
707
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
708
+ # integrates with CPython, but also works on its own.
709
+ #
710
+ # Licensed under the Apache License, Version 2.0 (the "License");
711
+ # you may not use this file except in compliance with the License.
712
+ # You may obtain a copy of the License at
713
+ #
714
+ # http://www.apache.org/licenses/LICENSE-2.0
715
+ #
716
+ # Unless required by applicable law or agreed to in writing, software
717
+ # distributed under the License is distributed on an "AS IS" BASIS,
718
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
719
+ # See the License for the specific language governing permissions and
720
+ # limitations under the License.