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,21 +1,6 @@
1
1
  # -*- python -*-
2
- # Copyright 2023, Kay Hayen, mailto:kay.hayen@gmail.com
3
- #
4
- # Part of "Nuitka", an optimizing Python compiler that is compatible and
5
- # integrates with CPython, but also works on its own.
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
2
+ # Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
3
+
19
4
 
20
5
  """
21
6
  The Nuitka scons file. If you have Scons or platform knowledge, please be
@@ -53,7 +38,14 @@ from nuitka.Tracing import (
53
38
  scons_logger,
54
39
  setQuiet,
55
40
  )
56
- from nuitka.utils.Execution import check_output
41
+ from nuitka.utils.FileOperations import (
42
+ changeFilenameExtension,
43
+ deleteFile,
44
+ getExternalUsePath,
45
+ getFilenameExtension,
46
+ getNormalizedPath,
47
+ isFilesystemEncodable,
48
+ )
57
49
  from nuitka.utils.Json import loadJsonFromFilename
58
50
  from nuitka.utils.Utils import (
59
51
  isDebianBasedLinux,
@@ -101,7 +93,7 @@ from .SconsUtils import (
101
93
  writeSconsReport,
102
94
  )
103
95
 
104
- # spell-checker: ignore ccversion,ccflags,werror,cppdefines,cpppath
96
+ # spell-checker: ignore ccversion,cflags,ccflags,werror,cppdefines,cpppath,linkflags,libpath
105
97
 
106
98
  # Set the arguments.
107
99
  setArguments(ARGUMENTS)
@@ -118,18 +110,12 @@ source_dir = getArgumentRequired("source_dir")
118
110
  nuitka_src = getArgumentRequired("nuitka_src")
119
111
  static_src = os.path.join(source_dir, "static")
120
112
 
121
- # The name of executable or extension module that we produce.
122
- result_basepath = getArgumentRequired("result_name")
123
-
124
- # The name of executable that we produce (in executable mode).
125
- result_exe = getArgumentDefaulted("result_exe", None)
113
+ # The name of executable that we are supposed to produce.
114
+ result_exe = getArgumentRequired("result_exe")
126
115
 
127
116
  # Name of the main program (in executable mode, typically __main__ but can be in a package too.)
128
117
  main_module_name = getArgumentDefaulted("main_module_name", "__main__")
129
118
 
130
- # The suffix for an extension module (in module mode).
131
- module_suffix = getArgumentDefaulted("module_suffix", None)
132
-
133
119
  # Full names shall be used, no remapping for cacheable filenames.
134
120
  full_names = getArgumentBool("full_names", False)
135
121
 
@@ -139,6 +125,10 @@ module_mode = getArgumentBool("module_mode", False)
139
125
  # Debug mode: Less optimizations, debug information in the resulting binary.
140
126
  debug_mode = getArgumentBool("debug_mode", False)
141
127
 
128
+ # Debugger mode: Debug information in the resulting binary and intention to run
129
+ # in debugger.
130
+ debugger_mode = getArgumentBool("debugger_mode", False)
131
+
142
132
  # Profiling mode: Outputs vmprof based information from program run.
143
133
  profile_mode = getArgumentBool("profile_mode", False)
144
134
 
@@ -146,8 +136,14 @@ profile_mode = getArgumentBool("profile_mode", False)
146
136
  python_version_str = getArgumentRequired("python_version")
147
137
  python_version = tuple(int(d) for d in python_version_str.split("."))
148
138
 
139
+ gil_mode = getArgumentBool("gil_mode")
140
+
149
141
  # The ABI flags to target.
150
142
  abiflags = getArgumentDefaulted("abiflags", "")
143
+
144
+ if not gil_mode and "t" not in abiflags:
145
+ abiflags = "t" + abiflags
146
+
151
147
  python_abi_version = python_version_str + abiflags
152
148
 
153
149
  # Python debug mode: reference count checking, assertions in CPython core.
@@ -167,6 +163,9 @@ deployment_mode = getArgumentBool("deployment", False)
167
163
  # Experimental indications. Do things that are not yet safe to do.
168
164
  no_deployment = getArgumentList("no_deployment", "")
169
165
 
166
+ # Debug mode indications. Do check things with fine granularity.
167
+ debug_modes = getArgumentList("debug_modes", "")
168
+
170
169
  # Tracing mode. Output program progress.
171
170
  trace_mode = getArgumentBool("trace_mode", False)
172
171
 
@@ -177,12 +176,8 @@ lto_mode = getArgumentDefaulted("lto_mode", "auto")
177
176
  # PGO mode: Use profile guided optimization of C compiler if available.
178
177
  pgo_mode = getArgumentDefaulted("pgo_mode", "no")
179
178
 
180
- # Windows target mode: Compile for Windows. Used to be an option, but we
181
- # no longer cross compile this way.
182
- win_target = os.name == "nt"
183
-
184
- # Windows subsystem mode: Disable console for windows builds.
185
- disable_console = getArgumentBool("disable_console", False)
179
+ # Console mode specified
180
+ console_mode = getArgumentDefaulted("console_mode", "attach")
186
181
 
187
182
  # Windows might be running a Python whose DLL we have to use.
188
183
  uninstalled_python = getArgumentBool("uninstalled_python", False)
@@ -203,7 +198,7 @@ clang_mode = getArgumentBool("clang_mode", False)
203
198
  # Clang on Windows with no requirement to use MinGW64 or using MSYS2 MinGW flavor,
204
199
  # is changed to ClangCL from Visual Studio.
205
200
  clangcl_mode = False
206
- if win_target and not mingw_mode and clang_mode:
201
+ if os.name == "nt" and not mingw_mode and clang_mode:
207
202
  clang_mode = False
208
203
  clangcl_mode = True
209
204
 
@@ -217,6 +212,9 @@ standalone_mode = getArgumentBool("standalone_mode", False)
217
212
  # Onefile mode
218
213
  onefile_mode = getArgumentBool("onefile_mode", False)
219
214
 
215
+ # MacOS bundle
216
+ macos_bundle_mode = getArgumentBool("macos_bundle_mode", False)
217
+
220
218
  # Onefile temp mode
221
219
  onefile_temp_mode = getArgumentBool("onefile_temp_mode", False)
222
220
 
@@ -227,13 +225,15 @@ forced_stderr_path = getArgumentDefaulted("forced_stderr_path", None)
227
225
  show_scons_mode = getArgumentBool("show_scons", False)
228
226
  scons_details_logger.is_quiet = not show_scons_mode
229
227
 
230
- if int(os.environ.get("NUITKA_QUIET", "0")):
228
+ if int(os.getenv("NUITKA_QUIET", "0")):
231
229
  setQuiet()
232
230
 
233
231
  # Home of Python to be compiled against, used to find include files and
234
232
  # libraries to link against.
235
233
  python_prefix = getArgumentRequired("python_prefix")
236
234
 
235
+ python_prefix_external = getExternalUsePath(python_prefix)
236
+
237
237
  # Forced MSVC version (windows-only)
238
238
  msvc_version = getArgumentDefaulted("msvc_version", None)
239
239
 
@@ -261,6 +261,10 @@ python_sysflag_unicode = getArgumentBool("python_sysflag_unicode", False)
261
261
  python_sysflag_utf8 = getArgumentBool("python_sysflag_utf8", False)
262
262
  # python_sysflag_optimize
263
263
  python_sysflag_optimize = getArgumentInt("python_sysflag_optimize", 0)
264
+ # python_sysflag_dontwritebytecode
265
+ python_sysflag_dontwritebytecode = getArgumentBool(
266
+ "python_sysflag_dontwritebytecode", False
267
+ )
264
268
  # python_flag_no_asserts
265
269
  python_flag_no_asserts = getArgumentBool("python_flag_no_asserts", False)
266
270
  # python_flag_no_docstrings
@@ -287,6 +291,9 @@ cpp_include_dirs = getArgumentList("cpp_include_dirs", "")
287
291
  link_dirs = getArgumentList("link_dirs", "")
288
292
  link_libraries = getArgumentList("link_libraries", "")
289
293
 
294
+ # From statically compiled modules of the Python
295
+ link_module_libs = getArgumentList("link_module_libs", "")
296
+
290
297
  # Allow automatic downloads for ccache, etc.
291
298
  assume_yes_for_downloads = getArgumentBool("assume_yes_for_downloads", False)
292
299
 
@@ -299,6 +306,9 @@ macos_min_version = getArgumentDefaulted("macos_min_version", "")
299
306
  # Target arch for macOS.
300
307
  macos_target_arch = getArgumentDefaulted("macos_target_arch", "")
301
308
 
309
+ # gcc compiler cf_protection option
310
+ cf_protection = getArgumentDefaulted("cf_protection", "auto")
311
+
302
312
  if getArgumentBool("progress_bar", True) and not show_scons_mode:
303
313
  enableSconsProgressBar()
304
314
 
@@ -319,6 +329,7 @@ env = createEnvironment(
319
329
  target_arch=target_arch,
320
330
  experimental=experimental,
321
331
  no_deployment=no_deployment,
332
+ debug_modes=debug_modes,
322
333
  )
323
334
 
324
335
  scons_details_logger.info("Initial CC: %r" % env.get("CC"))
@@ -335,7 +346,7 @@ if "CC" in os.environ:
335
346
  elif clangcl_mode:
336
347
  # If possible, add Clang directory from MSVC if available.
337
348
  addClangClPathFromMSVC(env=env)
338
- elif clang_mode:
349
+ elif clang_mode and not mingw_mode:
339
350
  # If requested by the user, use the clang compiler, overriding what was
340
351
  # said in environment.
341
352
 
@@ -356,9 +367,11 @@ env.the_compiler = env["CC"]
356
367
  env.the_cc_name = os.path.normcase(os.path.basename(env.the_compiler))
357
368
  env.standalone_mode = standalone_mode
358
369
  env.debug_mode = debug_mode
370
+ env.debugger_mode = debugger_mode
359
371
  env.unstripped_mode = unstripped_mode
360
- env.disable_console = disable_console
372
+ env.console_mode = console_mode
361
373
  env.source_dir = source_dir
374
+ env.nuitka_src = nuitka_src
362
375
  env.low_memory = low_memory
363
376
  env.macos_min_version = macos_min_version
364
377
  env.macos_target_arch = macos_target_arch
@@ -374,10 +387,25 @@ env.gcc_mode = isGccName(env.the_cc_name) or clang_mode
374
387
  env.clang_mode = clang_mode
375
388
 
376
389
  # Only use MSVC if not already clear, we are using MinGW.
377
- env.msvc_mode = win_target and not env.gcc_mode
378
- env.mingw_mode = win_target and env.gcc_mode
390
+ env.msvc_mode = os.name == "nt" and not env.gcc_mode
391
+ env.mingw_mode = os.name == "nt" and env.gcc_mode
379
392
  env.clangcl_mode = clangcl_mode
380
393
 
394
+ # For Python3.13, we need to enforce it for now to use MSVC
395
+ if os.name == "nt" and not env.msvc_mode and python_version >= (3, 13):
396
+ scons_logger.sysexit(
397
+ """\
398
+ Sorry, non-MSVC is not currently supported with Python 3.13,
399
+ due to differences in layout internal structures of Python.
400
+
401
+ Newer Nuitka will work to solve this. Use Python 3.12 or
402
+ option "--msvc=latest" as a workaround for now and wait
403
+ for updates of Nuitka to add MinGW64 support back."""
404
+ )
405
+
406
+ # gcc compiler cf_protection option
407
+ env.cf_protection = cf_protection
408
+
381
409
  # Consider switching from gcc to its g++ compiler as a workaround that makes us work without C11.
382
410
  switchFromGccToGpp(
383
411
  env=env,
@@ -392,7 +420,7 @@ if show_scons_mode:
392
420
  my_print("Scons: Compiler used", end=" ")
393
421
  my_print(getExecutablePath(env.the_compiler, env=env), end=" ")
394
422
 
395
- if win_target and env.msvc_mode:
423
+ if os.name == "nt" and env.msvc_mode:
396
424
  my_print("(MSVC %s)" % getMsvcVersionString(env))
397
425
 
398
426
  my_print()
@@ -409,6 +437,7 @@ setupCCompiler(
409
437
  lto_mode=lto_mode,
410
438
  pgo_mode=pgo_mode,
411
439
  job_count=job_count,
440
+ onefile_compile=False,
412
441
  )
413
442
 
414
443
 
@@ -422,14 +451,14 @@ if env.gcc_mode and not env.clang_mode and env.gcc_version >= (8,):
422
451
  "--file-prefix-map=%s=%s" % (os.path.normpath(source_dir), "."),
423
452
  "--file-prefix-map=%s=%s"
424
453
  % (
425
- os.path.normpath(os.path.join(source_dir, "static_src")),
426
- os.path.normpath(os.path.join(nuitka_src, "static_src")),
454
+ os.path.normpath(os.path.join(env.source_dir, "static_src")),
455
+ os.path.normpath(os.path.join(env.nuitka_src, "static_src")),
427
456
  ),
428
457
  ]
429
458
  )
430
459
 
431
460
  if env.msvc_mode:
432
- # With Clang on Windows, there is also an linker to use.
461
+ # With Clang on Windows, there is also an linker to use. spell-checker: ignore bigobj
433
462
  env.Append(
434
463
  CCFLAGS=[
435
464
  "/EHsc", # No C++ exception handling code.
@@ -444,7 +473,7 @@ if env.msvc_mode:
444
473
 
445
474
  if module_mode:
446
475
  # Make sure we handle import library on our own and put it into the
447
- # build directory.
476
+ # build directory, spell-checker: ignore IMPLIB
448
477
 
449
478
  no_import_lib = True
450
479
  env.Append(
@@ -460,10 +489,19 @@ if env.debug_mode:
460
489
  if env.gcc_mode:
461
490
  # Allow gcc/clang to point out all kinds of inconsistency to us by
462
491
  # raising an error.
492
+
493
+ if "allow-c-warnings" not in env.experimental_flags and not env.debugger_mode:
494
+ env.Append(
495
+ CCFLAGS=[
496
+ "-Wall",
497
+ "-Werror",
498
+ ]
499
+ )
500
+ else:
501
+ env.Append(CCFLAGS=["-Wno-unused-but-set-variable"])
502
+
463
503
  env.Append(
464
504
  CCFLAGS=[
465
- "-Wall",
466
- "-Werror",
467
505
  # Unfortunately Py_INCREF(Py_False) triggers aliasing warnings,
468
506
  # which are unfounded, so disable them.
469
507
  "-Wno-error=strict-aliasing",
@@ -495,6 +533,9 @@ if env.debug_mode:
495
533
  if python_version >= (3, 4):
496
534
  env.Append(CCFLAGS=["/wd4512", "/wd4510", "/wd4610"])
497
535
 
536
+ if python_version >= (3, 13):
537
+ env.Append(CCFLAGS=["/wd4324"])
538
+
498
539
  # We use null arrays in our structure Python declarations, which C11 does
499
540
  # not really allow, but should work.
500
541
  env.Append(CCFLAGS=["/wd4200"])
@@ -515,6 +556,9 @@ if trace_mode:
515
556
  if env.standalone_mode:
516
557
  env.Append(CPPDEFINES=["_NUITKA_STANDALONE"])
517
558
 
559
+ if macos_bundle_mode:
560
+ env.Append(CPPDEFINES=["_NUITKA_MACOS_BUNDLE"])
561
+
518
562
  if onefile_mode:
519
563
  env.Append(CPPDEFINES=["_NUITKA_ONEFILE_MODE"])
520
564
 
@@ -538,44 +582,17 @@ if env.static_libpython:
538
582
  env.Append(CPPDEFINES=["Py_NO_ENABLE_SHARED"])
539
583
 
540
584
 
541
- def detectHostMultiArch():
542
- stdout = check_output("dpkg-architecture")
543
-
544
- for line in stdout.splitlines():
545
- line = line.strip()
546
-
547
- if line.startswith(b"DEB_HOST_MULTI_ARCH="):
548
- return line.split("=", 1)[1].decode("utf8")
549
-
550
- return None
551
-
552
-
553
- if env.gcc_mode and env.debian_python:
554
- # TODO: Seems rather meaningless nowadays and hard codes this to not be
555
- # self compiled or so.
556
- if python_version == (3, 3):
557
- host_multi_arch = detectHostMultiArch()
558
-
559
- if host_multi_arch is not None:
560
- env.Append(
561
- CCFLAGS=[
562
- "-I"
563
- + os.path.join(
564
- "/usr/include/", host_multi_arch, "python" + python_abi_version
565
- )
566
- ]
567
- )
568
-
569
-
570
585
  def _detectPythonHeaderPath():
571
- if win_target:
586
+ if os.name == "nt":
572
587
  # On Windows, the CPython installation layout is relatively fixed, but on MSYS2
573
588
  # compiled for mingw64, it's more standard.
574
589
 
575
590
  candidates = [
576
- os.path.join(python_prefix, "include"),
591
+ os.path.join(python_prefix_external, "include"),
577
592
  # On MSYS2 with MinGW64 Python, it is also the other form.
578
- os.path.join(python_prefix, "include", "python" + python_abi_version),
593
+ os.path.join(
594
+ python_prefix_external, "include", "python" + python_abi_version
595
+ ),
579
596
  ]
580
597
  else:
581
598
  # The python header path is a combination of python version and debug
@@ -583,10 +600,14 @@ def _detectPythonHeaderPath():
583
600
  # include path.
584
601
 
585
602
  candidates = [
586
- os.path.join(python_prefix, "include", "python" + python_abi_version),
603
+ os.path.join(
604
+ python_prefix_external, "include", "python" + python_abi_version
605
+ ),
606
+ # CPython source code checkout
607
+ os.path.join(python_prefix_external, "Include"),
587
608
  # Haiku specific paths:
588
609
  os.path.join(
589
- python_prefix, "develop/headers", "python" + python_abi_version
610
+ python_prefix_external, "develop/headers", "python" + python_abi_version
590
611
  ),
591
612
  ]
592
613
 
@@ -594,7 +615,7 @@ def _detectPythonHeaderPath():
594
615
  if python_debug and "d" in python_abi_version:
595
616
  candidates.append(
596
617
  os.path.join(
597
- python_prefix,
618
+ python_prefix_external,
598
619
  "include",
599
620
  "python" + python_abi_version.replace("d", ""),
600
621
  )
@@ -602,55 +623,67 @@ def _detectPythonHeaderPath():
602
623
 
603
624
  for candidate in candidates:
604
625
  if os.path.exists(os.path.join(candidate, "Python.h")):
605
- return candidate
606
-
607
- if win_target:
608
- scons_logger.sysexit(
609
- """Error, you seem to be using the unsupported embeddable CPython distribution."""
610
- )
626
+ yield candidate
627
+ break
611
628
  else:
612
- scons_logger.sysexit(
613
- """\
629
+ if os.name == "nt":
630
+ scons_logger.sysexit(
631
+ """\
632
+ Error, you seem to be using the unsupported embeddable CPython distribution \
633
+ use a full Python instead."""
634
+ )
635
+ else:
636
+ scons_logger.sysexit(
637
+ """\
614
638
  Error, no 'Python.h' %s headers can be found at '%s', dependency \
615
639
  not satisfied!"""
616
- % ("debug" if python_debug else "development", candidates)
617
- )
640
+ % ("debug" if python_debug else "development", candidates)
641
+ )
618
642
 
643
+ if python_version >= (3, 13):
644
+ yield os.path.join(candidate, "internal", "mimalloc")
619
645
 
620
- env.Append(CPPPATH=[_detectPythonHeaderPath()])
646
+ if env.self_compiled_python_uninstalled:
647
+ yield python_prefix_external
648
+
649
+
650
+ env.Append(CPPPATH=list(_detectPythonHeaderPath()))
621
651
 
622
652
  # To support self-built Python on Windows, need to also add the "PC" directory,
623
653
  # that a normal install won't have.
624
654
  if os.name == "nt":
625
- python_header_path = os.path.join(python_prefix, "PC")
655
+ python_header_path = os.path.join(python_prefix_external, "PC")
626
656
 
627
657
  if os.path.exists(python_header_path):
628
658
  env.Append(CPPPATH=[python_header_path])
629
659
 
630
-
631
- def getWindowsPythonDLLPath():
632
- return os.environ["NUITKA_PYTHON_DLL_PATH"]
633
-
634
-
635
660
  if env.nuitka_python:
636
661
  env.Append(CPPDEFINES=["_NUITKA_PYTHON"])
637
662
 
638
663
  if env.static_libpython:
639
664
  env.Append(CPPDEFINES=["_NUITKA_STATIC_LIBPYTHON"])
640
665
 
641
- if env.static_libpython and (not win_target or env.nuitka_python):
666
+ if not gil_mode:
667
+ env.Append(CPPDEFINES="Py_GIL_DISABLED")
668
+
669
+ # TODO: This ought to be decided outside of scons and per flavor maybe.
670
+ if env.static_libpython and (
671
+ (not os.name == "nt" and not isMacOS()) or env.nuitka_python
672
+ ):
642
673
  env.Append(CPPDEFINES=["_NUITKA_USE_UNEXPOSED_API"])
643
674
 
644
- if win_target:
675
+ if os.name == "nt":
645
676
  if env.nuitka_python:
646
677
  env.Append(
647
678
  LINKFLAGS=[
648
679
  "/LTCG",
649
- "/USEPROFILE:PGD=" + os.path.join(python_prefix, "python.pgd"),
680
+ "/USEPROFILE:PGD=" + os.path.join(python_prefix_external, "python.pgd"),
650
681
  ]
651
682
  )
652
683
 
653
- link_data = loadJsonFromFilename(os.path.join(python_prefix, "link.json"))
684
+ link_data = loadJsonFromFilename(
685
+ os.path.join(python_prefix_external, "link.json")
686
+ )
654
687
  env.Append(LIBS=link_data["libraries"])
655
688
  env.Append(LIBPATH=link_data["library_dirs"])
656
689
  for define, value in link_data["macros"]:
@@ -683,7 +716,7 @@ if win_target:
683
716
  pc_build_dir = "PCBuild"
684
717
 
685
718
  for candidate in ("libs", pc_build_dir):
686
- win_lib_path = os.path.join(python_prefix, candidate)
719
+ win_lib_path = os.path.join(python_prefix_external, candidate)
687
720
 
688
721
  if os.path.exists(os.path.join(win_lib_path, win_lib_name + ".lib")):
689
722
  break
@@ -697,17 +730,26 @@ if win_target:
697
730
  addWinLib()
698
731
  elif not module_mode:
699
732
  # Add the python library path to the library path
700
- python_lib_path = os.path.join(python_prefix, "lib")
733
+ if env.self_compiled_python_uninstalled:
734
+ python_lib_path = python_prefix_external
735
+ else:
736
+ python_lib_path = os.path.join(python_prefix_external, "lib")
737
+
701
738
  env.Append(LIBPATH=[python_lib_path])
702
739
 
740
+ # Any module libs that are for self-compiled Python to be static.
741
+ env.Append(_LIBFLAGS=["-l" + lib_desc for lib_desc in link_module_libs])
742
+
703
743
  if env.nuitka_python:
704
- link_data = loadJsonFromFilename(os.path.join(python_prefix, "link.json"))
744
+ link_data = loadJsonFromFilename(
745
+ os.path.join(python_prefix_external, "link.json")
746
+ )
705
747
  for lib in link_data["libraries"]:
706
748
  # Need to prevent Scons from stripping .a from the passed in libs.
707
- if os.path.isfile(lib):
708
- env.Append(_LIBFLAGS=[lib])
709
- elif lib.startswith(":") and lib.endswith(".a"):
749
+ if lib.startswith(":") and lib.endswith(".a"):
710
750
  env.Append(_LIBFLAGS=["-l" + lib])
751
+ elif os.path.isfile(lib):
752
+ env.Append(_LIBFLAGS=[lib])
711
753
  else:
712
754
  env.Append(LIBS=[lib])
713
755
  env.Append(LIBPATH=link_data["library_dirs"])
@@ -725,19 +767,22 @@ elif not module_mode:
725
767
  env.Append(LIBS=[env.File(env.static_libpython)])
726
768
 
727
769
  # The linker won't succeed in searching for those for system Python of Debian
728
- # compiled Pythons. Help that. For self-compiled,
729
- if python_prefix == "/usr" and isDebianBasedLinux():
770
+ # compiled Pythons. Help that. spell-checker: ignore rdynamic,Xlinker,pthread
771
+ if python_prefix_external == "/usr" and isDebianBasedLinux():
730
772
  env.Append(LIBS=["z", "m", "util", "pthread"])
731
773
 
732
774
  if python_version >= (3,):
733
775
  env.Append(LIBS=["expat"])
734
776
 
735
777
  env.Append(LINKFLAGS=["-Xlinker", "-export-dynamic", "-rdynamic"])
778
+
779
+ if env.arch_python:
780
+ env.Append(LINKFLAGS=["-rdynamic"])
736
781
  else:
737
782
  # Fedora, Debian and Ubuntu distinguish the system libraries like this.
738
783
  if (
739
784
  python_debug
740
- and python_prefix == "/usr"
785
+ and python_prefix_external == "/usr"
741
786
  and python_version < (3,)
742
787
  and (isDebianBasedLinux() or isFedoraBasedLinux())
743
788
  ):
@@ -745,7 +790,7 @@ elif not module_mode:
745
790
  else:
746
791
  env.Append(LIBS=["python" + python_abi_version])
747
792
 
748
- if python_prefix != "/usr" and "linux" in sys.platform:
793
+ if python_prefix_external != "/usr" and "linux" in sys.platform:
749
794
  env.Append(LIBS=["dl", "pthread", "util", "rt", "m"])
750
795
 
751
796
  if env.gcc_mode:
@@ -764,11 +809,12 @@ if isMacOS():
764
809
  env.Append(LINKFLAGS=["-undefined", "dynamic_lookup"])
765
810
  else:
766
811
  # For macOS we need to make sure install_name_tool can do its work
812
+ # spell-checker: ignore headerpad
767
813
  env.Append(LINKFLAGS=["-headerpad_max_install_names"])
768
814
 
769
815
  # The static include files reside in Nuitka installation, which may be where
770
816
  # the "nuitka.build" package lives.
771
- nuitka_include = os.path.join(nuitka_src, "include")
817
+ nuitka_include = os.path.join(env.nuitka_src, "include")
772
818
 
773
819
  if not os.path.exists(os.path.join(nuitka_include, "nuitka", "prelude.h")):
774
820
  scons_logger.sysexit(
@@ -778,10 +824,29 @@ if not os.path.exists(os.path.join(nuitka_include, "nuitka", "prelude.h")):
778
824
 
779
825
  # We have include files in the build directory and the static include directory
780
826
  # that is located inside Nuitka installation.
781
- env.Append(CPPPATH=[source_dir, nuitka_include, os.path.join(nuitka_src, "static_src")])
827
+ env.Append(
828
+ CPPPATH=[
829
+ source_dir,
830
+ nuitka_include,
831
+ os.path.join(env.nuitka_src, "static_src"),
832
+ os.path.join(env.nuitka_src, "inline_copy", "libbacktrace"),
833
+ ]
834
+ )
835
+
836
+ if env.static_libpython and python_version >= (3, 12):
837
+ env.Append(
838
+ CPPPATH=[
839
+ os.path.join(env.nuitka_src, "inline_copy", "python_hacl", "hacl_312"),
840
+ os.path.join(
841
+ env.nuitka_src, "inline_copy", "python_hacl", "hacl_312", "include"
842
+ ),
843
+ ]
844
+ )
845
+
846
+ env.Append(CPPDEFINES=["_NUITKA_INLINE_COPY_HACL"])
782
847
 
783
848
  # Set load libpython from binary directory default
784
- if env.gcc_mode and not isMacOS() and not win_target and not module_mode:
849
+ if env.gcc_mode and not isMacOS() and not os.name == "nt" and not module_mode:
785
850
  if env.standalone_mode:
786
851
  rpath = "$$ORIGIN"
787
852
  else:
@@ -792,6 +857,7 @@ if env.gcc_mode and not isMacOS() and not win_target and not module_mode:
792
857
  # The rpath is no longer used unless we do this on modern Linux. The
793
858
  # option name is not very revealing, but basically without this, the
794
859
  # rpath in the binary will be ignored by the loader.
860
+ # spell-checker: ignore dtags
795
861
  if "linux" in sys.platform:
796
862
  env.Append(LINKFLAGS=["-Wl,--disable-new-dtags"])
797
863
 
@@ -820,8 +886,8 @@ else:
820
886
  # For complete outputs, we have to match the C runtime of the Python DLL, if any,
821
887
  # for Nuitka-Python there is of course none.
822
888
  if not env.nuitka_python and (
823
- forced_stdout_path not in ("%NONE%", "%NULL%", None)
824
- or forced_stderr_path not in ("%NONE%", "%NULL%", None)
889
+ forced_stdout_path not in ("{NONE}", "{NULL}", None)
890
+ or forced_stderr_path not in ("{NONE}", "{NULL}", None)
825
891
  ):
826
892
  env.Append(CCFLAGS=["/MD"]) # Multithreaded, dynamic version of C run time.
827
893
  else:
@@ -857,9 +923,8 @@ def discoverSourceFiles():
857
923
 
858
924
  result += [
859
925
  provideStaticSourceFile(
926
+ env=env,
860
927
  sub_path=filename,
861
- nuitka_src=nuitka_src,
862
- source_dir=source_dir,
863
928
  c11_mode=env.c11_mode,
864
929
  )
865
930
  for filename in static_src_filenames
@@ -870,13 +935,39 @@ def discoverSourceFiles():
870
935
 
871
936
  source_files = discoverSourceFiles()
872
937
 
938
+ # Remove the target file to avoid cases where it falsely doesn't get rebuild
939
+ # and then lingers from previous builds,
940
+ deleteFile(result_exe, must_exist=False)
941
+
942
+ # Workaround for MinGW64 not supporting unicode result paths for "-o" basename.
943
+ if os.name == "nt" and not isFilesystemEncodable(result_exe):
944
+ result_exe = os.path.join(
945
+ os.path.dirname(result_exe),
946
+ "_nuitka_temp.pyd" if module_mode else "_nuitka_temp.exe",
947
+ )
948
+
949
+ if not isFilesystemEncodable(result_exe):
950
+ result_exe = getNormalizedPath(os.path.relpath(result_exe))
951
+
952
+ deleteFile(result_exe, must_exist=False)
953
+
873
954
  if module_mode:
874
- # For Python modules, the standard shared library extension is not what
875
- # gets used.
955
+ # For Python modules, the standard shared library extension is not what gets
956
+ # used. spell-checker: ignore SHLIBSUFFIX
957
+ module_suffix = getFilenameExtension(result_exe)
958
+ result_base_path = changeFilenameExtension(result_exe, "")
959
+
960
+ extra_suffix = getFilenameExtension(result_base_path)
961
+ if extra_suffix != "":
962
+ module_suffix = extra_suffix + module_suffix
963
+ result_base_path = changeFilenameExtension(result_base_path, "")
964
+
965
+ assert getFilenameExtension(result_base_path) == "", result_base_path
966
+
876
967
  env["SHLIBSUFFIX"] = module_suffix
877
968
 
878
969
  target = env.SharedLibrary(
879
- result_basepath, source_files, no_import_lib=no_import_lib
970
+ result_base_path, source_files, no_import_lib=no_import_lib
880
971
  )
881
972
  else:
882
973
  target = env.Program(result_exe, source_files)
@@ -884,10 +975,6 @@ else:
884
975
  # Use compiler/linker flags provided via environment variables
885
976
  importEnvironmentVariableSettings(env)
886
977
 
887
- # Remove the target file to avoid cases where it falsely doesn't get rebuild
888
- # and then lingers from previous builds,
889
- if os.path.exists(target[0].abspath):
890
- os.unlink(target[0].abspath)
891
978
 
892
979
  if job_count:
893
980
  scons_details_logger.info("Told to run compilation on %d CPUs." % job_count)
@@ -897,6 +984,7 @@ def createBuildDefinitionsFile():
897
984
  build_definitions = {}
898
985
 
899
986
  if uninstalled_python and not env.static_libpython:
987
+ # Use the non-external one, so it's not a short path.
900
988
  build_definitions["PYTHON_HOME_PATH"] = python_prefix
901
989
 
902
990
  build_definitions["NO_PYTHON_WARNINGS"] = 1 if no_python_warnings else 0
@@ -924,6 +1012,10 @@ def createBuildDefinitionsFile():
924
1012
 
925
1013
  build_definitions["SYSFLAG_OPTIMIZE"] = python_sysflag_optimize
926
1014
 
1015
+ build_definitions["SYSFLAG_DONTWRITEBYTECODE"] = (
1016
+ 1 if python_sysflag_dontwritebytecode else 0
1017
+ )
1018
+
927
1019
  build_definitions["_NUITKA_NO_ASSERTS"] = 1 if python_flag_no_asserts else 0
928
1020
 
929
1021
  build_definitions["_NUITKA_NO_DOCSTRINGS"] = 1 if python_flag_no_docstrings else 0
@@ -939,25 +1031,23 @@ def createBuildDefinitionsFile():
939
1031
  build_definitions["SYSFLAG_ISOLATED"] = 1 if python_sysflag_isolated else 0
940
1032
 
941
1033
  if forced_stdout_path:
942
- if forced_stdout_path == "%NONE%":
1034
+ if forced_stdout_path == "{NONE}":
943
1035
  build_definitions["NUITKA_FORCED_STDOUT_NONE_BOOL"] = 1
944
- elif forced_stdout_path == "%NULL%":
1036
+ elif forced_stdout_path == "{NULL}":
945
1037
  build_definitions["NUITKA_FORCED_STDOUT_NULL_BOOL"] = 1
946
1038
  else:
947
1039
  build_definitions["NUITKA_FORCED_STDOUT_PATH"] = forced_stdout_path
948
1040
 
949
1041
  if forced_stderr_path:
950
- if forced_stderr_path == "%NONE%":
1042
+ if forced_stderr_path == "{NONE}":
951
1043
  build_definitions["NUITKA_FORCED_STDERR_NONE_BOOL"] = 1
952
- elif forced_stderr_path == "%NULL%":
1044
+ elif forced_stderr_path == "{NULL}":
953
1045
  build_definitions["NUITKA_FORCED_STDERR_NULL_BOOL"] = 1
954
1046
  else:
955
1047
  build_definitions["NUITKA_FORCED_STDERR_PATH"] = forced_stderr_path
956
1048
 
957
1049
  build_definitions["NUITKA_MAIN_MODULE_NAME"] = main_module_name
958
-
959
- if main_module_name != "__main__":
960
- build_definitions["NUITKA_MAIN_PACKAGE_MODE"] = 1
1050
+ build_definitions["NUITKA_MAIN_IS_PACKAGE_BOOL"] = main_module_name != "__main__"
961
1051
 
962
1052
  createDefinitionsFile(source_dir, "build_definitions.h", build_definitions)
963
1053
 
@@ -966,7 +1056,7 @@ if forced_stderr_path and not forced_stdout_path:
966
1056
  env.Append(CPPDEFINES=["NUITKA_STDERR_NOT_VISIBLE"])
967
1057
 
968
1058
  if file_reference_mode == "original":
969
- env.Append(CPPDEFINES=["NUITKA_FILE_REFERENCE_ORIGINAL_MODE"])
1059
+ env.Append(CPPDEFINES=["_NUITKA_FILE_REFERENCE_ORIGINAL_MODE"])
970
1060
 
971
1061
 
972
1062
  createBuildDefinitionsFile()
@@ -998,7 +1088,6 @@ env.Append(LIBS=link_libraries)
998
1088
  # Work around windows bugs and use watchdogs to track progress of compilation.
999
1089
  enableSpawnMonitoring(
1000
1090
  env=env,
1001
- win_target=win_target,
1002
1091
  module_mode=module_mode,
1003
1092
  source_files=source_files,
1004
1093
  )
@@ -1008,12 +1097,13 @@ enableSpawnMonitoring(
1008
1097
  changeKeyboardInterruptToErrorExit()
1009
1098
 
1010
1099
  # Check if ccache is installed, and complain if it is not.
1011
- if env.gcc_mode and not disable_ccache:
1100
+ if env.gcc_mode:
1012
1101
  enableCcache(
1013
1102
  env=env,
1014
1103
  source_dir=source_dir,
1015
- python_prefix=python_prefix,
1104
+ python_prefix=python_prefix_external,
1016
1105
  assume_yes_for_downloads=assume_yes_for_downloads,
1106
+ disable_ccache=disable_ccache,
1017
1107
  )
1018
1108
 
1019
1109
  if env.msvc_mode and not disable_ccache:
@@ -1022,12 +1112,24 @@ if env.msvc_mode and not disable_ccache:
1022
1112
  source_dir=source_dir,
1023
1113
  )
1024
1114
 
1025
- writeSconsReport(
1026
- env=env,
1027
- source_dir=source_dir,
1028
- )
1115
+ writeSconsReport(env=env, target=target)
1029
1116
 
1030
1117
  setSconsProgressBarTotal(name=env.progressbar_name, total=len(source_files))
1031
1118
 
1032
1119
  scons_details_logger.info("Launching Scons target: %s" % target)
1033
1120
  env.Default(target)
1121
+
1122
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
1123
+ # integrates with CPython, but also works on its own.
1124
+ #
1125
+ # Licensed under the Apache License, Version 2.0 (the "License");
1126
+ # you may not use this file except in compliance with the License.
1127
+ # You may obtain a copy of the License at
1128
+ #
1129
+ # http://www.apache.org/licenses/LICENSE-2.0
1130
+ #
1131
+ # Unless required by applicable law or agreed to in writing, software
1132
+ # distributed under the License is distributed on an "AS IS" BASIS,
1133
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1134
+ # See the License for the specific language governing permissions and
1135
+ # limitations under the License.