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/reports/Reports.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
  """ Collection of information for reports and their writing.
19
5
 
20
6
  These reports are in XML form, and with Jinja2 templates in any form you like.
@@ -29,10 +15,14 @@ import traceback
29
15
  from nuitka import TreeXML
30
16
  from nuitka.__past__ import unicode
31
17
  from nuitka.build.DataComposerInterface import getDataComposerReportValues
18
+ from nuitka.build.SconsUtils import readSconsErrorReport
19
+ from nuitka.code_generation.ConstantCodes import getDistributionMetadataValues
32
20
  from nuitka.containers.OrderedSets import OrderedSet
33
21
  from nuitka.freezer.IncludedDataFiles import getIncludedDataFiles
34
22
  from nuitka.freezer.IncludedEntryPoints import getStandaloneEntryPoints
23
+ from nuitka.freezer.Standalone import getRemovedUsedDllsInfo
35
24
  from nuitka.importing.Importing import getPackageSearchPath
25
+ from nuitka.importing.Recursion import getRecursionDecisions
36
26
  from nuitka.ModuleRegistry import (
37
27
  getDoneModules,
38
28
  getModuleInclusionInfoByName,
@@ -43,17 +33,46 @@ from nuitka.Options import (
43
33
  getCompilationReportFilename,
44
34
  getCompilationReportTemplates,
45
35
  getCompilationReportUserData,
36
+ isOnefileMode,
46
37
  shallCreateDiffableCompilationReport,
47
38
  )
39
+ from nuitka.OutputDirectories import (
40
+ getResultRunFilename,
41
+ getSourceDirectoryPath,
42
+ hasMainModule,
43
+ )
48
44
  from nuitka.plugins.Plugins import getActivePlugins
49
45
  from nuitka.PythonFlavors import getPythonFlavorName
50
- from nuitka.PythonVersions import getSystemPrefixPath, python_version_full_str
46
+ from nuitka.PythonVersions import (
47
+ getLaunchingSystemPrefixPath,
48
+ getSystemPrefixPath,
49
+ python_version_full_str,
50
+ )
51
51
  from nuitka.Tracing import ReportingSystemExit, reports_logger
52
- from nuitka.utils.Distributions import getDistributionsFromModuleName
53
- from nuitka.utils.FileOperations import getReportPath, putTextFileContents
52
+ from nuitka.utils.Distributions import (
53
+ getDistributionInstallerName,
54
+ getDistributionLicense,
55
+ getDistributionName,
56
+ getDistributionsFromModuleName,
57
+ getDistributionVersion,
58
+ )
59
+ from nuitka.utils.FileOperations import (
60
+ getReportPath,
61
+ putBinaryFileContents,
62
+ putTextFileContents,
63
+ )
54
64
  from nuitka.utils.Jinja2 import getTemplate
55
65
  from nuitka.utils.MemoryUsage import getMemoryInfos
56
- from nuitka.utils.Utils import getArchitecture, getOS
66
+ from nuitka.utils.Utils import (
67
+ getArchitecture,
68
+ getLinuxDistribution,
69
+ getMacOSRelease,
70
+ getOS,
71
+ getWindowsRelease,
72
+ isLinux,
73
+ isMacOS,
74
+ isWin32OrPosixWindows,
75
+ )
57
76
  from nuitka.Version import getCommercialVersion, getNuitkaVersion
58
77
 
59
78
 
@@ -61,7 +80,8 @@ def _getReportInputData(aborted):
61
80
  """Collect all information for reporting into a dictionary."""
62
81
 
63
82
  # used with locals for laziness and these are to populate a dictionary with
64
- # many entries, pylint: disable=possibly-unused-variable,too-many-locals
83
+ # many entries,
84
+ # pylint: disable=possibly-unused-variable,too-many-branches,too-many-locals,too-many-statements
65
85
 
66
86
  module_names = tuple(module.getFullName() for module in getDoneModules())
67
87
 
@@ -88,8 +108,14 @@ def _getReportInputData(aborted):
88
108
  for module in getDoneModules()
89
109
  )
90
110
 
111
+ module_usages = dict(
112
+ (module.getFullName(), tuple(module.getUsedModules()))
113
+ for module in getDoneModules()
114
+ )
115
+
91
116
  module_distributions = {}
92
117
  distribution_modules = {}
118
+
93
119
  for module in getDoneModules():
94
120
  module_distributions[module.getFullName()] = getDistributionsFromModuleName(
95
121
  module.getFullName()
@@ -100,9 +126,19 @@ def _getReportInputData(aborted):
100
126
 
101
127
  distribution_modules[_distribution].add(module.getFullName())
102
128
 
103
- module_usages = dict(
104
- (module.getFullName(), module.getUsedModules()) for module in getDoneModules()
105
- )
129
+ module_distribution_usages = {}
130
+ for module in getDoneModules():
131
+ module_distribution_usages[module.getFullName()] = OrderedSet()
132
+
133
+ for _module_usage in module_usages[module.getFullName()]:
134
+ if _module_usage.module_name not in module_usages:
135
+ continue
136
+
137
+ module_distribution_usages[module.getFullName()].update(
138
+ dist
139
+ for dist in module_distributions[_module_usage.module_name]
140
+ if dist not in module_distributions[module.getFullName()]
141
+ )
106
142
 
107
143
  module_distribution_names = dict(
108
144
  (module.getFullName(), module.getUsedDistributions())
@@ -112,10 +148,55 @@ def _getReportInputData(aborted):
112
148
  all_distributions = tuple(
113
149
  sorted(
114
150
  set(sum(module_distributions.values(), ())),
115
- key=lambda dist: dist.metadata["Name"],
151
+ key=getDistributionName,
116
152
  )
117
153
  )
118
154
 
155
+ module_distribution_installers = dict(
156
+ (
157
+ getDistributionName(dist),
158
+ getDistributionInstallerName(getDistributionName(dist)),
159
+ )
160
+ for dist in all_distributions
161
+ )
162
+
163
+ module_exclusions = dict((module.getFullName(), {}) for module in getDoneModules())
164
+
165
+ # TODO: The module filename, and other things can be None. Once we change to
166
+ # namedtuples, we need to adapt the type check.
167
+ def _replaceNoneWithString(value):
168
+ if type(value) is tuple:
169
+ return tuple(_replaceNoneWithString(element) for element in value)
170
+
171
+ return value if value is not None else ""
172
+
173
+ for (
174
+ _using_module_name,
175
+ _module_filename,
176
+ _module_name,
177
+ _module_kind,
178
+ _extra_recursion,
179
+ ), (_decision, _reason) in sorted(
180
+ getRecursionDecisions().items(), key=_replaceNoneWithString
181
+ ):
182
+ if _decision is not False:
183
+ continue
184
+
185
+ if _using_module_name is None:
186
+ continue
187
+
188
+ # We might be interrupted, and have this information, but never actually
189
+ # finished the module.
190
+ if _using_module_name not in module_exclusions:
191
+ continue
192
+
193
+ module_exclusions[_using_module_name][_module_name] = _reason
194
+
195
+ included_metadata = dict(
196
+ (distribution_name, meta_data_value.reasons)
197
+ for distribution_name, meta_data_value in getDistributionMetadataValues()
198
+ )
199
+
119
200
  memory_infos = getMemoryInfos()
120
201
 
121
202
  python_exe = sys.executable
@@ -125,6 +206,18 @@ def _getReportInputData(aborted):
125
206
  os_name = getOS()
126
207
  arch_name = getArchitecture()
127
208
 
209
+ # Record system encoding, spell-checker: ignore getfilesystemencoding
210
+ filesystem_encoding = sys.getfilesystemencoding()
211
+
212
+ if isWin32OrPosixWindows():
213
+ os_release = str(getWindowsRelease())
214
+ elif isLinux():
215
+ os_release = "-".join(x for x in getLinuxDistribution() if x)
216
+ elif isMacOS():
217
+ os_release = getMacOSRelease()
218
+ else:
219
+ os_release = "unknown"
220
+
128
221
  nuitka_version = getNuitkaVersion()
129
222
  nuitka_commercial_version = getCommercialVersion() or "not installed"
130
223
 
@@ -136,6 +229,17 @@ def _getReportInputData(aborted):
136
229
 
137
230
  data_composer = getDataComposerReportValues()
138
231
 
232
+ if hasMainModule():
233
+ output_run_filename = os.path.abspath(
234
+ getResultRunFilename(onefile=isOnefileMode())
235
+ )
236
+ scons_error_report_data = readSconsErrorReport(
237
+ source_dir=getSourceDirectoryPath()
238
+ )
239
+ else:
240
+ scons_error_report_data = {}
241
+ output_run_filename = "failed too early"
242
+
139
243
  return dict(
140
244
  (var_name, var_value)
141
245
  for var_name, var_value in locals().items()
@@ -154,7 +258,7 @@ def _getReportPathPrefixes():
154
258
  if _report_prefixes is None:
155
259
  _report_prefixes = []
156
260
 
157
- sys_prefix = os.environ.get("NUITKA_SYS_PREFIX", sys.prefix)
261
+ sys_prefix = getLaunchingSystemPrefixPath() or sys.prefix
158
262
  real_sys_prefix = getSystemPrefixPath()
159
263
 
160
264
  if real_sys_prefix != sys_prefix:
@@ -171,7 +275,8 @@ def _getCompilationReportPath(path):
171
275
 
172
276
 
173
277
  def _addModulesToReport(root, report_input_data, diffable):
174
- # Many details to work with, pylint: disable=too-many-locals
278
+ # Many details to work with,
279
+ # pylint: disable=too-many-branches,too-many-locals,too-many-statements
175
280
 
176
281
  for module_name in report_input_data["module_names"]:
177
282
  active_module_info = report_input_data["module_inclusion_infos"][module_name]
@@ -188,6 +293,13 @@ def _addModulesToReport(root, report_input_data, diffable):
188
293
  ),
189
294
  )
190
295
 
296
+ distributions = report_input_data["module_distributions"][module_name]
297
+
298
+ if distributions:
299
+ module_xml_node.attrib["distribution"] = ",".join(
300
+ getDistributionName(dist) for dist in distributions
301
+ )
302
+
191
303
  for plugin_name, influence, detail in report_input_data[
192
304
  "module_plugin_influences"
193
305
  ][module_name]:
@@ -199,8 +311,34 @@ def _addModulesToReport(root, report_input_data, diffable):
199
311
  condition, condition_tags_used, condition_result = detail
200
312
 
201
313
  influence_xml_node.attrib["condition"] = condition
202
- influence_xml_node.attrib["tags_used"] = ",".join(condition_tags_used)
314
+ if condition_tags_used:
315
+ influence_xml_node.attrib["tags_used"] = ",".join(
316
+ condition_tags_used
317
+ )
203
318
  influence_xml_node.attrib["result"] = str(condition_result).lower()
319
+ elif influence == "variable-used":
320
+ variable_name, condition_tags_used, variable_value = detail
321
+
322
+ influence_xml_node.attrib["variable"] = variable_name
323
+ if condition_tags_used:
324
+ influence_xml_node.attrib["tags_used"] = ",".join(
325
+ condition_tags_used
326
+ )
327
+ influence_xml_node.attrib["value"] = variable_value
328
+ elif influence == "parameter-used":
329
+ parameter_name, condition_tags_used, parameter_value = detail
330
+
331
+ influence_xml_node.attrib["parameter"] = parameter_name
332
+ if condition_tags_used:
333
+ influence_xml_node.attrib["tags_used"] = ",".join(
334
+ condition_tags_used
335
+ )
336
+ influence_xml_node.attrib["value"] = repr(parameter_value)
337
+ elif influence == "detection":
338
+ detection_name, detection_value = detail
339
+
340
+ influence_xml_node.attrib["detection"] = detection_name
341
+ influence_xml_node.attrib["value"] = repr(detection_value)
204
342
  else:
205
343
  assert False, influence
206
344
 
@@ -217,21 +355,35 @@ def _addModulesToReport(root, report_input_data, diffable):
217
355
  "volatile" if diffable else "%.2f" % timing_info.time_used
218
356
  )
219
357
 
358
+ if timing_info.micro_passes:
359
+ timing_xml_node.attrib["micro_passes"] = str(timing_info.micro_passes)
360
+
361
+ if timing_info.merge_counts:
362
+ merged_total = 0
363
+
364
+ for branch_count, merge_count in timing_info.merge_counts.items():
365
+ merged_total += branch_count * merge_count
366
+
367
+ max_merge_size = max(timing_info.merge_counts)
368
+
369
+ timing_xml_node.attrib["max_branch_merge"] = str(max_merge_size)
370
+ timing_xml_node.attrib["merged_total"] = str(merged_total)
371
+
220
372
  module_xml_node.append(timing_xml_node)
221
373
 
222
- distributions = report_input_data["module_distributions"][module_name]
374
+ distributions = report_input_data["module_distribution_usages"][module_name]
223
375
 
224
376
  if distributions:
225
377
  distributions_xml_node = TreeXML.appendTreeElement(
226
378
  module_xml_node,
227
- "distributions",
379
+ "distribution-usages",
228
380
  )
229
381
 
230
382
  for distribution in distributions:
231
383
  TreeXML.appendTreeElement(
232
384
  distributions_xml_node,
233
- "distribution-used",
234
- name=distribution.metadata["Name"],
385
+ "distribution-usage",
386
+ name=getDistributionName(distribution),
235
387
  )
236
388
 
237
389
  module_distribution_names = report_input_data["module_distribution_names"][
@@ -247,7 +399,7 @@ def _addModulesToReport(root, report_input_data, diffable):
247
399
  for distribution_name, found in module_distribution_names.items():
248
400
  TreeXML.appendTreeElement(
249
401
  module_distribution_names_xml_node,
250
- "distribution",
402
+ "distribution-lookup",
251
403
  name=distribution_name,
252
404
  found="yes" if found else "no",
253
405
  )
@@ -257,15 +409,48 @@ def _addModulesToReport(root, report_input_data, diffable):
257
409
  "module_usages",
258
410
  )
259
411
 
260
- for used_module in report_input_data["module_usages"][module_name]:
261
- TreeXML.appendTreeElement(
412
+ for count, used_module in enumerate(
413
+ report_input_data["module_usages"][module_name]
414
+ ):
415
+ # We don't want to see those parent imports, unless they have
416
+ # an effect.
417
+ if used_module.reason == "import path parent":
418
+ while True:
419
+ count += 1
420
+ next_used_module = report_input_data["module_usages"][module_name][
421
+ count
422
+ ]
423
+
424
+ if next_used_module.reason != "import path parent":
425
+ break
426
+
427
+ exclusion_reason = report_input_data["module_exclusions"][
428
+ module_name
429
+ ].get(next_used_module.module_name)
430
+
431
+ if exclusion_reason is None or next_used_module.finding != "not-found":
432
+ continue
433
+
434
+ module_usage_node = TreeXML.appendTreeElement(
262
435
  used_modules_xml_node,
263
436
  "module_usage",
264
437
  name=used_module.module_name.asString(),
265
438
  finding=used_module.finding,
266
439
  line=str(used_module.source_ref.getLineNumber()),
440
+ # TODO: Add reason in a hotfix.
441
+ # reason=used_module.reason,
267
442
  )
268
443
 
444
+ exclusion_reason = report_input_data["module_exclusions"][module_name].get(
445
+ used_module.module_name
446
+ )
447
+
448
+ # Include reason why a module was excluded unless it is obvious like
449
+ # with built-in modules.
450
+ if exclusion_reason is not None and used_module.module_kind != "built-in":
451
+ module_usage_node.attrib["finding"] = "excluded"
452
+ module_usage_node.attrib["exclusion_reason"] = exclusion_reason
453
+
269
454
 
270
455
  def _addMemoryInfosToReport(performance_xml_node, memory_infos, diffable):
271
456
  for key, value in memory_infos.items():
@@ -340,6 +525,45 @@ def writeCompilationReport(report_filename, report_input_data, diffable):
340
525
 
341
526
  exception_xml_node.text = "\n" + traceback.format_exc()
342
527
 
528
+ if report_input_data["scons_error_report_data"]:
529
+ scons_error_reports_node = TreeXML.appendTreeElement(
530
+ root, "scons_error_reports"
531
+ )
532
+
533
+ for cmd, (stdout, stderr) in report_input_data[
534
+ "scons_error_report_data"
535
+ ].items():
536
+ scons_error_report_node = TreeXML.appendTreeElement(
537
+ scons_error_reports_node, "scons_error_report"
538
+ )
539
+
540
+ TreeXML.appendTreeElement(
541
+ scons_error_report_node,
542
+ "command",
543
+ ).text = cmd
544
+
545
+ if stdout:
546
+ if not stdout.startswith("\n"):
547
+ stdout = "\n" + stdout
548
+
549
+ stdout = stdout.rstrip("\n") + "\n"
550
+
551
+ TreeXML.appendTreeElement(
552
+ scons_error_report_node,
553
+ "stdout",
554
+ ).text = stdout
555
+
556
+ if stderr:
557
+ if not stderr.startswith("\n"):
558
+ stderr = "\n" + stderr
559
+
560
+ stderr = stderr.rstrip("\n") + "\n"
561
+
562
+ TreeXML.appendTreeElement(
563
+ scons_error_report_node,
564
+ "stderr",
565
+ ).text = stderr
566
+
343
567
  _addModulesToReport(
344
568
  root=root, report_input_data=report_input_data, diffable=diffable
345
569
  )
@@ -377,6 +601,22 @@ def writeCompilationReport(report_filename, report_input_data, diffable):
377
601
  tags=",".join(included_datafile.tags),
378
602
  )
379
603
 
604
+ if report_input_data["included_metadata"]:
605
+ metadata_node = TreeXML.appendTreeElement(
606
+ root,
607
+ "metadata",
608
+ )
609
+
610
+ for distribution_name, reasons in sorted(
611
+ report_input_data["included_metadata"].items()
612
+ ):
613
+ TreeXML.appendTreeElement(
614
+ metadata_node,
615
+ "included_metadata",
616
+ name=distribution_name,
617
+ reason=". ".join(reasons),
618
+ )
619
+
380
620
  for standalone_entry_point in getStandaloneEntryPoints():
381
621
  if standalone_entry_point.kind == "executable":
382
622
  continue
@@ -397,10 +637,20 @@ def writeCompilationReport(report_filename, report_input_data, diffable):
397
637
  source_path=_getCompilationReportPath(standalone_entry_point.source_path),
398
638
  package=standalone_entry_point.package_name or "",
399
639
  ignored="yes" if ignored else "no",
400
- reason=standalone_entry_point.reason
640
+ reason=standalone_entry_point.reason,
401
641
  # TODO: No reason yet.
402
642
  )
403
643
 
644
+ for standalone_entry_point, (reason, removed_dll_paths) in getRemovedUsedDllsInfo():
645
+ for removed_dll_path in removed_dll_paths:
646
+ TreeXML.appendTreeElement(
647
+ root,
648
+ "excluded_dll",
649
+ name=_getCompilationReportPath(removed_dll_path),
650
+ used_by=standalone_entry_point.dest_path,
651
+ reason=reason,
652
+ )
653
+
404
654
  if not diffable:
405
655
  data_composer_values = getDataComposerReportValues()
406
656
 
@@ -460,8 +710,11 @@ def writeCompilationReport(report_filename, report_input_data, diffable):
460
710
  TreeXML.appendTreeElement(
461
711
  distributions_xml_node,
462
712
  "distribution",
463
- name=distribution.metadata["Name"],
464
- version=distribution.metadata["Version"],
713
+ name=getDistributionName(distribution),
714
+ version=getDistributionVersion(distribution),
715
+ installer=report_input_data["module_distribution_installers"][
716
+ getDistributionName(distribution)
717
+ ],
465
718
  )
466
719
 
467
720
  python_xml_node = TreeXML.appendTreeElement(
@@ -471,25 +724,43 @@ def writeCompilationReport(report_filename, report_input_data, diffable):
471
724
  python_flavor=report_input_data["python_flavor"],
472
725
  python_version=report_input_data["python_version"],
473
726
  os_name=report_input_data["os_name"],
727
+ os_release=report_input_data["os_release"],
474
728
  arch_name=report_input_data["arch_name"],
729
+ filesystem_encoding=report_input_data["filesystem_encoding"],
475
730
  )
476
731
 
477
- search_path_xml_node = TreeXML.appendTreeElement(
478
- python_xml_node,
479
- "search_path",
480
- )
732
+ search_path = getPackageSearchPath(None)
481
733
 
482
- for search_path in getPackageSearchPath(None):
483
- TreeXML.appendTreeElement(
484
- search_path_xml_node,
485
- "path",
486
- value=_getCompilationReportPath(search_path),
734
+ if search_path is not None:
735
+ search_path_xml_node = TreeXML.appendTreeElement(
736
+ python_xml_node,
737
+ "search_path",
487
738
  )
488
739
 
740
+ for search_path in getPackageSearchPath(None):
741
+ TreeXML.appendTreeElement(
742
+ search_path_xml_node,
743
+ "path",
744
+ value=_getCompilationReportPath(search_path),
745
+ )
746
+
489
747
  _addUserDataToReport(root=root, user_data=report_input_data["user_data"])
490
748
 
749
+ python_xml_node = TreeXML.appendTreeElement(
750
+ root,
751
+ "output",
752
+ run_filename=_getCompilationReportPath(
753
+ report_input_data["output_run_filename"]
754
+ ),
755
+ )
756
+
757
+ contents = TreeXML.toString(root)
758
+
759
+ if type(contents) is not bytes:
760
+ contents = contents.encode("utf8")
761
+
491
762
  try:
492
- putTextFileContents(filename=report_filename, contents=TreeXML.toString(root))
763
+ putBinaryFileContents(filename=report_filename, contents=contents)
493
764
  except OSError as e:
494
765
  reports_logger.warning(
495
766
  "Compilation report write to file '%s' failed due to: %s."
@@ -499,9 +770,10 @@ def writeCompilationReport(report_filename, report_input_data, diffable):
499
770
  if _crash_report_filename == report_filename:
500
771
  _crash_report_filename = None
501
772
  else:
502
- reports_logger.info(
503
- "Compilation report written to file '%s'." % report_filename
504
- )
773
+ if _crash_report_filename != report_filename:
774
+ reports_logger.info(
775
+ "Compilation report written to file '%s'." % report_filename
776
+ )
505
777
 
506
778
 
507
779
  def writeCompilationReportFromTemplate(
@@ -514,25 +786,6 @@ def writeCompilationReportFromTemplate(
514
786
  extensions=("jinja2.ext.do",),
515
787
  )
516
788
 
517
- def get_distribution_license(distribution):
518
- license_name = distribution.metadata["License"]
519
-
520
- if license_name == "UNKNOWN":
521
- for classifier in (
522
- value
523
- for (key, value) in distribution.metadata.items()
524
- if "Classifier" in key
525
- ):
526
- parts = [part.strip() for part in classifier.split("::")]
527
- if not parts:
528
- continue
529
-
530
- if parts[0] == "License":
531
- license_name = parts[-1]
532
- break
533
-
534
- return license_name
535
-
536
789
  def quoted(value):
537
790
  if isinstance(value, str):
538
791
  return "'%s'" % value
@@ -541,7 +794,11 @@ def writeCompilationReportFromTemplate(
541
794
 
542
795
  report_text = template.render(
543
796
  # Get the license text.
544
- get_distribution_license=get_distribution_license,
797
+ get_distribution_license=getDistributionLicense,
798
+ # get the distribution_name
799
+ get_distribution_name=getDistributionName,
800
+ # get the distribution version
801
+ get_distribution_version=getDistributionVersion,
545
802
  # Quote a list of strings.
546
803
  quoted=quoted,
547
804
  # For checking length of lists.
@@ -563,15 +820,20 @@ def writeCompilationReportFromTemplate(
563
820
 
564
821
 
565
822
  _crash_report_filename = "nuitka-crash-report.xml"
823
+ _crash_report_bug_message = True
566
824
 
567
825
 
568
826
  def _informAboutCrashReport():
569
827
  if _crash_report_filename is not None:
828
+ message = (
829
+ "Compilation crash report written to file '%s'." % _crash_report_filename
830
+ )
831
+
832
+ if _crash_report_bug_message:
833
+ message += " Please include it in your bug report."
834
+
570
835
  reports_logger.info(
571
- """\
572
- Compilation crash report written to file '%s'. Please include it in \
573
- your bug report."""
574
- % _crash_report_filename,
836
+ message,
575
837
  style="red",
576
838
  )
577
839
 
@@ -588,6 +850,15 @@ def writeCompilationReports(aborted):
588
850
  ):
589
851
  report_filename = _crash_report_filename
590
852
 
853
+ # Inform user about bug reporting of a bug only, if this is not some sort
854
+ # of reporting exit, these do not constitute definitive bugs of Nuitka but
855
+ # are often usage errors only.
856
+
857
+ # Using global here, as this is really a singleton
858
+ # pylint: disable=global-statement
859
+ global _crash_report_bug_message
860
+ _crash_report_bug_message = sys.exc_info()[0] is not ReportingSystemExit
861
+
591
862
  atexit.register(_informAboutCrashReport)
592
863
 
593
864
  if report_filename or template_specs:
@@ -625,3 +896,19 @@ def writeCompilationReports(aborted):
625
896
  report_filename=report_filename,
626
897
  report_input_data=report_input_data,
627
898
  )
899
+
900
+
901
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
902
+ # integrates with CPython, but also works on its own.
903
+ #
904
+ # Licensed under the Apache License, Version 2.0 (the "License");
905
+ # you may not use this file except in compliance with the License.
906
+ # You may obtain a copy of the License at
907
+ #
908
+ # http://www.apache.org/licenses/LICENSE-2.0
909
+ #
910
+ # Unless required by applicable law or agreed to in writing, software
911
+ # distributed under the License is distributed on an "AS IS" BASIS,
912
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
913
+ # See the License for the specific language governing permissions and
914
+ # limitations under the License.
@@ -1,5 +1,8 @@
1
- # Copyright 2023, Kay Hayen, mailto:kay.hayen@gmail.com
2
- #
1
+ # Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
3
+
4
+ """ Dummy file to make this directory a package. """
5
+
3
6
  # Part of "Nuitka", an optimizing Python compiler that is compatible and
4
7
  # integrates with CPython, but also works on its own.
5
8
  #
@@ -14,5 +17,3 @@
14
17
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
18
  # See the License for the specific language governing permissions and
16
19
  # limitations under the License.
17
- #
18
- """ Dummy file to make this directory a package. """