Nuitka-winsvc 2.4.11__cp311-cp311-win_amd64.whl → 2.5.6__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 (304) hide show
  1. {Nuitka_winsvc-2.4.11.dist-info → Nuitka_winsvc-2.5.6.dist-info}/METADATA +56 -109
  2. {Nuitka_winsvc-2.4.11.dist-info → Nuitka_winsvc-2.5.6.dist-info}/RECORD +304 -280
  3. {Nuitka_winsvc-2.4.11.dist-info → Nuitka_winsvc-2.5.6.dist-info}/WHEEL +1 -1
  4. nuitka/Builtins.py +31 -0
  5. nuitka/HardImportRegistry.py +8 -0
  6. nuitka/MainControl.py +9 -4
  7. nuitka/OptionParsing.py +108 -54
  8. nuitka/Options.py +69 -13
  9. nuitka/OutputDirectories.py +7 -2
  10. nuitka/PostProcessing.py +69 -38
  11. nuitka/Progress.py +16 -1
  12. nuitka/PythonVersions.py +2 -1
  13. nuitka/Serialization.py +4 -2
  14. nuitka/Tracing.py +69 -1
  15. nuitka/Version.py +2 -2
  16. nuitka/build/Backend.scons +45 -5
  17. nuitka/build/CCompilerVersion.scons +6 -0
  18. nuitka/build/Onefile.scons +6 -0
  19. nuitka/build/SconsCaching.py +4 -0
  20. nuitka/build/SconsCompilerSettings.py +14 -3
  21. nuitka/build/SconsInterface.py +3 -0
  22. nuitka/build/SconsUtils.py +5 -0
  23. nuitka/build/include/nuitka/allocator.h +124 -1
  24. nuitka/build/include/nuitka/calling.h +6 -6
  25. nuitka/build/include/nuitka/compiled_asyncgen.h +10 -7
  26. nuitka/build/include/nuitka/compiled_frame.h +2 -1
  27. nuitka/build/include/nuitka/constants.h +8 -0
  28. nuitka/build/include/nuitka/debug_settings.h +60 -0
  29. nuitka/build/include/nuitka/exceptions.h +264 -121
  30. nuitka/build/include/nuitka/helper/attributes.h +0 -4
  31. nuitka/build/include/nuitka/helper/calling_generated.h +52 -52
  32. nuitka/build/include/nuitka/helper/comparisons_dual_eq.h +47 -0
  33. nuitka/build/include/nuitka/helper/comparisons_dual_ge.h +39 -0
  34. nuitka/build/include/nuitka/helper/comparisons_dual_gt.h +39 -0
  35. nuitka/build/include/nuitka/helper/comparisons_dual_le.h +47 -0
  36. nuitka/build/include/nuitka/helper/comparisons_dual_lt.h +47 -0
  37. nuitka/build/include/nuitka/helper/comparisons_dual_ne.h +39 -0
  38. nuitka/build/include/nuitka/helper/dictionaries.h +75 -31
  39. nuitka/build/include/nuitka/helper/ints.h +86 -37
  40. nuitka/build/include/nuitka/helper/iterators.h +82 -34
  41. nuitka/build/include/nuitka/helper/operations.h +3 -0
  42. nuitka/build/include/nuitka/helper/operations_binary_add.h +6 -0
  43. nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
  44. nuitka/build/include/nuitka/helper/operations_binary_sub.h +6 -0
  45. nuitka/build/include/nuitka/helper/operations_inplace_add.h +3 -0
  46. nuitka/build/include/nuitka/helper/operations_inplace_sub.h +3 -0
  47. nuitka/build/include/nuitka/helper/raising.h +47 -28
  48. nuitka/build/include/nuitka/helper/richcomparisons.h +7 -0
  49. nuitka/build/include/nuitka/helper/tuples.h +12 -0
  50. nuitka/build/include/nuitka/helpers.h +12 -2
  51. nuitka/build/include/nuitka/prelude.h +36 -25
  52. nuitka/build/include/nuitka/printing.h +9 -7
  53. nuitka/build/include/nuitka/threading.h +15 -1
  54. nuitka/build/include/nuitka/type_aliases.h +3 -0
  55. nuitka/build/inline_copy/stubgen/astunparse.py +938 -0
  56. nuitka/build/inline_copy/stubgen/six.py +998 -0
  57. nuitka/build/inline_copy/stubgen/stubgen.py +307 -0
  58. nuitka/build/static_src/CompiledAsyncgenType.c +45 -39
  59. nuitka/build/static_src/CompiledCellType.c +6 -4
  60. nuitka/build/static_src/CompiledCodeHelpers.c +106 -40
  61. nuitka/build/static_src/CompiledCoroutineType.c +41 -31
  62. nuitka/build/static_src/CompiledFrameType.c +110 -79
  63. nuitka/build/static_src/CompiledFunctionType.c +173 -151
  64. nuitka/build/static_src/CompiledGeneratorType.c +51 -49
  65. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +433 -46
  66. nuitka/build/static_src/CompiledMethodType.c +6 -12
  67. nuitka/build/static_src/HelpersAllocator.c +266 -28
  68. nuitka/build/static_src/HelpersAttributes.c +0 -21
  69. nuitka/build/static_src/HelpersBuiltin.c +23 -14
  70. nuitka/build/static_src/HelpersCalling.c +7 -7
  71. nuitka/build/static_src/HelpersCallingGenerated.c +70 -70
  72. nuitka/build/static_src/HelpersComparisonDualEq.c +183 -0
  73. nuitka/build/static_src/HelpersComparisonDualGe.c +121 -0
  74. nuitka/build/static_src/HelpersComparisonDualGt.c +121 -0
  75. nuitka/build/static_src/HelpersComparisonDualLe.c +183 -0
  76. nuitka/build/static_src/HelpersComparisonDualLt.c +183 -0
  77. nuitka/build/static_src/HelpersComparisonDualNe.c +121 -0
  78. nuitka/build/static_src/HelpersComparisonEq.c +18 -4
  79. nuitka/build/static_src/HelpersComparisonGe.c +18 -4
  80. nuitka/build/static_src/HelpersComparisonGt.c +18 -4
  81. nuitka/build/static_src/HelpersComparisonLe.c +18 -4
  82. nuitka/build/static_src/HelpersComparisonLt.c +18 -4
  83. nuitka/build/static_src/HelpersComparisonNe.c +18 -4
  84. nuitka/build/static_src/HelpersConsole.c +34 -8
  85. nuitka/build/static_src/HelpersConstantsBlob.c +4 -2
  86. nuitka/build/static_src/HelpersDeepcopy.c +1 -0
  87. nuitka/build/static_src/HelpersDictionaries.c +195 -36
  88. nuitka/build/static_src/HelpersDictionariesGenerated.c +12 -107
  89. nuitka/build/static_src/HelpersExceptions.c +24 -50
  90. nuitka/build/static_src/HelpersFiles.c +79 -5
  91. nuitka/build/static_src/HelpersImport.c +13 -9
  92. nuitka/build/static_src/HelpersImportHard.c +23 -46
  93. nuitka/build/static_src/HelpersLists.c +98 -9
  94. nuitka/build/static_src/HelpersOperationBinaryAdd.c +224 -6
  95. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +3 -0
  96. nuitka/build/static_src/HelpersOperationBinaryBitand.c +5 -5
  97. nuitka/build/static_src/HelpersOperationBinaryBitor.c +5 -5
  98. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +5 -5
  99. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +8 -2
  100. nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
  101. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +14 -8
  102. nuitka/build/static_src/HelpersOperationBinaryLshift.c +36 -36
  103. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +1 -0
  104. nuitka/build/static_src/HelpersOperationBinaryMod.c +22 -10
  105. nuitka/build/static_src/HelpersOperationBinaryMult.c +17 -7
  106. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +14 -8
  107. nuitka/build/static_src/HelpersOperationBinaryPow.c +24 -24
  108. nuitka/build/static_src/HelpersOperationBinaryRshift.c +4 -4
  109. nuitka/build/static_src/HelpersOperationBinarySub.c +229 -8
  110. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +8 -2
  111. nuitka/build/static_src/HelpersOperationInplaceAdd.c +162 -10
  112. nuitka/build/static_src/HelpersOperationInplaceBitand.c +5 -5
  113. nuitka/build/static_src/HelpersOperationInplaceBitor.c +5 -5
  114. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +5 -5
  115. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +11 -6
  116. nuitka/build/static_src/HelpersOperationInplaceLshift.c +20 -20
  117. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +1 -0
  118. nuitka/build/static_src/HelpersOperationInplaceMod.c +11 -6
  119. nuitka/build/static_src/HelpersOperationInplaceMult.c +11 -6
  120. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +11 -6
  121. nuitka/build/static_src/HelpersOperationInplacePow.c +20 -20
  122. nuitka/build/static_src/HelpersOperationInplaceRshift.c +4 -4
  123. nuitka/build/static_src/HelpersOperationInplaceSub.c +163 -10
  124. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +6 -1
  125. nuitka/build/static_src/HelpersProfiling.c +1 -1
  126. nuitka/build/static_src/HelpersRaising.c +255 -310
  127. nuitka/build/static_src/HelpersStrings.c +1 -1
  128. nuitka/build/static_src/HelpersTuples.c +2 -2
  129. nuitka/build/static_src/HelpersTypes.c +98 -2
  130. nuitka/build/static_src/MainProgram.c +132 -28
  131. nuitka/build/static_src/MetaPathBasedLoader.c +18 -19
  132. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +134 -11
  133. nuitka/build/static_src/OnefileBootstrap.c +6 -1
  134. nuitka/code_generation/AsyncgenCodes.py +2 -6
  135. nuitka/code_generation/BinaryOperationHelperDefinitions.py +269 -167
  136. nuitka/code_generation/BuiltinCodes.py +9 -1
  137. nuitka/code_generation/CallCodes.py +16 -16
  138. nuitka/code_generation/CodeGeneration.py +14 -2
  139. nuitka/code_generation/CodeHelperSelection.py +1 -1
  140. nuitka/code_generation/CodeHelpers.py +4 -1
  141. nuitka/code_generation/CodeObjectCodes.py +2 -2
  142. nuitka/code_generation/ComparisonCodes.py +13 -2
  143. nuitka/code_generation/ComparisonHelperDefinitions.py +23 -8
  144. nuitka/code_generation/Contexts.py +28 -16
  145. nuitka/code_generation/CoroutineCodes.py +2 -6
  146. nuitka/code_generation/DictCodes.py +3 -3
  147. nuitka/code_generation/ErrorCodes.py +34 -50
  148. nuitka/code_generation/ExceptionCodes.py +165 -96
  149. nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +25 -10
  150. nuitka/code_generation/FrameCodes.py +4 -11
  151. nuitka/code_generation/FunctionCodes.py +2 -6
  152. nuitka/code_generation/GeneratorCodes.py +2 -6
  153. nuitka/code_generation/GlobalConstants.py +8 -2
  154. nuitka/code_generation/GlobalsLocalsCodes.py +2 -2
  155. nuitka/code_generation/IteratorCodes.py +67 -54
  156. nuitka/code_generation/LineNumberCodes.py +1 -3
  157. nuitka/code_generation/ModuleCodes.py +28 -4
  158. nuitka/code_generation/OperationCodes.py +51 -20
  159. nuitka/code_generation/PackageResourceCodes.py +37 -0
  160. nuitka/code_generation/RaisingCodes.py +164 -90
  161. nuitka/code_generation/Reports.py +13 -5
  162. nuitka/code_generation/ReturnCodes.py +2 -16
  163. nuitka/code_generation/TryCodes.py +12 -24
  164. nuitka/code_generation/TypeAliasCodes.py +48 -0
  165. nuitka/code_generation/VariableCodes.py +99 -40
  166. nuitka/code_generation/VariableDeclarations.py +8 -8
  167. nuitka/code_generation/YieldCodes.py +1 -1
  168. nuitka/code_generation/c_types/CTypeBases.py +10 -2
  169. nuitka/code_generation/c_types/CTypeModuleDictVariables.py +3 -0
  170. nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +3 -4
  171. nuitka/code_generation/c_types/CTypeNuitkaInts.py +70 -25
  172. nuitka/code_generation/c_types/CTypeNuitkaVoids.py +1 -1
  173. nuitka/code_generation/c_types/CTypePyObjectPointers.py +16 -6
  174. nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +2 -2
  175. nuitka/code_generation/templates/CodeTemplatesConstants.py +11 -3
  176. nuitka/code_generation/templates/CodeTemplatesCoroutines.py +2 -2
  177. nuitka/code_generation/templates/CodeTemplatesExceptions.py +15 -16
  178. nuitka/code_generation/templates/CodeTemplatesFrames.py +18 -10
  179. nuitka/code_generation/templates/CodeTemplatesFunction.py +2 -2
  180. nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +2 -2
  181. nuitka/code_generation/templates/CodeTemplatesIterators.py +1 -35
  182. nuitka/code_generation/templates/CodeTemplatesModules.py +34 -4
  183. nuitka/code_generation/templates/CodeTemplatesVariables.py +76 -0
  184. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +3 -3
  185. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +3 -3
  186. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +4 -106
  187. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +1 -2
  188. nuitka/code_generation/templates_c/HelperLongTools.c.j2 +1 -1
  189. nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
  190. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +9 -9
  191. nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
  192. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +1 -1
  193. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +1 -1
  194. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +9 -9
  195. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +7 -7
  196. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +9 -9
  197. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +7 -7
  198. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +4 -4
  199. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +1 -1
  200. nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +31 -31
  201. nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +1 -1
  202. nuitka/containers/Namedtuples.py +6 -0
  203. nuitka/containers/OrderedSets.py +105 -5
  204. nuitka/distutils/Build.py +14 -0
  205. nuitka/distutils/DistutilCommands.py +50 -10
  206. nuitka/finalizations/Finalization.py +3 -3
  207. nuitka/finalizations/FinalizeMarkups.py +10 -14
  208. nuitka/freezer/DependsExe.py +5 -2
  209. nuitka/freezer/DllDependenciesMacOS.py +18 -1
  210. nuitka/freezer/DllDependenciesWin32.py +26 -12
  211. nuitka/freezer/ImportDetection.py +6 -0
  212. nuitka/freezer/IncludedDataFiles.py +37 -6
  213. nuitka/freezer/Onefile.py +1 -0
  214. nuitka/freezer/Standalone.py +72 -18
  215. nuitka/importing/Importing.py +33 -6
  216. nuitka/importing/Recursion.py +5 -2
  217. nuitka/importing/StandardLibrary.py +57 -59
  218. nuitka/nodes/AsyncgenNodes.py +3 -6
  219. nuitka/nodes/BuiltinIteratorNodes.py +2 -2
  220. nuitka/nodes/BuiltinRefNodes.py +14 -30
  221. nuitka/nodes/ChildrenHavingMixins.py +439 -46
  222. nuitka/nodes/ConditionalNodes.py +3 -2
  223. nuitka/nodes/CoroutineNodes.py +3 -6
  224. nuitka/nodes/DictionaryNodes.py +1 -1
  225. nuitka/nodes/ExceptionNodes.py +102 -26
  226. nuitka/nodes/ExpressionBasesGenerated.py +288 -4
  227. nuitka/nodes/FrameNodes.py +22 -11
  228. nuitka/nodes/FunctionNodes.py +3 -3
  229. nuitka/nodes/GeneratorNodes.py +3 -6
  230. nuitka/nodes/HardImportNodesGenerated.py +182 -0
  231. nuitka/nodes/ImportNodes.py +2 -2
  232. nuitka/nodes/NodeBases.py +28 -1
  233. nuitka/nodes/NodeMakingHelpers.py +71 -50
  234. nuitka/nodes/OperatorNodesUnary.py +128 -3
  235. nuitka/nodes/OsSysNodes.py +37 -6
  236. nuitka/nodes/OutlineNodes.py +2 -2
  237. nuitka/nodes/StatementBasesGenerated.py +0 -2
  238. nuitka/nodes/StatementNodes.py +8 -7
  239. nuitka/nodes/SubscriptNodes.py +1 -1
  240. nuitka/nodes/TypeNodes.py +28 -1
  241. nuitka/nodes/VariableAssignNodes.py +2 -1
  242. nuitka/nodes/shapes/BuiltinTypeShapes.py +24 -7
  243. nuitka/nodes/shapes/IteratorShapes.py +71 -0
  244. nuitka/nodes/shapes/ShapeMixins.py +18 -0
  245. nuitka/nodes/shapes/StandardShapes.py +47 -44
  246. nuitka/optimizations/BytecodeDemotion.py +2 -1
  247. nuitka/plugins/PluginBase.py +64 -22
  248. nuitka/plugins/Plugins.py +16 -3
  249. nuitka/plugins/standard/AntiBloatPlugin.py +23 -12
  250. nuitka/plugins/standard/DllFilesPlugin.py +78 -2
  251. nuitka/plugins/standard/ImplicitImports.py +5 -15
  252. nuitka/plugins/standard/KivyPlugin.py +3 -12
  253. nuitka/plugins/standard/MatplotlibPlugin.py +12 -1
  254. nuitka/plugins/standard/MultiprocessingPlugin.py +11 -20
  255. nuitka/plugins/standard/OptionsNannyPlugin.py +5 -4
  256. nuitka/plugins/standard/PlaywrightPlugin.py +184 -0
  257. nuitka/plugins/standard/PySidePyQtPlugin.py +8 -0
  258. nuitka/plugins/standard/TkinterPlugin.py +23 -3
  259. nuitka/plugins/standard/TransformersPlugin.py +70 -275
  260. nuitka/plugins/standard/standard.nuitka-package.config.yml +413 -30
  261. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +35 -2
  262. nuitka/reports/CompilationReportReader.py +12 -0
  263. nuitka/reports/Reports.py +11 -0
  264. nuitka/specs/BuiltinParameterSpecs.py +5 -1
  265. nuitka/specs/HardImportSpecs.py +7 -0
  266. nuitka/specs/ParameterSpecs.py +4 -4
  267. nuitka/tools/environments/Virtualenv.py +13 -5
  268. nuitka/tools/general/dll_report/__main__.py +10 -1
  269. nuitka/tools/onefile_compressor/OnefileCompressor.py +1 -1
  270. nuitka/tools/podman/__main__.py +4 -2
  271. nuitka/tools/specialize/CTypeDescriptions.py +158 -9
  272. nuitka/tools/specialize/SpecializeC.py +218 -56
  273. nuitka/tools/testing/Common.py +69 -62
  274. nuitka/tools/testing/compare_with_cpython/__main__.py +3 -1
  275. nuitka/tools/testing/measure_construct_performance/__main__.py +1 -8
  276. nuitka/tools/testing/run_nuitka_tests/__main__.py +77 -11
  277. nuitka/tools/watch/AutoStage.py +1 -0
  278. nuitka/tree/Building.py +10 -37
  279. nuitka/tree/ComplexCallHelperFunctions.py +4 -0
  280. nuitka/tree/ReformulationAssertStatements.py +31 -14
  281. nuitka/tree/ReformulationAssignmentStatements.py +5 -1
  282. nuitka/tree/ReformulationClasses3.py +94 -19
  283. nuitka/tree/ReformulationDictionaryCreation.py +1 -0
  284. nuitka/tree/ReformulationFunctionStatements.py +1 -1
  285. nuitka/tree/ReformulationMatchStatements.py +3 -1
  286. nuitka/tree/ReformulationYieldExpressions.py +23 -5
  287. nuitka/utils/CommandLineOptions.py +27 -3
  288. nuitka/utils/Download.py +2 -2
  289. nuitka/utils/Execution.py +36 -31
  290. nuitka/utils/FileOperations.py +18 -39
  291. nuitka/utils/Hashing.py +5 -1
  292. nuitka/utils/Importing.py +2 -14
  293. nuitka/utils/InlineCopies.py +52 -0
  294. nuitka/utils/InstalledPythons.py +9 -4
  295. nuitka/utils/Json.py +2 -2
  296. nuitka/utils/PackageResources.py +44 -0
  297. nuitka/utils/SharedLibraries.py +24 -0
  298. nuitka/utils/Signing.py +9 -1
  299. nuitka/utils/Utils.py +1 -0
  300. {Nuitka_winsvc-2.4.11.data → Nuitka_winsvc-2.5.6.data}/scripts/nuitka-run.cmd +0 -0
  301. {Nuitka_winsvc-2.4.11.data → Nuitka_winsvc-2.5.6.data}/scripts/nuitka.cmd +0 -0
  302. {Nuitka_winsvc-2.4.11.dist-info → Nuitka_winsvc-2.5.6.dist-info}/LICENSE.txt +0 -0
  303. {Nuitka_winsvc-2.4.11.dist-info → Nuitka_winsvc-2.5.6.dist-info}/entry_points.txt +0 -0
  304. {Nuitka_winsvc-2.4.11.dist-info → Nuitka_winsvc-2.5.6.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,184 @@
1
+ # Copyright 2024, Kevin Rodriguez <mailto:turcioskevinr@gmail.com> find license text at end of file
2
+
3
+
4
+ """ Plugin for Playwright.
5
+
6
+ spell-checker: ignore Playwright
7
+ """
8
+
9
+ import os
10
+
11
+ from nuitka.Options import isStandaloneMode
12
+ from nuitka.plugins.PluginBase import NuitkaPluginBase
13
+
14
+
15
+ class NuitkaPluginPlaywright(NuitkaPluginBase):
16
+ """This class represents the main logic of the plugin."""
17
+
18
+ plugin_name = "playwright"
19
+ plugin_desc = "Required by 'playwright' package."
20
+
21
+ def __init__(self, include_browsers):
22
+ self.include_browsers = list(include_browsers)
23
+ self.installed_browsers = None
24
+
25
+ @staticmethod
26
+ def isAlwaysEnabled():
27
+ return True
28
+
29
+ @staticmethod
30
+ def isRelevant():
31
+ return isStandaloneMode()
32
+
33
+ @classmethod
34
+ def addPluginCommandLineOptions(cls, group):
35
+ group.add_option(
36
+ "--playwright-include-browser",
37
+ action="append",
38
+ dest="include_browsers",
39
+ default=[],
40
+ help="""\
41
+ Playwright browser to include. Can be specified multiple times. use "all" to include all installed browsers.
42
+ """,
43
+ )
44
+
45
+ def _getPlaywrightPath(self):
46
+ """Determine the path of the playwright module."""
47
+ info = self.locateModule("playwright")
48
+
49
+ if info is None:
50
+ self.sysexit("Error, it seems 'playwright' is not installed or broken.")
51
+
52
+ return info
53
+
54
+ def _getPlaywrightRegistryDirectory(self):
55
+ # this is a port of playwright's JS script which determines where the browsers are installed
56
+
57
+ env_defined = os.environ.get("PLAYWRIGHT_BROWSERS_PATH")
58
+ path_home = os.path.expanduser("~")
59
+ playwright_module_path = self._getPlaywrightPath()
60
+
61
+ result = os.path.join(
62
+ playwright_module_path, "driver", "package", ".local-browsers"
63
+ )
64
+
65
+ # TODO: This is seemingly a test for non-empty directory, which we should
66
+ # then add to FileOperations.
67
+
68
+ if os.path.exists(result) and next(os.scandir(result), False):
69
+ return result
70
+ elif env_defined == "0":
71
+ return result
72
+ elif env_defined:
73
+ result = os.path.normpath(env_defined)
74
+ else:
75
+ cache_directory = ""
76
+ if os.name == "posix":
77
+ cache_directory = os.environ.get(
78
+ "XDG_CACHE_HOME", os.path.join(path_home, ".cache")
79
+ )
80
+ elif os.name == "darwin":
81
+ cache_directory = os.path.join(path_home, "Library", "Caches")
82
+ elif os.name == "nt":
83
+ cache_directory = os.environ.get(
84
+ "LOCALAPPDATA", os.path.join(path_home, "AppData", "Local")
85
+ )
86
+
87
+ result = os.path.join(cache_directory, "ms-playwright")
88
+
89
+ if not os.path.isabs(result):
90
+ init_cwd = os.environ.get("INIT_CWD") or os.getcwd()
91
+ result = os.path.join(os.path.abspath(init_cwd), result)
92
+
93
+ return result
94
+
95
+ def getInstalledPlaywrightBrowsers(self):
96
+ registry_directory = self._getPlaywrightRegistryDirectory()
97
+ if not os.path.exists(registry_directory):
98
+ return
99
+
100
+ # TODO: Seems useless use of os.scandir, our helper for listing a directory
101
+ # would be better to use.
102
+ browsers_installed = [
103
+ browser
104
+ for browser in os.scandir(registry_directory)
105
+ if browser.name != ".links"
106
+ ]
107
+ self.installed_browsers = {}
108
+ for browser in browsers_installed:
109
+ self.installed_browsers[browser.name] = browser
110
+
111
+ def considerDataFiles(self, module):
112
+
113
+ if module.getFullName() != "playwright":
114
+ return
115
+
116
+ if not self.include_browsers:
117
+
118
+ self.sysexit(
119
+ "No browsers included. Use the option '--playwright-include-browser=browser_name' to include one. Use 'all' to include all installed ones." # pylint: disable=C0301
120
+ )
121
+
122
+ self.getInstalledPlaywrightBrowsers()
123
+
124
+ if not self.installed_browsers:
125
+ self.sysexit(
126
+ "Error, no browsers found in the registry, if you're using playwright, make sure to install a browser."
127
+ )
128
+
129
+ self.info("Including browsers: %s" % ", ".join(self.include_browsers))
130
+ if "all" in self.include_browsers:
131
+ self.include_browsers = self.installed_browsers
132
+ elif "ffmpeg" not in self.include_browsers and any(
133
+ browser.startswith("chrom") for browser in self.include_browsers
134
+ ):
135
+ for browser in self.installed_browsers:
136
+ if "ffmpeg" in self.installed_browsers[browser].name:
137
+ self.include_browsers.append(browser)
138
+ self.info(
139
+ "Including 'ffmpeg' for chromium-based browser. It is required by playwright."
140
+ )
141
+ break
142
+
143
+ for browser in self.include_browsers:
144
+ if browser not in self.installed_browsers:
145
+ msg = (
146
+ "Error, requested to include browser '%s' that was not found, the list of installed ones is '%s'."
147
+ % (
148
+ browser,
149
+ ", ".join(self.installed_browsers),
150
+ )
151
+ )
152
+ self.sysexit(msg)
153
+
154
+ msg = "Including '%s' from '%s'." % (
155
+ browser,
156
+ self.installed_browsers[browser].path,
157
+ )
158
+ self.info(msg)
159
+
160
+ yield self.makeIncludedDataDirectory(
161
+ source_path=self.installed_browsers[browser],
162
+ dest_path=os.path.join(
163
+ "playwright", "driver", "package", ".local-browsers", browser
164
+ ),
165
+ reason="Playwright browser '%s'" % browser,
166
+ tags="playwright",
167
+ raw=True,
168
+ )
169
+
170
+
171
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
172
+ # integrates with CPython, but also works on its own.
173
+ #
174
+ # Licensed under the Apache License, Version 2.0 (the "License");
175
+ # you may not use this file except in compliance with the License.
176
+ # You may obtain a copy of the License at
177
+ #
178
+ # http://www.apache.org/licenses/LICENSE-2.0
179
+ #
180
+ # Unless required by applicable law or agreed to in writing, software
181
+ # distributed under the License is distributed on an "AS IS" BASIS,
182
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
183
+ # See the License for the specific language governing permissions and
184
+ # limitations under the License.
@@ -72,6 +72,14 @@ class NuitkaPluginQtBindingsPluginBase(NuitkaPluginBase):
72
72
  if "sensible" in include_qt_plugins:
73
73
  include_qt_plugins.remove("sensible")
74
74
 
75
+ for include_qt_plugin in include_qt_plugins:
76
+ if include_qt_plugin not in ("qml", "all") and not self.hasPluginFamily(
77
+ include_qt_plugin
78
+ ):
79
+ self.sysexit(
80
+ "Error, there is no Qt plugin family '%s'." % include_qt_plugin
81
+ )
82
+
75
83
  self.qt_plugins = sensible_qt_plugins
76
84
  self.qt_plugins.update(include_qt_plugins)
77
85
 
@@ -66,14 +66,14 @@ class NuitkaPluginTkinter(NuitkaPluginBase):
66
66
  self.tcl_library_dir = tcl_library_dir
67
67
  self.tk_library_dir = tk_library_dir
68
68
 
69
- # ensure one-time action, we deal with two names for the execution, yet we
70
- # only want to do it once.
69
+ # ensure one-time action, we deal with several names for the execution,
70
+ # yet we only want to do it once.
71
71
  self.files_copied = False
72
72
 
73
73
  self.tk_inter_version = getTkInterVersion()
74
74
 
75
75
  if self.tk_inter_version is None:
76
- self.sysexit("Error, it seems tk-inter is not installed.")
76
+ self.sysexit("Error, it seems 'tk-inter' is not installed.")
77
77
 
78
78
  # Only ever saw these 2 in use.
79
79
  assert self.tk_inter_version in ("8.5", "8.6"), self.tk_inter_version
@@ -164,6 +164,16 @@ The Tcl library dir. See comments for Tk library dir.""",
164
164
  )
165
165
  )
166
166
 
167
+ # Homebrew is compiled to think it's 8.6, but it might actually
168
+ # be the version 9.
169
+ yield os.path.normpath(
170
+ os.path.join(
171
+ _getHomebrewPrefix(self),
172
+ "lib",
173
+ "tcl9",
174
+ )
175
+ )
176
+
167
177
  def _getTkCandidatePaths(self):
168
178
  yield os.getenv("TK_LIBRARY")
169
179
 
@@ -191,6 +201,16 @@ The Tcl library dir. See comments for Tk library dir.""",
191
201
  )
192
202
  )
193
203
 
204
+ # Homebrew is compiled to think it's 8.6, but it might actually
205
+ # be the version 9.
206
+ yield os.path.normpath(
207
+ os.path.join(
208
+ _getHomebrewPrefix(self),
209
+ "lib",
210
+ "tk9.0",
211
+ )
212
+ )
213
+
194
214
  def considerDataFiles(self, module):
195
215
  """Provide TCL libraries to the dist folder.
196
216
 
@@ -17,287 +17,54 @@ class NuitkaPluginTransformers(NuitkaPluginBase):
17
17
  def isAlwaysEnabled():
18
18
  return True
19
19
 
20
- # Found via grep -re "_import_structure = {"
21
- _import_structure_modules = (
22
- "transformers",
23
- "transformers.generation",
24
- "transformers.integrations",
25
- "transformers.models.albert",
26
- "transformers.models.align",
27
- "transformers.models.altclip",
28
- "transformers.models.audio_spectrogram_transformer",
29
- "transformers.models.auto",
30
- "transformers.models.autoformer",
31
- "transformers.models.bark",
32
- "transformers.models.bart",
33
- "transformers.models.barthez",
34
- "transformers.models.bartpho",
35
- "transformers.models.beit",
36
- "transformers.models.bert",
37
- "transformers.models.bert_generation",
38
- "transformers.models.bert_japanese",
39
- "transformers.models.bertweet",
40
- "transformers.models.big_bird",
41
- "transformers.models.bigbird_pegasus",
42
- "transformers.models.biogpt",
43
- "transformers.models.bit",
44
- "transformers.models.blenderbot",
45
- "transformers.models.blenderbot_small",
46
- "transformers.models.blip",
47
- "transformers.models.blip_2",
48
- "transformers.models.bloom",
49
- "transformers.models.bridgetower",
50
- "transformers.models.bros",
51
- "transformers.models.byt5",
52
- "transformers.models.camembert",
53
- "transformers.models.canine",
54
- "transformers.models.chinese_clip",
55
- "transformers.models.clap",
56
- "transformers.models.clip",
57
- "transformers.models.clipseg",
58
- "transformers.models.clvp",
59
- "transformers.models.code_llama",
60
- "transformers.models.codegen",
61
- "transformers.models.cohere",
62
- "transformers.models.conditional_detr",
63
- "transformers.models.convbert",
64
- "transformers.models.convnext",
65
- "transformers.models.convnextv2",
66
- "transformers.models.cpm",
67
- "transformers.models.cpmant",
68
- "transformers.models.ctrl",
69
- "transformers.models.cvt",
70
- "transformers.models.data2vec",
71
- "transformers.models.deberta",
72
- "transformers.models.deberta_v2",
73
- "transformers.models.decision_transformer",
74
- "transformers.models.deformable_detr",
75
- "transformers.models.deit",
76
- "transformers.models.depth_anything",
77
- "transformers.models.deta",
78
- "transformers.models.detr",
79
- "transformers.models.dinat",
80
- "transformers.models.dinov2",
81
- "transformers.models.distilbert",
82
- "transformers.models.donut",
83
- "transformers.models.dpr",
84
- "transformers.models.dpt",
85
- "transformers.models.efficientformer",
86
- "transformers.models.efficientnet",
87
- "transformers.models.electra",
88
- "transformers.models.encodec",
89
- "transformers.models.encoder_decoder",
90
- "transformers.models.ernie",
91
- "transformers.models.ernie_m",
92
- "transformers.models.esm",
93
- "transformers.models.falcon",
94
- "transformers.models.fastspeech2_conformer",
95
- "transformers.models.flaubert",
96
- "transformers.models.flava",
97
- "transformers.models.fnet",
98
- "transformers.models.focalnet",
99
- "transformers.models.fsmt",
100
- "transformers.models.funnel",
101
- "transformers.models.fuyu",
102
- "transformers.models.gemma",
103
- "transformers.models.git",
104
- "transformers.models.glpn",
105
- "transformers.models.gpt2",
106
- "transformers.models.gpt_bigcode",
107
- "transformers.models.gpt_neo",
108
- "transformers.models.gpt_neox",
109
- "transformers.models.gpt_neox_japanese",
110
- "transformers.models.gpt_sw3",
111
- "transformers.models.gptj",
112
- "transformers.models.gptsan_japanese",
113
- "transformers.models.graphormer",
114
- "transformers.models.groupvit",
115
- "transformers.models.herbert",
116
- "transformers.models.hubert",
117
- "transformers.models.ibert",
118
- "transformers.models.idefics",
119
- "transformers.models.imagegpt",
120
- "transformers.models.informer",
121
- "transformers.models.instructblip",
122
- "transformers.models.jukebox",
123
- "transformers.models.kosmos2",
124
- "transformers.models.layoutlm",
125
- "transformers.models.layoutlmv2",
126
- "transformers.models.layoutlmv3",
127
- "transformers.models.layoutxlm",
128
- "transformers.models.led",
129
- "transformers.models.levit",
130
- "transformers.models.lilt",
131
- "transformers.models.llama",
132
- "transformers.models.llava",
133
- "transformers.models.llava_next",
134
- "transformers.models.longformer",
135
- "transformers.models.longt5",
136
- "transformers.models.luke",
137
- "transformers.models.lxmert",
138
- "transformers.models.m2m_100",
139
- "transformers.models.mamba",
140
- "transformers.models.marian",
141
- "transformers.models.markuplm",
142
- "transformers.models.mask2former",
143
- "transformers.models.maskformer",
144
- "transformers.models.mbart",
145
- "transformers.models.mbart50",
146
- "transformers.models.mctct",
147
- "transformers.models.mega",
148
- "transformers.models.megatron_bert",
149
- "transformers.models.mgp_str",
150
- "transformers.models.mistral",
151
- "transformers.models.mixtral",
152
- "transformers.models.mluke",
153
- "transformers.models.mmbt",
154
- "transformers.models.mobilebert",
155
- "transformers.models.mobilenet_v1",
156
- "transformers.models.mobilenet_v2",
157
- "transformers.models.mobilevit",
158
- "transformers.models.mobilevitv2",
159
- "transformers.models.mpnet",
160
- "transformers.models.mpt",
161
- "transformers.models.mra",
162
- "transformers.models.mt5",
163
- "transformers.models.musicgen",
164
- "transformers.models.musicgen_melody",
165
- "transformers.models.mvp",
166
- "transformers.models.nat",
167
- "transformers.models.nezha",
168
- "transformers.models.nllb",
169
- "transformers.models.nllb_moe",
170
- "transformers.models.nougat",
171
- "transformers.models.nystromformer",
172
- "transformers.models.oneformer",
173
- "transformers.models.open_llama",
174
- "transformers.models.openai",
175
- "transformers.models.opt",
176
- "transformers.models.owlv2",
177
- "transformers.models.owlvit",
178
- "transformers.models.patchtsmixer",
179
- "transformers.models.patchtst",
180
- "transformers.models.pegasus",
181
- "transformers.models.pegasus_x",
182
- "transformers.models.perceiver",
183
- "transformers.models.persimmon",
184
- "transformers.models.phi",
185
- "transformers.models.phobert",
186
- "transformers.models.pix2struct",
187
- "transformers.models.plbart",
188
- "transformers.models.poolformer",
189
- "transformers.models.pop2piano",
190
- "transformers.models.prophetnet",
191
- "transformers.models.pvt",
192
- "transformers.models.pvt_v2",
193
- "transformers.models.qdqbert",
194
- "transformers.models.qwen2",
195
- "transformers.models.rag",
196
- "transformers.models.realm",
197
- "transformers.models.reformer",
198
- "transformers.models.regnet",
199
- "transformers.models.rembert",
200
- "transformers.models.resnet",
201
- "transformers.models.retribert",
202
- "transformers.models.roberta",
203
- "transformers.models.roberta_prelayernorm",
204
- "transformers.models.roc_bert",
205
- "transformers.models.roformer",
206
- "transformers.models.rwkv",
207
- "transformers.models.sam",
208
- "transformers.models.seamless_m4t",
209
- "transformers.models.seamless_m4t_v2",
210
- "transformers.models.segformer",
211
- "transformers.models.seggpt",
212
- "transformers.models.sew",
213
- "transformers.models.sew_d",
214
- "transformers.models.siglip",
215
- "transformers.models.speech_encoder_decoder",
216
- "transformers.models.speech_to_text",
217
- "transformers.models.speech_to_text_2",
218
- "transformers.models.speecht5",
219
- "transformers.models.splinter",
220
- "transformers.models.squeezebert",
221
- "transformers.models.stablelm",
222
- "transformers.models.starcoder2",
223
- "transformers.models.superpoint",
224
- "transformers.models.swiftformer",
225
- "transformers.models.swin",
226
- "transformers.models.swin2sr",
227
- "transformers.models.swinv2",
228
- "transformers.models.switch_transformers",
229
- "transformers.models.t5",
230
- "transformers.models.table_transformer",
231
- "transformers.models.tapas",
232
- "transformers.models.tapex",
233
- "transformers.models.time_series_transformer",
234
- "transformers.models.timesformer",
235
- "transformers.models.timm_backbone",
236
- "transformers.models.trajectory_transformer",
237
- "transformers.models.deprecated.mctct",
238
- "transformers.models.deprecated.mmbt",
239
- "transformers.models.deprecated.open_llama",
240
- "transformers.models.deprecated.retribert",
241
- "transformers.models.deprecated.tapex",
242
- "transformers.models.deprecated.trajectory_transformer",
243
- "transformers.models.deprecated.transfo_xl",
244
- "transformers.models.deprecated.van",
245
- "transformers.models.trocr",
246
- "transformers.models.tvlt",
247
- "transformers.models.tvp",
248
- "transformers.models.udop",
249
- "transformers.models.umt5",
250
- "transformers.models.unispeech",
251
- "transformers.models.unispeech_sat",
252
- "transformers.models.univnet",
253
- "transformers.models.upernet",
254
- "transformers.models.van",
255
- "transformers.models.videomae",
256
- "transformers.models.vilt",
257
- "transformers.models.vipllava",
258
- "transformers.models.vision_encoder_decoder",
259
- "transformers.models.vision_text_dual_encoder",
260
- "transformers.models.visual_bert",
261
- "transformers.models.vit",
262
- "transformers.models.vit_hybrid",
263
- "transformers.models.vit_mae",
264
- "transformers.models.vit_msn",
265
- "transformers.models.vitdet",
266
- "transformers.models.vitmatte",
267
- "transformers.models.vits",
268
- "transformers.models.vivit",
269
- "transformers.models.wav2vec2",
270
- "transformers.models.wav2vec2_bert",
271
- "transformers.models.wav2vec2_conformer",
272
- "transformers.models.wav2vec2_phoneme",
273
- "transformers.models.wav2vec2_with_lm",
274
- "transformers.models.wavlm",
275
- "transformers.models.whisper",
276
- "transformers.models.x_clip",
277
- "transformers.models.xglm",
278
- "transformers.models.xlm",
279
- "transformers.models.xlm_prophetnet",
280
- "transformers.models.xlm_roberta",
281
- "transformers.models.xlm_roberta_xl",
282
- "transformers.models.xlnet",
283
- "transformers.models.xmod",
284
- "transformers.models.yolos",
285
- "transformers.models.yoso",
286
- "transformers.onnx",
287
- "transformers.tools",
288
- )
20
+ # Modules that have "_import_structure = {" definitions.
21
+ _import_structure_modules = set()
22
+
23
+ # Modules that have "define_import_structure(_file)" calls.
24
+ _define_structure_modules = {}
25
+
26
+ def onModuleUsageLookAhead(
27
+ self, module_name, module_filename, module_kind, get_module_source
28
+ ):
29
+ if (
30
+ not module_name.hasNamespace("transformers")
31
+ or module_name == "transformers.utils.import_utils"
32
+ ):
33
+ return
34
+
35
+ # Getting the source code will also trigger our modification
36
+ # and potentially tell us if any lazy loading applies.
37
+ source_code = get_module_source()
38
+
39
+ if source_code is None:
40
+ return
41
+
42
+ if "_import_structure = {" in source_code:
43
+ self._import_structure_modules.add(module_name)
44
+
45
+ def _getImportStructureDefinition(self, module_name, source_filename):
46
+ # TODO: Is caching is not needed, because it does that on
47
+ # its own?
48
+ import_structure_value = self.queryRuntimeInformationSingle(
49
+ setup_codes="from transformers.utils.import_utils import define_import_structure",
50
+ value="{tuple(key): value for (key, value) in define_import_structure(%r).items()}"
51
+ % source_filename,
52
+ info_name="transformers_%s_import_structure" % module_name.asString(),
53
+ )
54
+
55
+ return import_structure_value
289
56
 
290
57
  def getImplicitImports(self, module):
291
- full_name = module.getFullName()
58
+ module_name = module.getFullName()
292
59
 
293
- if full_name in self._import_structure_modules:
60
+ if module_name in self._import_structure_modules:
294
61
  for sub_module_name in self.queryRuntimeInformationSingle(
295
- setup_codes="import %s" % full_name.asString(),
62
+ setup_codes="import %s" % module_name.asString(),
296
63
  value="list(getattr(%(module_name)s, '_import_structure', {}).keys())"
297
- % {"module_name": full_name.asString()},
298
- info_name="import_structure_for_%s" % full_name.asString(),
64
+ % {"module_name": module_name.asString()},
65
+ info_name="import_structure_for_%s" % module_name.asString(),
299
66
  ):
300
- sub_module_name = full_name.getChildNamed(sub_module_name)
67
+ sub_module_name = module_name.getChildNamed(sub_module_name)
301
68
 
302
69
  if (
303
70
  sub_module_name == "transformers.testing_utils"
@@ -309,6 +76,34 @@ class NuitkaPluginTransformers(NuitkaPluginBase):
309
76
 
310
77
  yield sub_module_name
311
78
 
79
+ if module_name in self._define_structure_modules:
80
+ for sub_module_name in self._define_structure_modules[module_name][
81
+ frozenset()
82
+ ].keys():
83
+ yield module_name.getChildNamed(sub_module_name)
84
+
85
+ def onModuleSourceCode(self, module_name, source_filename, source_code):
86
+ if module_name.hasNamespace("transformers"):
87
+ if "define_import_structure(_file)" in source_code:
88
+ import_structure_value = self._getImportStructureDefinition(
89
+ module_name=module_name, source_filename=source_filename
90
+ )
91
+
92
+ # Frozenset does not transport as such, so we converted
93
+ # them to tuples and now back for compatibility.
94
+ import_structure_value = dict(
95
+ (frozenset(key), value)
96
+ for key, value in import_structure_value.items()
97
+ )
98
+
99
+ source_code = source_code.replace(
100
+ "define_import_structure(_file)", repr(import_structure_value)
101
+ )
102
+
103
+ self._define_structure_modules[module_name] = import_structure_value
104
+
105
+ return source_code
106
+
312
107
 
313
108
  # Part of "Nuitka", an optimizing Python compiler that is compatible and
314
109
  # integrates with CPython, but also works on its own.