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

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

Potentially problematic release.


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

Files changed (704) hide show
  1. Nuitka_winsvc-1.8.data/scripts/nuitka-run.bat → Nuitka_winsvc-2.4.8.data/scripts/nuitka-run.cmd +9 -9
  2. Nuitka_winsvc-1.8.data/scripts/nuitka.bat → Nuitka_winsvc-2.4.8.data/scripts/nuitka.cmd +15 -15
  3. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/METADATA +4 -3
  4. Nuitka_winsvc-2.4.8.dist-info/RECORD +954 -0
  5. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/WHEEL +1 -1
  6. nuitka/Builtins.py +18 -17
  7. nuitka/BytecodeCaching.py +24 -20
  8. nuitka/Bytecodes.py +23 -19
  9. nuitka/CacheCleanup.py +28 -23
  10. nuitka/Constants.py +19 -17
  11. nuitka/Errors.py +23 -17
  12. nuitka/HardImportRegistry.py +400 -0
  13. nuitka/MainControl.py +200 -112
  14. nuitka/ModuleRegistry.py +83 -20
  15. nuitka/OptionParsing.py +368 -175
  16. nuitka/Options.py +632 -213
  17. nuitka/OutputDirectories.py +40 -21
  18. nuitka/PostProcessing.py +73 -50
  19. nuitka/Progress.py +58 -24
  20. nuitka/PythonFlavors.py +141 -32
  21. nuitka/PythonOperators.py +18 -17
  22. nuitka/PythonVersions.py +106 -19
  23. nuitka/Serialization.py +68 -55
  24. nuitka/SourceCodeReferences.py +19 -17
  25. nuitka/Tracing.py +108 -70
  26. nuitka/TreeXML.py +31 -26
  27. nuitka/Variables.py +39 -41
  28. nuitka/Version.py +21 -7
  29. nuitka/__init__.py +5 -4
  30. nuitka/__main__.py +95 -29
  31. nuitka/__past__.py +44 -34
  32. nuitka/build/Backend.scons +202 -140
  33. nuitka/build/CCompilerVersion.scons +39 -31
  34. nuitka/build/DataComposerInterface.py +20 -17
  35. nuitka/build/Onefile.scons +50 -54
  36. nuitka/build/SconsCaching.py +93 -90
  37. nuitka/build/SconsCompilerSettings.py +157 -69
  38. nuitka/build/SconsHacks.py +25 -19
  39. nuitka/build/SconsInterface.py +154 -54
  40. nuitka/build/SconsProgress.py +19 -18
  41. nuitka/build/SconsSpawn.py +62 -33
  42. nuitka/build/SconsUtils.py +147 -55
  43. nuitka/build/__init__.py +5 -4
  44. nuitka/build/include/nuitka/allocator.h +105 -22
  45. nuitka/build/include/nuitka/builtins.h +17 -17
  46. nuitka/build/include/nuitka/calling.h +18 -18
  47. nuitka/build/include/nuitka/checkers.h +17 -18
  48. nuitka/build/include/nuitka/checksum_tools.h +14 -19
  49. nuitka/build/include/nuitka/compiled_asyncgen.h +18 -18
  50. nuitka/build/include/nuitka/compiled_cell.h +33 -18
  51. nuitka/build/include/nuitka/compiled_coroutine.h +18 -18
  52. nuitka/build/include/nuitka/compiled_frame.h +91 -53
  53. nuitka/build/include/nuitka/compiled_function.h +42 -20
  54. nuitka/build/include/nuitka/compiled_generator.h +24 -18
  55. nuitka/build/include/nuitka/compiled_method.h +17 -18
  56. nuitka/build/include/nuitka/constants.h +29 -18
  57. nuitka/build/include/nuitka/constants_blob.h +17 -17
  58. nuitka/build/include/nuitka/environment_variables.h +30 -0
  59. nuitka/build/include/nuitka/environment_variables_system.h +45 -0
  60. nuitka/build/include/nuitka/exception_groups.h +23 -26
  61. nuitka/build/include/nuitka/exceptions.h +593 -190
  62. nuitka/build/include/nuitka/filesystem_paths.h +26 -20
  63. nuitka/build/include/nuitka/freelists.h +38 -18
  64. nuitka/build/include/nuitka/helper/attributes.h +24 -18
  65. nuitka/build/include/nuitka/helper/boolean.h +17 -17
  66. nuitka/build/include/nuitka/helper/bytearrays.h +17 -17
  67. nuitka/build/include/nuitka/helper/bytes.h +14 -15
  68. nuitka/build/include/nuitka/helper/calling_generated.h +17 -17
  69. nuitka/build/include/nuitka/helper/comparisons_eq.h +17 -17
  70. nuitka/build/include/nuitka/helper/comparisons_ge.h +17 -17
  71. nuitka/build/include/nuitka/helper/comparisons_gt.h +17 -17
  72. nuitka/build/include/nuitka/helper/comparisons_le.h +17 -17
  73. nuitka/build/include/nuitka/helper/comparisons_lt.h +17 -17
  74. nuitka/build/include/nuitka/helper/comparisons_ne.h +17 -17
  75. nuitka/build/include/nuitka/helper/complex.h +17 -17
  76. nuitka/build/include/nuitka/helper/dictionaries.h +24 -22
  77. nuitka/build/include/nuitka/helper/floats.h +17 -18
  78. nuitka/build/include/nuitka/helper/import_hard.h +25 -17
  79. nuitka/build/include/nuitka/helper/indexes.h +17 -18
  80. nuitka/build/include/nuitka/helper/ints.h +32 -20
  81. nuitka/build/include/nuitka/helper/iterators.h +17 -17
  82. nuitka/build/include/nuitka/helper/lists.h +26 -24
  83. nuitka/build/include/nuitka/helper/lists_generated.h +22 -22
  84. nuitka/build/include/nuitka/helper/mappings.h +17 -18
  85. nuitka/build/include/nuitka/helper/operations.h +17 -17
  86. nuitka/build/include/nuitka/helper/operations_binary_add.h +17 -17
  87. nuitka/build/include/nuitka/helper/operations_binary_bitand.h +17 -17
  88. nuitka/build/include/nuitka/helper/operations_binary_bitor.h +17 -17
  89. nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +17 -17
  90. nuitka/build/include/nuitka/helper/operations_binary_divmod.h +17 -17
  91. nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +17 -17
  92. nuitka/build/include/nuitka/helper/operations_binary_lshift.h +17 -17
  93. nuitka/build/include/nuitka/helper/operations_binary_matmult.h +17 -17
  94. nuitka/build/include/nuitka/helper/operations_binary_mod.h +17 -17
  95. nuitka/build/include/nuitka/helper/operations_binary_mult.h +17 -17
  96. nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +17 -17
  97. nuitka/build/include/nuitka/helper/operations_binary_pow.h +17 -17
  98. nuitka/build/include/nuitka/helper/operations_binary_rshift.h +17 -17
  99. nuitka/build/include/nuitka/helper/operations_binary_sub.h +17 -17
  100. nuitka/build/include/nuitka/helper/operations_binary_truediv.h +17 -17
  101. nuitka/build/include/nuitka/helper/operations_builtin_types.h +17 -17
  102. nuitka/build/include/nuitka/helper/operations_inplace_add.h +17 -17
  103. nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +17 -17
  104. nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +17 -17
  105. nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +17 -17
  106. nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +17 -17
  107. nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +17 -17
  108. nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +17 -17
  109. nuitka/build/include/nuitka/helper/operations_inplace_mod.h +17 -17
  110. nuitka/build/include/nuitka/helper/operations_inplace_mult.h +17 -17
  111. nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +17 -17
  112. nuitka/build/include/nuitka/helper/operations_inplace_pow.h +17 -17
  113. nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +17 -17
  114. nuitka/build/include/nuitka/helper/operations_inplace_sub.h +17 -17
  115. nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
  116. nuitka/build/include/nuitka/helper/raising.h +29 -17
  117. nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
  118. nuitka/build/include/nuitka/helper/richcomparisons.h +14 -14
  119. nuitka/build/include/nuitka/helper/sequences.h +19 -13
  120. nuitka/build/include/nuitka/helper/sets.h +11 -12
  121. nuitka/build/include/nuitka/helper/slices.h +31 -25
  122. nuitka/build/include/nuitka/helper/strings.h +16 -17
  123. nuitka/build/include/nuitka/helper/subscripts.h +18 -201
  124. nuitka/build/include/nuitka/helper/tuples.h +64 -52
  125. nuitka/build/include/nuitka/helpers.h +38 -20
  126. nuitka/build/include/nuitka/importing.h +28 -21
  127. nuitka/build/include/nuitka/jit_sources.h +25 -0
  128. nuitka/build/include/nuitka/prelude.h +128 -46
  129. nuitka/build/include/nuitka/printing.h +22 -17
  130. nuitka/build/include/nuitka/python_pgo.h +19 -18
  131. nuitka/build/include/nuitka/safe_string_ops.h +20 -18
  132. nuitka/build/include/nuitka/threading.h +32 -33
  133. nuitka/build/include/nuitka/tracing.h +28 -18
  134. nuitka/build/include/nuitka/type_aliases.h +27 -0
  135. nuitka/build/include/nuitka/unfreezing.h +29 -23
  136. nuitka/build/inline_copy/bin/scons.py +14 -0
  137. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +6 -6
  138. nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +0 -3
  139. nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
  140. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
  141. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
  142. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
  143. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
  144. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
  145. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
  146. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
  147. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
  148. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
  149. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
  150. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
  151. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
  152. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
  153. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
  154. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
  155. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
  156. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
  157. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
  158. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
  159. nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
  160. nuitka/build/inline_copy/tqdm/tqdm/__init__.py +2 -2
  161. nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +4 -1
  162. nuitka/build/inline_copy/tqdm/tqdm/utils.py +14 -8
  163. nuitka/build/inline_copy/tqdm/tqdm/version.py +1 -8
  164. nuitka/build/inline_copy/zlib/LICENSE +22 -0
  165. nuitka/build/inline_copy/zlib/crc32.c +1049 -0
  166. nuitka/build/inline_copy/zlib/crc32.h +9446 -0
  167. nuitka/build/inline_copy/zlib/zconf.h +551 -0
  168. nuitka/build/inline_copy/zlib/zlib.h +1938 -0
  169. nuitka/build/inline_copy/zlib/zutil.h +275 -0
  170. nuitka/build/static_src/CompiledAsyncgenType.c +176 -182
  171. nuitka/build/static_src/CompiledCellType.c +63 -40
  172. nuitka/build/static_src/CompiledCodeHelpers.c +181 -128
  173. nuitka/build/static_src/CompiledCoroutineType.c +196 -203
  174. nuitka/build/static_src/CompiledFrameType.c +287 -133
  175. nuitka/build/static_src/CompiledFunctionType.c +389 -95
  176. nuitka/build/static_src/CompiledGeneratorType.c +376 -252
  177. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +185 -198
  178. nuitka/build/static_src/CompiledMethodType.c +83 -71
  179. nuitka/build/static_src/HelpersAllocator.c +88 -19
  180. nuitka/build/static_src/HelpersAttributes.c +33 -54
  181. nuitka/build/static_src/HelpersBuiltin.c +43 -33
  182. nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
  183. nuitka/build/static_src/HelpersBytes.c +19 -20
  184. nuitka/build/static_src/HelpersCalling.c +33 -30
  185. nuitka/build/static_src/HelpersCallingGenerated.c +1000 -181
  186. nuitka/build/static_src/HelpersChecksumTools.c +35 -21
  187. nuitka/build/static_src/HelpersClasses.c +17 -17
  188. nuitka/build/static_src/HelpersComparisonEq.c +518 -492
  189. nuitka/build/static_src/HelpersComparisonEqUtils.c +21 -19
  190. nuitka/build/static_src/HelpersComparisonGe.c +513 -497
  191. nuitka/build/static_src/HelpersComparisonGt.c +512 -496
  192. nuitka/build/static_src/HelpersComparisonLe.c +513 -497
  193. nuitka/build/static_src/HelpersComparisonLt.c +512 -496
  194. nuitka/build/static_src/HelpersComparisonNe.c +520 -492
  195. nuitka/build/static_src/HelpersConsole.c +96 -0
  196. nuitka/build/static_src/HelpersConstantsBlob.c +542 -519
  197. nuitka/build/static_src/HelpersDeepcopy.c +33 -33
  198. nuitka/build/static_src/HelpersDictionaries.c +51 -29
  199. nuitka/build/static_src/HelpersDictionariesGenerated.c +177 -68
  200. nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
  201. nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
  202. nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +93 -0
  203. nuitka/build/static_src/HelpersExceptions.c +161 -50
  204. nuitka/build/static_src/HelpersFiles.c +37 -17
  205. nuitka/build/static_src/HelpersFilesystemPaths.c +292 -181
  206. nuitka/build/static_src/HelpersFloats.c +37 -31
  207. nuitka/build/static_src/HelpersHeapStorage.c +21 -17
  208. nuitka/build/static_src/HelpersImport.c +48 -20
  209. nuitka/build/static_src/HelpersImportHard.c +53 -17
  210. nuitka/build/static_src/HelpersJitSources.c +46 -0
  211. nuitka/build/static_src/HelpersLists.c +140 -50
  212. nuitka/build/static_src/HelpersListsGenerated.c +41 -41
  213. nuitka/build/static_src/HelpersMappings.c +17 -17
  214. nuitka/build/static_src/HelpersMatching.c +137 -51
  215. nuitka/build/static_src/HelpersOperationBinaryAdd.c +173 -146
  216. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +99 -52
  217. nuitka/build/static_src/HelpersOperationBinaryBitand.c +50 -50
  218. nuitka/build/static_src/HelpersOperationBinaryBitor.c +50 -50
  219. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +50 -50
  220. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +41 -41
  221. nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
  222. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +41 -41
  223. nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +20 -21
  224. nuitka/build/static_src/HelpersOperationBinaryLshift.c +47 -47
  225. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +24 -24
  226. nuitka/build/static_src/HelpersOperationBinaryMod.c +107 -107
  227. nuitka/build/static_src/HelpersOperationBinaryMult.c +81 -75
  228. nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +33 -30
  229. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +41 -41
  230. nuitka/build/static_src/HelpersOperationBinaryPow.c +44 -44
  231. nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
  232. nuitka/build/static_src/HelpersOperationBinaryRshift.c +47 -47
  233. nuitka/build/static_src/HelpersOperationBinarySub.c +80 -80
  234. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +41 -41
  235. nuitka/build/static_src/HelpersOperationInplaceAdd.c +171 -153
  236. nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +24 -22
  237. nuitka/build/static_src/HelpersOperationInplaceBitand.c +53 -53
  238. nuitka/build/static_src/HelpersOperationInplaceBitor.c +53 -53
  239. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +53 -53
  240. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +62 -62
  241. nuitka/build/static_src/HelpersOperationInplaceLshift.c +44 -44
  242. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +37 -37
  243. nuitka/build/static_src/HelpersOperationInplaceMod.c +134 -134
  244. nuitka/build/static_src/HelpersOperationInplaceMult.c +78 -78
  245. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +62 -62
  246. nuitka/build/static_src/HelpersOperationInplacePow.c +62 -62
  247. nuitka/build/static_src/HelpersOperationInplaceRshift.c +44 -44
  248. nuitka/build/static_src/HelpersOperationInplaceSub.c +112 -112
  249. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +62 -62
  250. nuitka/build/static_src/HelpersProfiling.c +24 -23
  251. nuitka/build/static_src/HelpersPythonPgo.c +22 -22
  252. nuitka/build/static_src/HelpersRaising.c +88 -20
  253. nuitka/build/static_src/HelpersSafeStrings.c +34 -22
  254. nuitka/build/static_src/HelpersSequences.c +18 -19
  255. nuitka/build/static_src/HelpersSlices.c +29 -23
  256. nuitka/build/static_src/HelpersStrings.c +234 -37
  257. nuitka/build/static_src/HelpersTuples.c +46 -34
  258. nuitka/build/static_src/HelpersTypes.c +68 -23
  259. nuitka/build/static_src/InspectPatcher.c +108 -27
  260. nuitka/build/static_src/MainProgram.c +359 -263
  261. nuitka/build/static_src/MetaPathBasedLoader.c +367 -242
  262. nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +39 -26
  263. nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
  264. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +97 -22
  265. nuitka/build/static_src/OnefileBootstrap.c +276 -164
  266. nuitka/build/static_src/OnefileSplashScreen.cpp +51 -27
  267. nuitka/code_generation/AsyncgenCodes.py +19 -17
  268. nuitka/code_generation/AttributeCodes.py +31 -27
  269. nuitka/code_generation/BinaryOperationHelperDefinitions.py +24 -20
  270. nuitka/code_generation/BranchCodes.py +19 -17
  271. nuitka/code_generation/BuiltinCodes.py +20 -17
  272. nuitka/code_generation/CallCodes.py +19 -17
  273. nuitka/code_generation/ClassCodes.py +19 -17
  274. nuitka/code_generation/CodeGeneration.py +48 -27
  275. nuitka/code_generation/CodeHelperSelection.py +19 -17
  276. nuitka/code_generation/CodeHelpers.py +24 -20
  277. nuitka/code_generation/CodeObjectCodes.py +34 -24
  278. nuitka/code_generation/ComparisonCodes.py +38 -20
  279. nuitka/code_generation/ComparisonHelperDefinitions.py +19 -17
  280. nuitka/code_generation/ConditionalCodes.py +19 -17
  281. nuitka/code_generation/ConstantCodes.py +82 -28
  282. nuitka/code_generation/Contexts.py +152 -26
  283. nuitka/code_generation/CoroutineCodes.py +19 -17
  284. nuitka/code_generation/CtypesCodes.py +19 -17
  285. nuitka/code_generation/DictCodes.py +25 -23
  286. nuitka/code_generation/Emission.py +21 -18
  287. nuitka/code_generation/ErrorCodes.py +27 -33
  288. nuitka/code_generation/EvalCodes.py +24 -20
  289. nuitka/code_generation/ExceptionCodes.py +27 -18
  290. nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +20 -17
  291. nuitka/code_generation/ExpressionCodes.py +19 -17
  292. nuitka/code_generation/FrameCodes.py +24 -20
  293. nuitka/code_generation/FunctionCodes.py +24 -21
  294. nuitka/code_generation/GeneratorCodes.py +23 -20
  295. nuitka/code_generation/GlobalConstants.py +43 -23
  296. nuitka/code_generation/GlobalsLocalsCodes.py +21 -19
  297. nuitka/code_generation/IdCodes.py +19 -17
  298. nuitka/code_generation/ImportCodes.py +90 -50
  299. nuitka/code_generation/Indentation.py +23 -22
  300. nuitka/code_generation/IndexCodes.py +19 -17
  301. nuitka/code_generation/InjectCCodes.py +14 -12
  302. nuitka/code_generation/IntegerCodes.py +19 -17
  303. nuitka/code_generation/IteratorCodes.py +19 -17
  304. nuitka/code_generation/JitCodes.py +44 -0
  305. nuitka/code_generation/LabelCodes.py +19 -17
  306. nuitka/code_generation/LineNumberCodes.py +19 -17
  307. nuitka/code_generation/ListCodes.py +32 -36
  308. nuitka/code_generation/LoaderCodes.py +22 -17
  309. nuitka/code_generation/LocalsDictCodes.py +56 -32
  310. nuitka/code_generation/LoopCodes.py +19 -17
  311. nuitka/code_generation/MatchCodes.py +42 -22
  312. nuitka/code_generation/ModuleCodes.py +43 -25
  313. nuitka/code_generation/Namify.py +27 -23
  314. nuitka/code_generation/NetworkxCodes.py +51 -0
  315. nuitka/code_generation/OperationCodes.py +29 -31
  316. nuitka/code_generation/PackageResourceCodes.py +59 -23
  317. nuitka/code_generation/PrintCodes.py +19 -17
  318. nuitka/code_generation/PythonAPICodes.py +19 -17
  319. nuitka/code_generation/RaisingCodes.py +19 -17
  320. nuitka/code_generation/Reports.py +19 -17
  321. nuitka/code_generation/ReturnCodes.py +19 -17
  322. nuitka/code_generation/SetCodes.py +19 -17
  323. nuitka/code_generation/SliceCodes.py +22 -20
  324. nuitka/code_generation/StringCodes.py +19 -17
  325. nuitka/code_generation/SubscriptCodes.py +24 -30
  326. nuitka/code_generation/TensorflowCodes.py +54 -0
  327. nuitka/code_generation/TryCodes.py +19 -17
  328. nuitka/code_generation/TupleCodes.py +20 -18
  329. nuitka/code_generation/TypeAliasCodes.py +71 -0
  330. nuitka/code_generation/VariableCodes.py +26 -22
  331. nuitka/code_generation/VariableDeclarations.py +20 -17
  332. nuitka/code_generation/YieldCodes.py +22 -20
  333. nuitka/code_generation/__init__.py +5 -4
  334. nuitka/code_generation/c_types/CTypeBases.py +19 -17
  335. nuitka/code_generation/c_types/CTypeBooleans.py +19 -17
  336. nuitka/code_generation/c_types/CTypeCFloats.py +19 -17
  337. nuitka/code_generation/c_types/CTypeCLongs.py +19 -18
  338. nuitka/code_generation/c_types/CTypeModuleDictVariables.py +19 -17
  339. nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +19 -17
  340. nuitka/code_generation/c_types/CTypeNuitkaInts.py +19 -18
  341. nuitka/code_generation/c_types/CTypeNuitkaVoids.py +19 -17
  342. nuitka/code_generation/c_types/CTypePyObjectPointers.py +27 -25
  343. nuitka/code_generation/c_types/CTypeVoids.py +20 -17
  344. nuitka/code_generation/c_types/__init__.py +5 -4
  345. nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +18 -17
  346. nuitka/code_generation/templates/CodeTemplatesConstants.py +132 -36
  347. nuitka/code_generation/templates/CodeTemplatesCoroutines.py +18 -17
  348. nuitka/code_generation/templates/CodeTemplatesExceptions.py +19 -18
  349. nuitka/code_generation/templates/CodeTemplatesFrames.py +18 -17
  350. nuitka/code_generation/templates/CodeTemplatesFunction.py +18 -17
  351. nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +19 -17
  352. nuitka/code_generation/templates/CodeTemplatesIterators.py +18 -18
  353. nuitka/code_generation/templates/CodeTemplatesLoader.py +25 -19
  354. nuitka/code_generation/templates/CodeTemplatesModules.py +244 -165
  355. nuitka/code_generation/templates/CodeTemplatesVariables.py +42 -27
  356. nuitka/code_generation/templates/TemplateDebugWrapper.py +19 -18
  357. nuitka/code_generation/templates/__init__.py +5 -4
  358. nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +19 -19
  359. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +18 -18
  360. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +76 -25
  361. nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +22 -22
  362. nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +19 -19
  363. nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +19 -19
  364. nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +17 -17
  365. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +121 -48
  366. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +18 -18
  367. nuitka/code_generation/templates_c/HelperLongTools.c.j2 +18 -18
  368. nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +6 -6
  369. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +23 -23
  370. nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +35 -35
  371. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +28 -28
  372. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +17 -17
  373. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +18 -18
  374. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +44 -32
  375. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +20 -20
  376. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +28 -28
  377. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +24 -24
  378. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +33 -29
  379. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +20 -20
  380. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +27 -27
  381. nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +17 -17
  382. nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +17 -17
  383. nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +17 -17
  384. nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +17 -17
  385. nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +21 -18
  386. nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +26 -24
  387. nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +17 -17
  388. nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +17 -17
  389. nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +21 -18
  390. nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +17 -17
  391. nuitka/containers/Namedtuples.py +19 -18
  392. nuitka/containers/OrderedSetsFallback.py +19 -17
  393. nuitka/containers/__init__.py +5 -4
  394. nuitka/distutils/Build.py +19 -18
  395. nuitka/distutils/DistutilCommands.py +34 -23
  396. nuitka/distutils/__init__.py +5 -4
  397. nuitka/finalizations/Finalization.py +20 -17
  398. nuitka/finalizations/FinalizeMarkups.py +21 -41
  399. nuitka/finalizations/__init__.py +5 -4
  400. nuitka/freezer/DependsExe.py +48 -28
  401. nuitka/freezer/DllDependenciesCommon.py +47 -20
  402. nuitka/freezer/DllDependenciesMacOS.py +147 -57
  403. nuitka/freezer/DllDependenciesPosix.py +29 -19
  404. nuitka/freezer/DllDependenciesWin32.py +29 -21
  405. nuitka/freezer/ImportDetection.py +20 -17
  406. nuitka/freezer/IncludedDataFiles.py +118 -47
  407. nuitka/freezer/IncludedEntryPoints.py +102 -38
  408. nuitka/freezer/Onefile.py +32 -22
  409. nuitka/freezer/Standalone.py +105 -50
  410. nuitka/freezer/__init__.py +5 -4
  411. nuitka/importing/IgnoreListing.py +19 -17
  412. nuitka/importing/ImportCache.py +24 -21
  413. nuitka/importing/ImportResolving.py +103 -95
  414. nuitka/importing/Importing.py +286 -92
  415. nuitka/importing/PreloadedPackages.py +21 -18
  416. nuitka/importing/Recursion.py +131 -47
  417. nuitka/importing/StandardLibrary.py +46 -28
  418. nuitka/importing/__init__.py +5 -4
  419. nuitka/nodes/AsyncgenNodes.py +19 -17
  420. nuitka/nodes/AttributeLookupNodes.py +19 -17
  421. nuitka/nodes/AttributeNodes.py +19 -17
  422. nuitka/nodes/AttributeNodesGenerated.py +49 -24
  423. nuitka/nodes/BuiltinAllNodes.py +19 -17
  424. nuitka/nodes/BuiltinAnyNodes.py +19 -17
  425. nuitka/nodes/BuiltinComplexNodes.py +20 -17
  426. nuitka/nodes/BuiltinDecodingNodes.py +19 -17
  427. nuitka/nodes/BuiltinDecoratorNodes.py +19 -17
  428. nuitka/nodes/BuiltinDictNodes.py +19 -17
  429. nuitka/nodes/BuiltinFormatNodes.py +20 -17
  430. nuitka/nodes/BuiltinHashNodes.py +19 -17
  431. nuitka/nodes/BuiltinInputNodes.py +19 -17
  432. nuitka/nodes/BuiltinIntegerNodes.py +19 -17
  433. nuitka/nodes/BuiltinIteratorNodes.py +24 -20
  434. nuitka/nodes/BuiltinLenNodes.py +19 -17
  435. nuitka/nodes/BuiltinNextNodes.py +19 -17
  436. nuitka/nodes/BuiltinOpenNodes.py +52 -18
  437. nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +40 -23
  438. nuitka/nodes/BuiltinRangeNodes.py +21 -19
  439. nuitka/nodes/BuiltinRefNodes.py +68 -19
  440. nuitka/nodes/BuiltinSumNodes.py +20 -18
  441. nuitka/nodes/BuiltinTypeNodes.py +19 -17
  442. nuitka/nodes/BuiltinVarsNodes.py +19 -18
  443. nuitka/nodes/BytesNodes.py +19 -17
  444. nuitka/nodes/CallNodes.py +19 -17
  445. nuitka/nodes/Checkers.py +19 -17
  446. nuitka/nodes/ChildrenHavingMixins.py +1250 -302
  447. nuitka/nodes/ClassNodes.py +49 -29
  448. nuitka/nodes/CodeObjectSpecs.py +29 -18
  449. nuitka/nodes/ComparisonNodes.py +19 -17
  450. nuitka/nodes/ConditionalNodes.py +21 -23
  451. nuitka/nodes/ConstantRefNodes.py +57 -17
  452. nuitka/nodes/ContainerMakingNodes.py +19 -17
  453. nuitka/nodes/ContainerOperationNodes.py +19 -17
  454. nuitka/nodes/CoroutineNodes.py +19 -17
  455. nuitka/nodes/CtypesNodes.py +19 -18
  456. nuitka/nodes/DictionaryNodes.py +19 -18
  457. nuitka/nodes/ExceptionNodes.py +29 -17
  458. nuitka/nodes/ExecEvalNodes.py +19 -17
  459. nuitka/nodes/ExpressionBases.py +34 -26
  460. nuitka/nodes/ExpressionBasesGenerated.py +54 -32
  461. nuitka/nodes/ExpressionShapeMixins.py +19 -17
  462. nuitka/nodes/FrameNodes.py +19 -17
  463. nuitka/nodes/FunctionAttributeNodes.py +19 -17
  464. nuitka/nodes/FunctionNodes.py +81 -35
  465. nuitka/nodes/FutureSpecs.py +35 -20
  466. nuitka/nodes/GeneratorNodes.py +21 -19
  467. nuitka/nodes/GlobalsLocalsNodes.py +22 -17
  468. nuitka/nodes/HardImportNodesGenerated.py +545 -129
  469. nuitka/nodes/ImportHardNodes.py +46 -38
  470. nuitka/nodes/ImportNodes.py +436 -446
  471. nuitka/nodes/IndicatorMixins.py +19 -17
  472. nuitka/nodes/InjectCNodes.py +19 -18
  473. nuitka/nodes/IterationHandles.py +55 -34
  474. nuitka/nodes/KeyValuePairNodes.py +19 -17
  475. nuitka/nodes/ListOperationNodes.py +33 -21
  476. nuitka/nodes/LocalsDictNodes.py +19 -17
  477. nuitka/nodes/LocalsScopes.py +41 -41
  478. nuitka/nodes/LoopNodes.py +28 -17
  479. nuitka/nodes/MatchNodes.py +37 -24
  480. nuitka/nodes/ModuleAttributeNodes.py +18 -35
  481. nuitka/nodes/ModuleNodes.py +90 -31
  482. nuitka/nodes/NetworkxNodes.py +45 -0
  483. nuitka/nodes/NodeBases.py +45 -43
  484. nuitka/nodes/NodeMakingHelpers.py +21 -19
  485. nuitka/nodes/NodeMetaClasses.py +45 -28
  486. nuitka/nodes/OperatorNodes.py +28 -26
  487. nuitka/nodes/OperatorNodesUnary.py +20 -17
  488. nuitka/nodes/OsSysNodes.py +66 -18
  489. nuitka/nodes/OutlineNodes.py +22 -20
  490. nuitka/nodes/PackageMetadataNodes.py +37 -27
  491. nuitka/nodes/PackageResourceNodes.py +29 -23
  492. nuitka/nodes/PrintNodes.py +19 -17
  493. nuitka/nodes/ReturnNodes.py +20 -18
  494. nuitka/nodes/SideEffectNodes.py +19 -17
  495. nuitka/nodes/SliceNodes.py +20 -18
  496. nuitka/nodes/StatementBasesGenerated.py +125 -77
  497. nuitka/nodes/StatementNodes.py +19 -17
  498. nuitka/nodes/StrNodes.py +19 -17
  499. nuitka/nodes/StringConcatenationNodes.py +20 -17
  500. nuitka/nodes/SubscriptNodes.py +26 -24
  501. nuitka/nodes/TensorflowNodes.py +38 -0
  502. nuitka/nodes/TryNodes.py +19 -17
  503. nuitka/nodes/TypeMatchNodes.py +19 -17
  504. nuitka/nodes/TypeNodes.py +40 -17
  505. nuitka/nodes/VariableAssignNodes.py +122 -64
  506. nuitka/nodes/VariableDelNodes.py +19 -17
  507. nuitka/nodes/VariableNameNodes.py +19 -17
  508. nuitka/nodes/VariableRefNodes.py +63 -26
  509. nuitka/nodes/VariableReleaseNodes.py +19 -17
  510. nuitka/nodes/YieldNodes.py +21 -19
  511. nuitka/nodes/__init__.py +5 -4
  512. nuitka/nodes/shapes/BuiltinTypeShapes.py +145 -39
  513. nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
  514. nuitka/nodes/shapes/ShapeMixins.py +40 -17
  515. nuitka/nodes/shapes/StandardShapes.py +27 -20
  516. nuitka/nodes/shapes/__init__.py +5 -4
  517. nuitka/optimizations/BytecodeDemotion.py +19 -17
  518. nuitka/optimizations/FunctionInlining.py +22 -23
  519. nuitka/optimizations/Graphs.py +19 -17
  520. nuitka/optimizations/Optimization.py +39 -35
  521. nuitka/optimizations/OptimizeBuiltinCalls.py +31 -27
  522. nuitka/optimizations/Tags.py +19 -18
  523. nuitka/optimizations/TraceCollections.py +67 -24
  524. nuitka/optimizations/ValueTraces.py +92 -25
  525. nuitka/optimizations/__init__.py +5 -4
  526. nuitka/pgo/PGO.py +33 -23
  527. nuitka/pgo/__init__.py +5 -4
  528. nuitka/plugins/PluginBase.py +610 -109
  529. nuitka/plugins/Plugins.py +241 -58
  530. nuitka/plugins/YamlPluginBase.py +121 -0
  531. nuitka/plugins/__init__.py +5 -4
  532. nuitka/plugins/standard/AntiBloatPlugin.py +357 -129
  533. nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +20 -19
  534. nuitka/plugins/standard/DataFilesPlugin.py +65 -29
  535. nuitka/plugins/standard/DelvewheelPlugin.py +32 -24
  536. nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
  537. nuitka/plugins/standard/DillPlugin/dill-postLoad.py +256 -0
  538. nuitka/plugins/standard/DillPlugin.py +42 -134
  539. nuitka/plugins/standard/DllFilesPlugin.py +125 -42
  540. nuitka/plugins/standard/EnumPlugin.py +19 -17
  541. nuitka/plugins/standard/EventletPlugin.py +19 -17
  542. nuitka/plugins/standard/GeventPlugin.py +19 -17
  543. nuitka/plugins/standard/GiPlugin.py +44 -28
  544. nuitka/plugins/standard/GlfwPlugin.py +20 -17
  545. nuitka/plugins/standard/ImplicitImports.py +407 -46
  546. nuitka/plugins/standard/KivyPlugin.py +30 -17
  547. nuitka/plugins/standard/MatplotlibPlugin.py +88 -42
  548. nuitka/plugins/standard/MultiprocessingPlugin.py +25 -20
  549. nuitka/plugins/standard/NumpyPlugin.py +19 -17
  550. nuitka/plugins/standard/OptionsNannyPlugin.py +48 -76
  551. nuitka/plugins/standard/PbrPlugin.py +21 -19
  552. nuitka/plugins/standard/PkgResourcesPlugin.py +34 -23
  553. nuitka/plugins/standard/PmwPlugin.py +30 -27
  554. nuitka/plugins/standard/PySidePyQtPlugin.py +74 -80
  555. nuitka/plugins/standard/PywebViewPlugin.py +19 -17
  556. nuitka/plugins/standard/SpacyPlugin.py +136 -0
  557. nuitka/plugins/standard/TensorflowPlugin.py +20 -17
  558. nuitka/plugins/standard/TkinterPlugin.py +103 -53
  559. nuitka/plugins/standard/TorchPlugin.py +20 -17
  560. nuitka/plugins/standard/TransformersPlugin.py +94 -30
  561. nuitka/plugins/standard/TrioPlugin.py +18 -15
  562. nuitka/plugins/standard/UpxPlugin.py +21 -19
  563. nuitka/plugins/standard/__init__.py +5 -4
  564. nuitka/plugins/standard/standard.nuitka-package.config.yml +3449 -1299
  565. nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +14 -14
  566. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +121 -66
  567. nuitka/reports/CompilationReportReader.py +67 -0
  568. nuitka/reports/LicenseReport.rst.j2 +21 -21
  569. nuitka/reports/Reports.py +352 -76
  570. nuitka/reports/__init__.py +5 -4
  571. nuitka/specs/BuiltinBytesOperationSpecs.py +18 -17
  572. nuitka/specs/BuiltinDictOperationSpecs.py +18 -17
  573. nuitka/specs/BuiltinListOperationSpecs.py +18 -17
  574. nuitka/specs/BuiltinParameterSpecs.py +30 -20
  575. nuitka/specs/BuiltinStrOperationSpecs.py +19 -18
  576. nuitka/specs/BuiltinTypeOperationSpecs.py +18 -18
  577. nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
  578. nuitka/specs/HardImportSpecs.py +67 -22
  579. nuitka/specs/ParameterSpecs.py +56 -41
  580. nuitka/specs/__init__.py +5 -4
  581. nuitka/tools/Basics.py +20 -18
  582. nuitka/tools/__init__.py +5 -4
  583. nuitka/tools/commercial/__init__.py +7 -6
  584. nuitka/tools/data_composer/DataComposer.py +78 -62
  585. nuitka/tools/data_composer/__init__.py +5 -4
  586. nuitka/tools/data_composer/__main__.py +18 -17
  587. nuitka/tools/environments/CreateEnvironment.py +20 -17
  588. nuitka/tools/environments/Virtualenv.py +60 -32
  589. nuitka/tools/environments/__init__.py +5 -4
  590. nuitka/tools/general/__init__.py +5 -4
  591. nuitka/tools/general/dll_report/__init__.py +5 -4
  592. nuitka/tools/general/dll_report/__main__.py +19 -21
  593. nuitka/tools/general/find_module/FindModuleCode.py +35 -22
  594. nuitka/tools/general/find_module/__init__.py +5 -4
  595. nuitka/tools/onefile_compressor/OnefileCompressor.py +213 -131
  596. nuitka/tools/onefile_compressor/__init__.py +5 -4
  597. nuitka/tools/onefile_compressor/__main__.py +18 -17
  598. nuitka/tools/podman/Podman.py +19 -17
  599. nuitka/tools/podman/__init__.py +5 -4
  600. nuitka/tools/podman/__main__.py +35 -19
  601. nuitka/tools/profiler/__init__.py +5 -4
  602. nuitka/tools/profiler/__main__.py +18 -17
  603. nuitka/tools/scanning/DisplayPackageDLLs.py +47 -22
  604. nuitka/tools/scanning/DisplayPackageData.py +31 -19
  605. nuitka/tools/scanning/__init__.py +5 -4
  606. nuitka/tools/specialize/CTypeDescriptions.py +93 -71
  607. nuitka/tools/specialize/Common.py +18 -17
  608. nuitka/tools/specialize/SpecializeC.py +31 -27
  609. nuitka/tools/specialize/SpecializePython.py +108 -45
  610. nuitka/tools/specialize/__init__.py +5 -4
  611. nuitka/tools/testing/Common.py +106 -52
  612. nuitka/tools/testing/Constructs.py +19 -17
  613. nuitka/tools/testing/OutputComparison.py +54 -18
  614. nuitka/tools/testing/Pythons.py +19 -18
  615. nuitka/tools/testing/RuntimeTracing.py +20 -19
  616. nuitka/tools/testing/SearchModes.py +26 -20
  617. nuitka/tools/testing/Valgrind.py +19 -17
  618. nuitka/tools/testing/__init__.py +5 -4
  619. nuitka/tools/testing/check_reference_counts/__init__.py +5 -4
  620. nuitka/tools/testing/check_reference_counts/__main__.py +18 -18
  621. nuitka/tools/testing/compare_with_cpython/__init__.py +5 -4
  622. nuitka/tools/testing/compare_with_cpython/__main__.py +36 -29
  623. nuitka/tools/testing/find_sxs_modules/__init__.py +5 -4
  624. nuitka/tools/testing/find_sxs_modules/__main__.py +17 -17
  625. nuitka/tools/testing/measure_construct_performance/__init__.py +5 -4
  626. nuitka/tools/testing/measure_construct_performance/__main__.py +22 -25
  627. nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
  628. nuitka/tools/testing/run_nuitka_tests/__main__.py +57 -40
  629. nuitka/tools/watch/AutoStage.py +144 -0
  630. nuitka/tools/watch/GitHub.py +113 -0
  631. nuitka/tools/watch/__init__.py +5 -4
  632. nuitka/tools/watch/__main__.py +322 -91
  633. nuitka/tree/Building.py +176 -147
  634. nuitka/tree/ComplexCallHelperFunctions.py +80 -58
  635. nuitka/tree/Extractions.py +19 -17
  636. nuitka/tree/InternalModule.py +29 -20
  637. nuitka/tree/Operations.py +19 -17
  638. nuitka/tree/ReformulationAssertStatements.py +20 -17
  639. nuitka/tree/ReformulationAssignmentStatements.py +92 -91
  640. nuitka/tree/ReformulationBooleanExpressions.py +19 -17
  641. nuitka/tree/ReformulationCallExpressions.py +20 -18
  642. nuitka/tree/ReformulationClasses.py +45 -39
  643. nuitka/tree/ReformulationClasses3.py +146 -98
  644. nuitka/tree/ReformulationComparisonExpressions.py +29 -35
  645. nuitka/tree/ReformulationContractionExpressions.py +58 -55
  646. nuitka/tree/ReformulationDictionaryCreation.py +40 -35
  647. nuitka/tree/ReformulationExecStatements.py +42 -39
  648. nuitka/tree/ReformulationForLoopStatements.py +30 -34
  649. nuitka/tree/ReformulationFunctionStatements.py +58 -54
  650. nuitka/tree/ReformulationImportStatements.py +34 -29
  651. nuitka/tree/ReformulationLambdaExpressions.py +23 -24
  652. nuitka/tree/ReformulationMatchStatements.py +244 -92
  653. nuitka/tree/ReformulationMultidist.py +22 -18
  654. nuitka/tree/ReformulationNamespacePackages.py +55 -46
  655. nuitka/tree/ReformulationPrintStatements.py +23 -24
  656. nuitka/tree/ReformulationSequenceCreation.py +50 -49
  657. nuitka/tree/ReformulationSubscriptExpressions.py +19 -17
  658. nuitka/tree/ReformulationTryExceptStatements.py +19 -17
  659. nuitka/tree/ReformulationTryFinallyStatements.py +34 -17
  660. nuitka/tree/ReformulationWhileLoopStatements.py +19 -17
  661. nuitka/tree/ReformulationWithStatements.py +39 -41
  662. nuitka/tree/ReformulationYieldExpressions.py +21 -19
  663. nuitka/tree/SourceHandling.py +76 -31
  664. nuitka/tree/SyntaxErrors.py +19 -17
  665. nuitka/tree/TreeHelpers.py +33 -20
  666. nuitka/tree/VariableClosure.py +35 -39
  667. nuitka/tree/__init__.py +5 -4
  668. nuitka/utils/AppDirs.py +41 -20
  669. nuitka/utils/CStrings.py +66 -21
  670. nuitka/utils/CommandLineOptions.py +84 -19
  671. nuitka/utils/Distributions.py +445 -54
  672. nuitka/utils/Download.py +89 -57
  673. nuitka/utils/Execution.py +73 -34
  674. nuitka/utils/FileOperations.py +318 -74
  675. nuitka/utils/Hashing.py +55 -33
  676. nuitka/utils/Images.py +26 -19
  677. nuitka/utils/Importing.py +118 -24
  678. nuitka/utils/InstalledPythons.py +80 -75
  679. nuitka/utils/InstanceCounters.py +20 -17
  680. nuitka/utils/Jinja2.py +30 -22
  681. nuitka/utils/Json.py +19 -17
  682. nuitka/utils/MacOSApp.py +26 -18
  683. nuitka/utils/MemoryUsage.py +20 -18
  684. nuitka/utils/ModuleNames.py +42 -26
  685. nuitka/utils/ReExecute.py +50 -28
  686. nuitka/utils/Rest.py +20 -17
  687. nuitka/utils/SharedLibraries.py +161 -75
  688. nuitka/utils/Shebang.py +20 -17
  689. nuitka/utils/Signing.py +63 -18
  690. nuitka/utils/SlotMetaClasses.py +57 -0
  691. nuitka/utils/StaticLibraries.py +83 -56
  692. nuitka/utils/ThreadedExecutor.py +18 -17
  693. nuitka/utils/Timing.py +22 -20
  694. nuitka/utils/Utils.py +115 -25
  695. nuitka/utils/WindowsFileUsage.py +22 -20
  696. nuitka/utils/WindowsResources.py +25 -18
  697. nuitka/utils/Yaml.py +62 -24
  698. nuitka/utils/__init__.py +5 -4
  699. Nuitka_winsvc-1.8.dist-info/RECORD +0 -905
  700. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_gui.py +0 -9
  701. nuitka/build/inline_copy/tqdm/tqdm/gui.py +0 -191
  702. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/LICENSE.txt +0 -0
  703. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/entry_points.txt +0 -0
  704. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/top_level.txt +0 -0
@@ -1,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,13 @@ 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
+ isFilesystemEncodable,
47
+ )
57
48
  from nuitka.utils.Json import loadJsonFromFilename
58
49
  from nuitka.utils.Utils import (
59
50
  isDebianBasedLinux,
@@ -101,7 +92,7 @@ from .SconsUtils import (
101
92
  writeSconsReport,
102
93
  )
103
94
 
104
- # spell-checker: ignore ccversion,ccflags,werror,cppdefines,cpppath
95
+ # spell-checker: ignore ccversion,ccflags,werror,cppdefines,cpppath,linkflags,libpath
105
96
 
106
97
  # Set the arguments.
107
98
  setArguments(ARGUMENTS)
@@ -118,18 +109,12 @@ source_dir = getArgumentRequired("source_dir")
118
109
  nuitka_src = getArgumentRequired("nuitka_src")
119
110
  static_src = os.path.join(source_dir, "static")
120
111
 
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)
112
+ # The name of executable that we are supposed to produce.
113
+ result_exe = getArgumentRequired("result_exe")
126
114
 
127
115
  # Name of the main program (in executable mode, typically __main__ but can be in a package too.)
128
116
  main_module_name = getArgumentDefaulted("main_module_name", "__main__")
129
117
 
130
- # The suffix for an extension module (in module mode).
131
- module_suffix = getArgumentDefaulted("module_suffix", None)
132
-
133
118
  # Full names shall be used, no remapping for cacheable filenames.
134
119
  full_names = getArgumentBool("full_names", False)
135
120
 
@@ -139,6 +124,10 @@ module_mode = getArgumentBool("module_mode", False)
139
124
  # Debug mode: Less optimizations, debug information in the resulting binary.
140
125
  debug_mode = getArgumentBool("debug_mode", False)
141
126
 
127
+ # Debugger mode: Debug information in the resulting binary and intention to run
128
+ # in debugger.
129
+ debugger_mode = getArgumentBool("debugger_mode", False)
130
+
142
131
  # Profiling mode: Outputs vmprof based information from program run.
143
132
  profile_mode = getArgumentBool("profile_mode", False)
144
133
 
@@ -167,6 +156,9 @@ deployment_mode = getArgumentBool("deployment", False)
167
156
  # Experimental indications. Do things that are not yet safe to do.
168
157
  no_deployment = getArgumentList("no_deployment", "")
169
158
 
159
+ # Debug mode indications. Do check things with fine granularity.
160
+ debug_modes = getArgumentList("debug_modes", "")
161
+
170
162
  # Tracing mode. Output program progress.
171
163
  trace_mode = getArgumentBool("trace_mode", False)
172
164
 
@@ -177,12 +169,8 @@ lto_mode = getArgumentDefaulted("lto_mode", "auto")
177
169
  # PGO mode: Use profile guided optimization of C compiler if available.
178
170
  pgo_mode = getArgumentDefaulted("pgo_mode", "no")
179
171
 
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)
172
+ # Console mode specified
173
+ console_mode = getArgumentDefaulted("console_mode", "attach")
186
174
 
187
175
  # Windows might be running a Python whose DLL we have to use.
188
176
  uninstalled_python = getArgumentBool("uninstalled_python", False)
@@ -203,7 +191,7 @@ clang_mode = getArgumentBool("clang_mode", False)
203
191
  # Clang on Windows with no requirement to use MinGW64 or using MSYS2 MinGW flavor,
204
192
  # is changed to ClangCL from Visual Studio.
205
193
  clangcl_mode = False
206
- if win_target and not mingw_mode and clang_mode:
194
+ if os.name == "nt" and not mingw_mode and clang_mode:
207
195
  clang_mode = False
208
196
  clangcl_mode = True
209
197
 
@@ -217,6 +205,9 @@ standalone_mode = getArgumentBool("standalone_mode", False)
217
205
  # Onefile mode
218
206
  onefile_mode = getArgumentBool("onefile_mode", False)
219
207
 
208
+ # MacOS bundle
209
+ macos_bundle_mode = getArgumentBool("macos_bundle_mode", False)
210
+
220
211
  # Onefile temp mode
221
212
  onefile_temp_mode = getArgumentBool("onefile_temp_mode", False)
222
213
 
@@ -227,13 +218,15 @@ forced_stderr_path = getArgumentDefaulted("forced_stderr_path", None)
227
218
  show_scons_mode = getArgumentBool("show_scons", False)
228
219
  scons_details_logger.is_quiet = not show_scons_mode
229
220
 
230
- if int(os.environ.get("NUITKA_QUIET", "0")):
221
+ if int(os.getenv("NUITKA_QUIET", "0")):
231
222
  setQuiet()
232
223
 
233
224
  # Home of Python to be compiled against, used to find include files and
234
225
  # libraries to link against.
235
226
  python_prefix = getArgumentRequired("python_prefix")
236
227
 
228
+ python_prefix_external = getExternalUsePath(python_prefix)
229
+
237
230
  # Forced MSVC version (windows-only)
238
231
  msvc_version = getArgumentDefaulted("msvc_version", None)
239
232
 
@@ -287,6 +280,9 @@ cpp_include_dirs = getArgumentList("cpp_include_dirs", "")
287
280
  link_dirs = getArgumentList("link_dirs", "")
288
281
  link_libraries = getArgumentList("link_libraries", "")
289
282
 
283
+ # From statically compiled modules of the Python
284
+ link_module_libs = getArgumentList("link_module_libs", "")
285
+
290
286
  # Allow automatic downloads for ccache, etc.
291
287
  assume_yes_for_downloads = getArgumentBool("assume_yes_for_downloads", False)
292
288
 
@@ -299,6 +295,9 @@ macos_min_version = getArgumentDefaulted("macos_min_version", "")
299
295
  # Target arch for macOS.
300
296
  macos_target_arch = getArgumentDefaulted("macos_target_arch", "")
301
297
 
298
+ # gcc compiler cf_protection option
299
+ cf_protection = getArgumentDefaulted("cf_protection", "auto")
300
+
302
301
  if getArgumentBool("progress_bar", True) and not show_scons_mode:
303
302
  enableSconsProgressBar()
304
303
 
@@ -319,6 +318,7 @@ env = createEnvironment(
319
318
  target_arch=target_arch,
320
319
  experimental=experimental,
321
320
  no_deployment=no_deployment,
321
+ debug_modes=debug_modes,
322
322
  )
323
323
 
324
324
  scons_details_logger.info("Initial CC: %r" % env.get("CC"))
@@ -335,7 +335,7 @@ if "CC" in os.environ:
335
335
  elif clangcl_mode:
336
336
  # If possible, add Clang directory from MSVC if available.
337
337
  addClangClPathFromMSVC(env=env)
338
- elif clang_mode:
338
+ elif clang_mode and not mingw_mode:
339
339
  # If requested by the user, use the clang compiler, overriding what was
340
340
  # said in environment.
341
341
 
@@ -357,8 +357,9 @@ env.the_cc_name = os.path.normcase(os.path.basename(env.the_compiler))
357
357
  env.standalone_mode = standalone_mode
358
358
  env.debug_mode = debug_mode
359
359
  env.unstripped_mode = unstripped_mode
360
- env.disable_console = disable_console
360
+ env.console_mode = console_mode
361
361
  env.source_dir = source_dir
362
+ env.nuitka_src = nuitka_src
362
363
  env.low_memory = low_memory
363
364
  env.macos_min_version = macos_min_version
364
365
  env.macos_target_arch = macos_target_arch
@@ -374,10 +375,13 @@ env.gcc_mode = isGccName(env.the_cc_name) or clang_mode
374
375
  env.clang_mode = clang_mode
375
376
 
376
377
  # 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
378
+ env.msvc_mode = os.name == "nt" and not env.gcc_mode
379
+ env.mingw_mode = os.name == "nt" and env.gcc_mode
379
380
  env.clangcl_mode = clangcl_mode
380
381
 
382
+ # gcc compiler cf_protection option
383
+ env.cf_protection = cf_protection
384
+
381
385
  # Consider switching from gcc to its g++ compiler as a workaround that makes us work without C11.
382
386
  switchFromGccToGpp(
383
387
  env=env,
@@ -392,7 +396,7 @@ if show_scons_mode:
392
396
  my_print("Scons: Compiler used", end=" ")
393
397
  my_print(getExecutablePath(env.the_compiler, env=env), end=" ")
394
398
 
395
- if win_target and env.msvc_mode:
399
+ if os.name == "nt" and env.msvc_mode:
396
400
  my_print("(MSVC %s)" % getMsvcVersionString(env))
397
401
 
398
402
  my_print()
@@ -409,6 +413,7 @@ setupCCompiler(
409
413
  lto_mode=lto_mode,
410
414
  pgo_mode=pgo_mode,
411
415
  job_count=job_count,
416
+ onefile_compile=False,
412
417
  )
413
418
 
414
419
 
@@ -422,14 +427,14 @@ if env.gcc_mode and not env.clang_mode and env.gcc_version >= (8,):
422
427
  "--file-prefix-map=%s=%s" % (os.path.normpath(source_dir), "."),
423
428
  "--file-prefix-map=%s=%s"
424
429
  % (
425
- os.path.normpath(os.path.join(source_dir, "static_src")),
426
- os.path.normpath(os.path.join(nuitka_src, "static_src")),
430
+ os.path.normpath(os.path.join(env.source_dir, "static_src")),
431
+ os.path.normpath(os.path.join(env.nuitka_src, "static_src")),
427
432
  ),
428
433
  ]
429
434
  )
430
435
 
431
436
  if env.msvc_mode:
432
- # With Clang on Windows, there is also an linker to use.
437
+ # With Clang on Windows, there is also an linker to use. spell-checker: ignore bigobj
433
438
  env.Append(
434
439
  CCFLAGS=[
435
440
  "/EHsc", # No C++ exception handling code.
@@ -444,7 +449,7 @@ if env.msvc_mode:
444
449
 
445
450
  if module_mode:
446
451
  # Make sure we handle import library on our own and put it into the
447
- # build directory.
452
+ # build directory, spell-checker: ignore IMPLIB
448
453
 
449
454
  no_import_lib = True
450
455
  env.Append(
@@ -460,10 +465,19 @@ if env.debug_mode:
460
465
  if env.gcc_mode:
461
466
  # Allow gcc/clang to point out all kinds of inconsistency to us by
462
467
  # raising an error.
468
+
469
+ if "allow-c-warnings" not in env.experimental_flags and not debugger_mode:
470
+ env.Append(
471
+ CCFLAGS=[
472
+ "-Wall",
473
+ "-Werror",
474
+ ]
475
+ )
476
+ else:
477
+ env.Append(CCFLAGS=["-Wno-unused-but-set-variable"])
478
+
463
479
  env.Append(
464
480
  CCFLAGS=[
465
- "-Wall",
466
- "-Werror",
467
481
  # Unfortunately Py_INCREF(Py_False) triggers aliasing warnings,
468
482
  # which are unfounded, so disable them.
469
483
  "-Wno-error=strict-aliasing",
@@ -495,6 +509,9 @@ if env.debug_mode:
495
509
  if python_version >= (3, 4):
496
510
  env.Append(CCFLAGS=["/wd4512", "/wd4510", "/wd4610"])
497
511
 
512
+ if python_version >= (3, 13):
513
+ env.Append(CCFLAGS=["/wd4324"])
514
+
498
515
  # We use null arrays in our structure Python declarations, which C11 does
499
516
  # not really allow, but should work.
500
517
  env.Append(CCFLAGS=["/wd4200"])
@@ -515,6 +532,9 @@ if trace_mode:
515
532
  if env.standalone_mode:
516
533
  env.Append(CPPDEFINES=["_NUITKA_STANDALONE"])
517
534
 
535
+ if macos_bundle_mode:
536
+ env.Append(CPPDEFINES=["_NUITKA_MACOS_BUNDLE"])
537
+
518
538
  if onefile_mode:
519
539
  env.Append(CPPDEFINES=["_NUITKA_ONEFILE_MODE"])
520
540
 
@@ -538,44 +558,17 @@ if env.static_libpython:
538
558
  env.Append(CPPDEFINES=["Py_NO_ENABLE_SHARED"])
539
559
 
540
560
 
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
561
  def _detectPythonHeaderPath():
571
- if win_target:
562
+ if os.name == "nt":
572
563
  # On Windows, the CPython installation layout is relatively fixed, but on MSYS2
573
564
  # compiled for mingw64, it's more standard.
574
565
 
575
566
  candidates = [
576
- os.path.join(python_prefix, "include"),
567
+ os.path.join(python_prefix_external, "include"),
577
568
  # On MSYS2 with MinGW64 Python, it is also the other form.
578
- os.path.join(python_prefix, "include", "python" + python_abi_version),
569
+ os.path.join(
570
+ python_prefix_external, "include", "python" + python_abi_version
571
+ ),
579
572
  ]
580
573
  else:
581
574
  # The python header path is a combination of python version and debug
@@ -583,10 +576,14 @@ def _detectPythonHeaderPath():
583
576
  # include path.
584
577
 
585
578
  candidates = [
586
- os.path.join(python_prefix, "include", "python" + python_abi_version),
579
+ os.path.join(
580
+ python_prefix_external, "include", "python" + python_abi_version
581
+ ),
582
+ # CPython source code checkout
583
+ os.path.join(python_prefix_external, "Include"),
587
584
  # Haiku specific paths:
588
585
  os.path.join(
589
- python_prefix, "develop/headers", "python" + python_abi_version
586
+ python_prefix_external, "develop/headers", "python" + python_abi_version
590
587
  ),
591
588
  ]
592
589
 
@@ -594,7 +591,7 @@ def _detectPythonHeaderPath():
594
591
  if python_debug and "d" in python_abi_version:
595
592
  candidates.append(
596
593
  os.path.join(
597
- python_prefix,
594
+ python_prefix_external,
598
595
  "include",
599
596
  "python" + python_abi_version.replace("d", ""),
600
597
  )
@@ -602,55 +599,64 @@ def _detectPythonHeaderPath():
602
599
 
603
600
  for candidate in candidates:
604
601
  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
- )
602
+ yield candidate
603
+ break
611
604
  else:
612
- scons_logger.sysexit(
613
- """\
605
+ if os.name == "nt":
606
+ scons_logger.sysexit(
607
+ """\
608
+ Error, you seem to be using the unsupported embeddable CPython distribution \
609
+ use a full Python instead."""
610
+ )
611
+ else:
612
+ scons_logger.sysexit(
613
+ """\
614
614
  Error, no 'Python.h' %s headers can be found at '%s', dependency \
615
615
  not satisfied!"""
616
- % ("debug" if python_debug else "development", candidates)
617
- )
616
+ % ("debug" if python_debug else "development", candidates)
617
+ )
618
+
619
+ if python_version >= (3, 13):
620
+ yield os.path.join(candidate, "internal", "mimalloc")
618
621
 
622
+ if env.self_compiled_python_uninstalled:
623
+ yield python_prefix_external
619
624
 
620
- env.Append(CPPPATH=[_detectPythonHeaderPath()])
625
+
626
+ env.Append(CPPPATH=list(_detectPythonHeaderPath()))
621
627
 
622
628
  # To support self-built Python on Windows, need to also add the "PC" directory,
623
629
  # that a normal install won't have.
624
630
  if os.name == "nt":
625
- python_header_path = os.path.join(python_prefix, "PC")
631
+ python_header_path = os.path.join(python_prefix_external, "PC")
626
632
 
627
633
  if os.path.exists(python_header_path):
628
634
  env.Append(CPPPATH=[python_header_path])
629
635
 
630
-
631
- def getWindowsPythonDLLPath():
632
- return os.environ["NUITKA_PYTHON_DLL_PATH"]
633
-
634
-
635
636
  if env.nuitka_python:
636
637
  env.Append(CPPDEFINES=["_NUITKA_PYTHON"])
637
638
 
638
639
  if env.static_libpython:
639
640
  env.Append(CPPDEFINES=["_NUITKA_STATIC_LIBPYTHON"])
640
641
 
641
- if env.static_libpython and (not win_target or env.nuitka_python):
642
+ # TODO: This ought to be decided outside of scons and per flavor maybe.
643
+ if env.static_libpython and (
644
+ (not os.name == "nt" and not isMacOS()) or env.nuitka_python
645
+ ):
642
646
  env.Append(CPPDEFINES=["_NUITKA_USE_UNEXPOSED_API"])
643
647
 
644
- if win_target:
648
+ if os.name == "nt":
645
649
  if env.nuitka_python:
646
650
  env.Append(
647
651
  LINKFLAGS=[
648
652
  "/LTCG",
649
- "/USEPROFILE:PGD=" + os.path.join(python_prefix, "python.pgd"),
653
+ "/USEPROFILE:PGD=" + os.path.join(python_prefix_external, "python.pgd"),
650
654
  ]
651
655
  )
652
656
 
653
- link_data = loadJsonFromFilename(os.path.join(python_prefix, "link.json"))
657
+ link_data = loadJsonFromFilename(
658
+ os.path.join(python_prefix_external, "link.json")
659
+ )
654
660
  env.Append(LIBS=link_data["libraries"])
655
661
  env.Append(LIBPATH=link_data["library_dirs"])
656
662
  for define, value in link_data["macros"]:
@@ -683,7 +689,7 @@ if win_target:
683
689
  pc_build_dir = "PCBuild"
684
690
 
685
691
  for candidate in ("libs", pc_build_dir):
686
- win_lib_path = os.path.join(python_prefix, candidate)
692
+ win_lib_path = os.path.join(python_prefix_external, candidate)
687
693
 
688
694
  if os.path.exists(os.path.join(win_lib_path, win_lib_name + ".lib")):
689
695
  break
@@ -697,17 +703,22 @@ if win_target:
697
703
  addWinLib()
698
704
  elif not module_mode:
699
705
  # Add the python library path to the library path
700
- python_lib_path = os.path.join(python_prefix, "lib")
706
+ python_lib_path = os.path.join(python_prefix_external, "lib")
701
707
  env.Append(LIBPATH=[python_lib_path])
702
708
 
709
+ # Any module libs that are for self-compiled Python to be static.
710
+ env.Append(_LIBFLAGS=["-l" + lib_desc for lib_desc in link_module_libs])
711
+
703
712
  if env.nuitka_python:
704
- link_data = loadJsonFromFilename(os.path.join(python_prefix, "link.json"))
713
+ link_data = loadJsonFromFilename(
714
+ os.path.join(python_prefix_external, "link.json")
715
+ )
705
716
  for lib in link_data["libraries"]:
706
717
  # 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"):
718
+ if lib.startswith(":") and lib.endswith(".a"):
710
719
  env.Append(_LIBFLAGS=["-l" + lib])
720
+ elif os.path.isfile(lib):
721
+ env.Append(_LIBFLAGS=[lib])
711
722
  else:
712
723
  env.Append(LIBS=[lib])
713
724
  env.Append(LIBPATH=link_data["library_dirs"])
@@ -726,18 +737,21 @@ elif not module_mode:
726
737
 
727
738
  # The linker won't succeed in searching for those for system Python of Debian
728
739
  # compiled Pythons. Help that. For self-compiled,
729
- if python_prefix == "/usr" and isDebianBasedLinux():
740
+ if python_prefix_external == "/usr" and isDebianBasedLinux():
730
741
  env.Append(LIBS=["z", "m", "util", "pthread"])
731
742
 
732
743
  if python_version >= (3,):
733
744
  env.Append(LIBS=["expat"])
734
745
 
735
746
  env.Append(LINKFLAGS=["-Xlinker", "-export-dynamic", "-rdynamic"])
747
+
748
+ if env.arch_python:
749
+ env.Append(LINKFLAGS=["-rdynamic"])
736
750
  else:
737
751
  # Fedora, Debian and Ubuntu distinguish the system libraries like this.
738
752
  if (
739
753
  python_debug
740
- and python_prefix == "/usr"
754
+ and python_prefix_external == "/usr"
741
755
  and python_version < (3,)
742
756
  and (isDebianBasedLinux() or isFedoraBasedLinux())
743
757
  ):
@@ -745,7 +759,7 @@ elif not module_mode:
745
759
  else:
746
760
  env.Append(LIBS=["python" + python_abi_version])
747
761
 
748
- if python_prefix != "/usr" and "linux" in sys.platform:
762
+ if python_prefix_external != "/usr" and "linux" in sys.platform:
749
763
  env.Append(LIBS=["dl", "pthread", "util", "rt", "m"])
750
764
 
751
765
  if env.gcc_mode:
@@ -768,7 +782,7 @@ if isMacOS():
768
782
 
769
783
  # The static include files reside in Nuitka installation, which may be where
770
784
  # the "nuitka.build" package lives.
771
- nuitka_include = os.path.join(nuitka_src, "include")
785
+ nuitka_include = os.path.join(env.nuitka_src, "include")
772
786
 
773
787
  if not os.path.exists(os.path.join(nuitka_include, "nuitka", "prelude.h")):
774
788
  scons_logger.sysexit(
@@ -778,10 +792,29 @@ if not os.path.exists(os.path.join(nuitka_include, "nuitka", "prelude.h")):
778
792
 
779
793
  # We have include files in the build directory and the static include directory
780
794
  # that is located inside Nuitka installation.
781
- env.Append(CPPPATH=[source_dir, nuitka_include, os.path.join(nuitka_src, "static_src")])
795
+ env.Append(
796
+ CPPPATH=[
797
+ source_dir,
798
+ nuitka_include,
799
+ os.path.join(env.nuitka_src, "static_src"),
800
+ os.path.join(env.nuitka_src, "inline_copy", "libbacktrace"),
801
+ ]
802
+ )
803
+
804
+ if env.debian_python and python_version >= (3, 12):
805
+ env.Append(
806
+ CPPPATH=[
807
+ os.path.join(env.nuitka_src, "inline_copy", "python_hacl", "hacl_312"),
808
+ os.path.join(
809
+ env.nuitka_src, "inline_copy", "python_hacl", "hacl_312", "include"
810
+ ),
811
+ ]
812
+ )
813
+
814
+ env.Append(CPPDEFINES=["_NUITKA_INLINE_COPY_HACL"])
782
815
 
783
816
  # Set load libpython from binary directory default
784
- if env.gcc_mode and not isMacOS() and not win_target and not module_mode:
817
+ if env.gcc_mode and not isMacOS() and not os.name == "nt" and not module_mode:
785
818
  if env.standalone_mode:
786
819
  rpath = "$$ORIGIN"
787
820
  else:
@@ -820,8 +853,8 @@ else:
820
853
  # For complete outputs, we have to match the C runtime of the Python DLL, if any,
821
854
  # for Nuitka-Python there is of course none.
822
855
  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)
856
+ forced_stdout_path not in ("{NONE}", "{NULL}", None)
857
+ or forced_stderr_path not in ("{NONE}", "{NULL}", None)
825
858
  ):
826
859
  env.Append(CCFLAGS=["/MD"]) # Multithreaded, dynamic version of C run time.
827
860
  else:
@@ -857,9 +890,8 @@ def discoverSourceFiles():
857
890
 
858
891
  result += [
859
892
  provideStaticSourceFile(
893
+ env=env,
860
894
  sub_path=filename,
861
- nuitka_src=nuitka_src,
862
- source_dir=source_dir,
863
895
  c11_mode=env.c11_mode,
864
896
  )
865
897
  for filename in static_src_filenames
@@ -870,13 +902,36 @@ def discoverSourceFiles():
870
902
 
871
903
  source_files = discoverSourceFiles()
872
904
 
905
+ # Remove the target file to avoid cases where it falsely doesn't get rebuild
906
+ # and then lingers from previous builds,
907
+ deleteFile(result_exe, must_exist=False)
908
+
909
+ # Workaround for MinGW64 not supporting unicode result paths for "-o" basename.
910
+ if os.name == "nt" and not isFilesystemEncodable(result_exe):
911
+ result_exe = os.path.join(
912
+ os.path.dirname(result_exe),
913
+ "_nuitka_temp.pyd" if module_mode else "_nuitka_temp.exe",
914
+ )
915
+
916
+ deleteFile(result_exe, must_exist=False)
917
+
873
918
  if module_mode:
874
- # For Python modules, the standard shared library extension is not what
875
- # gets used.
919
+ # For Python modules, the standard shared library extension is not what gets
920
+ # used. spell-checker: ignore SHLIBSUFFIX
921
+ module_suffix = getFilenameExtension(result_exe)
922
+ result_base_path = changeFilenameExtension(result_exe, "")
923
+
924
+ extra_suffix = getFilenameExtension(result_base_path)
925
+ if extra_suffix != "":
926
+ module_suffix = extra_suffix + module_suffix
927
+ result_base_path = changeFilenameExtension(result_base_path, "")
928
+
929
+ assert getFilenameExtension(result_base_path) == "", result_base_path
930
+
876
931
  env["SHLIBSUFFIX"] = module_suffix
877
932
 
878
933
  target = env.SharedLibrary(
879
- result_basepath, source_files, no_import_lib=no_import_lib
934
+ result_base_path, source_files, no_import_lib=no_import_lib
880
935
  )
881
936
  else:
882
937
  target = env.Program(result_exe, source_files)
@@ -884,10 +939,6 @@ else:
884
939
  # Use compiler/linker flags provided via environment variables
885
940
  importEnvironmentVariableSettings(env)
886
941
 
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
942
 
892
943
  if job_count:
893
944
  scons_details_logger.info("Told to run compilation on %d CPUs." % job_count)
@@ -897,6 +948,7 @@ def createBuildDefinitionsFile():
897
948
  build_definitions = {}
898
949
 
899
950
  if uninstalled_python and not env.static_libpython:
951
+ # Use the non-external one, so it's not a short path.
900
952
  build_definitions["PYTHON_HOME_PATH"] = python_prefix
901
953
 
902
954
  build_definitions["NO_PYTHON_WARNINGS"] = 1 if no_python_warnings else 0
@@ -939,25 +991,23 @@ def createBuildDefinitionsFile():
939
991
  build_definitions["SYSFLAG_ISOLATED"] = 1 if python_sysflag_isolated else 0
940
992
 
941
993
  if forced_stdout_path:
942
- if forced_stdout_path == "%NONE%":
994
+ if forced_stdout_path == "{NONE}":
943
995
  build_definitions["NUITKA_FORCED_STDOUT_NONE_BOOL"] = 1
944
- elif forced_stdout_path == "%NULL%":
996
+ elif forced_stdout_path == "{NULL}":
945
997
  build_definitions["NUITKA_FORCED_STDOUT_NULL_BOOL"] = 1
946
998
  else:
947
999
  build_definitions["NUITKA_FORCED_STDOUT_PATH"] = forced_stdout_path
948
1000
 
949
1001
  if forced_stderr_path:
950
- if forced_stderr_path == "%NONE%":
1002
+ if forced_stderr_path == "{NONE}":
951
1003
  build_definitions["NUITKA_FORCED_STDERR_NONE_BOOL"] = 1
952
- elif forced_stderr_path == "%NULL%":
1004
+ elif forced_stderr_path == "{NULL}":
953
1005
  build_definitions["NUITKA_FORCED_STDERR_NULL_BOOL"] = 1
954
1006
  else:
955
1007
  build_definitions["NUITKA_FORCED_STDERR_PATH"] = forced_stderr_path
956
1008
 
957
1009
  build_definitions["NUITKA_MAIN_MODULE_NAME"] = main_module_name
958
-
959
- if main_module_name != "__main__":
960
- build_definitions["NUITKA_MAIN_PACKAGE_MODE"] = 1
1010
+ build_definitions["NUITKA_MAIN_IS_PACKAGE_BOOL"] = main_module_name != "__main__"
961
1011
 
962
1012
  createDefinitionsFile(source_dir, "build_definitions.h", build_definitions)
963
1013
 
@@ -966,7 +1016,7 @@ if forced_stderr_path and not forced_stdout_path:
966
1016
  env.Append(CPPDEFINES=["NUITKA_STDERR_NOT_VISIBLE"])
967
1017
 
968
1018
  if file_reference_mode == "original":
969
- env.Append(CPPDEFINES=["NUITKA_FILE_REFERENCE_ORIGINAL_MODE"])
1019
+ env.Append(CPPDEFINES=["_NUITKA_FILE_REFERENCE_ORIGINAL_MODE"])
970
1020
 
971
1021
 
972
1022
  createBuildDefinitionsFile()
@@ -998,7 +1048,6 @@ env.Append(LIBS=link_libraries)
998
1048
  # Work around windows bugs and use watchdogs to track progress of compilation.
999
1049
  enableSpawnMonitoring(
1000
1050
  env=env,
1001
- win_target=win_target,
1002
1051
  module_mode=module_mode,
1003
1052
  source_files=source_files,
1004
1053
  )
@@ -1008,12 +1057,13 @@ enableSpawnMonitoring(
1008
1057
  changeKeyboardInterruptToErrorExit()
1009
1058
 
1010
1059
  # Check if ccache is installed, and complain if it is not.
1011
- if env.gcc_mode and not disable_ccache:
1060
+ if env.gcc_mode:
1012
1061
  enableCcache(
1013
1062
  env=env,
1014
1063
  source_dir=source_dir,
1015
- python_prefix=python_prefix,
1064
+ python_prefix=python_prefix_external,
1016
1065
  assume_yes_for_downloads=assume_yes_for_downloads,
1066
+ disable_ccache=disable_ccache,
1017
1067
  )
1018
1068
 
1019
1069
  if env.msvc_mode and not disable_ccache:
@@ -1022,12 +1072,24 @@ if env.msvc_mode and not disable_ccache:
1022
1072
  source_dir=source_dir,
1023
1073
  )
1024
1074
 
1025
- writeSconsReport(
1026
- env=env,
1027
- source_dir=source_dir,
1028
- )
1075
+ writeSconsReport(env=env, target=target)
1029
1076
 
1030
1077
  setSconsProgressBarTotal(name=env.progressbar_name, total=len(source_files))
1031
1078
 
1032
1079
  scons_details_logger.info("Launching Scons target: %s" % target)
1033
1080
  env.Default(target)
1081
+
1082
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
1083
+ # integrates with CPython, but also works on its own.
1084
+ #
1085
+ # Licensed under the Apache License, Version 2.0 (the "License");
1086
+ # you may not use this file except in compliance with the License.
1087
+ # You may obtain a copy of the License at
1088
+ #
1089
+ # http://www.apache.org/licenses/LICENSE-2.0
1090
+ #
1091
+ # Unless required by applicable law or agreed to in writing, software
1092
+ # distributed under the License is distributed on an "AS IS" BASIS,
1093
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1094
+ # See the License for the specific language governing permissions and
1095
+ # limitations under the License.