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

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

Potentially problematic release.


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

Files changed (704) hide show
  1. Nuitka_winsvc-1.8.data/scripts/nuitka-run.bat → Nuitka_winsvc-2.4.8.data/scripts/nuitka-run.cmd +9 -9
  2. Nuitka_winsvc-1.8.data/scripts/nuitka.bat → Nuitka_winsvc-2.4.8.data/scripts/nuitka.cmd +15 -15
  3. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/METADATA +4 -3
  4. Nuitka_winsvc-2.4.8.dist-info/RECORD +954 -0
  5. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/WHEEL +1 -1
  6. nuitka/Builtins.py +18 -17
  7. nuitka/BytecodeCaching.py +24 -20
  8. nuitka/Bytecodes.py +23 -19
  9. nuitka/CacheCleanup.py +28 -23
  10. nuitka/Constants.py +19 -17
  11. nuitka/Errors.py +23 -17
  12. nuitka/HardImportRegistry.py +400 -0
  13. nuitka/MainControl.py +200 -112
  14. nuitka/ModuleRegistry.py +83 -20
  15. nuitka/OptionParsing.py +368 -175
  16. nuitka/Options.py +632 -213
  17. nuitka/OutputDirectories.py +40 -21
  18. nuitka/PostProcessing.py +73 -50
  19. nuitka/Progress.py +58 -24
  20. nuitka/PythonFlavors.py +141 -32
  21. nuitka/PythonOperators.py +18 -17
  22. nuitka/PythonVersions.py +106 -19
  23. nuitka/Serialization.py +68 -55
  24. nuitka/SourceCodeReferences.py +19 -17
  25. nuitka/Tracing.py +108 -70
  26. nuitka/TreeXML.py +31 -26
  27. nuitka/Variables.py +39 -41
  28. nuitka/Version.py +21 -7
  29. nuitka/__init__.py +5 -4
  30. nuitka/__main__.py +95 -29
  31. nuitka/__past__.py +44 -34
  32. nuitka/build/Backend.scons +202 -140
  33. nuitka/build/CCompilerVersion.scons +39 -31
  34. nuitka/build/DataComposerInterface.py +20 -17
  35. nuitka/build/Onefile.scons +50 -54
  36. nuitka/build/SconsCaching.py +93 -90
  37. nuitka/build/SconsCompilerSettings.py +157 -69
  38. nuitka/build/SconsHacks.py +25 -19
  39. nuitka/build/SconsInterface.py +154 -54
  40. nuitka/build/SconsProgress.py +19 -18
  41. nuitka/build/SconsSpawn.py +62 -33
  42. nuitka/build/SconsUtils.py +147 -55
  43. nuitka/build/__init__.py +5 -4
  44. nuitka/build/include/nuitka/allocator.h +105 -22
  45. nuitka/build/include/nuitka/builtins.h +17 -17
  46. nuitka/build/include/nuitka/calling.h +18 -18
  47. nuitka/build/include/nuitka/checkers.h +17 -18
  48. nuitka/build/include/nuitka/checksum_tools.h +14 -19
  49. nuitka/build/include/nuitka/compiled_asyncgen.h +18 -18
  50. nuitka/build/include/nuitka/compiled_cell.h +33 -18
  51. nuitka/build/include/nuitka/compiled_coroutine.h +18 -18
  52. nuitka/build/include/nuitka/compiled_frame.h +91 -53
  53. nuitka/build/include/nuitka/compiled_function.h +42 -20
  54. nuitka/build/include/nuitka/compiled_generator.h +24 -18
  55. nuitka/build/include/nuitka/compiled_method.h +17 -18
  56. nuitka/build/include/nuitka/constants.h +29 -18
  57. nuitka/build/include/nuitka/constants_blob.h +17 -17
  58. nuitka/build/include/nuitka/environment_variables.h +30 -0
  59. nuitka/build/include/nuitka/environment_variables_system.h +45 -0
  60. nuitka/build/include/nuitka/exception_groups.h +23 -26
  61. nuitka/build/include/nuitka/exceptions.h +593 -190
  62. nuitka/build/include/nuitka/filesystem_paths.h +26 -20
  63. nuitka/build/include/nuitka/freelists.h +38 -18
  64. nuitka/build/include/nuitka/helper/attributes.h +24 -18
  65. nuitka/build/include/nuitka/helper/boolean.h +17 -17
  66. nuitka/build/include/nuitka/helper/bytearrays.h +17 -17
  67. nuitka/build/include/nuitka/helper/bytes.h +14 -15
  68. nuitka/build/include/nuitka/helper/calling_generated.h +17 -17
  69. nuitka/build/include/nuitka/helper/comparisons_eq.h +17 -17
  70. nuitka/build/include/nuitka/helper/comparisons_ge.h +17 -17
  71. nuitka/build/include/nuitka/helper/comparisons_gt.h +17 -17
  72. nuitka/build/include/nuitka/helper/comparisons_le.h +17 -17
  73. nuitka/build/include/nuitka/helper/comparisons_lt.h +17 -17
  74. nuitka/build/include/nuitka/helper/comparisons_ne.h +17 -17
  75. nuitka/build/include/nuitka/helper/complex.h +17 -17
  76. nuitka/build/include/nuitka/helper/dictionaries.h +24 -22
  77. nuitka/build/include/nuitka/helper/floats.h +17 -18
  78. nuitka/build/include/nuitka/helper/import_hard.h +25 -17
  79. nuitka/build/include/nuitka/helper/indexes.h +17 -18
  80. nuitka/build/include/nuitka/helper/ints.h +32 -20
  81. nuitka/build/include/nuitka/helper/iterators.h +17 -17
  82. nuitka/build/include/nuitka/helper/lists.h +26 -24
  83. nuitka/build/include/nuitka/helper/lists_generated.h +22 -22
  84. nuitka/build/include/nuitka/helper/mappings.h +17 -18
  85. nuitka/build/include/nuitka/helper/operations.h +17 -17
  86. nuitka/build/include/nuitka/helper/operations_binary_add.h +17 -17
  87. nuitka/build/include/nuitka/helper/operations_binary_bitand.h +17 -17
  88. nuitka/build/include/nuitka/helper/operations_binary_bitor.h +17 -17
  89. nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +17 -17
  90. nuitka/build/include/nuitka/helper/operations_binary_divmod.h +17 -17
  91. nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +17 -17
  92. nuitka/build/include/nuitka/helper/operations_binary_lshift.h +17 -17
  93. nuitka/build/include/nuitka/helper/operations_binary_matmult.h +17 -17
  94. nuitka/build/include/nuitka/helper/operations_binary_mod.h +17 -17
  95. nuitka/build/include/nuitka/helper/operations_binary_mult.h +17 -17
  96. nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +17 -17
  97. nuitka/build/include/nuitka/helper/operations_binary_pow.h +17 -17
  98. nuitka/build/include/nuitka/helper/operations_binary_rshift.h +17 -17
  99. nuitka/build/include/nuitka/helper/operations_binary_sub.h +17 -17
  100. nuitka/build/include/nuitka/helper/operations_binary_truediv.h +17 -17
  101. nuitka/build/include/nuitka/helper/operations_builtin_types.h +17 -17
  102. nuitka/build/include/nuitka/helper/operations_inplace_add.h +17 -17
  103. nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +17 -17
  104. nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +17 -17
  105. nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +17 -17
  106. nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +17 -17
  107. nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +17 -17
  108. nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +17 -17
  109. nuitka/build/include/nuitka/helper/operations_inplace_mod.h +17 -17
  110. nuitka/build/include/nuitka/helper/operations_inplace_mult.h +17 -17
  111. nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +17 -17
  112. nuitka/build/include/nuitka/helper/operations_inplace_pow.h +17 -17
  113. nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +17 -17
  114. nuitka/build/include/nuitka/helper/operations_inplace_sub.h +17 -17
  115. nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
  116. nuitka/build/include/nuitka/helper/raising.h +29 -17
  117. nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
  118. nuitka/build/include/nuitka/helper/richcomparisons.h +14 -14
  119. nuitka/build/include/nuitka/helper/sequences.h +19 -13
  120. nuitka/build/include/nuitka/helper/sets.h +11 -12
  121. nuitka/build/include/nuitka/helper/slices.h +31 -25
  122. nuitka/build/include/nuitka/helper/strings.h +16 -17
  123. nuitka/build/include/nuitka/helper/subscripts.h +18 -201
  124. nuitka/build/include/nuitka/helper/tuples.h +64 -52
  125. nuitka/build/include/nuitka/helpers.h +38 -20
  126. nuitka/build/include/nuitka/importing.h +28 -21
  127. nuitka/build/include/nuitka/jit_sources.h +25 -0
  128. nuitka/build/include/nuitka/prelude.h +128 -46
  129. nuitka/build/include/nuitka/printing.h +22 -17
  130. nuitka/build/include/nuitka/python_pgo.h +19 -18
  131. nuitka/build/include/nuitka/safe_string_ops.h +20 -18
  132. nuitka/build/include/nuitka/threading.h +32 -33
  133. nuitka/build/include/nuitka/tracing.h +28 -18
  134. nuitka/build/include/nuitka/type_aliases.h +27 -0
  135. nuitka/build/include/nuitka/unfreezing.h +29 -23
  136. nuitka/build/inline_copy/bin/scons.py +14 -0
  137. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +6 -6
  138. nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +0 -3
  139. nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
  140. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
  141. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
  142. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
  143. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
  144. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
  145. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
  146. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
  147. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
  148. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
  149. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
  150. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
  151. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
  152. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
  153. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
  154. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
  155. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
  156. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
  157. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
  158. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
  159. nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
  160. nuitka/build/inline_copy/tqdm/tqdm/__init__.py +2 -2
  161. nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +4 -1
  162. nuitka/build/inline_copy/tqdm/tqdm/utils.py +14 -8
  163. nuitka/build/inline_copy/tqdm/tqdm/version.py +1 -8
  164. nuitka/build/inline_copy/zlib/LICENSE +22 -0
  165. nuitka/build/inline_copy/zlib/crc32.c +1049 -0
  166. nuitka/build/inline_copy/zlib/crc32.h +9446 -0
  167. nuitka/build/inline_copy/zlib/zconf.h +551 -0
  168. nuitka/build/inline_copy/zlib/zlib.h +1938 -0
  169. nuitka/build/inline_copy/zlib/zutil.h +275 -0
  170. nuitka/build/static_src/CompiledAsyncgenType.c +176 -182
  171. nuitka/build/static_src/CompiledCellType.c +63 -40
  172. nuitka/build/static_src/CompiledCodeHelpers.c +181 -128
  173. nuitka/build/static_src/CompiledCoroutineType.c +196 -203
  174. nuitka/build/static_src/CompiledFrameType.c +287 -133
  175. nuitka/build/static_src/CompiledFunctionType.c +389 -95
  176. nuitka/build/static_src/CompiledGeneratorType.c +376 -252
  177. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +185 -198
  178. nuitka/build/static_src/CompiledMethodType.c +83 -71
  179. nuitka/build/static_src/HelpersAllocator.c +88 -19
  180. nuitka/build/static_src/HelpersAttributes.c +33 -54
  181. nuitka/build/static_src/HelpersBuiltin.c +43 -33
  182. nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
  183. nuitka/build/static_src/HelpersBytes.c +19 -20
  184. nuitka/build/static_src/HelpersCalling.c +33 -30
  185. nuitka/build/static_src/HelpersCallingGenerated.c +1000 -181
  186. nuitka/build/static_src/HelpersChecksumTools.c +35 -21
  187. nuitka/build/static_src/HelpersClasses.c +17 -17
  188. nuitka/build/static_src/HelpersComparisonEq.c +518 -492
  189. nuitka/build/static_src/HelpersComparisonEqUtils.c +21 -19
  190. nuitka/build/static_src/HelpersComparisonGe.c +513 -497
  191. nuitka/build/static_src/HelpersComparisonGt.c +512 -496
  192. nuitka/build/static_src/HelpersComparisonLe.c +513 -497
  193. nuitka/build/static_src/HelpersComparisonLt.c +512 -496
  194. nuitka/build/static_src/HelpersComparisonNe.c +520 -492
  195. nuitka/build/static_src/HelpersConsole.c +96 -0
  196. nuitka/build/static_src/HelpersConstantsBlob.c +542 -519
  197. nuitka/build/static_src/HelpersDeepcopy.c +33 -33
  198. nuitka/build/static_src/HelpersDictionaries.c +51 -29
  199. nuitka/build/static_src/HelpersDictionariesGenerated.c +177 -68
  200. nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
  201. nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
  202. nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +93 -0
  203. nuitka/build/static_src/HelpersExceptions.c +161 -50
  204. nuitka/build/static_src/HelpersFiles.c +37 -17
  205. nuitka/build/static_src/HelpersFilesystemPaths.c +292 -181
  206. nuitka/build/static_src/HelpersFloats.c +37 -31
  207. nuitka/build/static_src/HelpersHeapStorage.c +21 -17
  208. nuitka/build/static_src/HelpersImport.c +48 -20
  209. nuitka/build/static_src/HelpersImportHard.c +53 -17
  210. nuitka/build/static_src/HelpersJitSources.c +46 -0
  211. nuitka/build/static_src/HelpersLists.c +140 -50
  212. nuitka/build/static_src/HelpersListsGenerated.c +41 -41
  213. nuitka/build/static_src/HelpersMappings.c +17 -17
  214. nuitka/build/static_src/HelpersMatching.c +137 -51
  215. nuitka/build/static_src/HelpersOperationBinaryAdd.c +173 -146
  216. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +99 -52
  217. nuitka/build/static_src/HelpersOperationBinaryBitand.c +50 -50
  218. nuitka/build/static_src/HelpersOperationBinaryBitor.c +50 -50
  219. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +50 -50
  220. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +41 -41
  221. nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
  222. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +41 -41
  223. nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +20 -21
  224. nuitka/build/static_src/HelpersOperationBinaryLshift.c +47 -47
  225. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +24 -24
  226. nuitka/build/static_src/HelpersOperationBinaryMod.c +107 -107
  227. nuitka/build/static_src/HelpersOperationBinaryMult.c +81 -75
  228. nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +33 -30
  229. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +41 -41
  230. nuitka/build/static_src/HelpersOperationBinaryPow.c +44 -44
  231. nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
  232. nuitka/build/static_src/HelpersOperationBinaryRshift.c +47 -47
  233. nuitka/build/static_src/HelpersOperationBinarySub.c +80 -80
  234. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +41 -41
  235. nuitka/build/static_src/HelpersOperationInplaceAdd.c +171 -153
  236. nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +24 -22
  237. nuitka/build/static_src/HelpersOperationInplaceBitand.c +53 -53
  238. nuitka/build/static_src/HelpersOperationInplaceBitor.c +53 -53
  239. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +53 -53
  240. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +62 -62
  241. nuitka/build/static_src/HelpersOperationInplaceLshift.c +44 -44
  242. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +37 -37
  243. nuitka/build/static_src/HelpersOperationInplaceMod.c +134 -134
  244. nuitka/build/static_src/HelpersOperationInplaceMult.c +78 -78
  245. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +62 -62
  246. nuitka/build/static_src/HelpersOperationInplacePow.c +62 -62
  247. nuitka/build/static_src/HelpersOperationInplaceRshift.c +44 -44
  248. nuitka/build/static_src/HelpersOperationInplaceSub.c +112 -112
  249. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +62 -62
  250. nuitka/build/static_src/HelpersProfiling.c +24 -23
  251. nuitka/build/static_src/HelpersPythonPgo.c +22 -22
  252. nuitka/build/static_src/HelpersRaising.c +88 -20
  253. nuitka/build/static_src/HelpersSafeStrings.c +34 -22
  254. nuitka/build/static_src/HelpersSequences.c +18 -19
  255. nuitka/build/static_src/HelpersSlices.c +29 -23
  256. nuitka/build/static_src/HelpersStrings.c +234 -37
  257. nuitka/build/static_src/HelpersTuples.c +46 -34
  258. nuitka/build/static_src/HelpersTypes.c +68 -23
  259. nuitka/build/static_src/InspectPatcher.c +108 -27
  260. nuitka/build/static_src/MainProgram.c +359 -263
  261. nuitka/build/static_src/MetaPathBasedLoader.c +367 -242
  262. nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +39 -26
  263. nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
  264. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +97 -22
  265. nuitka/build/static_src/OnefileBootstrap.c +276 -164
  266. nuitka/build/static_src/OnefileSplashScreen.cpp +51 -27
  267. nuitka/code_generation/AsyncgenCodes.py +19 -17
  268. nuitka/code_generation/AttributeCodes.py +31 -27
  269. nuitka/code_generation/BinaryOperationHelperDefinitions.py +24 -20
  270. nuitka/code_generation/BranchCodes.py +19 -17
  271. nuitka/code_generation/BuiltinCodes.py +20 -17
  272. nuitka/code_generation/CallCodes.py +19 -17
  273. nuitka/code_generation/ClassCodes.py +19 -17
  274. nuitka/code_generation/CodeGeneration.py +48 -27
  275. nuitka/code_generation/CodeHelperSelection.py +19 -17
  276. nuitka/code_generation/CodeHelpers.py +24 -20
  277. nuitka/code_generation/CodeObjectCodes.py +34 -24
  278. nuitka/code_generation/ComparisonCodes.py +38 -20
  279. nuitka/code_generation/ComparisonHelperDefinitions.py +19 -17
  280. nuitka/code_generation/ConditionalCodes.py +19 -17
  281. nuitka/code_generation/ConstantCodes.py +82 -28
  282. nuitka/code_generation/Contexts.py +152 -26
  283. nuitka/code_generation/CoroutineCodes.py +19 -17
  284. nuitka/code_generation/CtypesCodes.py +19 -17
  285. nuitka/code_generation/DictCodes.py +25 -23
  286. nuitka/code_generation/Emission.py +21 -18
  287. nuitka/code_generation/ErrorCodes.py +27 -33
  288. nuitka/code_generation/EvalCodes.py +24 -20
  289. nuitka/code_generation/ExceptionCodes.py +27 -18
  290. nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +20 -17
  291. nuitka/code_generation/ExpressionCodes.py +19 -17
  292. nuitka/code_generation/FrameCodes.py +24 -20
  293. nuitka/code_generation/FunctionCodes.py +24 -21
  294. nuitka/code_generation/GeneratorCodes.py +23 -20
  295. nuitka/code_generation/GlobalConstants.py +43 -23
  296. nuitka/code_generation/GlobalsLocalsCodes.py +21 -19
  297. nuitka/code_generation/IdCodes.py +19 -17
  298. nuitka/code_generation/ImportCodes.py +90 -50
  299. nuitka/code_generation/Indentation.py +23 -22
  300. nuitka/code_generation/IndexCodes.py +19 -17
  301. nuitka/code_generation/InjectCCodes.py +14 -12
  302. nuitka/code_generation/IntegerCodes.py +19 -17
  303. nuitka/code_generation/IteratorCodes.py +19 -17
  304. nuitka/code_generation/JitCodes.py +44 -0
  305. nuitka/code_generation/LabelCodes.py +19 -17
  306. nuitka/code_generation/LineNumberCodes.py +19 -17
  307. nuitka/code_generation/ListCodes.py +32 -36
  308. nuitka/code_generation/LoaderCodes.py +22 -17
  309. nuitka/code_generation/LocalsDictCodes.py +56 -32
  310. nuitka/code_generation/LoopCodes.py +19 -17
  311. nuitka/code_generation/MatchCodes.py +42 -22
  312. nuitka/code_generation/ModuleCodes.py +43 -25
  313. nuitka/code_generation/Namify.py +27 -23
  314. nuitka/code_generation/NetworkxCodes.py +51 -0
  315. nuitka/code_generation/OperationCodes.py +29 -31
  316. nuitka/code_generation/PackageResourceCodes.py +59 -23
  317. nuitka/code_generation/PrintCodes.py +19 -17
  318. nuitka/code_generation/PythonAPICodes.py +19 -17
  319. nuitka/code_generation/RaisingCodes.py +19 -17
  320. nuitka/code_generation/Reports.py +19 -17
  321. nuitka/code_generation/ReturnCodes.py +19 -17
  322. nuitka/code_generation/SetCodes.py +19 -17
  323. nuitka/code_generation/SliceCodes.py +22 -20
  324. nuitka/code_generation/StringCodes.py +19 -17
  325. nuitka/code_generation/SubscriptCodes.py +24 -30
  326. nuitka/code_generation/TensorflowCodes.py +54 -0
  327. nuitka/code_generation/TryCodes.py +19 -17
  328. nuitka/code_generation/TupleCodes.py +20 -18
  329. nuitka/code_generation/TypeAliasCodes.py +71 -0
  330. nuitka/code_generation/VariableCodes.py +26 -22
  331. nuitka/code_generation/VariableDeclarations.py +20 -17
  332. nuitka/code_generation/YieldCodes.py +22 -20
  333. nuitka/code_generation/__init__.py +5 -4
  334. nuitka/code_generation/c_types/CTypeBases.py +19 -17
  335. nuitka/code_generation/c_types/CTypeBooleans.py +19 -17
  336. nuitka/code_generation/c_types/CTypeCFloats.py +19 -17
  337. nuitka/code_generation/c_types/CTypeCLongs.py +19 -18
  338. nuitka/code_generation/c_types/CTypeModuleDictVariables.py +19 -17
  339. nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +19 -17
  340. nuitka/code_generation/c_types/CTypeNuitkaInts.py +19 -18
  341. nuitka/code_generation/c_types/CTypeNuitkaVoids.py +19 -17
  342. nuitka/code_generation/c_types/CTypePyObjectPointers.py +27 -25
  343. nuitka/code_generation/c_types/CTypeVoids.py +20 -17
  344. nuitka/code_generation/c_types/__init__.py +5 -4
  345. nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +18 -17
  346. nuitka/code_generation/templates/CodeTemplatesConstants.py +132 -36
  347. nuitka/code_generation/templates/CodeTemplatesCoroutines.py +18 -17
  348. nuitka/code_generation/templates/CodeTemplatesExceptions.py +19 -18
  349. nuitka/code_generation/templates/CodeTemplatesFrames.py +18 -17
  350. nuitka/code_generation/templates/CodeTemplatesFunction.py +18 -17
  351. nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +19 -17
  352. nuitka/code_generation/templates/CodeTemplatesIterators.py +18 -18
  353. nuitka/code_generation/templates/CodeTemplatesLoader.py +25 -19
  354. nuitka/code_generation/templates/CodeTemplatesModules.py +244 -165
  355. nuitka/code_generation/templates/CodeTemplatesVariables.py +42 -27
  356. nuitka/code_generation/templates/TemplateDebugWrapper.py +19 -18
  357. nuitka/code_generation/templates/__init__.py +5 -4
  358. nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +19 -19
  359. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +18 -18
  360. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +76 -25
  361. nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +22 -22
  362. nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +19 -19
  363. nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +19 -19
  364. nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +17 -17
  365. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +121 -48
  366. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +18 -18
  367. nuitka/code_generation/templates_c/HelperLongTools.c.j2 +18 -18
  368. nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +6 -6
  369. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +23 -23
  370. nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +35 -35
  371. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +28 -28
  372. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +17 -17
  373. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +18 -18
  374. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +44 -32
  375. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +20 -20
  376. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +28 -28
  377. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +24 -24
  378. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +33 -29
  379. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +20 -20
  380. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +27 -27
  381. nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +17 -17
  382. nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +17 -17
  383. nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +17 -17
  384. nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +17 -17
  385. nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +21 -18
  386. nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +26 -24
  387. nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +17 -17
  388. nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +17 -17
  389. nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +21 -18
  390. nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +17 -17
  391. nuitka/containers/Namedtuples.py +19 -18
  392. nuitka/containers/OrderedSetsFallback.py +19 -17
  393. nuitka/containers/__init__.py +5 -4
  394. nuitka/distutils/Build.py +19 -18
  395. nuitka/distutils/DistutilCommands.py +34 -23
  396. nuitka/distutils/__init__.py +5 -4
  397. nuitka/finalizations/Finalization.py +20 -17
  398. nuitka/finalizations/FinalizeMarkups.py +21 -41
  399. nuitka/finalizations/__init__.py +5 -4
  400. nuitka/freezer/DependsExe.py +48 -28
  401. nuitka/freezer/DllDependenciesCommon.py +47 -20
  402. nuitka/freezer/DllDependenciesMacOS.py +147 -57
  403. nuitka/freezer/DllDependenciesPosix.py +29 -19
  404. nuitka/freezer/DllDependenciesWin32.py +29 -21
  405. nuitka/freezer/ImportDetection.py +20 -17
  406. nuitka/freezer/IncludedDataFiles.py +118 -47
  407. nuitka/freezer/IncludedEntryPoints.py +102 -38
  408. nuitka/freezer/Onefile.py +32 -22
  409. nuitka/freezer/Standalone.py +105 -50
  410. nuitka/freezer/__init__.py +5 -4
  411. nuitka/importing/IgnoreListing.py +19 -17
  412. nuitka/importing/ImportCache.py +24 -21
  413. nuitka/importing/ImportResolving.py +103 -95
  414. nuitka/importing/Importing.py +286 -92
  415. nuitka/importing/PreloadedPackages.py +21 -18
  416. nuitka/importing/Recursion.py +131 -47
  417. nuitka/importing/StandardLibrary.py +46 -28
  418. nuitka/importing/__init__.py +5 -4
  419. nuitka/nodes/AsyncgenNodes.py +19 -17
  420. nuitka/nodes/AttributeLookupNodes.py +19 -17
  421. nuitka/nodes/AttributeNodes.py +19 -17
  422. nuitka/nodes/AttributeNodesGenerated.py +49 -24
  423. nuitka/nodes/BuiltinAllNodes.py +19 -17
  424. nuitka/nodes/BuiltinAnyNodes.py +19 -17
  425. nuitka/nodes/BuiltinComplexNodes.py +20 -17
  426. nuitka/nodes/BuiltinDecodingNodes.py +19 -17
  427. nuitka/nodes/BuiltinDecoratorNodes.py +19 -17
  428. nuitka/nodes/BuiltinDictNodes.py +19 -17
  429. nuitka/nodes/BuiltinFormatNodes.py +20 -17
  430. nuitka/nodes/BuiltinHashNodes.py +19 -17
  431. nuitka/nodes/BuiltinInputNodes.py +19 -17
  432. nuitka/nodes/BuiltinIntegerNodes.py +19 -17
  433. nuitka/nodes/BuiltinIteratorNodes.py +24 -20
  434. nuitka/nodes/BuiltinLenNodes.py +19 -17
  435. nuitka/nodes/BuiltinNextNodes.py +19 -17
  436. nuitka/nodes/BuiltinOpenNodes.py +52 -18
  437. nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +40 -23
  438. nuitka/nodes/BuiltinRangeNodes.py +21 -19
  439. nuitka/nodes/BuiltinRefNodes.py +68 -19
  440. nuitka/nodes/BuiltinSumNodes.py +20 -18
  441. nuitka/nodes/BuiltinTypeNodes.py +19 -17
  442. nuitka/nodes/BuiltinVarsNodes.py +19 -18
  443. nuitka/nodes/BytesNodes.py +19 -17
  444. nuitka/nodes/CallNodes.py +19 -17
  445. nuitka/nodes/Checkers.py +19 -17
  446. nuitka/nodes/ChildrenHavingMixins.py +1250 -302
  447. nuitka/nodes/ClassNodes.py +49 -29
  448. nuitka/nodes/CodeObjectSpecs.py +29 -18
  449. nuitka/nodes/ComparisonNodes.py +19 -17
  450. nuitka/nodes/ConditionalNodes.py +21 -23
  451. nuitka/nodes/ConstantRefNodes.py +57 -17
  452. nuitka/nodes/ContainerMakingNodes.py +19 -17
  453. nuitka/nodes/ContainerOperationNodes.py +19 -17
  454. nuitka/nodes/CoroutineNodes.py +19 -17
  455. nuitka/nodes/CtypesNodes.py +19 -18
  456. nuitka/nodes/DictionaryNodes.py +19 -18
  457. nuitka/nodes/ExceptionNodes.py +29 -17
  458. nuitka/nodes/ExecEvalNodes.py +19 -17
  459. nuitka/nodes/ExpressionBases.py +34 -26
  460. nuitka/nodes/ExpressionBasesGenerated.py +54 -32
  461. nuitka/nodes/ExpressionShapeMixins.py +19 -17
  462. nuitka/nodes/FrameNodes.py +19 -17
  463. nuitka/nodes/FunctionAttributeNodes.py +19 -17
  464. nuitka/nodes/FunctionNodes.py +81 -35
  465. nuitka/nodes/FutureSpecs.py +35 -20
  466. nuitka/nodes/GeneratorNodes.py +21 -19
  467. nuitka/nodes/GlobalsLocalsNodes.py +22 -17
  468. nuitka/nodes/HardImportNodesGenerated.py +545 -129
  469. nuitka/nodes/ImportHardNodes.py +46 -38
  470. nuitka/nodes/ImportNodes.py +436 -446
  471. nuitka/nodes/IndicatorMixins.py +19 -17
  472. nuitka/nodes/InjectCNodes.py +19 -18
  473. nuitka/nodes/IterationHandles.py +55 -34
  474. nuitka/nodes/KeyValuePairNodes.py +19 -17
  475. nuitka/nodes/ListOperationNodes.py +33 -21
  476. nuitka/nodes/LocalsDictNodes.py +19 -17
  477. nuitka/nodes/LocalsScopes.py +41 -41
  478. nuitka/nodes/LoopNodes.py +28 -17
  479. nuitka/nodes/MatchNodes.py +37 -24
  480. nuitka/nodes/ModuleAttributeNodes.py +18 -35
  481. nuitka/nodes/ModuleNodes.py +90 -31
  482. nuitka/nodes/NetworkxNodes.py +45 -0
  483. nuitka/nodes/NodeBases.py +45 -43
  484. nuitka/nodes/NodeMakingHelpers.py +21 -19
  485. nuitka/nodes/NodeMetaClasses.py +45 -28
  486. nuitka/nodes/OperatorNodes.py +28 -26
  487. nuitka/nodes/OperatorNodesUnary.py +20 -17
  488. nuitka/nodes/OsSysNodes.py +66 -18
  489. nuitka/nodes/OutlineNodes.py +22 -20
  490. nuitka/nodes/PackageMetadataNodes.py +37 -27
  491. nuitka/nodes/PackageResourceNodes.py +29 -23
  492. nuitka/nodes/PrintNodes.py +19 -17
  493. nuitka/nodes/ReturnNodes.py +20 -18
  494. nuitka/nodes/SideEffectNodes.py +19 -17
  495. nuitka/nodes/SliceNodes.py +20 -18
  496. nuitka/nodes/StatementBasesGenerated.py +125 -77
  497. nuitka/nodes/StatementNodes.py +19 -17
  498. nuitka/nodes/StrNodes.py +19 -17
  499. nuitka/nodes/StringConcatenationNodes.py +20 -17
  500. nuitka/nodes/SubscriptNodes.py +26 -24
  501. nuitka/nodes/TensorflowNodes.py +38 -0
  502. nuitka/nodes/TryNodes.py +19 -17
  503. nuitka/nodes/TypeMatchNodes.py +19 -17
  504. nuitka/nodes/TypeNodes.py +40 -17
  505. nuitka/nodes/VariableAssignNodes.py +122 -64
  506. nuitka/nodes/VariableDelNodes.py +19 -17
  507. nuitka/nodes/VariableNameNodes.py +19 -17
  508. nuitka/nodes/VariableRefNodes.py +63 -26
  509. nuitka/nodes/VariableReleaseNodes.py +19 -17
  510. nuitka/nodes/YieldNodes.py +21 -19
  511. nuitka/nodes/__init__.py +5 -4
  512. nuitka/nodes/shapes/BuiltinTypeShapes.py +145 -39
  513. nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
  514. nuitka/nodes/shapes/ShapeMixins.py +40 -17
  515. nuitka/nodes/shapes/StandardShapes.py +27 -20
  516. nuitka/nodes/shapes/__init__.py +5 -4
  517. nuitka/optimizations/BytecodeDemotion.py +19 -17
  518. nuitka/optimizations/FunctionInlining.py +22 -23
  519. nuitka/optimizations/Graphs.py +19 -17
  520. nuitka/optimizations/Optimization.py +39 -35
  521. nuitka/optimizations/OptimizeBuiltinCalls.py +31 -27
  522. nuitka/optimizations/Tags.py +19 -18
  523. nuitka/optimizations/TraceCollections.py +67 -24
  524. nuitka/optimizations/ValueTraces.py +92 -25
  525. nuitka/optimizations/__init__.py +5 -4
  526. nuitka/pgo/PGO.py +33 -23
  527. nuitka/pgo/__init__.py +5 -4
  528. nuitka/plugins/PluginBase.py +610 -109
  529. nuitka/plugins/Plugins.py +241 -58
  530. nuitka/plugins/YamlPluginBase.py +121 -0
  531. nuitka/plugins/__init__.py +5 -4
  532. nuitka/plugins/standard/AntiBloatPlugin.py +357 -129
  533. nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +20 -19
  534. nuitka/plugins/standard/DataFilesPlugin.py +65 -29
  535. nuitka/plugins/standard/DelvewheelPlugin.py +32 -24
  536. nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
  537. nuitka/plugins/standard/DillPlugin/dill-postLoad.py +256 -0
  538. nuitka/plugins/standard/DillPlugin.py +42 -134
  539. nuitka/plugins/standard/DllFilesPlugin.py +125 -42
  540. nuitka/plugins/standard/EnumPlugin.py +19 -17
  541. nuitka/plugins/standard/EventletPlugin.py +19 -17
  542. nuitka/plugins/standard/GeventPlugin.py +19 -17
  543. nuitka/plugins/standard/GiPlugin.py +44 -28
  544. nuitka/plugins/standard/GlfwPlugin.py +20 -17
  545. nuitka/plugins/standard/ImplicitImports.py +407 -46
  546. nuitka/plugins/standard/KivyPlugin.py +30 -17
  547. nuitka/plugins/standard/MatplotlibPlugin.py +88 -42
  548. nuitka/plugins/standard/MultiprocessingPlugin.py +25 -20
  549. nuitka/plugins/standard/NumpyPlugin.py +19 -17
  550. nuitka/plugins/standard/OptionsNannyPlugin.py +48 -76
  551. nuitka/plugins/standard/PbrPlugin.py +21 -19
  552. nuitka/plugins/standard/PkgResourcesPlugin.py +34 -23
  553. nuitka/plugins/standard/PmwPlugin.py +30 -27
  554. nuitka/plugins/standard/PySidePyQtPlugin.py +74 -80
  555. nuitka/plugins/standard/PywebViewPlugin.py +19 -17
  556. nuitka/plugins/standard/SpacyPlugin.py +136 -0
  557. nuitka/plugins/standard/TensorflowPlugin.py +20 -17
  558. nuitka/plugins/standard/TkinterPlugin.py +103 -53
  559. nuitka/plugins/standard/TorchPlugin.py +20 -17
  560. nuitka/plugins/standard/TransformersPlugin.py +94 -30
  561. nuitka/plugins/standard/TrioPlugin.py +18 -15
  562. nuitka/plugins/standard/UpxPlugin.py +21 -19
  563. nuitka/plugins/standard/__init__.py +5 -4
  564. nuitka/plugins/standard/standard.nuitka-package.config.yml +3449 -1299
  565. nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +14 -14
  566. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +121 -66
  567. nuitka/reports/CompilationReportReader.py +67 -0
  568. nuitka/reports/LicenseReport.rst.j2 +21 -21
  569. nuitka/reports/Reports.py +352 -76
  570. nuitka/reports/__init__.py +5 -4
  571. nuitka/specs/BuiltinBytesOperationSpecs.py +18 -17
  572. nuitka/specs/BuiltinDictOperationSpecs.py +18 -17
  573. nuitka/specs/BuiltinListOperationSpecs.py +18 -17
  574. nuitka/specs/BuiltinParameterSpecs.py +30 -20
  575. nuitka/specs/BuiltinStrOperationSpecs.py +19 -18
  576. nuitka/specs/BuiltinTypeOperationSpecs.py +18 -18
  577. nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
  578. nuitka/specs/HardImportSpecs.py +67 -22
  579. nuitka/specs/ParameterSpecs.py +56 -41
  580. nuitka/specs/__init__.py +5 -4
  581. nuitka/tools/Basics.py +20 -18
  582. nuitka/tools/__init__.py +5 -4
  583. nuitka/tools/commercial/__init__.py +7 -6
  584. nuitka/tools/data_composer/DataComposer.py +78 -62
  585. nuitka/tools/data_composer/__init__.py +5 -4
  586. nuitka/tools/data_composer/__main__.py +18 -17
  587. nuitka/tools/environments/CreateEnvironment.py +20 -17
  588. nuitka/tools/environments/Virtualenv.py +60 -32
  589. nuitka/tools/environments/__init__.py +5 -4
  590. nuitka/tools/general/__init__.py +5 -4
  591. nuitka/tools/general/dll_report/__init__.py +5 -4
  592. nuitka/tools/general/dll_report/__main__.py +19 -21
  593. nuitka/tools/general/find_module/FindModuleCode.py +35 -22
  594. nuitka/tools/general/find_module/__init__.py +5 -4
  595. nuitka/tools/onefile_compressor/OnefileCompressor.py +213 -131
  596. nuitka/tools/onefile_compressor/__init__.py +5 -4
  597. nuitka/tools/onefile_compressor/__main__.py +18 -17
  598. nuitka/tools/podman/Podman.py +19 -17
  599. nuitka/tools/podman/__init__.py +5 -4
  600. nuitka/tools/podman/__main__.py +35 -19
  601. nuitka/tools/profiler/__init__.py +5 -4
  602. nuitka/tools/profiler/__main__.py +18 -17
  603. nuitka/tools/scanning/DisplayPackageDLLs.py +47 -22
  604. nuitka/tools/scanning/DisplayPackageData.py +31 -19
  605. nuitka/tools/scanning/__init__.py +5 -4
  606. nuitka/tools/specialize/CTypeDescriptions.py +93 -71
  607. nuitka/tools/specialize/Common.py +18 -17
  608. nuitka/tools/specialize/SpecializeC.py +31 -27
  609. nuitka/tools/specialize/SpecializePython.py +108 -45
  610. nuitka/tools/specialize/__init__.py +5 -4
  611. nuitka/tools/testing/Common.py +106 -52
  612. nuitka/tools/testing/Constructs.py +19 -17
  613. nuitka/tools/testing/OutputComparison.py +54 -18
  614. nuitka/tools/testing/Pythons.py +19 -18
  615. nuitka/tools/testing/RuntimeTracing.py +20 -19
  616. nuitka/tools/testing/SearchModes.py +26 -20
  617. nuitka/tools/testing/Valgrind.py +19 -17
  618. nuitka/tools/testing/__init__.py +5 -4
  619. nuitka/tools/testing/check_reference_counts/__init__.py +5 -4
  620. nuitka/tools/testing/check_reference_counts/__main__.py +18 -18
  621. nuitka/tools/testing/compare_with_cpython/__init__.py +5 -4
  622. nuitka/tools/testing/compare_with_cpython/__main__.py +36 -29
  623. nuitka/tools/testing/find_sxs_modules/__init__.py +5 -4
  624. nuitka/tools/testing/find_sxs_modules/__main__.py +17 -17
  625. nuitka/tools/testing/measure_construct_performance/__init__.py +5 -4
  626. nuitka/tools/testing/measure_construct_performance/__main__.py +22 -25
  627. nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
  628. nuitka/tools/testing/run_nuitka_tests/__main__.py +57 -40
  629. nuitka/tools/watch/AutoStage.py +144 -0
  630. nuitka/tools/watch/GitHub.py +113 -0
  631. nuitka/tools/watch/__init__.py +5 -4
  632. nuitka/tools/watch/__main__.py +322 -91
  633. nuitka/tree/Building.py +176 -147
  634. nuitka/tree/ComplexCallHelperFunctions.py +80 -58
  635. nuitka/tree/Extractions.py +19 -17
  636. nuitka/tree/InternalModule.py +29 -20
  637. nuitka/tree/Operations.py +19 -17
  638. nuitka/tree/ReformulationAssertStatements.py +20 -17
  639. nuitka/tree/ReformulationAssignmentStatements.py +92 -91
  640. nuitka/tree/ReformulationBooleanExpressions.py +19 -17
  641. nuitka/tree/ReformulationCallExpressions.py +20 -18
  642. nuitka/tree/ReformulationClasses.py +45 -39
  643. nuitka/tree/ReformulationClasses3.py +146 -98
  644. nuitka/tree/ReformulationComparisonExpressions.py +29 -35
  645. nuitka/tree/ReformulationContractionExpressions.py +58 -55
  646. nuitka/tree/ReformulationDictionaryCreation.py +40 -35
  647. nuitka/tree/ReformulationExecStatements.py +42 -39
  648. nuitka/tree/ReformulationForLoopStatements.py +30 -34
  649. nuitka/tree/ReformulationFunctionStatements.py +58 -54
  650. nuitka/tree/ReformulationImportStatements.py +34 -29
  651. nuitka/tree/ReformulationLambdaExpressions.py +23 -24
  652. nuitka/tree/ReformulationMatchStatements.py +244 -92
  653. nuitka/tree/ReformulationMultidist.py +22 -18
  654. nuitka/tree/ReformulationNamespacePackages.py +55 -46
  655. nuitka/tree/ReformulationPrintStatements.py +23 -24
  656. nuitka/tree/ReformulationSequenceCreation.py +50 -49
  657. nuitka/tree/ReformulationSubscriptExpressions.py +19 -17
  658. nuitka/tree/ReformulationTryExceptStatements.py +19 -17
  659. nuitka/tree/ReformulationTryFinallyStatements.py +34 -17
  660. nuitka/tree/ReformulationWhileLoopStatements.py +19 -17
  661. nuitka/tree/ReformulationWithStatements.py +39 -41
  662. nuitka/tree/ReformulationYieldExpressions.py +21 -19
  663. nuitka/tree/SourceHandling.py +76 -31
  664. nuitka/tree/SyntaxErrors.py +19 -17
  665. nuitka/tree/TreeHelpers.py +33 -20
  666. nuitka/tree/VariableClosure.py +35 -39
  667. nuitka/tree/__init__.py +5 -4
  668. nuitka/utils/AppDirs.py +41 -20
  669. nuitka/utils/CStrings.py +66 -21
  670. nuitka/utils/CommandLineOptions.py +84 -19
  671. nuitka/utils/Distributions.py +445 -54
  672. nuitka/utils/Download.py +89 -57
  673. nuitka/utils/Execution.py +73 -34
  674. nuitka/utils/FileOperations.py +318 -74
  675. nuitka/utils/Hashing.py +55 -33
  676. nuitka/utils/Images.py +26 -19
  677. nuitka/utils/Importing.py +118 -24
  678. nuitka/utils/InstalledPythons.py +80 -75
  679. nuitka/utils/InstanceCounters.py +20 -17
  680. nuitka/utils/Jinja2.py +30 -22
  681. nuitka/utils/Json.py +19 -17
  682. nuitka/utils/MacOSApp.py +26 -18
  683. nuitka/utils/MemoryUsage.py +20 -18
  684. nuitka/utils/ModuleNames.py +42 -26
  685. nuitka/utils/ReExecute.py +50 -28
  686. nuitka/utils/Rest.py +20 -17
  687. nuitka/utils/SharedLibraries.py +161 -75
  688. nuitka/utils/Shebang.py +20 -17
  689. nuitka/utils/Signing.py +63 -18
  690. nuitka/utils/SlotMetaClasses.py +57 -0
  691. nuitka/utils/StaticLibraries.py +83 -56
  692. nuitka/utils/ThreadedExecutor.py +18 -17
  693. nuitka/utils/Timing.py +22 -20
  694. nuitka/utils/Utils.py +115 -25
  695. nuitka/utils/WindowsFileUsage.py +22 -20
  696. nuitka/utils/WindowsResources.py +25 -18
  697. nuitka/utils/Yaml.py +62 -24
  698. nuitka/utils/__init__.py +5 -4
  699. Nuitka_winsvc-1.8.dist-info/RECORD +0 -905
  700. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_gui.py +0 -9
  701. nuitka/build/inline_copy/tqdm/tqdm/gui.py +0 -191
  702. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/LICENSE.txt +0 -0
  703. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/entry_points.txt +0 -0
  704. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/top_level.txt +0 -0
@@ -1,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
  """ Included entry points for standalone mode.
19
5
 
20
6
  This keeps track of entry points for standalone. These should be extension
@@ -37,7 +23,7 @@ from nuitka.utils.FileOperations import (
37
23
  isRelativePath,
38
24
  )
39
25
  from nuitka.utils.Importing import getSharedLibrarySuffix
40
- from nuitka.utils.ModuleNames import ModuleName
26
+ from nuitka.utils.ModuleNames import ModuleName, checkModuleName
41
27
  from nuitka.utils.SharedLibraries import getDLLVersion
42
28
 
43
29
  IncludedEntryPoint = collections.namedtuple(
@@ -47,6 +33,7 @@ IncludedEntryPoint = collections.namedtuple(
47
33
  "kind",
48
34
  "source_path",
49
35
  "dest_path",
36
+ "module_name",
50
37
  "package_name",
51
38
  "executable",
52
39
  "reason",
@@ -56,7 +43,7 @@ IncludedEntryPoint = collections.namedtuple(
56
43
 
57
44
  # Since inheritance is not a thing with namedtuple, have factory functions
58
45
  def _makeIncludedEntryPoint(
59
- logger, kind, source_path, dest_path, package_name, reason, executable
46
+ logger, kind, source_path, dest_path, module_name, package_name, reason, executable
60
47
  ):
61
48
  if package_name is not None:
62
49
  package_name = ModuleName(package_name)
@@ -70,23 +57,30 @@ def _makeIncludedEntryPoint(
70
57
  assert not hasFilenameExtension(path=source_path, extensions=(".qml", ".json"))
71
58
 
72
59
  return IncludedEntryPoint(
73
- logger,
74
- kind,
75
- source_path,
76
- os.path.normpath(dest_path),
77
- package_name,
78
- executable,
79
- reason,
60
+ logger=logger,
61
+ kind=kind,
62
+ source_path=source_path,
63
+ dest_path=os.path.normpath(dest_path),
64
+ module_name=module_name,
65
+ package_name=package_name,
66
+ executable=executable,
67
+ reason=reason,
80
68
  )
81
69
 
82
70
 
83
71
  def _makeDllOrExeEntryPoint(
84
- logger, kind, source_path, dest_path, package_name, reason, executable
72
+ logger, kind, source_path, dest_path, module_name, package_name, reason, executable
85
73
  ):
86
74
  assert type(dest_path) not in (tuple, list)
87
75
  assert type(source_path) not in (tuple, list)
88
76
  assert isRelativePath(dest_path), dest_path
89
77
  assert ".dist" not in dest_path, dest_path
78
+ if module_name is not None:
79
+ assert checkModuleName(module_name), module_name
80
+ module_name = ModuleName(module_name)
81
+ if package_name is not None:
82
+ assert checkModuleName(package_name), package_name
83
+ package_name = ModuleName(package_name)
90
84
 
91
85
  if not os.path.isfile(source_path):
92
86
  logger.sysexit(
@@ -99,42 +93,52 @@ def _makeDllOrExeEntryPoint(
99
93
  kind=kind,
100
94
  source_path=source_path,
101
95
  dest_path=dest_path,
96
+ module_name=module_name,
102
97
  package_name=package_name,
103
98
  reason=reason,
104
99
  executable=executable,
105
100
  )
106
101
 
107
102
 
108
- def makeExtensionModuleEntryPoint(logger, source_path, dest_path, package_name, reason):
103
+ def makeExtensionModuleEntryPoint(
104
+ logger, source_path, dest_path, module_name, package_name, reason
105
+ ):
109
106
  return _makeDllOrExeEntryPoint(
110
107
  logger=logger,
111
108
  kind="extension",
112
109
  source_path=source_path,
113
110
  dest_path=dest_path,
111
+ module_name=module_name,
114
112
  package_name=package_name,
115
113
  reason=reason,
116
114
  executable=False,
117
115
  )
118
116
 
119
117
 
120
- def makeDllEntryPoint(logger, source_path, dest_path, package_name, reason):
118
+ def makeDllEntryPoint(
119
+ logger, source_path, dest_path, module_name, package_name, reason
120
+ ):
121
121
  return _makeDllOrExeEntryPoint(
122
122
  logger=logger,
123
123
  kind="dll",
124
124
  source_path=source_path,
125
125
  dest_path=dest_path,
126
+ module_name=module_name,
126
127
  package_name=package_name,
127
128
  reason=reason,
128
129
  executable=False,
129
130
  )
130
131
 
131
132
 
132
- def makeExeEntryPoint(logger, source_path, dest_path, package_name, reason):
133
+ def makeExeEntryPoint(
134
+ logger, source_path, dest_path, module_name, package_name, reason
135
+ ):
133
136
  return _makeDllOrExeEntryPoint(
134
137
  logger=logger,
135
138
  kind="exe",
136
139
  source_path=source_path,
137
140
  dest_path=dest_path,
141
+ module_name=module_name,
138
142
  package_name=package_name,
139
143
  reason=reason,
140
144
  executable=True,
@@ -147,6 +151,7 @@ def makeMainExecutableEntryPoint(dest_path):
147
151
  kind="executable",
148
152
  source_path=dest_path,
149
153
  dest_path=os.path.basename(dest_path),
154
+ module_name=None,
150
155
  package_name=None,
151
156
  reason="main binary",
152
157
  executable=True,
@@ -159,6 +164,7 @@ def _makeIgnoredEntryPoint(entry_point):
159
164
  kind=entry_point.kind + "_ignored",
160
165
  source_path=entry_point.source_path,
161
166
  dest_path=entry_point.dest_path,
167
+ module_name=entry_point.module_name,
162
168
  package_name=entry_point.package_name,
163
169
  reason=entry_point.reason,
164
170
  executable=entry_point.executable,
@@ -176,7 +182,7 @@ def _getTopLevelPackageName(package_name):
176
182
 
177
183
 
178
184
  def _warnNonIdenticalEntryPoints(entry_point1, entry_point2):
179
- # Well know case, where they duplicate all the DLLs, seems to work well
185
+ # Well know cases, where they duplicate all the DLLs, seems to work well
180
186
  # enough to not report this. TODO: When we are adding to the report, it
181
187
  # ought to be still added. spell-checker: ignore scipy
182
188
  if frozenset(
@@ -187,10 +193,27 @@ def _warnNonIdenticalEntryPoints(entry_point1, entry_point2):
187
193
  ) == frozenset(("numpy", "scipy")):
188
194
  return
189
195
 
196
+ if frozenset(
197
+ (
198
+ _getTopLevelPackageName(entry_point1.package_name),
199
+ _getTopLevelPackageName(entry_point2.package_name),
200
+ )
201
+ ) == frozenset(("av", "cv2")):
202
+ return
203
+
204
+ def _describe(entry_point):
205
+ if entry_point.package_name:
206
+ return "'%s' of package '%s'" % (
207
+ entry_point.source_path,
208
+ entry_point.package_name,
209
+ )
210
+ else:
211
+ return "'%s'" % entry_point.source_path
212
+
190
213
  inclusion_logger.warning(
191
214
  """\
192
- Ignoring non-identical DLLs for '%s', '%s' different from '%s'. Using first one and hoping for the best."""
193
- % (entry_point1.dest_path, entry_point1.source_path, entry_point2.source_path)
215
+ Ignoring non-identical DLLs for %s, %s different from %s. Using first one and hoping for the best."""
216
+ % (entry_point1.dest_path, _describe(entry_point1), _describe(entry_point2))
194
217
  )
195
218
 
196
219
 
@@ -206,6 +229,13 @@ def addIncludedEntryPoint(entry_point):
206
229
  if areSamePaths(
207
230
  entry_point.source_path, standalone_entry_point.source_path
208
231
  ):
232
+ if (
233
+ standalone_entry_point.kind == "extension"
234
+ and entry_point.kind == "dll"
235
+ ):
236
+ entry_point = _makeIgnoredEntryPoint(entry_point)
237
+ break
238
+
209
239
  return
210
240
 
211
241
  if isShowInclusion():
@@ -285,19 +315,53 @@ def setMainEntryPoint(binary_filename):
285
315
 
286
316
 
287
317
  def addExtensionModuleEntryPoint(module):
318
+ dest_path = module.getFullName().asPath()
319
+
320
+ if module.isExtensionModulePackage():
321
+ dest_path = os.path.join(dest_path, "__init__")
322
+
323
+ dest_path += getSharedLibrarySuffix(preferred=False)
324
+
288
325
  standalone_entry_points.append(
289
326
  makeExtensionModuleEntryPoint(
290
327
  logger=general,
291
328
  source_path=module.getFilename(),
292
- dest_path=module.getFullName().asPath()
293
- + getSharedLibrarySuffix(preferred=False),
329
+ dest_path=dest_path,
330
+ module_name=module.getFullName(),
294
331
  package_name=module.getFullName().getPackageName(),
295
- reason="required extension module for CPython library startup"
296
- if module.isTechnical()
297
- else "used extension module",
332
+ reason=(
333
+ "required extension module for CPython library startup"
334
+ if module.isTechnical()
335
+ else "used extension module"
336
+ ),
298
337
  )
299
338
  )
300
339
 
301
340
 
341
+ def getIncludedExtensionModule(source_path):
342
+ for standalone_entry_point in standalone_entry_points:
343
+ if standalone_entry_point.kind == "extension":
344
+ if areSamePaths(source_path, standalone_entry_point.source_path):
345
+ return standalone_entry_point
346
+
347
+ return None
348
+
349
+
302
350
  def getStandaloneEntryPoints():
303
351
  return tuple(standalone_entry_points)
352
+
353
+
354
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
355
+ # integrates with CPython, but also works on its own.
356
+ #
357
+ # Licensed under the Apache License, Version 2.0 (the "License");
358
+ # you may not use this file except in compliance with the License.
359
+ # You may obtain a copy of the License at
360
+ #
361
+ # http://www.apache.org/licenses/LICENSE-2.0
362
+ #
363
+ # Unless required by applicable law or agreed to in writing, software
364
+ # distributed under the License is distributed on an "AS IS" BASIS,
365
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
366
+ # See the License for the specific language governing permissions and
367
+ # limitations under the License.
nuitka/freezer/Onefile.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
  """ Pack distribution folders into a single file.
19
5
 
20
6
  """
@@ -27,7 +13,6 @@ from nuitka import Options, OutputDirectories
27
13
  from nuitka.build.SconsInterface import (
28
14
  asBoolStr,
29
15
  cleanSconsDirectory,
30
- getSconsDataPath,
31
16
  runScons,
32
17
  setCommonSconsOptions,
33
18
  )
@@ -69,19 +54,17 @@ def packDistFolderToOnefile(dist_dir):
69
54
  Plugins.onOnefileFinished(onefile_output_filename)
70
55
 
71
56
 
72
- def _runOnefileScons(onefile_compression):
57
+ def _runOnefileScons(onefile_compression, onefile_archive):
73
58
  source_dir = OutputDirectories.getSourceDirectoryPath(onefile=True)
74
59
 
75
60
  # Let plugins do their thing for onefile mode too.
76
61
  Plugins.writeExtraCodeFiles(onefile=True)
77
62
 
78
63
  options = {
79
- "result_name": OutputDirectories.getResultBasePath(onefile=True),
80
64
  "result_exe": OutputDirectories.getResultFullpath(onefile=True),
81
65
  "source_dir": source_dir,
82
66
  "debug_mode": asBoolStr(Options.is_debug),
83
67
  "trace_mode": asBoolStr(Options.shallTraceExecution()),
84
- "nuitka_src": getSconsDataPath(),
85
68
  "onefile_splash_screen": asBoolStr(
86
69
  Options.getWindowsSplashScreen() is not None
87
70
  ),
@@ -93,6 +76,7 @@ def _runOnefileScons(onefile_compression):
93
76
  env_values["_NUITKA_ONEFILE_TEMP_BOOL"] = "1" if isOnefileTempDirMode() else "0"
94
77
  env_values["_NUITKA_ONEFILE_COMPRESSION_BOOL"] = "1" if onefile_compression else "0"
95
78
  env_values["_NUITKA_ONEFILE_BUILD_BOOL"] = "1" if onefile_compression else "0"
79
+ env_values["_NUITKA_ONEFILE_ARCHIVE_BOOL"] = "1" if onefile_archive else "0"
96
80
 
97
81
  # Allow plugins to build definitions.
98
82
  env_values.update(Plugins.getBuildDefinitions())
@@ -173,6 +157,8 @@ def runOnefileCompressor(
173
157
  onefile_output_filename=onefile_output_filename,
174
158
  start_binary=start_binary,
175
159
  expect_compression=compressor_python is not None,
160
+ as_archive=Options.shallOnefileAsArchive(),
161
+ use_compression_cache=not Options.shallDisableCompressionCacheUsage(),
176
162
  file_checksums=file_checksums,
177
163
  win_path_sep=win_path_sep,
178
164
  low_memory=Options.isLowMemory(),
@@ -206,6 +192,8 @@ def runOnefileCompressor(
206
192
  str(file_checksums),
207
193
  str(win_path_sep),
208
194
  str(Options.isLowMemory()),
195
+ str(Options.shallOnefileAsArchive()),
196
+ str(not Options.shallDisableCompressionCacheUsage()),
209
197
  ],
210
198
  shell=False,
211
199
  )
@@ -243,6 +231,7 @@ def packDistFolderToOnefileBootstrap(onefile_output_filename, dist_dir):
243
231
  # Create the bootstrap binary for unpacking.
244
232
  _runOnefileScons(
245
233
  onefile_compression=compressor_python is not None,
234
+ onefile_archive=Options.shallOnefileAsArchive(),
246
235
  )
247
236
 
248
237
  if isWin32Windows():
@@ -281,7 +270,28 @@ def packDistFolderToOnefileBootstrap(onefile_output_filename, dist_dir):
281
270
  if Options.isRemoveBuildDir():
282
271
  onefile_logger.info("Removing onefile build directory '%s'." % source_dir)
283
272
 
284
- removeDirectory(path=source_dir, ignore_errors=False)
273
+ removeDirectory(
274
+ path=source_dir,
275
+ logger=onefile_logger,
276
+ ignore_errors=False,
277
+ extra_recommendation=None,
278
+ )
285
279
  assert not os.path.exists(source_dir)
286
280
  else:
287
281
  onefile_logger.info("Keeping onefile build directory '%s'." % source_dir)
282
+
283
+
284
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
285
+ # integrates with CPython, but also works on its own.
286
+ #
287
+ # Licensed under the Apache License, Version 2.0 (the "License");
288
+ # you may not use this file except in compliance with the License.
289
+ # You may obtain a copy of the License at
290
+ #
291
+ # http://www.apache.org/licenses/LICENSE-2.0
292
+ #
293
+ # Unless required by applicable law or agreed to in writing, software
294
+ # distributed under the License is distributed on an "AS IS" BASIS,
295
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
296
+ # See the License for the specific language governing permissions and
297
+ # limitations under the License.
@@ -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
  """ Pack and copy files for standalone mode.
19
5
 
20
6
  This is expected to work for macOS, Windows, and Linux. Other things like
@@ -26,7 +12,11 @@ import os
26
12
 
27
13
  from nuitka.containers.OrderedSets import OrderedSet
28
14
  from nuitka.Errors import NuitkaForbiddenDLLEncounter
29
- from nuitka.importing.Importing import getPythonUnpackedSearchPath
15
+ from nuitka.importing.Importing import (
16
+ getPythonUnpackedSearchPath,
17
+ locateModule,
18
+ )
19
+ from nuitka.importing.StandardLibrary import isStandardLibraryPath
30
20
  from nuitka.Options import (
31
21
  isShowProgress,
32
22
  shallNotStoreDependsExeCachedResults,
@@ -38,6 +28,12 @@ from nuitka.Progress import (
38
28
  reportProgressBar,
39
29
  setupProgressBar,
40
30
  )
31
+ from nuitka.PythonFlavors import (
32
+ getHomebrewInstallPath,
33
+ isAnacondaPython,
34
+ isHomebrewPython,
35
+ )
36
+ from nuitka.PythonVersions import getSystemPrefixPath
41
37
  from nuitka.Tracing import general, inclusion_logger
42
38
  from nuitka.utils.FileOperations import areInSamePaths, isFilenameBelowPath
43
39
  from nuitka.utils.SharedLibraries import copyDllFile, setSharedLibraryRPATH
@@ -56,8 +52,12 @@ from .DllDependenciesMacOS import (
56
52
  fixupBinaryDLLPathsMacOS,
57
53
  )
58
54
  from .DllDependenciesPosix import detectBinaryPathDLLsPosix
59
- from .DllDependenciesWin32 import detectBinaryPathDLLsWindowsDependencyWalker
60
- from .IncludedEntryPoints import addIncludedEntryPoint, makeDllEntryPoint
55
+ from .DllDependenciesWin32 import detectBinaryPathDLLsWin32
56
+ from .IncludedEntryPoints import (
57
+ addIncludedEntryPoint,
58
+ getIncludedExtensionModule,
59
+ makeDllEntryPoint,
60
+ )
61
61
 
62
62
 
63
63
  def checkFreezingModuleSet():
@@ -135,7 +135,7 @@ def _detectBinaryDLLs(
135
135
  message="Running 'depends.exe' for %s took %%.2f seconds" % binary_filename,
136
136
  decider=isShowProgress,
137
137
  ):
138
- return detectBinaryPathDLLsWindowsDependencyWalker(
138
+ return detectBinaryPathDLLsWin32(
139
139
  is_main_executable=is_main_executable,
140
140
  source_dir=source_dir,
141
141
  original_dir=os.path.dirname(original_filename),
@@ -227,10 +227,32 @@ def copyDllsUsed(dist_dir, standalone_entry_points):
227
227
  )
228
228
 
229
229
 
230
+ def _reduceToPythonPath(used_dlls):
231
+ inside_paths = getPythonUnpackedSearchPath()
232
+
233
+ if isAnacondaPython():
234
+ inside_paths.insert(0, getSystemPrefixPath())
235
+
236
+ if isHomebrewPython():
237
+ inside_paths.insert(0, getHomebrewInstallPath())
238
+
239
+ def decideInside(dll_filename):
240
+ return any(
241
+ isFilenameBelowPath(path=inside_path, filename=dll_filename)
242
+ for inside_path in inside_paths
243
+ )
244
+
245
+ used_dlls = set(
246
+ dll_filename for dll_filename in used_dlls if decideInside(dll_filename)
247
+ )
248
+
249
+ return used_dlls
250
+
251
+
230
252
  def _detectUsedDLLs(standalone_entry_point, source_dir):
231
253
  binary_filename = standalone_entry_point.source_path
232
254
  try:
233
- used_dlls = _detectBinaryDLLs(
255
+ used_dll_paths = _detectBinaryDLLs(
234
256
  is_main_executable=standalone_entry_point.kind == "executable",
235
257
  source_dir=source_dir,
236
258
  original_filename=standalone_entry_point.source_path,
@@ -240,57 +262,74 @@ def _detectUsedDLLs(standalone_entry_point, source_dir):
240
262
  update_cache=not shallNotStoreDependsExeCachedResults(),
241
263
  )
242
264
  except NuitkaForbiddenDLLEncounter:
243
- inclusion_logger.info("Not including forbidden DLL '%s'." % binary_filename)
265
+ inclusion_logger.info(
266
+ "Not including due to forbidden DLL '%s'." % binary_filename
267
+ )
244
268
  else:
245
269
  # Plugins generally decide if they allow dependencies from the outside
246
270
  # based on the package name.
247
- allow_outside_dependencies = Plugins.decideAllowOutsideDependencies(
248
- standalone_entry_point.package_name
249
- )
250
271
 
251
- # TODO: Command line option maybe
252
- if allow_outside_dependencies is None:
253
- allow_outside_dependencies = True
272
+ if standalone_entry_point.module_name is not None and used_dll_paths:
273
+ module_name, module_filename, _kind, finding = locateModule(
274
+ standalone_entry_point.module_name, parent_package=None, level=0
275
+ )
254
276
 
255
- if not allow_outside_dependencies:
256
- inside_paths = getPythonUnpackedSearchPath()
277
+ # Make sure we are not surprised here.
278
+ assert (
279
+ module_name == standalone_entry_point.module_name
280
+ ), standalone_entry_point.module_name
281
+ assert finding == "absolute", standalone_entry_point.module_name
257
282
 
258
- def decideInside(dll_filename):
259
- return any(
260
- isFilenameBelowPath(path=inside_path, filename=dll_filename)
261
- for inside_path in inside_paths
283
+ if isStandardLibraryPath(module_filename):
284
+ allow_outside_dependencies = True
285
+ else:
286
+ allow_outside_dependencies = Plugins.decideAllowOutsideDependencies(
287
+ standalone_entry_point.module_name
262
288
  )
263
289
 
264
- used_dlls = set(
265
- dll_filename for dll_filename in used_dlls if decideInside(dll_filename)
266
- )
290
+ if allow_outside_dependencies is False:
291
+ used_dll_paths = _reduceToPythonPath(used_dll_paths)
267
292
 
268
293
  # Allow plugins can prevent inclusion, this may discard things from used_dlls.
269
294
  removed_dlls = Plugins.removeDllDependencies(
270
- dll_filename=binary_filename, dll_filenames=used_dlls
295
+ dll_filename=binary_filename, dll_filenames=used_dll_paths
271
296
  )
272
- used_dlls = tuple(OrderedSet(used_dlls) - OrderedSet(removed_dlls))
273
-
274
- for used_dll in used_dlls:
275
- # TODO: If used by a DLL from the same folder, put it there,
276
- # otherwise top level, but for now this is limited to the case where
277
- # it is required that way only, because it broke other things.
278
- if standalone_entry_point.package_name == "openvino" and areInSamePaths(
279
- standalone_entry_point.source_path, used_dll
297
+ used_dll_paths = tuple(OrderedSet(used_dll_paths) - OrderedSet(removed_dlls))
298
+
299
+ for used_dll_path in used_dll_paths:
300
+ extension_standalone_entry_point = getIncludedExtensionModule(used_dll_path)
301
+ if extension_standalone_entry_point is not None:
302
+ # Sometimes an extension module is used like a DLL, make sure to
303
+ # remove it as a DLL then, there is no value in keeping those. Need
304
+ # to keep it's destination path from that extension module then.
305
+ dest_path = extension_standalone_entry_point.dest_path
306
+ elif (
307
+ standalone_entry_point.package_name is not None
308
+ and standalone_entry_point.package_name.hasOneOfNamespaces(
309
+ "openvino",
310
+ "av",
311
+ )
312
+ and areInSamePaths(standalone_entry_point.source_path, used_dll_path)
280
313
  ):
314
+ # TODO: If used by a DLL from the same folder, put it there,
315
+ # otherwise top level, but for now this is limited to a few cases
316
+ # where required that way (openvino) or known to be good only (av),
317
+ # because it broke other things. spell-checker: ignore openvino
318
+
281
319
  dest_path = os.path.normpath(
282
320
  os.path.join(
283
321
  os.path.dirname(standalone_entry_point.dest_path),
284
- os.path.basename(used_dll),
322
+ os.path.basename(used_dll_path),
285
323
  )
286
324
  )
287
325
  else:
288
- dest_path = os.path.basename(used_dll)
326
+ dest_path = os.path.basename(used_dll_path)
289
327
 
290
328
  dll_entry_point = makeDllEntryPoint(
291
329
  logger=inclusion_logger,
292
- source_path=used_dll,
330
+ source_path=used_dll_path,
293
331
  dest_path=dest_path,
332
+ module_name=standalone_entry_point.module_name,
294
333
  package_name=standalone_entry_point.package_name,
295
334
  reason="Used by '%s'" % standalone_entry_point.dest_path,
296
335
  )
@@ -313,3 +352,19 @@ def detectUsedDLLs(standalone_entry_points, source_dir):
313
352
  )
314
353
 
315
354
  closeProgressBar()
355
+
356
+
357
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
358
+ # integrates with CPython, but also works on its own.
359
+ #
360
+ # Licensed under the Apache License, Version 2.0 (the "License");
361
+ # you may not use this file except in compliance with the License.
362
+ # You may obtain a copy of the License at
363
+ #
364
+ # http://www.apache.org/licenses/LICENSE-2.0
365
+ #
366
+ # Unless required by applicable law or agreed to in writing, software
367
+ # distributed under the License is distributed on an "AS IS" BASIS,
368
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
369
+ # See the License for the specific language governing permissions and
370
+ # 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. """
@@ -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
  """ Ignore listing of modules that are not found, but probably that's acceptable.
19
5
 
20
6
  """
@@ -445,3 +431,19 @@ please report this as a bug."""
445
431
  )
446
432
 
447
433
  return module_name.hasOneOfNamespaces(getModuleIgnoreList())
434
+
435
+
436
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
437
+ # integrates with CPython, but also works on its own.
438
+ #
439
+ # Licensed under the Apache License, Version 2.0 (the "License");
440
+ # you may not use this file except in compliance with the License.
441
+ # You may obtain a copy of the License at
442
+ #
443
+ # http://www.apache.org/licenses/LICENSE-2.0
444
+ #
445
+ # Unless required by applicable law or agreed to in writing, software
446
+ # distributed under the License is distributed on an "AS IS" BASIS,
447
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
448
+ # See the License for the specific language governing permissions and
449
+ # limitations under the License.