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
nuitka/MainControl.py CHANGED
@@ -1,20 +1,6 @@
1
- # Copyright 2023, Kay Hayen, mailto:kay.hayen@gmail.com
2
- #
3
- # Part of "Nuitka", an optimizing Python compiler that is compatible and
4
- # integrates with CPython, but also works on its own.
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
1
+ # Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
3
+
18
4
  """ This is the main actions of Nuitka.
19
5
 
20
6
  This can do all the steps to translate one module to a target language using
@@ -28,8 +14,15 @@ import os
28
14
  import sys
29
15
 
30
16
  from nuitka.build.DataComposerInterface import runDataComposer
31
- from nuitka.build.SconsUtils import getSconsReportValue, readSconsReport
32
- from nuitka.code_generation.ConstantCodes import addDistributionMetadataValue
17
+ from nuitka.build.SconsUtils import (
18
+ getSconsReportValue,
19
+ readSconsErrorReport,
20
+ readSconsReport,
21
+ )
22
+ from nuitka.code_generation.ConstantCodes import (
23
+ addDistributionMetadataValue,
24
+ getDistributionMetadataValues,
25
+ )
33
26
  from nuitka.freezer.IncludedDataFiles import (
34
27
  addIncludedDataFilesFromFileOptions,
35
28
  addIncludedDataFilesFromPackageOptions,
@@ -51,6 +44,7 @@ from nuitka.Options import (
51
44
  hasPythonFlagNoDocStrings,
52
45
  hasPythonFlagNoWarnings,
53
46
  hasPythonFlagUnbuffered,
47
+ isExperimental,
54
48
  )
55
49
  from nuitka.plugins.Plugins import Plugins
56
50
  from nuitka.PostProcessing import executePostProcessing
@@ -61,19 +55,21 @@ from nuitka.Progress import (
61
55
  )
62
56
  from nuitka.PythonFlavors import (
63
57
  isApplePython,
58
+ isArchPackagePython,
64
59
  isDebianPackagePython,
65
60
  isFedoraPackagePython,
66
61
  isNuitkaPython,
67
62
  isPyenvPython,
68
63
  )
69
64
  from nuitka.PythonVersions import (
65
+ getModuleLinkerLibs,
70
66
  getPythonABI,
71
67
  getSupportedPythonVersions,
72
68
  python_version,
73
69
  python_version_str,
74
70
  )
75
71
  from nuitka.Serialization import ConstantAccessor
76
- from nuitka.Tracing import general, inclusion_logger
72
+ from nuitka.Tracing import general, inclusion_logger, pgo_logger
77
73
  from nuitka.tree import SyntaxErrors
78
74
  from nuitka.tree.ReformulationMultidist import createMultidistMainSourceCode
79
75
  from nuitka.utils import InstanceCounters
@@ -91,19 +87,21 @@ from nuitka.utils.FileOperations import (
91
87
  removeDirectory,
92
88
  resetDirectory,
93
89
  )
94
- from nuitka.utils.Importing import getSharedLibrarySuffix
90
+ from nuitka.utils.Importing import (
91
+ getPackageDirFilename,
92
+ getSharedLibrarySuffix,
93
+ )
95
94
  from nuitka.utils.MemoryUsage import reportMemoryUsage, showMemoryTrace
96
95
  from nuitka.utils.ModuleNames import ModuleName
97
96
  from nuitka.utils.ReExecute import callExecProcess, reExecuteNuitka
98
97
  from nuitka.utils.StaticLibraries import getSystemStaticLibPythonPath
99
- from nuitka.utils.Utils import isMacOS, isWin32Windows
98
+ from nuitka.utils.Utils import getArchitecture, isMacOS, isWin32Windows
100
99
  from nuitka.Version import getCommercialVersion, getNuitkaVersion
101
100
 
102
101
  from . import ModuleRegistry, Options, OutputDirectories
103
102
  from .build.SconsInterface import (
104
103
  asBoolStr,
105
104
  cleanSconsDirectory,
106
- getSconsDataPath,
107
105
  runScons,
108
106
  setCommonSconsOptions,
109
107
  )
@@ -123,16 +121,6 @@ from .tree.SourceHandling import writeSourceCode
123
121
  from .TreeXML import dumpTreeXMLToFile
124
122
 
125
123
 
126
- def _setupFromMainFilenames():
127
- main_filenames = Options.getMainEntryPointFilenames()
128
- for filename in main_filenames:
129
- # Inform the importing layer about the main script directory, so it can use
130
- # it when attempting to follow imports.
131
- Importing.addMainScriptDirectory(
132
- main_dir=os.path.dirname(os.path.abspath(filename))
133
- )
134
-
135
-
136
124
  def _createMainModule():
137
125
  """Create a node tree.
138
126
 
@@ -142,24 +130,19 @@ def _createMainModule():
142
130
  directory paths.
143
131
 
144
132
  """
145
- # Many cases to deal with, pylint: disable=too-many-branches
133
+ # Many cases and details to deal with, pylint: disable=too-many-branches
146
134
 
147
135
  Plugins.onBeforeCodeParsing()
148
136
 
149
- main_filenames = Options.getMainEntryPointFilenames()
150
-
151
137
  # First, build the raw node tree from the source code.
152
- if len(main_filenames) > 1:
138
+ if Options.isMultidistMode():
153
139
  assert not Options.shallMakeModule()
154
140
 
155
141
  main_module = buildMainModuleTree(
156
- # TODO: Should not be given.
157
- filename=main_filenames[0],
158
- source_code=createMultidistMainSourceCode(main_filenames),
142
+ source_code=createMultidistMainSourceCode(),
159
143
  )
160
144
  else:
161
145
  main_module = buildMainModuleTree(
162
- filename=main_filenames[0],
163
146
  source_code=None,
164
147
  )
165
148
 
@@ -174,7 +157,11 @@ def _createMainModule():
174
157
  % distribution_name
175
158
  )
176
159
 
177
- addDistributionMetadataValue(distribution_name, distribution)
160
+ addDistributionMetadataValue(
161
+ distribution_name=distribution_name,
162
+ distribution=distribution,
163
+ reason="user requested",
164
+ )
178
165
 
179
166
  # First remove old object files and old generated files, old binary or
180
167
  # module, and standalone mode program directory if any, they can only do
@@ -187,11 +174,19 @@ def _createMainModule():
187
174
  # Prepare the ".dist" directory, throwing away what was there before.
188
175
  if Options.isStandaloneMode():
189
176
  standalone_dir = OutputDirectories.getStandaloneDirectoryPath(bundle=False)
190
- resetDirectory(path=standalone_dir, ignore_errors=True)
177
+ resetDirectory(
178
+ path=standalone_dir,
179
+ logger=general,
180
+ ignore_errors=True,
181
+ extra_recommendation="Stop previous binary.",
182
+ )
191
183
 
192
184
  if Options.shallCreateAppBundle():
193
185
  resetDirectory(
194
- path=changeFilenameExtension(standalone_dir, ".app"), ignore_errors=True
186
+ path=changeFilenameExtension(standalone_dir, ".app"),
187
+ logger=general,
188
+ ignore_errors=True,
189
+ extra_recommendation=None,
195
190
  )
196
191
 
197
192
  # Delete result file, to avoid confusion with previous build and to
@@ -246,7 +241,9 @@ def _createMainModule():
246
241
  )
247
242
 
248
243
  Recursion.checkPluginSinglePath(
249
- plugin_filename=module_filename, module_package=module_name.getPackageName()
244
+ plugin_filename=module_filename,
245
+ module_package=module_name.getPackageName(),
246
+ package_only=True,
250
247
  )
251
248
 
252
249
  # Allow plugins to add more modules based on the initial set being complete.
@@ -262,6 +259,14 @@ def _createMainModule():
262
259
  if Options.isStandaloneMode():
263
260
  checkFreezingModuleSet()
264
261
 
262
+ # Check if distribution meta data is included, that cannot be used.
263
+ for distribution_name, meta_data_value in getDistributionMetadataValues():
264
+ if not ModuleRegistry.hasDoneModule(meta_data_value.module_name):
265
+ inclusion_logger.sysexit(
266
+ "Error, including metadata for distribution '%s' without including related package '%s'."
267
+ % (distribution_name, meta_data_value.module_name)
268
+ )
269
+
265
270
  # Allow plugins to comment on final module set.
266
271
  Plugins.onModuleCompleteSet()
267
272
 
@@ -280,7 +285,7 @@ def dumpTreeXML():
280
285
  filename = Options.getXMLDumpOutputFilename()
281
286
 
282
287
  if filename is not None:
283
- with openTextFile(filename, "w") as output_file:
288
+ with openTextFile(filename, "wb") as output_file:
284
289
  # XML output only.
285
290
  for module in ModuleRegistry.getDoneModules():
286
291
  dumpTreeXMLToFile(tree=module.asXml(), output_file=output_file)
@@ -524,11 +529,11 @@ def _runCPgoBinary():
524
529
  source_dir=OutputDirectories.getSourceDirectoryPath(), key="PATH"
525
530
  ),
526
531
  ):
527
- _exit_code = _runPgoBinary()
532
+ exit_code_pgo = _runPgoBinary()
528
533
 
529
534
  pgo_data_collected = os.path.exists(msvc_pgc_filename)
530
535
  else:
531
- _exit_code = _runPgoBinary()
536
+ exit_code_pgo = _runPgoBinary()
532
537
 
533
538
  # gcc file suffix, spell-checker: ignore gcda
534
539
  gcc_constants_pgo_filename = os.path.join(
@@ -537,12 +542,21 @@ def _runCPgoBinary():
537
542
 
538
543
  pgo_data_collected = os.path.exists(gcc_constants_pgo_filename)
539
544
 
545
+ if exit_code_pgo != 0:
546
+ pgo_logger.warning(
547
+ """\
548
+ Error, the C PGO compiled program error exited. Make sure it works \
549
+ fully before using '--pgo-c' option."""
550
+ )
551
+
540
552
  if not pgo_data_collected:
541
- general.sysexit(
542
- "Error, no PGO information produced, did the created binary run at all?"
553
+ pgo_logger.sysexit(
554
+ """\
555
+ Error, no C PGO compiled program did not produce expected information, \
556
+ did the created binary run at all?"""
543
557
  )
544
558
 
545
- general.info("Successfully collected C level PGO information.", style="blue")
559
+ pgo_logger.info("Successfully collected C level PGO information.", style="blue")
546
560
 
547
561
 
548
562
  def _runPythonPgoBinary():
@@ -553,11 +567,14 @@ def _runPythonPgoBinary():
553
567
  pgo_filename = OutputDirectories.getPgoRunInputFilename()
554
568
 
555
569
  with withEnvironmentVarOverridden("NUITKA_PGO_OUTPUT", pgo_filename):
556
- _exit_code = _runPgoBinary()
570
+ exit_code = _runPgoBinary()
557
571
 
558
572
  if not os.path.exists(pgo_filename):
559
573
  general.sysexit(
560
- "Error, no Python PGO information produced, did the created binary run at all?"
574
+ """\
575
+ Error, no Python PGO information produced, did the created binary
576
+ run (exit code %d) as expected?"""
577
+ % exit_code
561
578
  )
562
579
 
563
580
  return pgo_filename
@@ -569,17 +586,15 @@ def runSconsBackend():
569
586
  # pylint: disable=too-many-branches,too-many-statements
570
587
 
571
588
  options = {
572
- "result_name": OutputDirectories.getResultBasePath(onefile=False),
573
589
  "source_dir": OutputDirectories.getSourceDirectoryPath(),
574
590
  "nuitka_python": asBoolStr(isNuitkaPython()),
575
591
  "debug_mode": asBoolStr(Options.is_debug),
592
+ "debugger_mode": asBoolStr(Options.shallRunInDebugger()),
576
593
  "python_debug": asBoolStr(Options.shallUsePythonDebug()),
577
594
  "module_mode": asBoolStr(Options.shallMakeModule()),
578
595
  "full_compat": asBoolStr(Options.is_full_compat),
579
596
  "experimental": ",".join(Options.getExperimentalIndications()),
580
597
  "trace_mode": asBoolStr(Options.shallTraceExecution()),
581
- "python_version": python_version_str,
582
- "nuitka_src": getSconsDataPath(),
583
598
  "file_reference_mode": Options.getFileReferenceMode(),
584
599
  "module_count": "%d" % len(ModuleRegistry.getDoneModules()),
585
600
  }
@@ -602,13 +617,12 @@ def runSconsBackend():
602
617
 
603
618
  if isDebianPackagePython():
604
619
  options["debian_python"] = asBoolStr(True)
605
-
606
620
  if isFedoraPackagePython():
607
621
  options["fedora_python"] = asBoolStr(True)
608
-
622
+ if isArchPackagePython():
623
+ options["arch_python"] = asBoolStr(True)
609
624
  if isApplePython():
610
625
  options["apple_python"] = asBoolStr(True)
611
-
612
626
  if isPyenvPython():
613
627
  options["pyenv_python"] = asBoolStr(True)
614
628
 
@@ -621,12 +635,20 @@ def runSconsBackend():
621
635
  if Options.isOnefileTempDirMode():
622
636
  options["onefile_temp_mode"] = asBoolStr(True)
623
637
 
638
+ # TODO: Some things are going to hate that, we might need to bundle
639
+ # for accelerated mode still.
640
+ if Options.shallCreateAppBundle():
641
+ options["macos_bundle_mode"] = asBoolStr(True)
642
+
624
643
  if Options.getForcedStdoutPath():
625
644
  options["forced_stdout_path"] = Options.getForcedStdoutPath()
626
645
 
627
646
  if Options.getForcedStderrPath():
628
647
  options["forced_stderr_path"] = Options.getForcedStderrPath()
629
648
 
649
+ if Options.isProfile():
650
+ options["profile_mode"] = asBoolStr(True)
651
+
630
652
  if Options.shallTreatUninstalledPython():
631
653
  options["uninstalled_python"] = asBoolStr(True)
632
654
 
@@ -635,9 +657,6 @@ def runSconsBackend():
635
657
  len(ModuleRegistry.getUncompiledTechnicalModules())
636
658
  )
637
659
 
638
- if Options.isProfile():
639
- options["profile_mode"] = asBoolStr(True)
640
-
641
660
  if hasPythonFlagNoWarnings():
642
661
  options["no_python_warnings"] = asBoolStr(True)
643
662
 
@@ -665,7 +684,7 @@ def runSconsBackend():
665
684
  if sys.flags.bytes_warning:
666
685
  options["python_sysflag_bytes_warning"] = asBoolStr(True)
667
686
 
668
- if int(os.environ.get("NUITKA_NOSITE_FLAG", Options.hasPythonFlagNoSite())):
687
+ if int(os.getenv("NUITKA_NOSITE_FLAG", Options.hasPythonFlagNoSite())):
669
688
  options["python_sysflag_no_site"] = asBoolStr(True)
670
689
 
671
690
  if Options.hasPythonFlagTraceImports():
@@ -691,14 +710,20 @@ def runSconsBackend():
691
710
  options["abiflags"] = abiflags
692
711
 
693
712
  if Options.shallMakeModule():
694
- options["module_suffix"] = getSharedLibrarySuffix(preferred=True)
713
+ options["result_exe"] = OutputDirectories.getResultBasePath(
714
+ onefile=False
715
+ ) + getSharedLibrarySuffix(preferred=True)
716
+
717
+ link_module_libs = getModuleLinkerLibs()
718
+ if link_module_libs:
719
+ options["link_module_libs"] = ",".join(link_module_libs)
695
720
 
696
721
  env_values = setCommonSconsOptions(options)
697
722
 
698
723
  # Allow plugins to build definitions.
699
724
  env_values.update(Plugins.getBuildDefinitions())
700
725
 
701
- if Options.shallCreatePgoInput():
726
+ if Options.shallCreatePythonPgoInput():
702
727
  options["pgo_mode"] = "python"
703
728
 
704
729
  result = runScons(
@@ -717,11 +742,11 @@ def runSconsBackend():
717
742
  return True, options
718
743
 
719
744
  # Need to restart compilation from scratch here.
720
- if Options.isPgoMode():
745
+ if Options.isCPgoMode():
721
746
  # For C level PGO, we have a 2 pass system. TODO: Make it more global for onefile
722
747
  # and standalone mode proper support, which might need data files to be
723
748
  # there, which currently are not yet there, so it won't run.
724
- if Options.isPgoMode():
749
+ if Options.isCPgoMode():
725
750
  options["pgo_mode"] = "generate"
726
751
 
727
752
  result = runScons(
@@ -754,12 +779,7 @@ def runSconsBackend():
754
779
  return result
755
780
 
756
781
 
757
- def callExecPython(args, clean_path, add_path):
758
- old_python_path = os.environ.get("PYTHONPATH")
759
-
760
- if clean_path and old_python_path is not None:
761
- os.environ["PYTHONPATH"] = ""
762
-
782
+ def callExecPython(args, add_path, uac):
763
783
  if add_path:
764
784
  if "PYTHONPATH" in os.environ:
765
785
  os.environ["PYTHONPATH"] += ":" + Options.getOutputDir()
@@ -769,20 +789,24 @@ def callExecPython(args, clean_path, add_path):
769
789
  # Add the main arguments, previous separated.
770
790
  args += Options.getPositionalArgs()[1:] + Options.getMainArgs()
771
791
 
772
- callExecProcess(args)
792
+ callExecProcess(args, uac=uac)
773
793
 
774
794
 
775
- def executeMain(binary_filename, clean_path):
795
+ def _executeMain(binary_filename):
776
796
  # Wrap in debugger, unless the CMD file contains that call already.
777
797
  if Options.shallRunInDebugger() and not Options.shallCreateCmdFileForExecution():
778
798
  args = wrapCommandForDebuggerForExec(binary_filename)
779
799
  else:
780
800
  args = (binary_filename, binary_filename)
781
801
 
782
- callExecPython(clean_path=clean_path, add_path=False, args=args)
802
+ callExecPython(
803
+ args=args,
804
+ add_path=False,
805
+ uac=isWin32Windows() and Options.shallAskForWindowsAdminRights(),
806
+ )
783
807
 
784
808
 
785
- def executeModule(tree, clean_path):
809
+ def _executeModule(tree):
786
810
  """Execute the extension module just created."""
787
811
 
788
812
  if python_version < 0x340:
@@ -798,6 +822,15 @@ assert os.path.normcase(os.path.abspath(os.path.normpath(\
798
822
  importlib.util.find_spec('%(module_name)s').origin))) == %(expected_filename)r,\
799
823
  'Error, cannot launch extension module %(module_name)s, original package is in the way.'"""
800
824
 
825
+ output_dir = os.path.normpath(Options.getOutputDir())
826
+ if output_dir != ".":
827
+ python_command_template = (
828
+ """\
829
+ import sys; sys.path.insert(0, %(output_dir)r)
830
+ """
831
+ + python_command_template
832
+ )
833
+
801
834
  python_command_template += ";__import__('%(module_name)s')"
802
835
 
803
836
  python_command = python_command_template % {
@@ -807,6 +840,7 @@ importlib.util.find_spec('%(module_name)s').origin))) == %(expected_filename)r,\
807
840
  os.path.normpath(OutputDirectories.getResultFullpath(onefile=False))
808
841
  )
809
842
  ),
843
+ "output_dir": output_dir,
810
844
  }
811
845
 
812
846
  if Options.shallRunInDebugger():
@@ -814,7 +848,7 @@ importlib.util.find_spec('%(module_name)s').origin))) == %(expected_filename)r,\
814
848
  else:
815
849
  args = (sys.executable, "python", "-c", python_command)
816
850
 
817
- callExecPython(clean_path=clean_path, add_path=True, args=args)
851
+ callExecPython(args=args, add_path=True, uac=False)
818
852
 
819
853
 
820
854
  def compileTree():
@@ -827,9 +861,11 @@ def compileTree():
827
861
 
828
862
  reportMemoryUsage(
829
863
  "before_c_code_generation",
830
- "Total memory usage before generating C code:"
831
- if Options.isShowProgress() or Options.isShowMemory()
832
- else None,
864
+ (
865
+ "Total memory usage before generating C code:"
866
+ if Options.isShowProgress() or Options.isShowMemory()
867
+ else None
868
+ ),
833
869
  )
834
870
 
835
871
  # Now build the target language code for the whole tree.
@@ -855,9 +891,11 @@ def compileTree():
855
891
 
856
892
  reportMemoryUsage(
857
893
  "before_running_scons",
858
- "Total memory usage before running scons"
859
- if Options.isShowProgress() or Options.isShowMemory()
860
- else None,
894
+ (
895
+ "Total memory usage before running scons"
896
+ if Options.isShowProgress() or Options.isShowMemory()
897
+ else None
898
+ ),
861
899
  )
862
900
 
863
901
  if Options.isShowMemory():
@@ -878,9 +916,9 @@ def compileTree():
878
916
  general.info("Running C compilation via Scons.")
879
917
 
880
918
  # Run the Scons to build things.
881
- result, options = runSconsBackend()
919
+ result, scons_options = runSconsBackend()
882
920
 
883
- return result, options
921
+ return result, scons_options
884
922
 
885
923
 
886
924
  def handleSyntaxError(e):
@@ -938,12 +976,16 @@ def _main():
938
976
 
939
977
  reportMemoryUsage(
940
978
  "after_launch",
941
- "Total memory usage before processing:"
942
- if Options.isShowProgress() or Options.isShowMemory()
943
- else None,
979
+ (
980
+ "Total memory usage before processing:"
981
+ if Options.isShowProgress() or Options.isShowMemory()
982
+ else None
983
+ ),
944
984
  )
945
985
 
946
- _setupFromMainFilenames()
986
+ # Initialize the importing layer from options, main filenames, debugging
987
+ # options, etc.
988
+ Importing.setupImportingFromOptions()
947
989
 
948
990
  addIncludedDataFilesFromFileOptions()
949
991
  addIncludedDataFilesFromPackageOptions()
@@ -959,14 +1001,18 @@ def _main():
959
1001
  dumpTreeXML()
960
1002
 
961
1003
  # Make the actual compilation.
962
- result, options = compileTree()
1004
+ result, scons_options = compileTree()
963
1005
 
964
1006
  # Exit if compilation failed.
965
1007
  if not result:
966
- general.sysexit(exit_code=1, reporting=True)
1008
+ general.sysexit(
1009
+ message="Failed unexpectedly in Scons C backend compilation.",
1010
+ mnemonic="scons-backend-failure",
1011
+ reporting=True,
1012
+ )
967
1013
 
968
1014
  # Relaunch in case of Python PGO input to be produced.
969
- if Options.shallCreatePgoInput():
1015
+ if Options.shallCreatePythonPgoInput():
970
1016
  # Will not return.
971
1017
  pgo_filename = OutputDirectories.getPgoRunInputFilename()
972
1018
  general.info(
@@ -983,10 +1029,8 @@ def _main():
983
1029
 
984
1030
  executePostProcessing()
985
1031
 
986
- copyDataFiles()
987
-
988
1032
  if Options.isStandaloneMode():
989
- binary_filename = options["result_exe"]
1033
+ binary_filename = scons_options["result_exe"]
990
1034
 
991
1035
  setMainEntryPoint(binary_filename)
992
1036
 
@@ -1005,6 +1049,9 @@ def _main():
1005
1049
  standalone_entry_points=getStandaloneEntryPoints(),
1006
1050
  )
1007
1051
 
1052
+ copyDataFiles(standalone_entry_points=getStandaloneEntryPoints())
1053
+
1054
+ if Options.isStandaloneMode():
1008
1055
  Plugins.onStandaloneDistributionFinished(dist_dir)
1009
1056
 
1010
1057
  if Options.isOnefileMode():
@@ -1013,7 +1060,12 @@ def _main():
1013
1060
  if Options.isRemoveBuildDir():
1014
1061
  general.info("Removing dist folder '%s'." % dist_dir)
1015
1062
 
1016
- removeDirectory(path=dist_dir, ignore_errors=False)
1063
+ removeDirectory(
1064
+ path=dist_dir,
1065
+ logger=general,
1066
+ ignore_errors=False,
1067
+ extra_recommendation=None,
1068
+ )
1017
1069
  else:
1018
1070
  general.info(
1019
1071
  "Keeping dist folder '%s' for inspection, no need to use it."
@@ -1028,7 +1080,14 @@ def _main():
1028
1080
 
1029
1081
  # Make sure the scons report is cached before deleting it.
1030
1082
  readSconsReport(source_dir)
1031
- removeDirectory(path=source_dir, ignore_errors=False)
1083
+ readSconsErrorReport(source_dir)
1084
+
1085
+ removeDirectory(
1086
+ path=source_dir,
1087
+ logger=general,
1088
+ ignore_errors=False,
1089
+ extra_recommendation=None,
1090
+ )
1032
1091
  assert not os.path.exists(source_dir)
1033
1092
  else:
1034
1093
  general.info("Keeping build directory '%s'." % source_dir)
@@ -1040,17 +1099,26 @@ def _main():
1040
1099
  if Options.isStandaloneMode() and isMacOS():
1041
1100
  general.info(
1042
1101
  "Created binary that runs on macOS %s (%s) or higher."
1043
- % (options["macos_min_version"], options["macos_target_arch"])
1102
+ % (scons_options["macos_min_version"], scons_options["macos_target_arch"])
1044
1103
  )
1045
1104
 
1105
+ if scons_options["macos_target_arch"] != getArchitecture():
1106
+ general.warning(
1107
+ "It will only work as well as 'arch -%s %s %s' does."
1108
+ % (
1109
+ scons_options["macos_target_arch"],
1110
+ sys.executable,
1111
+ Options.getMainEntryPointFilenames()[0],
1112
+ ),
1113
+ mnemonic="macos-cross-compile",
1114
+ )
1115
+
1046
1116
  Plugins.onFinalResult(final_filename)
1047
1117
 
1048
1118
  if Options.shallMakeModule():
1049
1119
  base_path = OutputDirectories.getResultBasePath(onefile=False)
1050
1120
 
1051
- if os.path.isdir(base_path) and os.path.isfile(
1052
- os.path.join(base_path, "__init__.py")
1053
- ):
1121
+ if os.path.isdir(base_path) and getPackageDirFilename(base_path):
1054
1122
  general.warning(
1055
1123
  """\
1056
1124
  The compilation result is hidden by package directory '%s'. Importing will \
@@ -1068,18 +1136,12 @@ not use compiled code while it exists."""
1068
1136
 
1069
1137
  # Execute the module immediately if option was given.
1070
1138
  if Options.shallExecuteImmediately():
1071
- general.info("Launching '%s'" % run_filename)
1139
+ general.info("Launching '%s'." % run_filename)
1072
1140
 
1073
1141
  if Options.shallMakeModule():
1074
- executeModule(
1075
- tree=main_module,
1076
- clean_path=Options.shallClearPythonPathEnvironment(),
1077
- )
1142
+ _executeModule(tree=main_module)
1078
1143
  else:
1079
- executeMain(
1080
- binary_filename=run_filename,
1081
- clean_path=Options.shallClearPythonPathEnvironment(),
1082
- )
1144
+ _executeMain(run_filename)
1083
1145
  else:
1084
1146
  if run_filename != final_filename:
1085
1147
  general.info(
@@ -1094,7 +1156,33 @@ def main():
1094
1156
  except BaseException:
1095
1157
  try:
1096
1158
  writeCompilationReports(aborted=True)
1159
+ except KeyboardInterrupt:
1160
+ general.warning("""Report writing was prevented by user interrupt.""")
1097
1161
  except BaseException as e: # Catch all the things, pylint: disable=broad-except
1098
- general.warning("Report writing was prevented by exception %s" % e)
1162
+ general.warning(
1163
+ """\
1164
+ Report writing was prevented by exception %r, use option \
1165
+ '--experimental=debug-report-traceback' for full traceback."""
1166
+ % e
1167
+ )
1168
+
1169
+ if isExperimental("debug-report-traceback"):
1170
+ raise
1099
1171
 
1100
1172
  raise
1173
+
1174
+
1175
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
1176
+ # integrates with CPython, but also works on its own.
1177
+ #
1178
+ # Licensed under the Apache License, Version 2.0 (the "License");
1179
+ # you may not use this file except in compliance with the License.
1180
+ # You may obtain a copy of the License at
1181
+ #
1182
+ # http://www.apache.org/licenses/LICENSE-2.0
1183
+ #
1184
+ # Unless required by applicable law or agreed to in writing, software
1185
+ # distributed under the License is distributed on an "AS IS" BASIS,
1186
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1187
+ # See the License for the specific language governing permissions and
1188
+ # limitations under the License.