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

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

Potentially problematic release.


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

Files changed (728) hide show
  1. Nuitka_winsvc-1.8.data/scripts/nuitka-run.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka-run.cmd +9 -9
  2. Nuitka_winsvc-1.8.data/scripts/nuitka.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka.cmd +15 -15
  3. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/METADATA +5 -3
  4. Nuitka_winsvc-2.5.1.dist-info/RECORD +977 -0
  5. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/WHEEL +1 -1
  6. nuitka/Builtins.py +49 -17
  7. nuitka/BytecodeCaching.py +24 -20
  8. nuitka/Bytecodes.py +23 -19
  9. nuitka/CacheCleanup.py +28 -23
  10. nuitka/Constants.py +19 -17
  11. nuitka/Errors.py +23 -17
  12. nuitka/HardImportRegistry.py +408 -0
  13. nuitka/MainControl.py +209 -116
  14. nuitka/ModuleRegistry.py +83 -20
  15. nuitka/OptionParsing.py +467 -221
  16. nuitka/Options.py +701 -225
  17. nuitka/OutputDirectories.py +47 -23
  18. nuitka/PostProcessing.py +133 -79
  19. nuitka/Progress.py +73 -24
  20. nuitka/PythonFlavors.py +141 -32
  21. nuitka/PythonOperators.py +18 -17
  22. nuitka/PythonVersions.py +107 -19
  23. nuitka/Serialization.py +70 -55
  24. nuitka/SourceCodeReferences.py +19 -17
  25. nuitka/Tracing.py +176 -70
  26. nuitka/TreeXML.py +31 -26
  27. nuitka/Variables.py +39 -41
  28. nuitka/Version.py +22 -8
  29. nuitka/__init__.py +5 -4
  30. nuitka/__main__.py +95 -29
  31. nuitka/__past__.py +44 -34
  32. nuitka/build/Backend.scons +243 -141
  33. nuitka/build/CCompilerVersion.scons +45 -31
  34. nuitka/build/DataComposerInterface.py +20 -17
  35. nuitka/build/Onefile.scons +56 -54
  36. nuitka/build/SconsCaching.py +105 -92
  37. nuitka/build/SconsCompilerSettings.py +167 -68
  38. nuitka/build/SconsHacks.py +25 -19
  39. nuitka/build/SconsInterface.py +155 -54
  40. nuitka/build/SconsProgress.py +19 -18
  41. nuitka/build/SconsSpawn.py +62 -33
  42. nuitka/build/SconsUtils.py +152 -55
  43. nuitka/build/__init__.py +5 -4
  44. nuitka/build/include/nuitka/allocator.h +228 -22
  45. nuitka/build/include/nuitka/builtins.h +17 -17
  46. nuitka/build/include/nuitka/calling.h +24 -24
  47. nuitka/build/include/nuitka/checkers.h +17 -18
  48. nuitka/build/include/nuitka/checksum_tools.h +14 -19
  49. nuitka/build/include/nuitka/compiled_asyncgen.h +28 -25
  50. nuitka/build/include/nuitka/compiled_cell.h +33 -18
  51. nuitka/build/include/nuitka/compiled_coroutine.h +18 -18
  52. nuitka/build/include/nuitka/compiled_frame.h +93 -54
  53. nuitka/build/include/nuitka/compiled_function.h +42 -20
  54. nuitka/build/include/nuitka/compiled_generator.h +24 -18
  55. nuitka/build/include/nuitka/compiled_method.h +17 -18
  56. nuitka/build/include/nuitka/constants.h +35 -18
  57. nuitka/build/include/nuitka/constants_blob.h +17 -17
  58. nuitka/build/include/nuitka/debug_settings.h +60 -0
  59. nuitka/build/include/nuitka/environment_variables.h +30 -0
  60. nuitka/build/include/nuitka/environment_variables_system.h +45 -0
  61. nuitka/build/include/nuitka/exception_groups.h +23 -26
  62. nuitka/build/include/nuitka/exceptions.h +717 -171
  63. nuitka/build/include/nuitka/filesystem_paths.h +26 -20
  64. nuitka/build/include/nuitka/freelists.h +38 -18
  65. nuitka/build/include/nuitka/helper/attributes.h +24 -22
  66. nuitka/build/include/nuitka/helper/boolean.h +17 -17
  67. nuitka/build/include/nuitka/helper/bytearrays.h +17 -17
  68. nuitka/build/include/nuitka/helper/bytes.h +14 -15
  69. nuitka/build/include/nuitka/helper/calling_generated.h +69 -69
  70. nuitka/build/include/nuitka/helper/comparisons_dual_eq.h +47 -0
  71. nuitka/build/include/nuitka/helper/comparisons_dual_ge.h +39 -0
  72. nuitka/build/include/nuitka/helper/comparisons_dual_gt.h +39 -0
  73. nuitka/build/include/nuitka/helper/comparisons_dual_le.h +47 -0
  74. nuitka/build/include/nuitka/helper/comparisons_dual_lt.h +47 -0
  75. nuitka/build/include/nuitka/helper/comparisons_dual_ne.h +39 -0
  76. nuitka/build/include/nuitka/helper/comparisons_eq.h +17 -17
  77. nuitka/build/include/nuitka/helper/comparisons_ge.h +17 -17
  78. nuitka/build/include/nuitka/helper/comparisons_gt.h +17 -17
  79. nuitka/build/include/nuitka/helper/comparisons_le.h +17 -17
  80. nuitka/build/include/nuitka/helper/comparisons_lt.h +17 -17
  81. nuitka/build/include/nuitka/helper/comparisons_ne.h +17 -17
  82. nuitka/build/include/nuitka/helper/complex.h +17 -17
  83. nuitka/build/include/nuitka/helper/dictionaries.h +89 -51
  84. nuitka/build/include/nuitka/helper/floats.h +17 -18
  85. nuitka/build/include/nuitka/helper/import_hard.h +25 -17
  86. nuitka/build/include/nuitka/helper/indexes.h +17 -18
  87. nuitka/build/include/nuitka/helper/ints.h +115 -54
  88. nuitka/build/include/nuitka/helper/iterators.h +99 -51
  89. nuitka/build/include/nuitka/helper/lists.h +26 -24
  90. nuitka/build/include/nuitka/helper/lists_generated.h +22 -22
  91. nuitka/build/include/nuitka/helper/mappings.h +17 -18
  92. nuitka/build/include/nuitka/helper/operations.h +20 -17
  93. nuitka/build/include/nuitka/helper/operations_binary_add.h +23 -17
  94. nuitka/build/include/nuitka/helper/operations_binary_bitand.h +17 -17
  95. nuitka/build/include/nuitka/helper/operations_binary_bitor.h +17 -17
  96. nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +17 -17
  97. nuitka/build/include/nuitka/helper/operations_binary_divmod.h +17 -17
  98. nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
  99. nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +17 -17
  100. nuitka/build/include/nuitka/helper/operations_binary_lshift.h +17 -17
  101. nuitka/build/include/nuitka/helper/operations_binary_matmult.h +17 -17
  102. nuitka/build/include/nuitka/helper/operations_binary_mod.h +17 -17
  103. nuitka/build/include/nuitka/helper/operations_binary_mult.h +17 -17
  104. nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +17 -17
  105. nuitka/build/include/nuitka/helper/operations_binary_pow.h +17 -17
  106. nuitka/build/include/nuitka/helper/operations_binary_rshift.h +17 -17
  107. nuitka/build/include/nuitka/helper/operations_binary_sub.h +23 -17
  108. nuitka/build/include/nuitka/helper/operations_binary_truediv.h +17 -17
  109. nuitka/build/include/nuitka/helper/operations_builtin_types.h +17 -17
  110. nuitka/build/include/nuitka/helper/operations_inplace_add.h +20 -17
  111. nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +17 -17
  112. nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +17 -17
  113. nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +17 -17
  114. nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +17 -17
  115. nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +17 -17
  116. nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +17 -17
  117. nuitka/build/include/nuitka/helper/operations_inplace_mod.h +17 -17
  118. nuitka/build/include/nuitka/helper/operations_inplace_mult.h +17 -17
  119. nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +17 -17
  120. nuitka/build/include/nuitka/helper/operations_inplace_pow.h +17 -17
  121. nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +17 -17
  122. nuitka/build/include/nuitka/helper/operations_inplace_sub.h +20 -17
  123. nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
  124. nuitka/build/include/nuitka/helper/raising.h +68 -37
  125. nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
  126. nuitka/build/include/nuitka/helper/richcomparisons.h +21 -14
  127. nuitka/build/include/nuitka/helper/sequences.h +19 -13
  128. nuitka/build/include/nuitka/helper/sets.h +11 -12
  129. nuitka/build/include/nuitka/helper/slices.h +31 -25
  130. nuitka/build/include/nuitka/helper/strings.h +16 -17
  131. nuitka/build/include/nuitka/helper/subscripts.h +18 -201
  132. nuitka/build/include/nuitka/helper/tuples.h +64 -52
  133. nuitka/build/include/nuitka/helpers.h +50 -22
  134. nuitka/build/include/nuitka/importing.h +28 -21
  135. nuitka/build/include/nuitka/jit_sources.h +25 -0
  136. nuitka/build/include/nuitka/prelude.h +163 -71
  137. nuitka/build/include/nuitka/printing.h +29 -22
  138. nuitka/build/include/nuitka/python_pgo.h +19 -18
  139. nuitka/build/include/nuitka/safe_string_ops.h +20 -18
  140. nuitka/build/include/nuitka/threading.h +45 -32
  141. nuitka/build/include/nuitka/tracing.h +28 -18
  142. nuitka/build/include/nuitka/type_aliases.h +30 -0
  143. nuitka/build/include/nuitka/unfreezing.h +29 -23
  144. nuitka/build/inline_copy/bin/scons.py +14 -0
  145. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +6 -6
  146. nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +0 -3
  147. nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
  148. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
  149. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
  150. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
  151. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
  152. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
  153. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
  154. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
  155. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
  156. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
  157. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
  158. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
  159. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
  160. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
  161. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
  162. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
  163. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
  164. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
  165. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
  166. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
  167. nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
  168. nuitka/build/inline_copy/stubgen/astunparse.py +938 -0
  169. nuitka/build/inline_copy/stubgen/six.py +998 -0
  170. nuitka/build/inline_copy/stubgen/stubgen.py +307 -0
  171. nuitka/build/inline_copy/tqdm/tqdm/__init__.py +2 -2
  172. nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +4 -1
  173. nuitka/build/inline_copy/tqdm/tqdm/utils.py +14 -8
  174. nuitka/build/inline_copy/tqdm/tqdm/version.py +1 -8
  175. nuitka/build/inline_copy/zlib/LICENSE +22 -0
  176. nuitka/build/inline_copy/zlib/crc32.c +1049 -0
  177. nuitka/build/inline_copy/zlib/crc32.h +9446 -0
  178. nuitka/build/inline_copy/zlib/zconf.h +551 -0
  179. nuitka/build/inline_copy/zlib/zlib.h +1938 -0
  180. nuitka/build/inline_copy/zlib/zutil.h +275 -0
  181. nuitka/build/static_src/CompiledAsyncgenType.c +221 -221
  182. nuitka/build/static_src/CompiledCellType.c +69 -44
  183. nuitka/build/static_src/CompiledCodeHelpers.c +276 -159
  184. nuitka/build/static_src/CompiledCoroutineType.c +229 -226
  185. nuitka/build/static_src/CompiledFrameType.c +323 -138
  186. nuitka/build/static_src/CompiledFunctionType.c +547 -231
  187. nuitka/build/static_src/CompiledGeneratorType.c +416 -290
  188. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +593 -228
  189. nuitka/build/static_src/CompiledMethodType.c +91 -82
  190. nuitka/build/static_src/HelpersAllocator.c +352 -45
  191. nuitka/build/static_src/HelpersAttributes.c +30 -72
  192. nuitka/build/static_src/HelpersBuiltin.c +65 -46
  193. nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
  194. nuitka/build/static_src/HelpersBytes.c +19 -20
  195. nuitka/build/static_src/HelpersCalling.c +40 -37
  196. nuitka/build/static_src/HelpersCallingGenerated.c +1061 -242
  197. nuitka/build/static_src/HelpersChecksumTools.c +35 -21
  198. nuitka/build/static_src/HelpersClasses.c +17 -17
  199. nuitka/build/static_src/HelpersComparisonDualEq.c +183 -0
  200. nuitka/build/static_src/HelpersComparisonDualGe.c +121 -0
  201. nuitka/build/static_src/HelpersComparisonDualGt.c +121 -0
  202. nuitka/build/static_src/HelpersComparisonDualLe.c +183 -0
  203. nuitka/build/static_src/HelpersComparisonDualLt.c +183 -0
  204. nuitka/build/static_src/HelpersComparisonDualNe.c +121 -0
  205. nuitka/build/static_src/HelpersComparisonEq.c +536 -496
  206. nuitka/build/static_src/HelpersComparisonEqUtils.c +22 -19
  207. nuitka/build/static_src/HelpersComparisonGe.c +531 -501
  208. nuitka/build/static_src/HelpersComparisonGt.c +530 -500
  209. nuitka/build/static_src/HelpersComparisonLe.c +531 -501
  210. nuitka/build/static_src/HelpersComparisonLt.c +530 -500
  211. nuitka/build/static_src/HelpersComparisonNe.c +538 -496
  212. nuitka/build/static_src/HelpersConsole.c +122 -0
  213. nuitka/build/static_src/HelpersConstantsBlob.c +550 -521
  214. nuitka/build/static_src/HelpersDeepcopy.c +33 -33
  215. nuitka/build/static_src/HelpersDictionaries.c +232 -63
  216. nuitka/build/static_src/HelpersDictionariesGenerated.c +130 -127
  217. nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
  218. nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
  219. nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +93 -0
  220. nuitka/build/static_src/HelpersExceptions.c +147 -62
  221. nuitka/build/static_src/HelpersFiles.c +116 -22
  222. nuitka/build/static_src/HelpersFilesystemPaths.c +292 -181
  223. nuitka/build/static_src/HelpersFloats.c +37 -31
  224. nuitka/build/static_src/HelpersHeapStorage.c +21 -17
  225. nuitka/build/static_src/HelpersImport.c +61 -29
  226. nuitka/build/static_src/HelpersImportHard.c +74 -61
  227. nuitka/build/static_src/HelpersJitSources.c +46 -0
  228. nuitka/build/static_src/HelpersLists.c +237 -58
  229. nuitka/build/static_src/HelpersListsGenerated.c +41 -41
  230. nuitka/build/static_src/HelpersMappings.c +17 -17
  231. nuitka/build/static_src/HelpersMatching.c +137 -51
  232. nuitka/build/static_src/HelpersOperationBinaryAdd.c +397 -152
  233. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +102 -52
  234. nuitka/build/static_src/HelpersOperationBinaryBitand.c +55 -55
  235. nuitka/build/static_src/HelpersOperationBinaryBitor.c +55 -55
  236. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +55 -55
  237. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +49 -43
  238. nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
  239. nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
  240. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +55 -49
  241. nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +20 -21
  242. nuitka/build/static_src/HelpersOperationBinaryLshift.c +83 -83
  243. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +25 -24
  244. nuitka/build/static_src/HelpersOperationBinaryMod.c +129 -117
  245. nuitka/build/static_src/HelpersOperationBinaryMult.c +98 -82
  246. nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +33 -30
  247. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +55 -49
  248. nuitka/build/static_src/HelpersOperationBinaryPow.c +68 -68
  249. nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
  250. nuitka/build/static_src/HelpersOperationBinaryRshift.c +51 -51
  251. nuitka/build/static_src/HelpersOperationBinarySub.c +309 -88
  252. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +49 -43
  253. nuitka/build/static_src/HelpersOperationInplaceAdd.c +333 -163
  254. nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +24 -22
  255. nuitka/build/static_src/HelpersOperationInplaceBitand.c +58 -58
  256. nuitka/build/static_src/HelpersOperationInplaceBitor.c +58 -58
  257. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +58 -58
  258. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +73 -68
  259. nuitka/build/static_src/HelpersOperationInplaceLshift.c +64 -64
  260. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +38 -37
  261. nuitka/build/static_src/HelpersOperationInplaceMod.c +145 -140
  262. nuitka/build/static_src/HelpersOperationInplaceMult.c +89 -84
  263. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +73 -68
  264. nuitka/build/static_src/HelpersOperationInplacePow.c +82 -82
  265. nuitka/build/static_src/HelpersOperationInplaceRshift.c +48 -48
  266. nuitka/build/static_src/HelpersOperationInplaceSub.c +275 -122
  267. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +68 -63
  268. nuitka/build/static_src/HelpersProfiling.c +25 -24
  269. nuitka/build/static_src/HelpersPythonPgo.c +22 -22
  270. nuitka/build/static_src/HelpersRaising.c +296 -283
  271. nuitka/build/static_src/HelpersSafeStrings.c +34 -22
  272. nuitka/build/static_src/HelpersSequences.c +18 -19
  273. nuitka/build/static_src/HelpersSlices.c +29 -23
  274. nuitka/build/static_src/HelpersStrings.c +235 -38
  275. nuitka/build/static_src/HelpersTuples.c +46 -34
  276. nuitka/build/static_src/HelpersTypes.c +166 -25
  277. nuitka/build/static_src/InspectPatcher.c +108 -27
  278. nuitka/build/static_src/MainProgram.c +464 -280
  279. nuitka/build/static_src/MetaPathBasedLoader.c +381 -257
  280. nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +39 -26
  281. nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
  282. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +227 -29
  283. nuitka/build/static_src/OnefileBootstrap.c +281 -164
  284. nuitka/build/static_src/OnefileSplashScreen.cpp +51 -27
  285. nuitka/code_generation/AsyncgenCodes.py +21 -23
  286. nuitka/code_generation/AttributeCodes.py +31 -27
  287. nuitka/code_generation/BinaryOperationHelperDefinitions.py +290 -184
  288. nuitka/code_generation/BranchCodes.py +19 -17
  289. nuitka/code_generation/BuiltinCodes.py +29 -18
  290. nuitka/code_generation/CallCodes.py +35 -33
  291. nuitka/code_generation/ClassCodes.py +19 -17
  292. nuitka/code_generation/CodeGeneration.py +61 -28
  293. nuitka/code_generation/CodeHelperSelection.py +20 -18
  294. nuitka/code_generation/CodeHelpers.py +28 -21
  295. nuitka/code_generation/CodeObjectCodes.py +36 -26
  296. nuitka/code_generation/ComparisonCodes.py +51 -22
  297. nuitka/code_generation/ComparisonHelperDefinitions.py +42 -25
  298. nuitka/code_generation/ConditionalCodes.py +19 -17
  299. nuitka/code_generation/ConstantCodes.py +82 -28
  300. nuitka/code_generation/Contexts.py +180 -42
  301. nuitka/code_generation/CoroutineCodes.py +21 -23
  302. nuitka/code_generation/CtypesCodes.py +19 -17
  303. nuitka/code_generation/DictCodes.py +28 -26
  304. nuitka/code_generation/Emission.py +21 -18
  305. nuitka/code_generation/ErrorCodes.py +57 -79
  306. nuitka/code_generation/EvalCodes.py +24 -20
  307. nuitka/code_generation/ExceptionCodes.py +182 -104
  308. nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +45 -27
  309. nuitka/code_generation/ExpressionCodes.py +19 -17
  310. nuitka/code_generation/FrameCodes.py +28 -31
  311. nuitka/code_generation/FunctionCodes.py +26 -27
  312. nuitka/code_generation/GeneratorCodes.py +25 -26
  313. nuitka/code_generation/GlobalConstants.py +51 -25
  314. nuitka/code_generation/GlobalsLocalsCodes.py +23 -21
  315. nuitka/code_generation/IdCodes.py +19 -17
  316. nuitka/code_generation/ImportCodes.py +90 -50
  317. nuitka/code_generation/Indentation.py +23 -22
  318. nuitka/code_generation/IndexCodes.py +19 -17
  319. nuitka/code_generation/InjectCCodes.py +14 -12
  320. nuitka/code_generation/IntegerCodes.py +19 -17
  321. nuitka/code_generation/IteratorCodes.py +86 -71
  322. nuitka/code_generation/JitCodes.py +44 -0
  323. nuitka/code_generation/LabelCodes.py +19 -17
  324. nuitka/code_generation/LineNumberCodes.py +20 -20
  325. nuitka/code_generation/ListCodes.py +32 -36
  326. nuitka/code_generation/LoaderCodes.py +22 -17
  327. nuitka/code_generation/LocalsDictCodes.py +56 -32
  328. nuitka/code_generation/LoopCodes.py +19 -17
  329. nuitka/code_generation/MatchCodes.py +42 -22
  330. nuitka/code_generation/ModuleCodes.py +71 -29
  331. nuitka/code_generation/Namify.py +27 -23
  332. nuitka/code_generation/NetworkxCodes.py +51 -0
  333. nuitka/code_generation/OperationCodes.py +80 -51
  334. nuitka/code_generation/PackageResourceCodes.py +96 -23
  335. nuitka/code_generation/PrintCodes.py +19 -17
  336. nuitka/code_generation/PythonAPICodes.py +19 -17
  337. nuitka/code_generation/RaisingCodes.py +183 -107
  338. nuitka/code_generation/Reports.py +32 -22
  339. nuitka/code_generation/ReturnCodes.py +20 -32
  340. nuitka/code_generation/SetCodes.py +19 -17
  341. nuitka/code_generation/SliceCodes.py +22 -20
  342. nuitka/code_generation/StringCodes.py +19 -17
  343. nuitka/code_generation/SubscriptCodes.py +24 -30
  344. nuitka/code_generation/TensorflowCodes.py +54 -0
  345. nuitka/code_generation/TryCodes.py +31 -41
  346. nuitka/code_generation/TupleCodes.py +20 -18
  347. nuitka/code_generation/TypeAliasCodes.py +119 -0
  348. nuitka/code_generation/VariableCodes.py +118 -55
  349. nuitka/code_generation/VariableDeclarations.py +28 -25
  350. nuitka/code_generation/YieldCodes.py +23 -21
  351. nuitka/code_generation/__init__.py +5 -4
  352. nuitka/code_generation/c_types/CTypeBases.py +29 -19
  353. nuitka/code_generation/c_types/CTypeBooleans.py +19 -17
  354. nuitka/code_generation/c_types/CTypeCFloats.py +19 -17
  355. nuitka/code_generation/c_types/CTypeCLongs.py +19 -18
  356. nuitka/code_generation/c_types/CTypeModuleDictVariables.py +22 -17
  357. nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +22 -21
  358. nuitka/code_generation/c_types/CTypeNuitkaInts.py +89 -43
  359. nuitka/code_generation/c_types/CTypeNuitkaVoids.py +20 -18
  360. nuitka/code_generation/c_types/CTypePyObjectPointers.py +43 -31
  361. nuitka/code_generation/c_types/CTypeVoids.py +20 -17
  362. nuitka/code_generation/c_types/__init__.py +5 -4
  363. nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +20 -19
  364. nuitka/code_generation/templates/CodeTemplatesConstants.py +143 -39
  365. nuitka/code_generation/templates/CodeTemplatesCoroutines.py +20 -19
  366. nuitka/code_generation/templates/CodeTemplatesExceptions.py +33 -33
  367. nuitka/code_generation/templates/CodeTemplatesFrames.py +36 -27
  368. nuitka/code_generation/templates/CodeTemplatesFunction.py +20 -19
  369. nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +21 -19
  370. nuitka/code_generation/templates/CodeTemplatesIterators.py +19 -53
  371. nuitka/code_generation/templates/CodeTemplatesLoader.py +25 -19
  372. nuitka/code_generation/templates/CodeTemplatesModules.py +278 -169
  373. nuitka/code_generation/templates/CodeTemplatesVariables.py +115 -27
  374. nuitka/code_generation/templates/TemplateDebugWrapper.py +19 -18
  375. nuitka/code_generation/templates/__init__.py +5 -4
  376. nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +19 -19
  377. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +21 -21
  378. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +79 -28
  379. nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +22 -22
  380. nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +19 -19
  381. nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +19 -19
  382. nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +17 -17
  383. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +74 -106
  384. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +19 -20
  385. nuitka/code_generation/templates_c/HelperLongTools.c.j2 +19 -19
  386. nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +6 -6
  387. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +23 -23
  388. nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
  389. nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +35 -35
  390. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +37 -37
  391. nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
  392. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +17 -17
  393. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +18 -18
  394. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +50 -38
  395. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +27 -27
  396. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +37 -37
  397. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +31 -31
  398. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +35 -31
  399. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +20 -20
  400. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +28 -28
  401. nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +17 -17
  402. nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +17 -17
  403. nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +17 -17
  404. nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +48 -48
  405. nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +21 -18
  406. nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +27 -25
  407. nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +17 -17
  408. nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +17 -17
  409. nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +21 -18
  410. nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +17 -17
  411. nuitka/containers/Namedtuples.py +25 -18
  412. nuitka/containers/OrderedSets.py +105 -5
  413. nuitka/containers/OrderedSetsFallback.py +19 -17
  414. nuitka/containers/__init__.py +5 -4
  415. nuitka/distutils/Build.py +33 -18
  416. nuitka/distutils/DistutilCommands.py +84 -33
  417. nuitka/distutils/__init__.py +5 -4
  418. nuitka/finalizations/Finalization.py +21 -18
  419. nuitka/finalizations/FinalizeMarkups.py +31 -55
  420. nuitka/finalizations/__init__.py +5 -4
  421. nuitka/freezer/DependsExe.py +60 -30
  422. nuitka/freezer/DllDependenciesCommon.py +47 -20
  423. nuitka/freezer/DllDependenciesMacOS.py +165 -58
  424. nuitka/freezer/DllDependenciesPosix.py +29 -19
  425. nuitka/freezer/DllDependenciesWin32.py +55 -33
  426. nuitka/freezer/ImportDetection.py +23 -17
  427. nuitka/freezer/IncludedDataFiles.py +142 -48
  428. nuitka/freezer/IncludedEntryPoints.py +104 -39
  429. nuitka/freezer/Onefile.py +32 -22
  430. nuitka/freezer/Standalone.py +166 -53
  431. nuitka/freezer/__init__.py +5 -4
  432. nuitka/importing/IgnoreListing.py +19 -17
  433. nuitka/importing/ImportCache.py +24 -21
  434. nuitka/importing/ImportResolving.py +103 -95
  435. nuitka/importing/Importing.py +319 -98
  436. nuitka/importing/PreloadedPackages.py +21 -18
  437. nuitka/importing/Recursion.py +142 -47
  438. nuitka/importing/StandardLibrary.py +96 -80
  439. nuitka/importing/__init__.py +5 -4
  440. nuitka/nodes/AsyncgenNodes.py +22 -23
  441. nuitka/nodes/AttributeLookupNodes.py +19 -17
  442. nuitka/nodes/AttributeNodes.py +19 -17
  443. nuitka/nodes/AttributeNodesGenerated.py +49 -24
  444. nuitka/nodes/BuiltinAllNodes.py +19 -17
  445. nuitka/nodes/BuiltinAnyNodes.py +19 -17
  446. nuitka/nodes/BuiltinComplexNodes.py +20 -17
  447. nuitka/nodes/BuiltinDecodingNodes.py +19 -17
  448. nuitka/nodes/BuiltinDecoratorNodes.py +19 -17
  449. nuitka/nodes/BuiltinDictNodes.py +19 -17
  450. nuitka/nodes/BuiltinFormatNodes.py +20 -17
  451. nuitka/nodes/BuiltinHashNodes.py +19 -17
  452. nuitka/nodes/BuiltinInputNodes.py +19 -17
  453. nuitka/nodes/BuiltinIntegerNodes.py +19 -17
  454. nuitka/nodes/BuiltinIteratorNodes.py +25 -21
  455. nuitka/nodes/BuiltinLenNodes.py +19 -17
  456. nuitka/nodes/BuiltinNextNodes.py +19 -17
  457. nuitka/nodes/BuiltinOpenNodes.py +52 -18
  458. nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +40 -23
  459. nuitka/nodes/BuiltinRangeNodes.py +21 -19
  460. nuitka/nodes/BuiltinRefNodes.py +73 -40
  461. nuitka/nodes/BuiltinSumNodes.py +20 -18
  462. nuitka/nodes/BuiltinTypeNodes.py +19 -17
  463. nuitka/nodes/BuiltinVarsNodes.py +19 -18
  464. nuitka/nodes/BytesNodes.py +19 -17
  465. nuitka/nodes/CallNodes.py +19 -17
  466. nuitka/nodes/Checkers.py +19 -17
  467. nuitka/nodes/ChildrenHavingMixins.py +1624 -283
  468. nuitka/nodes/ClassNodes.py +49 -29
  469. nuitka/nodes/CodeObjectSpecs.py +29 -18
  470. nuitka/nodes/ComparisonNodes.py +19 -17
  471. nuitka/nodes/ConditionalNodes.py +24 -25
  472. nuitka/nodes/ConstantRefNodes.py +57 -17
  473. nuitka/nodes/ContainerMakingNodes.py +19 -17
  474. nuitka/nodes/ContainerOperationNodes.py +19 -17
  475. nuitka/nodes/CoroutineNodes.py +22 -23
  476. nuitka/nodes/CtypesNodes.py +19 -18
  477. nuitka/nodes/DictionaryNodes.py +19 -18
  478. nuitka/nodes/ExceptionNodes.py +131 -43
  479. nuitka/nodes/ExecEvalNodes.py +19 -17
  480. nuitka/nodes/ExpressionBases.py +34 -26
  481. nuitka/nodes/ExpressionBasesGenerated.py +341 -35
  482. nuitka/nodes/ExpressionShapeMixins.py +19 -17
  483. nuitka/nodes/FrameNodes.py +41 -28
  484. nuitka/nodes/FunctionAttributeNodes.py +19 -17
  485. nuitka/nodes/FunctionNodes.py +84 -38
  486. nuitka/nodes/FutureSpecs.py +35 -20
  487. nuitka/nodes/GeneratorNodes.py +24 -25
  488. nuitka/nodes/GlobalsLocalsNodes.py +22 -17
  489. nuitka/nodes/HardImportNodesGenerated.py +746 -148
  490. nuitka/nodes/ImportHardNodes.py +46 -38
  491. nuitka/nodes/ImportNodes.py +438 -448
  492. nuitka/nodes/IndicatorMixins.py +19 -17
  493. nuitka/nodes/InjectCNodes.py +19 -18
  494. nuitka/nodes/IterationHandles.py +55 -34
  495. nuitka/nodes/KeyValuePairNodes.py +19 -17
  496. nuitka/nodes/ListOperationNodes.py +33 -21
  497. nuitka/nodes/LocalsDictNodes.py +19 -17
  498. nuitka/nodes/LocalsScopes.py +41 -41
  499. nuitka/nodes/LoopNodes.py +28 -17
  500. nuitka/nodes/MatchNodes.py +37 -24
  501. nuitka/nodes/ModuleAttributeNodes.py +18 -35
  502. nuitka/nodes/ModuleNodes.py +90 -31
  503. nuitka/nodes/NetworkxNodes.py +45 -0
  504. nuitka/nodes/NodeBases.py +73 -44
  505. nuitka/nodes/NodeMakingHelpers.py +92 -69
  506. nuitka/nodes/NodeMetaClasses.py +45 -28
  507. nuitka/nodes/OperatorNodes.py +28 -26
  508. nuitka/nodes/OperatorNodesUnary.py +148 -20
  509. nuitka/nodes/OsSysNodes.py +97 -18
  510. nuitka/nodes/OutlineNodes.py +24 -22
  511. nuitka/nodes/PackageMetadataNodes.py +37 -27
  512. nuitka/nodes/PackageResourceNodes.py +29 -23
  513. nuitka/nodes/PrintNodes.py +19 -17
  514. nuitka/nodes/ReturnNodes.py +20 -18
  515. nuitka/nodes/SideEffectNodes.py +19 -17
  516. nuitka/nodes/SliceNodes.py +20 -18
  517. nuitka/nodes/StatementBasesGenerated.py +125 -79
  518. nuitka/nodes/StatementNodes.py +27 -24
  519. nuitka/nodes/StrNodes.py +19 -17
  520. nuitka/nodes/StringConcatenationNodes.py +20 -17
  521. nuitka/nodes/SubscriptNodes.py +27 -25
  522. nuitka/nodes/TensorflowNodes.py +38 -0
  523. nuitka/nodes/TryNodes.py +19 -17
  524. nuitka/nodes/TypeMatchNodes.py +19 -17
  525. nuitka/nodes/TypeNodes.py +68 -18
  526. nuitka/nodes/VariableAssignNodes.py +122 -64
  527. nuitka/nodes/VariableDelNodes.py +19 -17
  528. nuitka/nodes/VariableNameNodes.py +19 -17
  529. nuitka/nodes/VariableRefNodes.py +63 -26
  530. nuitka/nodes/VariableReleaseNodes.py +19 -17
  531. nuitka/nodes/YieldNodes.py +21 -19
  532. nuitka/nodes/__init__.py +5 -4
  533. nuitka/nodes/shapes/BuiltinTypeShapes.py +169 -46
  534. nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
  535. nuitka/nodes/shapes/ShapeMixins.py +57 -17
  536. nuitka/nodes/shapes/StandardShapes.py +80 -21
  537. nuitka/nodes/shapes/__init__.py +5 -4
  538. nuitka/optimizations/BytecodeDemotion.py +21 -18
  539. nuitka/optimizations/FunctionInlining.py +22 -23
  540. nuitka/optimizations/Graphs.py +19 -17
  541. nuitka/optimizations/Optimization.py +39 -35
  542. nuitka/optimizations/OptimizeBuiltinCalls.py +31 -27
  543. nuitka/optimizations/Tags.py +19 -18
  544. nuitka/optimizations/TraceCollections.py +67 -24
  545. nuitka/optimizations/ValueTraces.py +92 -25
  546. nuitka/optimizations/__init__.py +5 -4
  547. nuitka/pgo/PGO.py +33 -23
  548. nuitka/pgo/__init__.py +5 -4
  549. nuitka/plugins/PluginBase.py +655 -112
  550. nuitka/plugins/Plugins.py +247 -61
  551. nuitka/plugins/YamlPluginBase.py +121 -0
  552. nuitka/plugins/__init__.py +5 -4
  553. nuitka/plugins/standard/AntiBloatPlugin.py +374 -135
  554. nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +20 -19
  555. nuitka/plugins/standard/DataFilesPlugin.py +65 -29
  556. nuitka/plugins/standard/DelvewheelPlugin.py +32 -24
  557. nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
  558. nuitka/plugins/standard/DillPlugin/dill-postLoad.py +256 -0
  559. nuitka/plugins/standard/DillPlugin.py +42 -134
  560. nuitka/plugins/standard/DllFilesPlugin.py +125 -42
  561. nuitka/plugins/standard/EnumPlugin.py +19 -17
  562. nuitka/plugins/standard/EventletPlugin.py +19 -17
  563. nuitka/plugins/standard/GeventPlugin.py +19 -17
  564. nuitka/plugins/standard/GiPlugin.py +44 -28
  565. nuitka/plugins/standard/GlfwPlugin.py +20 -17
  566. nuitka/plugins/standard/ImplicitImports.py +403 -54
  567. nuitka/plugins/standard/KivyPlugin.py +24 -20
  568. nuitka/plugins/standard/MatplotlibPlugin.py +99 -42
  569. nuitka/plugins/standard/MultiprocessingPlugin.py +35 -39
  570. nuitka/plugins/standard/NumpyPlugin.py +19 -17
  571. nuitka/plugins/standard/OptionsNannyPlugin.py +48 -76
  572. nuitka/plugins/standard/PbrPlugin.py +21 -19
  573. nuitka/plugins/standard/PkgResourcesPlugin.py +34 -23
  574. nuitka/plugins/standard/PlaywrightPlugin.py +184 -0
  575. nuitka/plugins/standard/PmwPlugin.py +30 -27
  576. nuitka/plugins/standard/PySidePyQtPlugin.py +82 -80
  577. nuitka/plugins/standard/PywebViewPlugin.py +19 -17
  578. nuitka/plugins/standard/SpacyPlugin.py +136 -0
  579. nuitka/plugins/standard/TensorflowPlugin.py +20 -17
  580. nuitka/plugins/standard/TkinterPlugin.py +102 -108
  581. nuitka/plugins/standard/TorchPlugin.py +20 -17
  582. nuitka/plugins/standard/TransformersPlugin.py +90 -231
  583. nuitka/plugins/standard/TrioPlugin.py +18 -15
  584. nuitka/plugins/standard/UpxPlugin.py +21 -19
  585. nuitka/plugins/standard/__init__.py +5 -4
  586. nuitka/plugins/standard/standard.nuitka-package.config.yml +3925 -1293
  587. nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +14 -14
  588. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +154 -66
  589. nuitka/reports/CompilationReportReader.py +79 -0
  590. nuitka/reports/LicenseReport.rst.j2 +21 -21
  591. nuitka/reports/Reports.py +363 -76
  592. nuitka/reports/__init__.py +5 -4
  593. nuitka/specs/BuiltinBytesOperationSpecs.py +18 -17
  594. nuitka/specs/BuiltinDictOperationSpecs.py +18 -17
  595. nuitka/specs/BuiltinListOperationSpecs.py +18 -17
  596. nuitka/specs/BuiltinParameterSpecs.py +35 -21
  597. nuitka/specs/BuiltinStrOperationSpecs.py +19 -18
  598. nuitka/specs/BuiltinTypeOperationSpecs.py +18 -18
  599. nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
  600. nuitka/specs/HardImportSpecs.py +74 -22
  601. nuitka/specs/ParameterSpecs.py +60 -45
  602. nuitka/specs/__init__.py +5 -4
  603. nuitka/tools/Basics.py +20 -18
  604. nuitka/tools/__init__.py +5 -4
  605. nuitka/tools/commercial/__init__.py +7 -6
  606. nuitka/tools/data_composer/DataComposer.py +78 -62
  607. nuitka/tools/data_composer/__init__.py +5 -4
  608. nuitka/tools/data_composer/__main__.py +18 -17
  609. nuitka/tools/environments/CreateEnvironment.py +20 -17
  610. nuitka/tools/environments/Virtualenv.py +60 -32
  611. nuitka/tools/environments/__init__.py +5 -4
  612. nuitka/tools/general/__init__.py +5 -4
  613. nuitka/tools/general/dll_report/__init__.py +5 -4
  614. nuitka/tools/general/dll_report/__main__.py +29 -22
  615. nuitka/tools/general/find_module/FindModuleCode.py +35 -22
  616. nuitka/tools/general/find_module/__init__.py +5 -4
  617. nuitka/tools/onefile_compressor/OnefileCompressor.py +213 -131
  618. nuitka/tools/onefile_compressor/__init__.py +5 -4
  619. nuitka/tools/onefile_compressor/__main__.py +18 -17
  620. nuitka/tools/podman/Podman.py +19 -17
  621. nuitka/tools/podman/__init__.py +5 -4
  622. nuitka/tools/podman/__main__.py +35 -19
  623. nuitka/tools/profiler/__init__.py +5 -4
  624. nuitka/tools/profiler/__main__.py +18 -17
  625. nuitka/tools/scanning/DisplayPackageDLLs.py +47 -22
  626. nuitka/tools/scanning/DisplayPackageData.py +31 -19
  627. nuitka/tools/scanning/__init__.py +5 -4
  628. nuitka/tools/specialize/CTypeDescriptions.py +251 -80
  629. nuitka/tools/specialize/Common.py +18 -17
  630. nuitka/tools/specialize/SpecializeC.py +248 -82
  631. nuitka/tools/specialize/SpecializePython.py +108 -45
  632. nuitka/tools/specialize/__init__.py +5 -4
  633. nuitka/tools/testing/Common.py +175 -114
  634. nuitka/tools/testing/Constructs.py +19 -17
  635. nuitka/tools/testing/OutputComparison.py +54 -18
  636. nuitka/tools/testing/Pythons.py +19 -18
  637. nuitka/tools/testing/RuntimeTracing.py +20 -19
  638. nuitka/tools/testing/SearchModes.py +26 -20
  639. nuitka/tools/testing/Valgrind.py +19 -17
  640. nuitka/tools/testing/__init__.py +5 -4
  641. nuitka/tools/testing/check_reference_counts/__init__.py +5 -4
  642. nuitka/tools/testing/check_reference_counts/__main__.py +18 -18
  643. nuitka/tools/testing/compare_with_cpython/__init__.py +5 -4
  644. nuitka/tools/testing/compare_with_cpython/__main__.py +39 -30
  645. nuitka/tools/testing/find_sxs_modules/__init__.py +5 -4
  646. nuitka/tools/testing/find_sxs_modules/__main__.py +17 -17
  647. nuitka/tools/testing/measure_construct_performance/__init__.py +5 -4
  648. nuitka/tools/testing/measure_construct_performance/__main__.py +23 -33
  649. nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
  650. nuitka/tools/testing/run_nuitka_tests/__main__.py +134 -51
  651. nuitka/tools/watch/AutoStage.py +145 -0
  652. nuitka/tools/watch/GitHub.py +113 -0
  653. nuitka/tools/watch/__init__.py +5 -4
  654. nuitka/tools/watch/__main__.py +322 -91
  655. nuitka/tree/Building.py +184 -182
  656. nuitka/tree/ComplexCallHelperFunctions.py +84 -58
  657. nuitka/tree/Extractions.py +19 -17
  658. nuitka/tree/InternalModule.py +29 -20
  659. nuitka/tree/Operations.py +19 -17
  660. nuitka/tree/ReformulationAssertStatements.py +51 -31
  661. nuitka/tree/ReformulationAssignmentStatements.py +96 -91
  662. nuitka/tree/ReformulationBooleanExpressions.py +19 -17
  663. nuitka/tree/ReformulationCallExpressions.py +20 -18
  664. nuitka/tree/ReformulationClasses.py +45 -39
  665. nuitka/tree/ReformulationClasses3.py +239 -116
  666. nuitka/tree/ReformulationComparisonExpressions.py +29 -35
  667. nuitka/tree/ReformulationContractionExpressions.py +58 -55
  668. nuitka/tree/ReformulationDictionaryCreation.py +41 -35
  669. nuitka/tree/ReformulationExecStatements.py +42 -39
  670. nuitka/tree/ReformulationForLoopStatements.py +30 -34
  671. nuitka/tree/ReformulationFunctionStatements.py +59 -55
  672. nuitka/tree/ReformulationImportStatements.py +34 -29
  673. nuitka/tree/ReformulationLambdaExpressions.py +23 -24
  674. nuitka/tree/ReformulationMatchStatements.py +246 -92
  675. nuitka/tree/ReformulationMultidist.py +22 -18
  676. nuitka/tree/ReformulationNamespacePackages.py +55 -46
  677. nuitka/tree/ReformulationPrintStatements.py +23 -24
  678. nuitka/tree/ReformulationSequenceCreation.py +50 -49
  679. nuitka/tree/ReformulationSubscriptExpressions.py +19 -17
  680. nuitka/tree/ReformulationTryExceptStatements.py +19 -17
  681. nuitka/tree/ReformulationTryFinallyStatements.py +34 -17
  682. nuitka/tree/ReformulationWhileLoopStatements.py +19 -17
  683. nuitka/tree/ReformulationWithStatements.py +39 -41
  684. nuitka/tree/ReformulationYieldExpressions.py +44 -24
  685. nuitka/tree/SourceHandling.py +76 -31
  686. nuitka/tree/SyntaxErrors.py +19 -17
  687. nuitka/tree/TreeHelpers.py +33 -20
  688. nuitka/tree/VariableClosure.py +35 -39
  689. nuitka/tree/__init__.py +5 -4
  690. nuitka/utils/AppDirs.py +41 -20
  691. nuitka/utils/CStrings.py +66 -21
  692. nuitka/utils/CommandLineOptions.py +111 -22
  693. nuitka/utils/Distributions.py +445 -54
  694. nuitka/utils/Download.py +89 -57
  695. nuitka/utils/Execution.py +102 -58
  696. nuitka/utils/FileOperations.py +357 -128
  697. nuitka/utils/Hashing.py +55 -33
  698. nuitka/utils/Images.py +26 -19
  699. nuitka/utils/Importing.py +119 -37
  700. nuitka/utils/InlineCopies.py +52 -0
  701. nuitka/utils/InstalledPythons.py +85 -75
  702. nuitka/utils/InstanceCounters.py +20 -17
  703. nuitka/utils/Jinja2.py +30 -22
  704. nuitka/utils/Json.py +21 -19
  705. nuitka/utils/MacOSApp.py +26 -18
  706. nuitka/utils/MemoryUsage.py +20 -18
  707. nuitka/utils/ModuleNames.py +42 -26
  708. nuitka/utils/PackageResources.py +44 -0
  709. nuitka/utils/ReExecute.py +50 -28
  710. nuitka/utils/Rest.py +20 -17
  711. nuitka/utils/SharedLibraries.py +161 -75
  712. nuitka/utils/Shebang.py +20 -17
  713. nuitka/utils/Signing.py +63 -18
  714. nuitka/utils/SlotMetaClasses.py +57 -0
  715. nuitka/utils/StaticLibraries.py +83 -56
  716. nuitka/utils/ThreadedExecutor.py +18 -17
  717. nuitka/utils/Timing.py +22 -20
  718. nuitka/utils/Utils.py +132 -25
  719. nuitka/utils/WindowsFileUsage.py +22 -20
  720. nuitka/utils/WindowsResources.py +25 -18
  721. nuitka/utils/Yaml.py +62 -24
  722. nuitka/utils/__init__.py +5 -4
  723. Nuitka_winsvc-1.8.dist-info/RECORD +0 -905
  724. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_gui.py +0 -9
  725. nuitka/build/inline_copy/tqdm/tqdm/gui.py +0 -191
  726. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/LICENSE.txt +0 -0
  727. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/entry_points.txt +0 -0
  728. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/top_level.txt +0 -0
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,
@@ -48,9 +41,11 @@ from nuitka.Options import (
48
41
  hasPythonFlagIsolated,
49
42
  hasPythonFlagNoAnnotations,
50
43
  hasPythonFlagNoAsserts,
44
+ hasPythonFlagNoBytecodeRuntimeCache,
51
45
  hasPythonFlagNoDocStrings,
52
46
  hasPythonFlagNoWarnings,
53
47
  hasPythonFlagUnbuffered,
48
+ isExperimental,
54
49
  )
55
50
  from nuitka.plugins.Plugins import Plugins
56
51
  from nuitka.PostProcessing import executePostProcessing
@@ -61,19 +56,21 @@ from nuitka.Progress import (
61
56
  )
62
57
  from nuitka.PythonFlavors import (
63
58
  isApplePython,
59
+ isArchPackagePython,
64
60
  isDebianPackagePython,
65
61
  isFedoraPackagePython,
66
62
  isNuitkaPython,
67
63
  isPyenvPython,
68
64
  )
69
65
  from nuitka.PythonVersions import (
66
+ getModuleLinkerLibs,
70
67
  getPythonABI,
71
68
  getSupportedPythonVersions,
72
69
  python_version,
73
70
  python_version_str,
74
71
  )
75
72
  from nuitka.Serialization import ConstantAccessor
76
- from nuitka.Tracing import general, inclusion_logger
73
+ from nuitka.Tracing import general, inclusion_logger, pgo_logger
77
74
  from nuitka.tree import SyntaxErrors
78
75
  from nuitka.tree.ReformulationMultidist import createMultidistMainSourceCode
79
76
  from nuitka.utils import InstanceCounters
@@ -91,19 +88,21 @@ from nuitka.utils.FileOperations import (
91
88
  removeDirectory,
92
89
  resetDirectory,
93
90
  )
94
- from nuitka.utils.Importing import getSharedLibrarySuffix
91
+ from nuitka.utils.Importing import (
92
+ getPackageDirFilename,
93
+ getSharedLibrarySuffix,
94
+ )
95
95
  from nuitka.utils.MemoryUsage import reportMemoryUsage, showMemoryTrace
96
96
  from nuitka.utils.ModuleNames import ModuleName
97
97
  from nuitka.utils.ReExecute import callExecProcess, reExecuteNuitka
98
98
  from nuitka.utils.StaticLibraries import getSystemStaticLibPythonPath
99
- from nuitka.utils.Utils import isMacOS, isWin32Windows
99
+ from nuitka.utils.Utils import getArchitecture, isMacOS, isWin32Windows
100
100
  from nuitka.Version import getCommercialVersion, getNuitkaVersion
101
101
 
102
102
  from . import ModuleRegistry, Options, OutputDirectories
103
103
  from .build.SconsInterface import (
104
104
  asBoolStr,
105
105
  cleanSconsDirectory,
106
- getSconsDataPath,
107
106
  runScons,
108
107
  setCommonSconsOptions,
109
108
  )
@@ -123,16 +122,6 @@ from .tree.SourceHandling import writeSourceCode
123
122
  from .TreeXML import dumpTreeXMLToFile
124
123
 
125
124
 
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
125
  def _createMainModule():
137
126
  """Create a node tree.
138
127
 
@@ -142,24 +131,19 @@ def _createMainModule():
142
131
  directory paths.
143
132
 
144
133
  """
145
- # Many cases to deal with, pylint: disable=too-many-branches
134
+ # Many cases and details to deal with, pylint: disable=too-many-branches
146
135
 
147
136
  Plugins.onBeforeCodeParsing()
148
137
 
149
- main_filenames = Options.getMainEntryPointFilenames()
150
-
151
138
  # First, build the raw node tree from the source code.
152
- if len(main_filenames) > 1:
139
+ if Options.isMultidistMode():
153
140
  assert not Options.shallMakeModule()
154
141
 
155
142
  main_module = buildMainModuleTree(
156
- # TODO: Should not be given.
157
- filename=main_filenames[0],
158
- source_code=createMultidistMainSourceCode(main_filenames),
143
+ source_code=createMultidistMainSourceCode(),
159
144
  )
160
145
  else:
161
146
  main_module = buildMainModuleTree(
162
- filename=main_filenames[0],
163
147
  source_code=None,
164
148
  )
165
149
 
@@ -174,7 +158,11 @@ def _createMainModule():
174
158
  % distribution_name
175
159
  )
176
160
 
177
- addDistributionMetadataValue(distribution_name, distribution)
161
+ addDistributionMetadataValue(
162
+ distribution_name=distribution_name,
163
+ distribution=distribution,
164
+ reason="user requested",
165
+ )
178
166
 
179
167
  # First remove old object files and old generated files, old binary or
180
168
  # module, and standalone mode program directory if any, they can only do
@@ -187,11 +175,19 @@ def _createMainModule():
187
175
  # Prepare the ".dist" directory, throwing away what was there before.
188
176
  if Options.isStandaloneMode():
189
177
  standalone_dir = OutputDirectories.getStandaloneDirectoryPath(bundle=False)
190
- resetDirectory(path=standalone_dir, ignore_errors=True)
178
+ resetDirectory(
179
+ path=standalone_dir,
180
+ logger=general,
181
+ ignore_errors=True,
182
+ extra_recommendation="Stop previous binary.",
183
+ )
191
184
 
192
185
  if Options.shallCreateAppBundle():
193
186
  resetDirectory(
194
- path=changeFilenameExtension(standalone_dir, ".app"), ignore_errors=True
187
+ path=changeFilenameExtension(standalone_dir, ".app"),
188
+ logger=general,
189
+ ignore_errors=True,
190
+ extra_recommendation=None,
195
191
  )
196
192
 
197
193
  # Delete result file, to avoid confusion with previous build and to
@@ -246,7 +242,9 @@ def _createMainModule():
246
242
  )
247
243
 
248
244
  Recursion.checkPluginSinglePath(
249
- plugin_filename=module_filename, module_package=module_name.getPackageName()
245
+ plugin_filename=module_filename,
246
+ module_package=module_name.getPackageName(),
247
+ package_only=True,
250
248
  )
251
249
 
252
250
  # Allow plugins to add more modules based on the initial set being complete.
@@ -262,6 +260,14 @@ def _createMainModule():
262
260
  if Options.isStandaloneMode():
263
261
  checkFreezingModuleSet()
264
262
 
263
+ # Check if distribution meta data is included, that cannot be used.
264
+ for distribution_name, meta_data_value in getDistributionMetadataValues():
265
+ if not ModuleRegistry.hasDoneModule(meta_data_value.module_name):
266
+ inclusion_logger.sysexit(
267
+ "Error, including metadata for distribution '%s' without including related package '%s'."
268
+ % (distribution_name, meta_data_value.module_name)
269
+ )
270
+
265
271
  # Allow plugins to comment on final module set.
266
272
  Plugins.onModuleCompleteSet()
267
273
 
@@ -280,7 +286,7 @@ def dumpTreeXML():
280
286
  filename = Options.getXMLDumpOutputFilename()
281
287
 
282
288
  if filename is not None:
283
- with openTextFile(filename, "w") as output_file:
289
+ with openTextFile(filename, "wb") as output_file:
284
290
  # XML output only.
285
291
  for module in ModuleRegistry.getDoneModules():
286
292
  dumpTreeXMLToFile(tree=module.asXml(), output_file=output_file)
@@ -524,11 +530,11 @@ def _runCPgoBinary():
524
530
  source_dir=OutputDirectories.getSourceDirectoryPath(), key="PATH"
525
531
  ),
526
532
  ):
527
- _exit_code = _runPgoBinary()
533
+ exit_code_pgo = _runPgoBinary()
528
534
 
529
535
  pgo_data_collected = os.path.exists(msvc_pgc_filename)
530
536
  else:
531
- _exit_code = _runPgoBinary()
537
+ exit_code_pgo = _runPgoBinary()
532
538
 
533
539
  # gcc file suffix, spell-checker: ignore gcda
534
540
  gcc_constants_pgo_filename = os.path.join(
@@ -537,12 +543,21 @@ def _runCPgoBinary():
537
543
 
538
544
  pgo_data_collected = os.path.exists(gcc_constants_pgo_filename)
539
545
 
546
+ if exit_code_pgo != 0:
547
+ pgo_logger.warning(
548
+ """\
549
+ Error, the C PGO compiled program error exited. Make sure it works \
550
+ fully before using '--pgo-c' option."""
551
+ )
552
+
540
553
  if not pgo_data_collected:
541
- general.sysexit(
542
- "Error, no PGO information produced, did the created binary run at all?"
554
+ pgo_logger.sysexit(
555
+ """\
556
+ Error, no C PGO compiled program did not produce expected information, \
557
+ did the created binary run at all?"""
543
558
  )
544
559
 
545
- general.info("Successfully collected C level PGO information.", style="blue")
560
+ pgo_logger.info("Successfully collected C level PGO information.", style="blue")
546
561
 
547
562
 
548
563
  def _runPythonPgoBinary():
@@ -553,11 +568,14 @@ def _runPythonPgoBinary():
553
568
  pgo_filename = OutputDirectories.getPgoRunInputFilename()
554
569
 
555
570
  with withEnvironmentVarOverridden("NUITKA_PGO_OUTPUT", pgo_filename):
556
- _exit_code = _runPgoBinary()
571
+ exit_code = _runPgoBinary()
557
572
 
558
573
  if not os.path.exists(pgo_filename):
559
574
  general.sysexit(
560
- "Error, no Python PGO information produced, did the created binary run at all?"
575
+ """\
576
+ Error, no Python PGO information produced, did the created binary
577
+ run (exit code %d) as expected?"""
578
+ % exit_code
561
579
  )
562
580
 
563
581
  return pgo_filename
@@ -569,19 +587,18 @@ def runSconsBackend():
569
587
  # pylint: disable=too-many-branches,too-many-statements
570
588
 
571
589
  options = {
572
- "result_name": OutputDirectories.getResultBasePath(onefile=False),
573
590
  "source_dir": OutputDirectories.getSourceDirectoryPath(),
574
591
  "nuitka_python": asBoolStr(isNuitkaPython()),
575
592
  "debug_mode": asBoolStr(Options.is_debug),
593
+ "debugger_mode": asBoolStr(Options.shallRunInDebugger()),
576
594
  "python_debug": asBoolStr(Options.shallUsePythonDebug()),
577
595
  "module_mode": asBoolStr(Options.shallMakeModule()),
578
596
  "full_compat": asBoolStr(Options.is_full_compat),
579
597
  "experimental": ",".join(Options.getExperimentalIndications()),
580
598
  "trace_mode": asBoolStr(Options.shallTraceExecution()),
581
- "python_version": python_version_str,
582
- "nuitka_src": getSconsDataPath(),
583
599
  "file_reference_mode": Options.getFileReferenceMode(),
584
600
  "module_count": "%d" % len(ModuleRegistry.getDoneModules()),
601
+ "gil_mode": asBoolStr(Options.isPythonWithGil()),
585
602
  }
586
603
 
587
604
  if Options.isLowMemory():
@@ -602,13 +619,12 @@ def runSconsBackend():
602
619
 
603
620
  if isDebianPackagePython():
604
621
  options["debian_python"] = asBoolStr(True)
605
-
606
622
  if isFedoraPackagePython():
607
623
  options["fedora_python"] = asBoolStr(True)
608
-
624
+ if isArchPackagePython():
625
+ options["arch_python"] = asBoolStr(True)
609
626
  if isApplePython():
610
627
  options["apple_python"] = asBoolStr(True)
611
-
612
628
  if isPyenvPython():
613
629
  options["pyenv_python"] = asBoolStr(True)
614
630
 
@@ -621,12 +637,20 @@ def runSconsBackend():
621
637
  if Options.isOnefileTempDirMode():
622
638
  options["onefile_temp_mode"] = asBoolStr(True)
623
639
 
640
+ # TODO: Some things are going to hate that, we might need to bundle
641
+ # for accelerated mode still.
642
+ if Options.shallCreateAppBundle():
643
+ options["macos_bundle_mode"] = asBoolStr(True)
644
+
624
645
  if Options.getForcedStdoutPath():
625
646
  options["forced_stdout_path"] = Options.getForcedStdoutPath()
626
647
 
627
648
  if Options.getForcedStderrPath():
628
649
  options["forced_stderr_path"] = Options.getForcedStderrPath()
629
650
 
651
+ if Options.isProfile():
652
+ options["profile_mode"] = asBoolStr(True)
653
+
630
654
  if Options.shallTreatUninstalledPython():
631
655
  options["uninstalled_python"] = asBoolStr(True)
632
656
 
@@ -635,9 +659,6 @@ def runSconsBackend():
635
659
  len(ModuleRegistry.getUncompiledTechnicalModules())
636
660
  )
637
661
 
638
- if Options.isProfile():
639
- options["profile_mode"] = asBoolStr(True)
640
-
641
662
  if hasPythonFlagNoWarnings():
642
663
  options["no_python_warnings"] = asBoolStr(True)
643
664
 
@@ -665,7 +686,7 @@ def runSconsBackend():
665
686
  if sys.flags.bytes_warning:
666
687
  options["python_sysflag_bytes_warning"] = asBoolStr(True)
667
688
 
668
- if int(os.environ.get("NUITKA_NOSITE_FLAG", Options.hasPythonFlagNoSite())):
689
+ if int(os.getenv("NUITKA_NOSITE_FLAG", Options.hasPythonFlagNoSite())):
669
690
  options["python_sysflag_no_site"] = asBoolStr(True)
670
691
 
671
692
  if Options.hasPythonFlagTraceImports():
@@ -680,6 +701,9 @@ def runSconsBackend():
680
701
  if python_version >= 0x370 and sys.flags.utf8_mode:
681
702
  options["python_sysflag_utf8"] = asBoolStr(True)
682
703
 
704
+ if hasPythonFlagNoBytecodeRuntimeCache():
705
+ options["python_sysflag_unbuffered"] = asBoolStr(True)
706
+
683
707
  if hasPythonFlagUnbuffered():
684
708
  options["python_sysflag_unbuffered"] = asBoolStr(True)
685
709
 
@@ -691,14 +715,20 @@ def runSconsBackend():
691
715
  options["abiflags"] = abiflags
692
716
 
693
717
  if Options.shallMakeModule():
694
- options["module_suffix"] = getSharedLibrarySuffix(preferred=True)
718
+ options["result_exe"] = OutputDirectories.getResultBasePath(
719
+ onefile=False
720
+ ) + getSharedLibrarySuffix(preferred=True)
721
+
722
+ link_module_libs = getModuleLinkerLibs()
723
+ if link_module_libs:
724
+ options["link_module_libs"] = ",".join(link_module_libs)
695
725
 
696
726
  env_values = setCommonSconsOptions(options)
697
727
 
698
728
  # Allow plugins to build definitions.
699
729
  env_values.update(Plugins.getBuildDefinitions())
700
730
 
701
- if Options.shallCreatePgoInput():
731
+ if Options.shallCreatePythonPgoInput():
702
732
  options["pgo_mode"] = "python"
703
733
 
704
734
  result = runScons(
@@ -717,11 +747,11 @@ def runSconsBackend():
717
747
  return True, options
718
748
 
719
749
  # Need to restart compilation from scratch here.
720
- if Options.isPgoMode():
750
+ if Options.isCPgoMode():
721
751
  # For C level PGO, we have a 2 pass system. TODO: Make it more global for onefile
722
752
  # and standalone mode proper support, which might need data files to be
723
753
  # there, which currently are not yet there, so it won't run.
724
- if Options.isPgoMode():
754
+ if Options.isCPgoMode():
725
755
  options["pgo_mode"] = "generate"
726
756
 
727
757
  result = runScons(
@@ -754,12 +784,7 @@ def runSconsBackend():
754
784
  return result
755
785
 
756
786
 
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
-
787
+ def callExecPython(args, add_path, uac):
763
788
  if add_path:
764
789
  if "PYTHONPATH" in os.environ:
765
790
  os.environ["PYTHONPATH"] += ":" + Options.getOutputDir()
@@ -769,23 +794,27 @@ def callExecPython(args, clean_path, add_path):
769
794
  # Add the main arguments, previous separated.
770
795
  args += Options.getPositionalArgs()[1:] + Options.getMainArgs()
771
796
 
772
- callExecProcess(args)
797
+ callExecProcess(args, uac=uac)
773
798
 
774
799
 
775
- def executeMain(binary_filename, clean_path):
800
+ def _executeMain(binary_filename):
776
801
  # Wrap in debugger, unless the CMD file contains that call already.
777
802
  if Options.shallRunInDebugger() and not Options.shallCreateCmdFileForExecution():
778
803
  args = wrapCommandForDebuggerForExec(binary_filename)
779
804
  else:
780
805
  args = (binary_filename, binary_filename)
781
806
 
782
- callExecPython(clean_path=clean_path, add_path=False, args=args)
807
+ callExecPython(
808
+ args=args,
809
+ add_path=False,
810
+ uac=isWin32Windows() and Options.shallAskForWindowsAdminRights(),
811
+ )
783
812
 
784
813
 
785
- def executeModule(tree, clean_path):
814
+ def _executeModule(tree):
786
815
  """Execute the extension module just created."""
787
816
 
788
- if python_version < 0x340:
817
+ if python_version < 0x300:
789
818
  python_command_template = """\
790
819
  import os, imp;\
791
820
  assert os.path.normcase(os.path.abspath(os.path.normpath(\
@@ -798,6 +827,15 @@ assert os.path.normcase(os.path.abspath(os.path.normpath(\
798
827
  importlib.util.find_spec('%(module_name)s').origin))) == %(expected_filename)r,\
799
828
  'Error, cannot launch extension module %(module_name)s, original package is in the way.'"""
800
829
 
830
+ output_dir = os.path.normpath(Options.getOutputDir())
831
+ if output_dir != ".":
832
+ python_command_template = (
833
+ """\
834
+ import sys; sys.path.insert(0, %(output_dir)r)
835
+ """
836
+ + python_command_template
837
+ )
838
+
801
839
  python_command_template += ";__import__('%(module_name)s')"
802
840
 
803
841
  python_command = python_command_template % {
@@ -807,6 +845,7 @@ importlib.util.find_spec('%(module_name)s').origin))) == %(expected_filename)r,\
807
845
  os.path.normpath(OutputDirectories.getResultFullpath(onefile=False))
808
846
  )
809
847
  ),
848
+ "output_dir": output_dir,
810
849
  }
811
850
 
812
851
  if Options.shallRunInDebugger():
@@ -814,7 +853,7 @@ importlib.util.find_spec('%(module_name)s').origin))) == %(expected_filename)r,\
814
853
  else:
815
854
  args = (sys.executable, "python", "-c", python_command)
816
855
 
817
- callExecPython(clean_path=clean_path, add_path=True, args=args)
856
+ callExecPython(args=args, add_path=True, uac=False)
818
857
 
819
858
 
820
859
  def compileTree():
@@ -827,9 +866,11 @@ def compileTree():
827
866
 
828
867
  reportMemoryUsage(
829
868
  "before_c_code_generation",
830
- "Total memory usage before generating C code:"
831
- if Options.isShowProgress() or Options.isShowMemory()
832
- else None,
869
+ (
870
+ "Total memory usage before generating C code:"
871
+ if Options.isShowProgress() or Options.isShowMemory()
872
+ else None
873
+ ),
833
874
  )
834
875
 
835
876
  # Now build the target language code for the whole tree.
@@ -855,16 +896,17 @@ def compileTree():
855
896
 
856
897
  reportMemoryUsage(
857
898
  "before_running_scons",
858
- "Total memory usage before running scons"
859
- if Options.isShowProgress() or Options.isShowMemory()
860
- else None,
899
+ (
900
+ "Total memory usage before running scons"
901
+ if Options.isShowProgress() or Options.isShowMemory()
902
+ else None
903
+ ),
861
904
  )
862
905
 
863
906
  if Options.isShowMemory():
864
907
  InstanceCounters.printStats()
865
908
 
866
- if Options.is_debug:
867
- Reports.doMissingOptimizationReport()
909
+ Reports.doMissingOptimizationReport()
868
910
 
869
911
  if Options.shallNotDoExecCCompilerCall():
870
912
  return True, {}
@@ -878,9 +920,9 @@ def compileTree():
878
920
  general.info("Running C compilation via Scons.")
879
921
 
880
922
  # Run the Scons to build things.
881
- result, options = runSconsBackend()
923
+ result, scons_options = runSconsBackend()
882
924
 
883
- return result, options
925
+ return result, scons_options
884
926
 
885
927
 
886
928
  def handleSyntaxError(e):
@@ -938,12 +980,16 @@ def _main():
938
980
 
939
981
  reportMemoryUsage(
940
982
  "after_launch",
941
- "Total memory usage before processing:"
942
- if Options.isShowProgress() or Options.isShowMemory()
943
- else None,
983
+ (
984
+ "Total memory usage before processing:"
985
+ if Options.isShowProgress() or Options.isShowMemory()
986
+ else None
987
+ ),
944
988
  )
945
989
 
946
- _setupFromMainFilenames()
990
+ # Initialize the importing layer from options, main filenames, debugging
991
+ # options, etc.
992
+ Importing.setupImportingFromOptions()
947
993
 
948
994
  addIncludedDataFilesFromFileOptions()
949
995
  addIncludedDataFilesFromPackageOptions()
@@ -959,14 +1005,18 @@ def _main():
959
1005
  dumpTreeXML()
960
1006
 
961
1007
  # Make the actual compilation.
962
- result, options = compileTree()
1008
+ result, scons_options = compileTree()
963
1009
 
964
1010
  # Exit if compilation failed.
965
1011
  if not result:
966
- general.sysexit(exit_code=1, reporting=True)
1012
+ general.sysexit(
1013
+ message="Failed unexpectedly in Scons C backend compilation.",
1014
+ mnemonic="scons-backend-failure",
1015
+ reporting=True,
1016
+ )
967
1017
 
968
1018
  # Relaunch in case of Python PGO input to be produced.
969
- if Options.shallCreatePgoInput():
1019
+ if Options.shallCreatePythonPgoInput():
970
1020
  # Will not return.
971
1021
  pgo_filename = OutputDirectories.getPgoRunInputFilename()
972
1022
  general.info(
@@ -983,10 +1033,8 @@ def _main():
983
1033
 
984
1034
  executePostProcessing()
985
1035
 
986
- copyDataFiles()
987
-
988
1036
  if Options.isStandaloneMode():
989
- binary_filename = options["result_exe"]
1037
+ binary_filename = scons_options["result_exe"]
990
1038
 
991
1039
  setMainEntryPoint(binary_filename)
992
1040
 
@@ -1005,6 +1053,9 @@ def _main():
1005
1053
  standalone_entry_points=getStandaloneEntryPoints(),
1006
1054
  )
1007
1055
 
1056
+ copyDataFiles(standalone_entry_points=getStandaloneEntryPoints())
1057
+
1058
+ if Options.isStandaloneMode():
1008
1059
  Plugins.onStandaloneDistributionFinished(dist_dir)
1009
1060
 
1010
1061
  if Options.isOnefileMode():
@@ -1013,7 +1064,12 @@ def _main():
1013
1064
  if Options.isRemoveBuildDir():
1014
1065
  general.info("Removing dist folder '%s'." % dist_dir)
1015
1066
 
1016
- removeDirectory(path=dist_dir, ignore_errors=False)
1067
+ removeDirectory(
1068
+ path=dist_dir,
1069
+ logger=general,
1070
+ ignore_errors=False,
1071
+ extra_recommendation=None,
1072
+ )
1017
1073
  else:
1018
1074
  general.info(
1019
1075
  "Keeping dist folder '%s' for inspection, no need to use it."
@@ -1028,7 +1084,14 @@ def _main():
1028
1084
 
1029
1085
  # Make sure the scons report is cached before deleting it.
1030
1086
  readSconsReport(source_dir)
1031
- removeDirectory(path=source_dir, ignore_errors=False)
1087
+ readSconsErrorReport(source_dir)
1088
+
1089
+ removeDirectory(
1090
+ path=source_dir,
1091
+ logger=general,
1092
+ ignore_errors=False,
1093
+ extra_recommendation=None,
1094
+ )
1032
1095
  assert not os.path.exists(source_dir)
1033
1096
  else:
1034
1097
  general.info("Keeping build directory '%s'." % source_dir)
@@ -1040,22 +1103,32 @@ def _main():
1040
1103
  if Options.isStandaloneMode() and isMacOS():
1041
1104
  general.info(
1042
1105
  "Created binary that runs on macOS %s (%s) or higher."
1043
- % (options["macos_min_version"], options["macos_target_arch"])
1106
+ % (scons_options["macos_min_version"], scons_options["macos_target_arch"])
1044
1107
  )
1045
1108
 
1109
+ if scons_options["macos_target_arch"] != getArchitecture():
1110
+ general.warning(
1111
+ "It will only work as well as 'arch -%s %s %s' does."
1112
+ % (
1113
+ scons_options["macos_target_arch"],
1114
+ sys.executable,
1115
+ Options.getMainEntryPointFilenames()[0],
1116
+ ),
1117
+ mnemonic="macos-cross-compile",
1118
+ )
1119
+
1046
1120
  Plugins.onFinalResult(final_filename)
1047
1121
 
1048
1122
  if Options.shallMakeModule():
1049
1123
  base_path = OutputDirectories.getResultBasePath(onefile=False)
1050
1124
 
1051
- if os.path.isdir(base_path) and os.path.isfile(
1052
- os.path.join(base_path, "__init__.py")
1053
- ):
1125
+ if os.path.isdir(base_path) and getPackageDirFilename(base_path):
1054
1126
  general.warning(
1055
1127
  """\
1056
1128
  The compilation result is hidden by package directory '%s'. Importing will \
1057
1129
  not use compiled code while it exists."""
1058
- % base_path
1130
+ % base_path,
1131
+ mnemonic="compiled-package-hidden-by-package",
1059
1132
  )
1060
1133
 
1061
1134
  general.info("Successfully created '%s'." % final_filename)
@@ -1068,18 +1141,12 @@ not use compiled code while it exists."""
1068
1141
 
1069
1142
  # Execute the module immediately if option was given.
1070
1143
  if Options.shallExecuteImmediately():
1071
- general.info("Launching '%s'" % run_filename)
1144
+ general.info("Launching '%s'." % run_filename)
1072
1145
 
1073
1146
  if Options.shallMakeModule():
1074
- executeModule(
1075
- tree=main_module,
1076
- clean_path=Options.shallClearPythonPathEnvironment(),
1077
- )
1147
+ _executeModule(tree=main_module)
1078
1148
  else:
1079
- executeMain(
1080
- binary_filename=run_filename,
1081
- clean_path=Options.shallClearPythonPathEnvironment(),
1082
- )
1149
+ _executeMain(run_filename)
1083
1150
  else:
1084
1151
  if run_filename != final_filename:
1085
1152
  general.info(
@@ -1094,7 +1161,33 @@ def main():
1094
1161
  except BaseException:
1095
1162
  try:
1096
1163
  writeCompilationReports(aborted=True)
1164
+ except KeyboardInterrupt:
1165
+ general.warning("""Report writing was prevented by user interrupt.""")
1097
1166
  except BaseException as e: # Catch all the things, pylint: disable=broad-except
1098
- general.warning("Report writing was prevented by exception %s" % e)
1167
+ general.warning(
1168
+ """\
1169
+ Report writing was prevented by exception %r, use option \
1170
+ '--experimental=debug-report-traceback' for full traceback."""
1171
+ % e
1172
+ )
1173
+
1174
+ if isExperimental("debug-report-traceback"):
1175
+ raise
1099
1176
 
1100
1177
  raise
1178
+
1179
+
1180
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
1181
+ # integrates with CPython, but also works on its own.
1182
+ #
1183
+ # Licensed under the Apache License, Version 2.0 (the "License");
1184
+ # you may not use this file except in compliance with the License.
1185
+ # You may obtain a copy of the License at
1186
+ #
1187
+ # http://www.apache.org/licenses/LICENSE-2.0
1188
+ #
1189
+ # Unless required by applicable law or agreed to in writing, software
1190
+ # distributed under the License is distributed on an "AS IS" BASIS,
1191
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1192
+ # See the License for the specific language governing permissions and
1193
+ # limitations under the License.