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

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

Potentially problematic release.


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

Files changed (704) hide show
  1. Nuitka_winsvc-1.8.data/scripts/nuitka-run.bat → Nuitka_winsvc-2.4.8.data/scripts/nuitka-run.cmd +9 -9
  2. Nuitka_winsvc-1.8.data/scripts/nuitka.bat → Nuitka_winsvc-2.4.8.data/scripts/nuitka.cmd +15 -15
  3. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/METADATA +4 -3
  4. Nuitka_winsvc-2.4.8.dist-info/RECORD +954 -0
  5. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/WHEEL +1 -1
  6. nuitka/Builtins.py +18 -17
  7. nuitka/BytecodeCaching.py +24 -20
  8. nuitka/Bytecodes.py +23 -19
  9. nuitka/CacheCleanup.py +28 -23
  10. nuitka/Constants.py +19 -17
  11. nuitka/Errors.py +23 -17
  12. nuitka/HardImportRegistry.py +400 -0
  13. nuitka/MainControl.py +200 -112
  14. nuitka/ModuleRegistry.py +83 -20
  15. nuitka/OptionParsing.py +368 -175
  16. nuitka/Options.py +632 -213
  17. nuitka/OutputDirectories.py +40 -21
  18. nuitka/PostProcessing.py +73 -50
  19. nuitka/Progress.py +58 -24
  20. nuitka/PythonFlavors.py +141 -32
  21. nuitka/PythonOperators.py +18 -17
  22. nuitka/PythonVersions.py +106 -19
  23. nuitka/Serialization.py +68 -55
  24. nuitka/SourceCodeReferences.py +19 -17
  25. nuitka/Tracing.py +108 -70
  26. nuitka/TreeXML.py +31 -26
  27. nuitka/Variables.py +39 -41
  28. nuitka/Version.py +21 -7
  29. nuitka/__init__.py +5 -4
  30. nuitka/__main__.py +95 -29
  31. nuitka/__past__.py +44 -34
  32. nuitka/build/Backend.scons +202 -140
  33. nuitka/build/CCompilerVersion.scons +39 -31
  34. nuitka/build/DataComposerInterface.py +20 -17
  35. nuitka/build/Onefile.scons +50 -54
  36. nuitka/build/SconsCaching.py +93 -90
  37. nuitka/build/SconsCompilerSettings.py +157 -69
  38. nuitka/build/SconsHacks.py +25 -19
  39. nuitka/build/SconsInterface.py +154 -54
  40. nuitka/build/SconsProgress.py +19 -18
  41. nuitka/build/SconsSpawn.py +62 -33
  42. nuitka/build/SconsUtils.py +147 -55
  43. nuitka/build/__init__.py +5 -4
  44. nuitka/build/include/nuitka/allocator.h +105 -22
  45. nuitka/build/include/nuitka/builtins.h +17 -17
  46. nuitka/build/include/nuitka/calling.h +18 -18
  47. nuitka/build/include/nuitka/checkers.h +17 -18
  48. nuitka/build/include/nuitka/checksum_tools.h +14 -19
  49. nuitka/build/include/nuitka/compiled_asyncgen.h +18 -18
  50. nuitka/build/include/nuitka/compiled_cell.h +33 -18
  51. nuitka/build/include/nuitka/compiled_coroutine.h +18 -18
  52. nuitka/build/include/nuitka/compiled_frame.h +91 -53
  53. nuitka/build/include/nuitka/compiled_function.h +42 -20
  54. nuitka/build/include/nuitka/compiled_generator.h +24 -18
  55. nuitka/build/include/nuitka/compiled_method.h +17 -18
  56. nuitka/build/include/nuitka/constants.h +29 -18
  57. nuitka/build/include/nuitka/constants_blob.h +17 -17
  58. nuitka/build/include/nuitka/environment_variables.h +30 -0
  59. nuitka/build/include/nuitka/environment_variables_system.h +45 -0
  60. nuitka/build/include/nuitka/exception_groups.h +23 -26
  61. nuitka/build/include/nuitka/exceptions.h +593 -190
  62. nuitka/build/include/nuitka/filesystem_paths.h +26 -20
  63. nuitka/build/include/nuitka/freelists.h +38 -18
  64. nuitka/build/include/nuitka/helper/attributes.h +24 -18
  65. nuitka/build/include/nuitka/helper/boolean.h +17 -17
  66. nuitka/build/include/nuitka/helper/bytearrays.h +17 -17
  67. nuitka/build/include/nuitka/helper/bytes.h +14 -15
  68. nuitka/build/include/nuitka/helper/calling_generated.h +17 -17
  69. nuitka/build/include/nuitka/helper/comparisons_eq.h +17 -17
  70. nuitka/build/include/nuitka/helper/comparisons_ge.h +17 -17
  71. nuitka/build/include/nuitka/helper/comparisons_gt.h +17 -17
  72. nuitka/build/include/nuitka/helper/comparisons_le.h +17 -17
  73. nuitka/build/include/nuitka/helper/comparisons_lt.h +17 -17
  74. nuitka/build/include/nuitka/helper/comparisons_ne.h +17 -17
  75. nuitka/build/include/nuitka/helper/complex.h +17 -17
  76. nuitka/build/include/nuitka/helper/dictionaries.h +24 -22
  77. nuitka/build/include/nuitka/helper/floats.h +17 -18
  78. nuitka/build/include/nuitka/helper/import_hard.h +25 -17
  79. nuitka/build/include/nuitka/helper/indexes.h +17 -18
  80. nuitka/build/include/nuitka/helper/ints.h +32 -20
  81. nuitka/build/include/nuitka/helper/iterators.h +17 -17
  82. nuitka/build/include/nuitka/helper/lists.h +26 -24
  83. nuitka/build/include/nuitka/helper/lists_generated.h +22 -22
  84. nuitka/build/include/nuitka/helper/mappings.h +17 -18
  85. nuitka/build/include/nuitka/helper/operations.h +17 -17
  86. nuitka/build/include/nuitka/helper/operations_binary_add.h +17 -17
  87. nuitka/build/include/nuitka/helper/operations_binary_bitand.h +17 -17
  88. nuitka/build/include/nuitka/helper/operations_binary_bitor.h +17 -17
  89. nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +17 -17
  90. nuitka/build/include/nuitka/helper/operations_binary_divmod.h +17 -17
  91. nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +17 -17
  92. nuitka/build/include/nuitka/helper/operations_binary_lshift.h +17 -17
  93. nuitka/build/include/nuitka/helper/operations_binary_matmult.h +17 -17
  94. nuitka/build/include/nuitka/helper/operations_binary_mod.h +17 -17
  95. nuitka/build/include/nuitka/helper/operations_binary_mult.h +17 -17
  96. nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +17 -17
  97. nuitka/build/include/nuitka/helper/operations_binary_pow.h +17 -17
  98. nuitka/build/include/nuitka/helper/operations_binary_rshift.h +17 -17
  99. nuitka/build/include/nuitka/helper/operations_binary_sub.h +17 -17
  100. nuitka/build/include/nuitka/helper/operations_binary_truediv.h +17 -17
  101. nuitka/build/include/nuitka/helper/operations_builtin_types.h +17 -17
  102. nuitka/build/include/nuitka/helper/operations_inplace_add.h +17 -17
  103. nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +17 -17
  104. nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +17 -17
  105. nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +17 -17
  106. nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +17 -17
  107. nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +17 -17
  108. nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +17 -17
  109. nuitka/build/include/nuitka/helper/operations_inplace_mod.h +17 -17
  110. nuitka/build/include/nuitka/helper/operations_inplace_mult.h +17 -17
  111. nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +17 -17
  112. nuitka/build/include/nuitka/helper/operations_inplace_pow.h +17 -17
  113. nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +17 -17
  114. nuitka/build/include/nuitka/helper/operations_inplace_sub.h +17 -17
  115. nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
  116. nuitka/build/include/nuitka/helper/raising.h +29 -17
  117. nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
  118. nuitka/build/include/nuitka/helper/richcomparisons.h +14 -14
  119. nuitka/build/include/nuitka/helper/sequences.h +19 -13
  120. nuitka/build/include/nuitka/helper/sets.h +11 -12
  121. nuitka/build/include/nuitka/helper/slices.h +31 -25
  122. nuitka/build/include/nuitka/helper/strings.h +16 -17
  123. nuitka/build/include/nuitka/helper/subscripts.h +18 -201
  124. nuitka/build/include/nuitka/helper/tuples.h +64 -52
  125. nuitka/build/include/nuitka/helpers.h +38 -20
  126. nuitka/build/include/nuitka/importing.h +28 -21
  127. nuitka/build/include/nuitka/jit_sources.h +25 -0
  128. nuitka/build/include/nuitka/prelude.h +128 -46
  129. nuitka/build/include/nuitka/printing.h +22 -17
  130. nuitka/build/include/nuitka/python_pgo.h +19 -18
  131. nuitka/build/include/nuitka/safe_string_ops.h +20 -18
  132. nuitka/build/include/nuitka/threading.h +32 -33
  133. nuitka/build/include/nuitka/tracing.h +28 -18
  134. nuitka/build/include/nuitka/type_aliases.h +27 -0
  135. nuitka/build/include/nuitka/unfreezing.h +29 -23
  136. nuitka/build/inline_copy/bin/scons.py +14 -0
  137. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +6 -6
  138. nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +0 -3
  139. nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
  140. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
  141. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
  142. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
  143. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
  144. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
  145. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
  146. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
  147. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
  148. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
  149. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
  150. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
  151. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
  152. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
  153. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
  154. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
  155. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
  156. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
  157. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
  158. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
  159. nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
  160. nuitka/build/inline_copy/tqdm/tqdm/__init__.py +2 -2
  161. nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +4 -1
  162. nuitka/build/inline_copy/tqdm/tqdm/utils.py +14 -8
  163. nuitka/build/inline_copy/tqdm/tqdm/version.py +1 -8
  164. nuitka/build/inline_copy/zlib/LICENSE +22 -0
  165. nuitka/build/inline_copy/zlib/crc32.c +1049 -0
  166. nuitka/build/inline_copy/zlib/crc32.h +9446 -0
  167. nuitka/build/inline_copy/zlib/zconf.h +551 -0
  168. nuitka/build/inline_copy/zlib/zlib.h +1938 -0
  169. nuitka/build/inline_copy/zlib/zutil.h +275 -0
  170. nuitka/build/static_src/CompiledAsyncgenType.c +176 -182
  171. nuitka/build/static_src/CompiledCellType.c +63 -40
  172. nuitka/build/static_src/CompiledCodeHelpers.c +181 -128
  173. nuitka/build/static_src/CompiledCoroutineType.c +196 -203
  174. nuitka/build/static_src/CompiledFrameType.c +287 -133
  175. nuitka/build/static_src/CompiledFunctionType.c +389 -95
  176. nuitka/build/static_src/CompiledGeneratorType.c +376 -252
  177. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +185 -198
  178. nuitka/build/static_src/CompiledMethodType.c +83 -71
  179. nuitka/build/static_src/HelpersAllocator.c +88 -19
  180. nuitka/build/static_src/HelpersAttributes.c +33 -54
  181. nuitka/build/static_src/HelpersBuiltin.c +43 -33
  182. nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
  183. nuitka/build/static_src/HelpersBytes.c +19 -20
  184. nuitka/build/static_src/HelpersCalling.c +33 -30
  185. nuitka/build/static_src/HelpersCallingGenerated.c +1000 -181
  186. nuitka/build/static_src/HelpersChecksumTools.c +35 -21
  187. nuitka/build/static_src/HelpersClasses.c +17 -17
  188. nuitka/build/static_src/HelpersComparisonEq.c +518 -492
  189. nuitka/build/static_src/HelpersComparisonEqUtils.c +21 -19
  190. nuitka/build/static_src/HelpersComparisonGe.c +513 -497
  191. nuitka/build/static_src/HelpersComparisonGt.c +512 -496
  192. nuitka/build/static_src/HelpersComparisonLe.c +513 -497
  193. nuitka/build/static_src/HelpersComparisonLt.c +512 -496
  194. nuitka/build/static_src/HelpersComparisonNe.c +520 -492
  195. nuitka/build/static_src/HelpersConsole.c +96 -0
  196. nuitka/build/static_src/HelpersConstantsBlob.c +542 -519
  197. nuitka/build/static_src/HelpersDeepcopy.c +33 -33
  198. nuitka/build/static_src/HelpersDictionaries.c +51 -29
  199. nuitka/build/static_src/HelpersDictionariesGenerated.c +177 -68
  200. nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
  201. nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
  202. nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +93 -0
  203. nuitka/build/static_src/HelpersExceptions.c +161 -50
  204. nuitka/build/static_src/HelpersFiles.c +37 -17
  205. nuitka/build/static_src/HelpersFilesystemPaths.c +292 -181
  206. nuitka/build/static_src/HelpersFloats.c +37 -31
  207. nuitka/build/static_src/HelpersHeapStorage.c +21 -17
  208. nuitka/build/static_src/HelpersImport.c +48 -20
  209. nuitka/build/static_src/HelpersImportHard.c +53 -17
  210. nuitka/build/static_src/HelpersJitSources.c +46 -0
  211. nuitka/build/static_src/HelpersLists.c +140 -50
  212. nuitka/build/static_src/HelpersListsGenerated.c +41 -41
  213. nuitka/build/static_src/HelpersMappings.c +17 -17
  214. nuitka/build/static_src/HelpersMatching.c +137 -51
  215. nuitka/build/static_src/HelpersOperationBinaryAdd.c +173 -146
  216. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +99 -52
  217. nuitka/build/static_src/HelpersOperationBinaryBitand.c +50 -50
  218. nuitka/build/static_src/HelpersOperationBinaryBitor.c +50 -50
  219. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +50 -50
  220. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +41 -41
  221. nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
  222. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +41 -41
  223. nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +20 -21
  224. nuitka/build/static_src/HelpersOperationBinaryLshift.c +47 -47
  225. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +24 -24
  226. nuitka/build/static_src/HelpersOperationBinaryMod.c +107 -107
  227. nuitka/build/static_src/HelpersOperationBinaryMult.c +81 -75
  228. nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +33 -30
  229. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +41 -41
  230. nuitka/build/static_src/HelpersOperationBinaryPow.c +44 -44
  231. nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
  232. nuitka/build/static_src/HelpersOperationBinaryRshift.c +47 -47
  233. nuitka/build/static_src/HelpersOperationBinarySub.c +80 -80
  234. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +41 -41
  235. nuitka/build/static_src/HelpersOperationInplaceAdd.c +171 -153
  236. nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +24 -22
  237. nuitka/build/static_src/HelpersOperationInplaceBitand.c +53 -53
  238. nuitka/build/static_src/HelpersOperationInplaceBitor.c +53 -53
  239. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +53 -53
  240. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +62 -62
  241. nuitka/build/static_src/HelpersOperationInplaceLshift.c +44 -44
  242. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +37 -37
  243. nuitka/build/static_src/HelpersOperationInplaceMod.c +134 -134
  244. nuitka/build/static_src/HelpersOperationInplaceMult.c +78 -78
  245. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +62 -62
  246. nuitka/build/static_src/HelpersOperationInplacePow.c +62 -62
  247. nuitka/build/static_src/HelpersOperationInplaceRshift.c +44 -44
  248. nuitka/build/static_src/HelpersOperationInplaceSub.c +112 -112
  249. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +62 -62
  250. nuitka/build/static_src/HelpersProfiling.c +24 -23
  251. nuitka/build/static_src/HelpersPythonPgo.c +22 -22
  252. nuitka/build/static_src/HelpersRaising.c +88 -20
  253. nuitka/build/static_src/HelpersSafeStrings.c +34 -22
  254. nuitka/build/static_src/HelpersSequences.c +18 -19
  255. nuitka/build/static_src/HelpersSlices.c +29 -23
  256. nuitka/build/static_src/HelpersStrings.c +234 -37
  257. nuitka/build/static_src/HelpersTuples.c +46 -34
  258. nuitka/build/static_src/HelpersTypes.c +68 -23
  259. nuitka/build/static_src/InspectPatcher.c +108 -27
  260. nuitka/build/static_src/MainProgram.c +359 -263
  261. nuitka/build/static_src/MetaPathBasedLoader.c +367 -242
  262. nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +39 -26
  263. nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
  264. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +97 -22
  265. nuitka/build/static_src/OnefileBootstrap.c +276 -164
  266. nuitka/build/static_src/OnefileSplashScreen.cpp +51 -27
  267. nuitka/code_generation/AsyncgenCodes.py +19 -17
  268. nuitka/code_generation/AttributeCodes.py +31 -27
  269. nuitka/code_generation/BinaryOperationHelperDefinitions.py +24 -20
  270. nuitka/code_generation/BranchCodes.py +19 -17
  271. nuitka/code_generation/BuiltinCodes.py +20 -17
  272. nuitka/code_generation/CallCodes.py +19 -17
  273. nuitka/code_generation/ClassCodes.py +19 -17
  274. nuitka/code_generation/CodeGeneration.py +48 -27
  275. nuitka/code_generation/CodeHelperSelection.py +19 -17
  276. nuitka/code_generation/CodeHelpers.py +24 -20
  277. nuitka/code_generation/CodeObjectCodes.py +34 -24
  278. nuitka/code_generation/ComparisonCodes.py +38 -20
  279. nuitka/code_generation/ComparisonHelperDefinitions.py +19 -17
  280. nuitka/code_generation/ConditionalCodes.py +19 -17
  281. nuitka/code_generation/ConstantCodes.py +82 -28
  282. nuitka/code_generation/Contexts.py +152 -26
  283. nuitka/code_generation/CoroutineCodes.py +19 -17
  284. nuitka/code_generation/CtypesCodes.py +19 -17
  285. nuitka/code_generation/DictCodes.py +25 -23
  286. nuitka/code_generation/Emission.py +21 -18
  287. nuitka/code_generation/ErrorCodes.py +27 -33
  288. nuitka/code_generation/EvalCodes.py +24 -20
  289. nuitka/code_generation/ExceptionCodes.py +27 -18
  290. nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +20 -17
  291. nuitka/code_generation/ExpressionCodes.py +19 -17
  292. nuitka/code_generation/FrameCodes.py +24 -20
  293. nuitka/code_generation/FunctionCodes.py +24 -21
  294. nuitka/code_generation/GeneratorCodes.py +23 -20
  295. nuitka/code_generation/GlobalConstants.py +43 -23
  296. nuitka/code_generation/GlobalsLocalsCodes.py +21 -19
  297. nuitka/code_generation/IdCodes.py +19 -17
  298. nuitka/code_generation/ImportCodes.py +90 -50
  299. nuitka/code_generation/Indentation.py +23 -22
  300. nuitka/code_generation/IndexCodes.py +19 -17
  301. nuitka/code_generation/InjectCCodes.py +14 -12
  302. nuitka/code_generation/IntegerCodes.py +19 -17
  303. nuitka/code_generation/IteratorCodes.py +19 -17
  304. nuitka/code_generation/JitCodes.py +44 -0
  305. nuitka/code_generation/LabelCodes.py +19 -17
  306. nuitka/code_generation/LineNumberCodes.py +19 -17
  307. nuitka/code_generation/ListCodes.py +32 -36
  308. nuitka/code_generation/LoaderCodes.py +22 -17
  309. nuitka/code_generation/LocalsDictCodes.py +56 -32
  310. nuitka/code_generation/LoopCodes.py +19 -17
  311. nuitka/code_generation/MatchCodes.py +42 -22
  312. nuitka/code_generation/ModuleCodes.py +43 -25
  313. nuitka/code_generation/Namify.py +27 -23
  314. nuitka/code_generation/NetworkxCodes.py +51 -0
  315. nuitka/code_generation/OperationCodes.py +29 -31
  316. nuitka/code_generation/PackageResourceCodes.py +59 -23
  317. nuitka/code_generation/PrintCodes.py +19 -17
  318. nuitka/code_generation/PythonAPICodes.py +19 -17
  319. nuitka/code_generation/RaisingCodes.py +19 -17
  320. nuitka/code_generation/Reports.py +19 -17
  321. nuitka/code_generation/ReturnCodes.py +19 -17
  322. nuitka/code_generation/SetCodes.py +19 -17
  323. nuitka/code_generation/SliceCodes.py +22 -20
  324. nuitka/code_generation/StringCodes.py +19 -17
  325. nuitka/code_generation/SubscriptCodes.py +24 -30
  326. nuitka/code_generation/TensorflowCodes.py +54 -0
  327. nuitka/code_generation/TryCodes.py +19 -17
  328. nuitka/code_generation/TupleCodes.py +20 -18
  329. nuitka/code_generation/TypeAliasCodes.py +71 -0
  330. nuitka/code_generation/VariableCodes.py +26 -22
  331. nuitka/code_generation/VariableDeclarations.py +20 -17
  332. nuitka/code_generation/YieldCodes.py +22 -20
  333. nuitka/code_generation/__init__.py +5 -4
  334. nuitka/code_generation/c_types/CTypeBases.py +19 -17
  335. nuitka/code_generation/c_types/CTypeBooleans.py +19 -17
  336. nuitka/code_generation/c_types/CTypeCFloats.py +19 -17
  337. nuitka/code_generation/c_types/CTypeCLongs.py +19 -18
  338. nuitka/code_generation/c_types/CTypeModuleDictVariables.py +19 -17
  339. nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +19 -17
  340. nuitka/code_generation/c_types/CTypeNuitkaInts.py +19 -18
  341. nuitka/code_generation/c_types/CTypeNuitkaVoids.py +19 -17
  342. nuitka/code_generation/c_types/CTypePyObjectPointers.py +27 -25
  343. nuitka/code_generation/c_types/CTypeVoids.py +20 -17
  344. nuitka/code_generation/c_types/__init__.py +5 -4
  345. nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +18 -17
  346. nuitka/code_generation/templates/CodeTemplatesConstants.py +132 -36
  347. nuitka/code_generation/templates/CodeTemplatesCoroutines.py +18 -17
  348. nuitka/code_generation/templates/CodeTemplatesExceptions.py +19 -18
  349. nuitka/code_generation/templates/CodeTemplatesFrames.py +18 -17
  350. nuitka/code_generation/templates/CodeTemplatesFunction.py +18 -17
  351. nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +19 -17
  352. nuitka/code_generation/templates/CodeTemplatesIterators.py +18 -18
  353. nuitka/code_generation/templates/CodeTemplatesLoader.py +25 -19
  354. nuitka/code_generation/templates/CodeTemplatesModules.py +244 -165
  355. nuitka/code_generation/templates/CodeTemplatesVariables.py +42 -27
  356. nuitka/code_generation/templates/TemplateDebugWrapper.py +19 -18
  357. nuitka/code_generation/templates/__init__.py +5 -4
  358. nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +19 -19
  359. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +18 -18
  360. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +76 -25
  361. nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +22 -22
  362. nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +19 -19
  363. nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +19 -19
  364. nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +17 -17
  365. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +121 -48
  366. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +18 -18
  367. nuitka/code_generation/templates_c/HelperLongTools.c.j2 +18 -18
  368. nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +6 -6
  369. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +23 -23
  370. nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +35 -35
  371. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +28 -28
  372. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +17 -17
  373. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +18 -18
  374. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +44 -32
  375. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +20 -20
  376. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +28 -28
  377. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +24 -24
  378. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +33 -29
  379. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +20 -20
  380. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +27 -27
  381. nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +17 -17
  382. nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +17 -17
  383. nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +17 -17
  384. nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +17 -17
  385. nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +21 -18
  386. nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +26 -24
  387. nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +17 -17
  388. nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +17 -17
  389. nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +21 -18
  390. nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +17 -17
  391. nuitka/containers/Namedtuples.py +19 -18
  392. nuitka/containers/OrderedSetsFallback.py +19 -17
  393. nuitka/containers/__init__.py +5 -4
  394. nuitka/distutils/Build.py +19 -18
  395. nuitka/distutils/DistutilCommands.py +34 -23
  396. nuitka/distutils/__init__.py +5 -4
  397. nuitka/finalizations/Finalization.py +20 -17
  398. nuitka/finalizations/FinalizeMarkups.py +21 -41
  399. nuitka/finalizations/__init__.py +5 -4
  400. nuitka/freezer/DependsExe.py +48 -28
  401. nuitka/freezer/DllDependenciesCommon.py +47 -20
  402. nuitka/freezer/DllDependenciesMacOS.py +147 -57
  403. nuitka/freezer/DllDependenciesPosix.py +29 -19
  404. nuitka/freezer/DllDependenciesWin32.py +29 -21
  405. nuitka/freezer/ImportDetection.py +20 -17
  406. nuitka/freezer/IncludedDataFiles.py +118 -47
  407. nuitka/freezer/IncludedEntryPoints.py +102 -38
  408. nuitka/freezer/Onefile.py +32 -22
  409. nuitka/freezer/Standalone.py +105 -50
  410. nuitka/freezer/__init__.py +5 -4
  411. nuitka/importing/IgnoreListing.py +19 -17
  412. nuitka/importing/ImportCache.py +24 -21
  413. nuitka/importing/ImportResolving.py +103 -95
  414. nuitka/importing/Importing.py +286 -92
  415. nuitka/importing/PreloadedPackages.py +21 -18
  416. nuitka/importing/Recursion.py +131 -47
  417. nuitka/importing/StandardLibrary.py +46 -28
  418. nuitka/importing/__init__.py +5 -4
  419. nuitka/nodes/AsyncgenNodes.py +19 -17
  420. nuitka/nodes/AttributeLookupNodes.py +19 -17
  421. nuitka/nodes/AttributeNodes.py +19 -17
  422. nuitka/nodes/AttributeNodesGenerated.py +49 -24
  423. nuitka/nodes/BuiltinAllNodes.py +19 -17
  424. nuitka/nodes/BuiltinAnyNodes.py +19 -17
  425. nuitka/nodes/BuiltinComplexNodes.py +20 -17
  426. nuitka/nodes/BuiltinDecodingNodes.py +19 -17
  427. nuitka/nodes/BuiltinDecoratorNodes.py +19 -17
  428. nuitka/nodes/BuiltinDictNodes.py +19 -17
  429. nuitka/nodes/BuiltinFormatNodes.py +20 -17
  430. nuitka/nodes/BuiltinHashNodes.py +19 -17
  431. nuitka/nodes/BuiltinInputNodes.py +19 -17
  432. nuitka/nodes/BuiltinIntegerNodes.py +19 -17
  433. nuitka/nodes/BuiltinIteratorNodes.py +24 -20
  434. nuitka/nodes/BuiltinLenNodes.py +19 -17
  435. nuitka/nodes/BuiltinNextNodes.py +19 -17
  436. nuitka/nodes/BuiltinOpenNodes.py +52 -18
  437. nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +40 -23
  438. nuitka/nodes/BuiltinRangeNodes.py +21 -19
  439. nuitka/nodes/BuiltinRefNodes.py +68 -19
  440. nuitka/nodes/BuiltinSumNodes.py +20 -18
  441. nuitka/nodes/BuiltinTypeNodes.py +19 -17
  442. nuitka/nodes/BuiltinVarsNodes.py +19 -18
  443. nuitka/nodes/BytesNodes.py +19 -17
  444. nuitka/nodes/CallNodes.py +19 -17
  445. nuitka/nodes/Checkers.py +19 -17
  446. nuitka/nodes/ChildrenHavingMixins.py +1250 -302
  447. nuitka/nodes/ClassNodes.py +49 -29
  448. nuitka/nodes/CodeObjectSpecs.py +29 -18
  449. nuitka/nodes/ComparisonNodes.py +19 -17
  450. nuitka/nodes/ConditionalNodes.py +21 -23
  451. nuitka/nodes/ConstantRefNodes.py +57 -17
  452. nuitka/nodes/ContainerMakingNodes.py +19 -17
  453. nuitka/nodes/ContainerOperationNodes.py +19 -17
  454. nuitka/nodes/CoroutineNodes.py +19 -17
  455. nuitka/nodes/CtypesNodes.py +19 -18
  456. nuitka/nodes/DictionaryNodes.py +19 -18
  457. nuitka/nodes/ExceptionNodes.py +29 -17
  458. nuitka/nodes/ExecEvalNodes.py +19 -17
  459. nuitka/nodes/ExpressionBases.py +34 -26
  460. nuitka/nodes/ExpressionBasesGenerated.py +54 -32
  461. nuitka/nodes/ExpressionShapeMixins.py +19 -17
  462. nuitka/nodes/FrameNodes.py +19 -17
  463. nuitka/nodes/FunctionAttributeNodes.py +19 -17
  464. nuitka/nodes/FunctionNodes.py +81 -35
  465. nuitka/nodes/FutureSpecs.py +35 -20
  466. nuitka/nodes/GeneratorNodes.py +21 -19
  467. nuitka/nodes/GlobalsLocalsNodes.py +22 -17
  468. nuitka/nodes/HardImportNodesGenerated.py +545 -129
  469. nuitka/nodes/ImportHardNodes.py +46 -38
  470. nuitka/nodes/ImportNodes.py +436 -446
  471. nuitka/nodes/IndicatorMixins.py +19 -17
  472. nuitka/nodes/InjectCNodes.py +19 -18
  473. nuitka/nodes/IterationHandles.py +55 -34
  474. nuitka/nodes/KeyValuePairNodes.py +19 -17
  475. nuitka/nodes/ListOperationNodes.py +33 -21
  476. nuitka/nodes/LocalsDictNodes.py +19 -17
  477. nuitka/nodes/LocalsScopes.py +41 -41
  478. nuitka/nodes/LoopNodes.py +28 -17
  479. nuitka/nodes/MatchNodes.py +37 -24
  480. nuitka/nodes/ModuleAttributeNodes.py +18 -35
  481. nuitka/nodes/ModuleNodes.py +90 -31
  482. nuitka/nodes/NetworkxNodes.py +45 -0
  483. nuitka/nodes/NodeBases.py +45 -43
  484. nuitka/nodes/NodeMakingHelpers.py +21 -19
  485. nuitka/nodes/NodeMetaClasses.py +45 -28
  486. nuitka/nodes/OperatorNodes.py +28 -26
  487. nuitka/nodes/OperatorNodesUnary.py +20 -17
  488. nuitka/nodes/OsSysNodes.py +66 -18
  489. nuitka/nodes/OutlineNodes.py +22 -20
  490. nuitka/nodes/PackageMetadataNodes.py +37 -27
  491. nuitka/nodes/PackageResourceNodes.py +29 -23
  492. nuitka/nodes/PrintNodes.py +19 -17
  493. nuitka/nodes/ReturnNodes.py +20 -18
  494. nuitka/nodes/SideEffectNodes.py +19 -17
  495. nuitka/nodes/SliceNodes.py +20 -18
  496. nuitka/nodes/StatementBasesGenerated.py +125 -77
  497. nuitka/nodes/StatementNodes.py +19 -17
  498. nuitka/nodes/StrNodes.py +19 -17
  499. nuitka/nodes/StringConcatenationNodes.py +20 -17
  500. nuitka/nodes/SubscriptNodes.py +26 -24
  501. nuitka/nodes/TensorflowNodes.py +38 -0
  502. nuitka/nodes/TryNodes.py +19 -17
  503. nuitka/nodes/TypeMatchNodes.py +19 -17
  504. nuitka/nodes/TypeNodes.py +40 -17
  505. nuitka/nodes/VariableAssignNodes.py +122 -64
  506. nuitka/nodes/VariableDelNodes.py +19 -17
  507. nuitka/nodes/VariableNameNodes.py +19 -17
  508. nuitka/nodes/VariableRefNodes.py +63 -26
  509. nuitka/nodes/VariableReleaseNodes.py +19 -17
  510. nuitka/nodes/YieldNodes.py +21 -19
  511. nuitka/nodes/__init__.py +5 -4
  512. nuitka/nodes/shapes/BuiltinTypeShapes.py +145 -39
  513. nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
  514. nuitka/nodes/shapes/ShapeMixins.py +40 -17
  515. nuitka/nodes/shapes/StandardShapes.py +27 -20
  516. nuitka/nodes/shapes/__init__.py +5 -4
  517. nuitka/optimizations/BytecodeDemotion.py +19 -17
  518. nuitka/optimizations/FunctionInlining.py +22 -23
  519. nuitka/optimizations/Graphs.py +19 -17
  520. nuitka/optimizations/Optimization.py +39 -35
  521. nuitka/optimizations/OptimizeBuiltinCalls.py +31 -27
  522. nuitka/optimizations/Tags.py +19 -18
  523. nuitka/optimizations/TraceCollections.py +67 -24
  524. nuitka/optimizations/ValueTraces.py +92 -25
  525. nuitka/optimizations/__init__.py +5 -4
  526. nuitka/pgo/PGO.py +33 -23
  527. nuitka/pgo/__init__.py +5 -4
  528. nuitka/plugins/PluginBase.py +610 -109
  529. nuitka/plugins/Plugins.py +241 -58
  530. nuitka/plugins/YamlPluginBase.py +121 -0
  531. nuitka/plugins/__init__.py +5 -4
  532. nuitka/plugins/standard/AntiBloatPlugin.py +357 -129
  533. nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +20 -19
  534. nuitka/plugins/standard/DataFilesPlugin.py +65 -29
  535. nuitka/plugins/standard/DelvewheelPlugin.py +32 -24
  536. nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
  537. nuitka/plugins/standard/DillPlugin/dill-postLoad.py +256 -0
  538. nuitka/plugins/standard/DillPlugin.py +42 -134
  539. nuitka/plugins/standard/DllFilesPlugin.py +125 -42
  540. nuitka/plugins/standard/EnumPlugin.py +19 -17
  541. nuitka/plugins/standard/EventletPlugin.py +19 -17
  542. nuitka/plugins/standard/GeventPlugin.py +19 -17
  543. nuitka/plugins/standard/GiPlugin.py +44 -28
  544. nuitka/plugins/standard/GlfwPlugin.py +20 -17
  545. nuitka/plugins/standard/ImplicitImports.py +407 -46
  546. nuitka/plugins/standard/KivyPlugin.py +30 -17
  547. nuitka/plugins/standard/MatplotlibPlugin.py +88 -42
  548. nuitka/plugins/standard/MultiprocessingPlugin.py +25 -20
  549. nuitka/plugins/standard/NumpyPlugin.py +19 -17
  550. nuitka/plugins/standard/OptionsNannyPlugin.py +48 -76
  551. nuitka/plugins/standard/PbrPlugin.py +21 -19
  552. nuitka/plugins/standard/PkgResourcesPlugin.py +34 -23
  553. nuitka/plugins/standard/PmwPlugin.py +30 -27
  554. nuitka/plugins/standard/PySidePyQtPlugin.py +74 -80
  555. nuitka/plugins/standard/PywebViewPlugin.py +19 -17
  556. nuitka/plugins/standard/SpacyPlugin.py +136 -0
  557. nuitka/plugins/standard/TensorflowPlugin.py +20 -17
  558. nuitka/plugins/standard/TkinterPlugin.py +103 -53
  559. nuitka/plugins/standard/TorchPlugin.py +20 -17
  560. nuitka/plugins/standard/TransformersPlugin.py +94 -30
  561. nuitka/plugins/standard/TrioPlugin.py +18 -15
  562. nuitka/plugins/standard/UpxPlugin.py +21 -19
  563. nuitka/plugins/standard/__init__.py +5 -4
  564. nuitka/plugins/standard/standard.nuitka-package.config.yml +3449 -1299
  565. nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +14 -14
  566. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +121 -66
  567. nuitka/reports/CompilationReportReader.py +67 -0
  568. nuitka/reports/LicenseReport.rst.j2 +21 -21
  569. nuitka/reports/Reports.py +352 -76
  570. nuitka/reports/__init__.py +5 -4
  571. nuitka/specs/BuiltinBytesOperationSpecs.py +18 -17
  572. nuitka/specs/BuiltinDictOperationSpecs.py +18 -17
  573. nuitka/specs/BuiltinListOperationSpecs.py +18 -17
  574. nuitka/specs/BuiltinParameterSpecs.py +30 -20
  575. nuitka/specs/BuiltinStrOperationSpecs.py +19 -18
  576. nuitka/specs/BuiltinTypeOperationSpecs.py +18 -18
  577. nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
  578. nuitka/specs/HardImportSpecs.py +67 -22
  579. nuitka/specs/ParameterSpecs.py +56 -41
  580. nuitka/specs/__init__.py +5 -4
  581. nuitka/tools/Basics.py +20 -18
  582. nuitka/tools/__init__.py +5 -4
  583. nuitka/tools/commercial/__init__.py +7 -6
  584. nuitka/tools/data_composer/DataComposer.py +78 -62
  585. nuitka/tools/data_composer/__init__.py +5 -4
  586. nuitka/tools/data_composer/__main__.py +18 -17
  587. nuitka/tools/environments/CreateEnvironment.py +20 -17
  588. nuitka/tools/environments/Virtualenv.py +60 -32
  589. nuitka/tools/environments/__init__.py +5 -4
  590. nuitka/tools/general/__init__.py +5 -4
  591. nuitka/tools/general/dll_report/__init__.py +5 -4
  592. nuitka/tools/general/dll_report/__main__.py +19 -21
  593. nuitka/tools/general/find_module/FindModuleCode.py +35 -22
  594. nuitka/tools/general/find_module/__init__.py +5 -4
  595. nuitka/tools/onefile_compressor/OnefileCompressor.py +213 -131
  596. nuitka/tools/onefile_compressor/__init__.py +5 -4
  597. nuitka/tools/onefile_compressor/__main__.py +18 -17
  598. nuitka/tools/podman/Podman.py +19 -17
  599. nuitka/tools/podman/__init__.py +5 -4
  600. nuitka/tools/podman/__main__.py +35 -19
  601. nuitka/tools/profiler/__init__.py +5 -4
  602. nuitka/tools/profiler/__main__.py +18 -17
  603. nuitka/tools/scanning/DisplayPackageDLLs.py +47 -22
  604. nuitka/tools/scanning/DisplayPackageData.py +31 -19
  605. nuitka/tools/scanning/__init__.py +5 -4
  606. nuitka/tools/specialize/CTypeDescriptions.py +93 -71
  607. nuitka/tools/specialize/Common.py +18 -17
  608. nuitka/tools/specialize/SpecializeC.py +31 -27
  609. nuitka/tools/specialize/SpecializePython.py +108 -45
  610. nuitka/tools/specialize/__init__.py +5 -4
  611. nuitka/tools/testing/Common.py +106 -52
  612. nuitka/tools/testing/Constructs.py +19 -17
  613. nuitka/tools/testing/OutputComparison.py +54 -18
  614. nuitka/tools/testing/Pythons.py +19 -18
  615. nuitka/tools/testing/RuntimeTracing.py +20 -19
  616. nuitka/tools/testing/SearchModes.py +26 -20
  617. nuitka/tools/testing/Valgrind.py +19 -17
  618. nuitka/tools/testing/__init__.py +5 -4
  619. nuitka/tools/testing/check_reference_counts/__init__.py +5 -4
  620. nuitka/tools/testing/check_reference_counts/__main__.py +18 -18
  621. nuitka/tools/testing/compare_with_cpython/__init__.py +5 -4
  622. nuitka/tools/testing/compare_with_cpython/__main__.py +36 -29
  623. nuitka/tools/testing/find_sxs_modules/__init__.py +5 -4
  624. nuitka/tools/testing/find_sxs_modules/__main__.py +17 -17
  625. nuitka/tools/testing/measure_construct_performance/__init__.py +5 -4
  626. nuitka/tools/testing/measure_construct_performance/__main__.py +22 -25
  627. nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
  628. nuitka/tools/testing/run_nuitka_tests/__main__.py +57 -40
  629. nuitka/tools/watch/AutoStage.py +144 -0
  630. nuitka/tools/watch/GitHub.py +113 -0
  631. nuitka/tools/watch/__init__.py +5 -4
  632. nuitka/tools/watch/__main__.py +322 -91
  633. nuitka/tree/Building.py +176 -147
  634. nuitka/tree/ComplexCallHelperFunctions.py +80 -58
  635. nuitka/tree/Extractions.py +19 -17
  636. nuitka/tree/InternalModule.py +29 -20
  637. nuitka/tree/Operations.py +19 -17
  638. nuitka/tree/ReformulationAssertStatements.py +20 -17
  639. nuitka/tree/ReformulationAssignmentStatements.py +92 -91
  640. nuitka/tree/ReformulationBooleanExpressions.py +19 -17
  641. nuitka/tree/ReformulationCallExpressions.py +20 -18
  642. nuitka/tree/ReformulationClasses.py +45 -39
  643. nuitka/tree/ReformulationClasses3.py +146 -98
  644. nuitka/tree/ReformulationComparisonExpressions.py +29 -35
  645. nuitka/tree/ReformulationContractionExpressions.py +58 -55
  646. nuitka/tree/ReformulationDictionaryCreation.py +40 -35
  647. nuitka/tree/ReformulationExecStatements.py +42 -39
  648. nuitka/tree/ReformulationForLoopStatements.py +30 -34
  649. nuitka/tree/ReformulationFunctionStatements.py +58 -54
  650. nuitka/tree/ReformulationImportStatements.py +34 -29
  651. nuitka/tree/ReformulationLambdaExpressions.py +23 -24
  652. nuitka/tree/ReformulationMatchStatements.py +244 -92
  653. nuitka/tree/ReformulationMultidist.py +22 -18
  654. nuitka/tree/ReformulationNamespacePackages.py +55 -46
  655. nuitka/tree/ReformulationPrintStatements.py +23 -24
  656. nuitka/tree/ReformulationSequenceCreation.py +50 -49
  657. nuitka/tree/ReformulationSubscriptExpressions.py +19 -17
  658. nuitka/tree/ReformulationTryExceptStatements.py +19 -17
  659. nuitka/tree/ReformulationTryFinallyStatements.py +34 -17
  660. nuitka/tree/ReformulationWhileLoopStatements.py +19 -17
  661. nuitka/tree/ReformulationWithStatements.py +39 -41
  662. nuitka/tree/ReformulationYieldExpressions.py +21 -19
  663. nuitka/tree/SourceHandling.py +76 -31
  664. nuitka/tree/SyntaxErrors.py +19 -17
  665. nuitka/tree/TreeHelpers.py +33 -20
  666. nuitka/tree/VariableClosure.py +35 -39
  667. nuitka/tree/__init__.py +5 -4
  668. nuitka/utils/AppDirs.py +41 -20
  669. nuitka/utils/CStrings.py +66 -21
  670. nuitka/utils/CommandLineOptions.py +84 -19
  671. nuitka/utils/Distributions.py +445 -54
  672. nuitka/utils/Download.py +89 -57
  673. nuitka/utils/Execution.py +73 -34
  674. nuitka/utils/FileOperations.py +318 -74
  675. nuitka/utils/Hashing.py +55 -33
  676. nuitka/utils/Images.py +26 -19
  677. nuitka/utils/Importing.py +118 -24
  678. nuitka/utils/InstalledPythons.py +80 -75
  679. nuitka/utils/InstanceCounters.py +20 -17
  680. nuitka/utils/Jinja2.py +30 -22
  681. nuitka/utils/Json.py +19 -17
  682. nuitka/utils/MacOSApp.py +26 -18
  683. nuitka/utils/MemoryUsage.py +20 -18
  684. nuitka/utils/ModuleNames.py +42 -26
  685. nuitka/utils/ReExecute.py +50 -28
  686. nuitka/utils/Rest.py +20 -17
  687. nuitka/utils/SharedLibraries.py +161 -75
  688. nuitka/utils/Shebang.py +20 -17
  689. nuitka/utils/Signing.py +63 -18
  690. nuitka/utils/SlotMetaClasses.py +57 -0
  691. nuitka/utils/StaticLibraries.py +83 -56
  692. nuitka/utils/ThreadedExecutor.py +18 -17
  693. nuitka/utils/Timing.py +22 -20
  694. nuitka/utils/Utils.py +115 -25
  695. nuitka/utils/WindowsFileUsage.py +22 -20
  696. nuitka/utils/WindowsResources.py +25 -18
  697. nuitka/utils/Yaml.py +62 -24
  698. nuitka/utils/__init__.py +5 -4
  699. Nuitka_winsvc-1.8.dist-info/RECORD +0 -905
  700. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_gui.py +0 -9
  701. nuitka/build/inline_copy/tqdm/tqdm/gui.py +0 -191
  702. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/LICENSE.txt +0 -0
  703. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/entry_points.txt +0 -0
  704. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/top_level.txt +0 -0
nuitka/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,13 @@ 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
35
23
  from nuitka.importing.Importing import getPackageSearchPath
24
+ from nuitka.importing.Recursion import getRecursionDecisions
36
25
  from nuitka.ModuleRegistry import (
37
26
  getDoneModules,
38
27
  getModuleInclusionInfoByName,
@@ -43,17 +32,46 @@ from nuitka.Options import (
43
32
  getCompilationReportFilename,
44
33
  getCompilationReportTemplates,
45
34
  getCompilationReportUserData,
35
+ isOnefileMode,
46
36
  shallCreateDiffableCompilationReport,
47
37
  )
38
+ from nuitka.OutputDirectories import (
39
+ getResultRunFilename,
40
+ getSourceDirectoryPath,
41
+ hasMainModule,
42
+ )
48
43
  from nuitka.plugins.Plugins import getActivePlugins
49
44
  from nuitka.PythonFlavors import getPythonFlavorName
50
- from nuitka.PythonVersions import getSystemPrefixPath, python_version_full_str
45
+ from nuitka.PythonVersions import (
46
+ getLaunchingSystemPrefixPath,
47
+ getSystemPrefixPath,
48
+ python_version_full_str,
49
+ )
51
50
  from nuitka.Tracing import ReportingSystemExit, reports_logger
52
- from nuitka.utils.Distributions import getDistributionsFromModuleName
53
- from nuitka.utils.FileOperations import getReportPath, putTextFileContents
51
+ from nuitka.utils.Distributions import (
52
+ getDistributionInstallerName,
53
+ getDistributionLicense,
54
+ getDistributionName,
55
+ getDistributionsFromModuleName,
56
+ getDistributionVersion,
57
+ )
58
+ from nuitka.utils.FileOperations import (
59
+ getReportPath,
60
+ putBinaryFileContents,
61
+ putTextFileContents,
62
+ )
54
63
  from nuitka.utils.Jinja2 import getTemplate
55
64
  from nuitka.utils.MemoryUsage import getMemoryInfos
56
- from nuitka.utils.Utils import getArchitecture, getOS
65
+ from nuitka.utils.Utils import (
66
+ getArchitecture,
67
+ getLinuxDistribution,
68
+ getMacOSRelease,
69
+ getOS,
70
+ getWindowsRelease,
71
+ isLinux,
72
+ isMacOS,
73
+ isWin32OrPosixWindows,
74
+ )
57
75
  from nuitka.Version import getCommercialVersion, getNuitkaVersion
58
76
 
59
77
 
@@ -61,7 +79,8 @@ def _getReportInputData(aborted):
61
79
  """Collect all information for reporting into a dictionary."""
62
80
 
63
81
  # used with locals for laziness and these are to populate a dictionary with
64
- # many entries, pylint: disable=possibly-unused-variable,too-many-locals
82
+ # many entries,
83
+ # pylint: disable=possibly-unused-variable,too-many-branches,too-many-locals,too-many-statements
65
84
 
66
85
  module_names = tuple(module.getFullName() for module in getDoneModules())
67
86
 
@@ -88,8 +107,14 @@ def _getReportInputData(aborted):
88
107
  for module in getDoneModules()
89
108
  )
90
109
 
110
+ module_usages = dict(
111
+ (module.getFullName(), tuple(module.getUsedModules()))
112
+ for module in getDoneModules()
113
+ )
114
+
91
115
  module_distributions = {}
92
116
  distribution_modules = {}
117
+
93
118
  for module in getDoneModules():
94
119
  module_distributions[module.getFullName()] = getDistributionsFromModuleName(
95
120
  module.getFullName()
@@ -100,9 +125,19 @@ def _getReportInputData(aborted):
100
125
 
101
126
  distribution_modules[_distribution].add(module.getFullName())
102
127
 
103
- module_usages = dict(
104
- (module.getFullName(), module.getUsedModules()) for module in getDoneModules()
105
- )
128
+ module_distribution_usages = {}
129
+ for module in getDoneModules():
130
+ module_distribution_usages[module.getFullName()] = OrderedSet()
131
+
132
+ for _module_usage in module_usages[module.getFullName()]:
133
+ if _module_usage.module_name not in module_usages:
134
+ continue
135
+
136
+ module_distribution_usages[module.getFullName()].update(
137
+ dist
138
+ for dist in module_distributions[_module_usage.module_name]
139
+ if dist not in module_distributions[module.getFullName()]
140
+ )
106
141
 
107
142
  module_distribution_names = dict(
108
143
  (module.getFullName(), module.getUsedDistributions())
@@ -112,10 +147,55 @@ def _getReportInputData(aborted):
112
147
  all_distributions = tuple(
113
148
  sorted(
114
149
  set(sum(module_distributions.values(), ())),
115
- key=lambda dist: dist.metadata["Name"],
150
+ key=getDistributionName,
116
151
  )
117
152
  )
118
153
 
154
+ module_distribution_installers = dict(
155
+ (
156
+ getDistributionName(dist),
157
+ getDistributionInstallerName(getDistributionName(dist)),
158
+ )
159
+ for dist in all_distributions
160
+ )
161
+
162
+ module_exclusions = dict((module.getFullName(), {}) for module in getDoneModules())
163
+
164
+ # TODO: The module filename, and other things can be None. Once we change to
165
+ # namedtuples, we need to adapt the type check.
166
+ def _replaceNoneWithString(value):
167
+ if type(value) is tuple:
168
+ return tuple(_replaceNoneWithString(element) for element in value)
169
+
170
+ return value if value is not None else ""
171
+
172
+ for (
173
+ _using_module_name,
174
+ _module_filename,
175
+ _module_name,
176
+ _module_kind,
177
+ _extra_recursion,
178
+ ), (_decision, _reason) in sorted(
179
+ getRecursionDecisions().items(), key=_replaceNoneWithString
180
+ ):
181
+ if _decision is not False:
182
+ continue
183
+
184
+ if _using_module_name is None:
185
+ continue
186
+
187
+ # We might be interrupted, and have this information, but never actually
188
+ # finished the module.
189
+ if _using_module_name not in module_exclusions:
190
+ continue
191
+
192
+ module_exclusions[_using_module_name][_module_name] = _reason
193
+
194
+ included_metadata = dict(
195
+ (distribution_name, meta_data_value.reasons)
196
+ for distribution_name, meta_data_value in getDistributionMetadataValues()
197
+ )
198
+
119
199
  memory_infos = getMemoryInfos()
120
200
 
121
201
  python_exe = sys.executable
@@ -125,6 +205,18 @@ def _getReportInputData(aborted):
125
205
  os_name = getOS()
126
206
  arch_name = getArchitecture()
127
207
 
208
+ # Record system encoding, spell-checker: ignore getfilesystemencoding
209
+ filesystem_encoding = sys.getfilesystemencoding()
210
+
211
+ if isWin32OrPosixWindows():
212
+ os_release = str(getWindowsRelease())
213
+ elif isLinux():
214
+ os_release = "-".join(x for x in getLinuxDistribution() if x)
215
+ elif isMacOS():
216
+ os_release = getMacOSRelease()
217
+ else:
218
+ os_release = "unknown"
219
+
128
220
  nuitka_version = getNuitkaVersion()
129
221
  nuitka_commercial_version = getCommercialVersion() or "not installed"
130
222
 
@@ -136,6 +228,17 @@ def _getReportInputData(aborted):
136
228
 
137
229
  data_composer = getDataComposerReportValues()
138
230
 
231
+ if hasMainModule():
232
+ output_run_filename = os.path.abspath(
233
+ getResultRunFilename(onefile=isOnefileMode())
234
+ )
235
+ scons_error_report_data = readSconsErrorReport(
236
+ source_dir=getSourceDirectoryPath()
237
+ )
238
+ else:
239
+ scons_error_report_data = {}
240
+ output_run_filename = "failed too early"
241
+
139
242
  return dict(
140
243
  (var_name, var_value)
141
244
  for var_name, var_value in locals().items()
@@ -154,7 +257,7 @@ def _getReportPathPrefixes():
154
257
  if _report_prefixes is None:
155
258
  _report_prefixes = []
156
259
 
157
- sys_prefix = os.environ.get("NUITKA_SYS_PREFIX", sys.prefix)
260
+ sys_prefix = getLaunchingSystemPrefixPath() or sys.prefix
158
261
  real_sys_prefix = getSystemPrefixPath()
159
262
 
160
263
  if real_sys_prefix != sys_prefix:
@@ -171,7 +274,8 @@ def _getCompilationReportPath(path):
171
274
 
172
275
 
173
276
  def _addModulesToReport(root, report_input_data, diffable):
174
- # Many details to work with, pylint: disable=too-many-locals
277
+ # Many details to work with,
278
+ # pylint: disable=too-many-branches,too-many-locals,too-many-statements
175
279
 
176
280
  for module_name in report_input_data["module_names"]:
177
281
  active_module_info = report_input_data["module_inclusion_infos"][module_name]
@@ -188,6 +292,13 @@ def _addModulesToReport(root, report_input_data, diffable):
188
292
  ),
189
293
  )
190
294
 
295
+ distributions = report_input_data["module_distributions"][module_name]
296
+
297
+ if distributions:
298
+ module_xml_node.attrib["distribution"] = ",".join(
299
+ getDistributionName(dist) for dist in distributions
300
+ )
301
+
191
302
  for plugin_name, influence, detail in report_input_data[
192
303
  "module_plugin_influences"
193
304
  ][module_name]:
@@ -199,8 +310,34 @@ def _addModulesToReport(root, report_input_data, diffable):
199
310
  condition, condition_tags_used, condition_result = detail
200
311
 
201
312
  influence_xml_node.attrib["condition"] = condition
202
- influence_xml_node.attrib["tags_used"] = ",".join(condition_tags_used)
313
+ if condition_tags_used:
314
+ influence_xml_node.attrib["tags_used"] = ",".join(
315
+ condition_tags_used
316
+ )
203
317
  influence_xml_node.attrib["result"] = str(condition_result).lower()
318
+ elif influence == "variable-used":
319
+ variable_name, condition_tags_used, variable_value = detail
320
+
321
+ influence_xml_node.attrib["variable"] = variable_name
322
+ if condition_tags_used:
323
+ influence_xml_node.attrib["tags_used"] = ",".join(
324
+ condition_tags_used
325
+ )
326
+ influence_xml_node.attrib["value"] = variable_value
327
+ elif influence == "parameter-used":
328
+ parameter_name, condition_tags_used, parameter_value = detail
329
+
330
+ influence_xml_node.attrib["parameter"] = parameter_name
331
+ if condition_tags_used:
332
+ influence_xml_node.attrib["tags_used"] = ",".join(
333
+ condition_tags_used
334
+ )
335
+ influence_xml_node.attrib["value"] = repr(parameter_value)
336
+ elif influence == "detection":
337
+ detection_name, detection_value = detail
338
+
339
+ influence_xml_node.attrib["detection"] = detection_name
340
+ influence_xml_node.attrib["value"] = repr(detection_value)
204
341
  else:
205
342
  assert False, influence
206
343
 
@@ -217,21 +354,35 @@ def _addModulesToReport(root, report_input_data, diffable):
217
354
  "volatile" if diffable else "%.2f" % timing_info.time_used
218
355
  )
219
356
 
357
+ if timing_info.micro_passes:
358
+ timing_xml_node.attrib["micro_passes"] = str(timing_info.micro_passes)
359
+
360
+ if timing_info.merge_counts:
361
+ merged_total = 0
362
+
363
+ for branch_count, merge_count in timing_info.merge_counts.items():
364
+ merged_total += branch_count * merge_count
365
+
366
+ max_merge_size = max(timing_info.merge_counts)
367
+
368
+ timing_xml_node.attrib["max_branch_merge"] = str(max_merge_size)
369
+ timing_xml_node.attrib["merged_total"] = str(merged_total)
370
+
220
371
  module_xml_node.append(timing_xml_node)
221
372
 
222
- distributions = report_input_data["module_distributions"][module_name]
373
+ distributions = report_input_data["module_distribution_usages"][module_name]
223
374
 
224
375
  if distributions:
225
376
  distributions_xml_node = TreeXML.appendTreeElement(
226
377
  module_xml_node,
227
- "distributions",
378
+ "distribution-usages",
228
379
  )
229
380
 
230
381
  for distribution in distributions:
231
382
  TreeXML.appendTreeElement(
232
383
  distributions_xml_node,
233
- "distribution-used",
234
- name=distribution.metadata["Name"],
384
+ "distribution-usage",
385
+ name=getDistributionName(distribution),
235
386
  )
236
387
 
237
388
  module_distribution_names = report_input_data["module_distribution_names"][
@@ -247,7 +398,7 @@ def _addModulesToReport(root, report_input_data, diffable):
247
398
  for distribution_name, found in module_distribution_names.items():
248
399
  TreeXML.appendTreeElement(
249
400
  module_distribution_names_xml_node,
250
- "distribution",
401
+ "distribution-lookup",
251
402
  name=distribution_name,
252
403
  found="yes" if found else "no",
253
404
  )
@@ -257,15 +408,48 @@ def _addModulesToReport(root, report_input_data, diffable):
257
408
  "module_usages",
258
409
  )
259
410
 
260
- for used_module in report_input_data["module_usages"][module_name]:
261
- TreeXML.appendTreeElement(
411
+ for count, used_module in enumerate(
412
+ report_input_data["module_usages"][module_name]
413
+ ):
414
+ # We don't want to see those parent imports, unless they have
415
+ # an effect.
416
+ if used_module.reason == "import path parent":
417
+ while True:
418
+ count += 1
419
+ next_used_module = report_input_data["module_usages"][module_name][
420
+ count
421
+ ]
422
+
423
+ if next_used_module.reason != "import path parent":
424
+ break
425
+
426
+ exclusion_reason = report_input_data["module_exclusions"][
427
+ module_name
428
+ ].get(next_used_module.module_name)
429
+
430
+ if exclusion_reason is None or next_used_module.finding != "not-found":
431
+ continue
432
+
433
+ module_usage_node = TreeXML.appendTreeElement(
262
434
  used_modules_xml_node,
263
435
  "module_usage",
264
436
  name=used_module.module_name.asString(),
265
437
  finding=used_module.finding,
266
438
  line=str(used_module.source_ref.getLineNumber()),
439
+ # TODO: Add reason in a hotfix.
440
+ # reason=used_module.reason,
441
+ )
442
+
443
+ exclusion_reason = report_input_data["module_exclusions"][module_name].get(
444
+ used_module.module_name
267
445
  )
268
446
 
447
+ # Include reason why a module was excluded unless it is obvious like
448
+ # with built-in modules.
449
+ if exclusion_reason is not None and used_module.module_kind != "built-in":
450
+ module_usage_node.attrib["finding"] = "excluded"
451
+ module_usage_node.attrib["exclusion_reason"] = exclusion_reason
452
+
269
453
 
270
454
  def _addMemoryInfosToReport(performance_xml_node, memory_infos, diffable):
271
455
  for key, value in memory_infos.items():
@@ -340,6 +524,45 @@ def writeCompilationReport(report_filename, report_input_data, diffable):
340
524
 
341
525
  exception_xml_node.text = "\n" + traceback.format_exc()
342
526
 
527
+ if report_input_data["scons_error_report_data"]:
528
+ scons_error_reports_node = TreeXML.appendTreeElement(
529
+ root, "scons_error_reports"
530
+ )
531
+
532
+ for cmd, (stdout, stderr) in report_input_data[
533
+ "scons_error_report_data"
534
+ ].items():
535
+ scons_error_report_node = TreeXML.appendTreeElement(
536
+ scons_error_reports_node, "scons_error_report"
537
+ )
538
+
539
+ TreeXML.appendTreeElement(
540
+ scons_error_report_node,
541
+ "command",
542
+ ).text = cmd
543
+
544
+ if stdout:
545
+ if not stdout.startswith("\n"):
546
+ stdout = "\n" + stdout
547
+
548
+ stdout = stdout.rstrip("\n") + "\n"
549
+
550
+ TreeXML.appendTreeElement(
551
+ scons_error_report_node,
552
+ "stdout",
553
+ ).text = stdout
554
+
555
+ if stderr:
556
+ if not stderr.startswith("\n"):
557
+ stderr = "\n" + stderr
558
+
559
+ stderr = stderr.rstrip("\n") + "\n"
560
+
561
+ TreeXML.appendTreeElement(
562
+ scons_error_report_node,
563
+ "stderr",
564
+ ).text = stderr
565
+
343
566
  _addModulesToReport(
344
567
  root=root, report_input_data=report_input_data, diffable=diffable
345
568
  )
@@ -377,6 +600,22 @@ def writeCompilationReport(report_filename, report_input_data, diffable):
377
600
  tags=",".join(included_datafile.tags),
378
601
  )
379
602
 
603
+ if report_input_data["included_metadata"]:
604
+ metadata_node = TreeXML.appendTreeElement(
605
+ root,
606
+ "metadata",
607
+ )
608
+
609
+ for distribution_name, reasons in sorted(
610
+ report_input_data["included_metadata"].items()
611
+ ):
612
+ TreeXML.appendTreeElement(
613
+ metadata_node,
614
+ "included_metadata",
615
+ name=distribution_name,
616
+ reason=". ".join(reasons),
617
+ )
618
+
380
619
  for standalone_entry_point in getStandaloneEntryPoints():
381
620
  if standalone_entry_point.kind == "executable":
382
621
  continue
@@ -397,7 +636,7 @@ def writeCompilationReport(report_filename, report_input_data, diffable):
397
636
  source_path=_getCompilationReportPath(standalone_entry_point.source_path),
398
637
  package=standalone_entry_point.package_name or "",
399
638
  ignored="yes" if ignored else "no",
400
- reason=standalone_entry_point.reason
639
+ reason=standalone_entry_point.reason,
401
640
  # TODO: No reason yet.
402
641
  )
403
642
 
@@ -460,8 +699,11 @@ def writeCompilationReport(report_filename, report_input_data, diffable):
460
699
  TreeXML.appendTreeElement(
461
700
  distributions_xml_node,
462
701
  "distribution",
463
- name=distribution.metadata["Name"],
464
- version=distribution.metadata["Version"],
702
+ name=getDistributionName(distribution),
703
+ version=getDistributionVersion(distribution),
704
+ installer=report_input_data["module_distribution_installers"][
705
+ getDistributionName(distribution)
706
+ ],
465
707
  )
466
708
 
467
709
  python_xml_node = TreeXML.appendTreeElement(
@@ -471,25 +713,43 @@ def writeCompilationReport(report_filename, report_input_data, diffable):
471
713
  python_flavor=report_input_data["python_flavor"],
472
714
  python_version=report_input_data["python_version"],
473
715
  os_name=report_input_data["os_name"],
716
+ os_release=report_input_data["os_release"],
474
717
  arch_name=report_input_data["arch_name"],
718
+ filesystem_encoding=report_input_data["filesystem_encoding"],
475
719
  )
476
720
 
477
- search_path_xml_node = TreeXML.appendTreeElement(
478
- python_xml_node,
479
- "search_path",
480
- )
721
+ search_path = getPackageSearchPath(None)
481
722
 
482
- for search_path in getPackageSearchPath(None):
483
- TreeXML.appendTreeElement(
484
- search_path_xml_node,
485
- "path",
486
- value=_getCompilationReportPath(search_path),
723
+ if search_path is not None:
724
+ search_path_xml_node = TreeXML.appendTreeElement(
725
+ python_xml_node,
726
+ "search_path",
487
727
  )
488
728
 
729
+ for search_path in getPackageSearchPath(None):
730
+ TreeXML.appendTreeElement(
731
+ search_path_xml_node,
732
+ "path",
733
+ value=_getCompilationReportPath(search_path),
734
+ )
735
+
489
736
  _addUserDataToReport(root=root, user_data=report_input_data["user_data"])
490
737
 
738
+ python_xml_node = TreeXML.appendTreeElement(
739
+ root,
740
+ "output",
741
+ run_filename=_getCompilationReportPath(
742
+ report_input_data["output_run_filename"]
743
+ ),
744
+ )
745
+
746
+ contents = TreeXML.toString(root)
747
+
748
+ if type(contents) is not bytes:
749
+ contents = contents.encode("utf8")
750
+
491
751
  try:
492
- putTextFileContents(filename=report_filename, contents=TreeXML.toString(root))
752
+ putBinaryFileContents(filename=report_filename, contents=contents)
493
753
  except OSError as e:
494
754
  reports_logger.warning(
495
755
  "Compilation report write to file '%s' failed due to: %s."
@@ -499,9 +759,10 @@ def writeCompilationReport(report_filename, report_input_data, diffable):
499
759
  if _crash_report_filename == report_filename:
500
760
  _crash_report_filename = None
501
761
  else:
502
- reports_logger.info(
503
- "Compilation report written to file '%s'." % report_filename
504
- )
762
+ if _crash_report_filename != report_filename:
763
+ reports_logger.info(
764
+ "Compilation report written to file '%s'." % report_filename
765
+ )
505
766
 
506
767
 
507
768
  def writeCompilationReportFromTemplate(
@@ -514,25 +775,6 @@ def writeCompilationReportFromTemplate(
514
775
  extensions=("jinja2.ext.do",),
515
776
  )
516
777
 
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
778
  def quoted(value):
537
779
  if isinstance(value, str):
538
780
  return "'%s'" % value
@@ -541,7 +783,11 @@ def writeCompilationReportFromTemplate(
541
783
 
542
784
  report_text = template.render(
543
785
  # Get the license text.
544
- get_distribution_license=get_distribution_license,
786
+ get_distribution_license=getDistributionLicense,
787
+ # get the distribution_name
788
+ get_distribution_name=getDistributionName,
789
+ # get the distribution version
790
+ get_distribution_version=getDistributionVersion,
545
791
  # Quote a list of strings.
546
792
  quoted=quoted,
547
793
  # For checking length of lists.
@@ -563,15 +809,20 @@ def writeCompilationReportFromTemplate(
563
809
 
564
810
 
565
811
  _crash_report_filename = "nuitka-crash-report.xml"
812
+ _crash_report_bug_message = True
566
813
 
567
814
 
568
815
  def _informAboutCrashReport():
569
816
  if _crash_report_filename is not None:
817
+ message = (
818
+ "Compilation crash report written to file '%s'." % _crash_report_filename
819
+ )
820
+
821
+ if _crash_report_bug_message:
822
+ message += " Please include it in your bug report."
823
+
570
824
  reports_logger.info(
571
- """\
572
- Compilation crash report written to file '%s'. Please include it in \
573
- your bug report."""
574
- % _crash_report_filename,
825
+ message,
575
826
  style="red",
576
827
  )
577
828
 
@@ -588,6 +839,15 @@ def writeCompilationReports(aborted):
588
839
  ):
589
840
  report_filename = _crash_report_filename
590
841
 
842
+ # Inform user about bug reporting of a bug only, if this is not some sort
843
+ # of reporting exit, these do not constitute definitive bugs of Nuitka but
844
+ # are often usage errors only.
845
+
846
+ # Using global here, as this is really a singleton
847
+ # pylint: disable=global-statement
848
+ global _crash_report_bug_message
849
+ _crash_report_bug_message = sys.exc_info()[0] is not ReportingSystemExit
850
+
591
851
  atexit.register(_informAboutCrashReport)
592
852
 
593
853
  if report_filename or template_specs:
@@ -625,3 +885,19 @@ def writeCompilationReports(aborted):
625
885
  report_filename=report_filename,
626
886
  report_input_data=report_input_data,
627
887
  )
888
+
889
+
890
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
891
+ # integrates with CPython, but also works on its own.
892
+ #
893
+ # Licensed under the Apache License, Version 2.0 (the "License");
894
+ # you may not use this file except in compliance with the License.
895
+ # You may obtain a copy of the License at
896
+ #
897
+ # http://www.apache.org/licenses/LICENSE-2.0
898
+ #
899
+ # Unless required by applicable law or agreed to in writing, software
900
+ # distributed under the License is distributed on an "AS IS" BASIS,
901
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
902
+ # See the License for the specific language governing permissions and
903
+ # 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. """