diffusers-workflow 0.4.0a8__tar.gz → 0.4.0a10__tar.gz
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.
- {diffusers_workflow-0.4.0a8/diffusers_workflow.egg-info → diffusers_workflow-0.4.0a10}/PKG-INFO +7 -1
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/README.md +2 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10/diffusers_workflow.egg-info}/PKG-INFO +7 -1
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/diffusers_workflow.egg-info/SOURCES.txt +44 -21
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/diffusers_workflow.egg-info/entry_points.txt +1 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/diffusers_workflow.egg-info/requires.txt +5 -0
- diffusers_workflow-0.4.0a10/diffusers_workflow.egg-info/top_level.txt +2 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/__init__.py +75 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/events.py +17 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/hub_cache.py +5 -2
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/introspection.py +76 -15
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/pipeline_processors/chain.py +5 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/pipeline_processors/config_objects.py +4 -2
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/pipeline_processors/pipeline.py +75 -11
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/previous_results.py +13 -8
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/result.py +20 -2
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/run.py +5 -1
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/security.py +6 -4
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/app.py +144 -18
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/jobs.py +53 -4
- diffusers_workflow-0.4.0a8/dw/server/ui/assets/cssMode-4JQhrTTm.js → diffusers_workflow-0.4.0a10/dw/server/ui/assets/cssMode-DBf-T_da.js +1 -1
- diffusers_workflow-0.4.0a8/dw/server/ui/assets/editor.api-B_68laXH.js → diffusers_workflow-0.4.0a10/dw/server/ui/assets/editor.api-B0D5Ygq7.js +1 -1
- diffusers_workflow-0.4.0a8/dw/server/ui/assets/freemarker2-C4IxK8gs.js → diffusers_workflow-0.4.0a10/dw/server/ui/assets/freemarker2-Br8g4G1T.js +1 -1
- diffusers_workflow-0.4.0a8/dw/server/ui/assets/handlebars-BArDGhF4.js → diffusers_workflow-0.4.0a10/dw/server/ui/assets/handlebars-BKo1TaOF.js +1 -1
- diffusers_workflow-0.4.0a8/dw/server/ui/assets/html-8yKFx0-x.js → diffusers_workflow-0.4.0a10/dw/server/ui/assets/html-Bis1seyM.js +1 -1
- diffusers_workflow-0.4.0a8/dw/server/ui/assets/htmlMode-BwXG6XFP.js → diffusers_workflow-0.4.0a10/dw/server/ui/assets/htmlMode-D2SOD2MF.js +1 -1
- diffusers_workflow-0.4.0a10/dw/server/ui/assets/index-D7eWnTCB.css +1 -0
- diffusers_workflow-0.4.0a10/dw/server/ui/assets/index-JyFxgIR9.js +20 -0
- diffusers_workflow-0.4.0a8/dw/server/ui/assets/javascript-B3mqpFQQ.js → diffusers_workflow-0.4.0a10/dw/server/ui/assets/javascript-CkEbVb78.js +1 -1
- diffusers_workflow-0.4.0a8/dw/server/ui/assets/jsonMode-C1m5Z8Ha.js → diffusers_workflow-0.4.0a10/dw/server/ui/assets/jsonMode-dVJbYwxg.js +1 -1
- diffusers_workflow-0.4.0a8/dw/server/ui/assets/liquid-Cs5oVPJ1.js → diffusers_workflow-0.4.0a10/dw/server/ui/assets/liquid-Btak-6uF.js +1 -1
- diffusers_workflow-0.4.0a8/dw/server/ui/assets/lspLanguageFeatures-CnroSKaf.js → diffusers_workflow-0.4.0a10/dw/server/ui/assets/lspLanguageFeatures-BfeZZQbb.js +1 -1
- diffusers_workflow-0.4.0a8/dw/server/ui/assets/mdx-BGAIyUWE.js → diffusers_workflow-0.4.0a10/dw/server/ui/assets/mdx-D9KXK7-s.js +1 -1
- diffusers_workflow-0.4.0a8/dw/server/ui/assets/monaco-ab9gu2Wi.js → diffusers_workflow-0.4.0a10/dw/server/ui/assets/monaco-ZMCk_MWf.js +4 -4
- diffusers_workflow-0.4.0a8/dw/server/ui/assets/python-XsfASqaE.js → diffusers_workflow-0.4.0a10/dw/server/ui/assets/python-0FnO4xGM.js +1 -1
- diffusers_workflow-0.4.0a8/dw/server/ui/assets/razor-C-1xVmcy.js → diffusers_workflow-0.4.0a10/dw/server/ui/assets/razor-B6PMzeY4.js +1 -1
- diffusers_workflow-0.4.0a8/dw/server/ui/assets/tsMode-BDa9GeVq.js → diffusers_workflow-0.4.0a10/dw/server/ui/assets/tsMode-nxyvZH1t.js +1 -1
- diffusers_workflow-0.4.0a8/dw/server/ui/assets/typescript-VE9GZNZf.js → diffusers_workflow-0.4.0a10/dw/server/ui/assets/typescript-BhBe8aGf.js +1 -1
- diffusers_workflow-0.4.0a8/dw/server/ui/assets/workers-C_2pIPh_.js → diffusers_workflow-0.4.0a10/dw/server/ui/assets/workers-ChAf-t8A.js +1 -1
- diffusers_workflow-0.4.0a8/dw/server/ui/assets/xml-BJp06vju.js → diffusers_workflow-0.4.0a10/dw/server/ui/assets/xml-z2r9dHSO.js +1 -1
- diffusers_workflow-0.4.0a8/dw/server/ui/assets/yaml-EI9SS79i.js → diffusers_workflow-0.4.0a10/dw/server/ui/assets/yaml-DrcHrz7f.js +1 -1
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/index.html +2 -2
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/step.py +41 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/task.py +7 -2
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/text_generation.py +15 -2
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/workflow.py +7 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/workflow_schema.json +2 -2
- diffusers_workflow-0.4.0a10/dw_mcp/__init__.py +6 -0
- diffusers_workflow-0.4.0a10/dw_mcp/__main__.py +39 -0
- diffusers_workflow-0.4.0a10/dw_mcp/authoring.py +37 -0
- diffusers_workflow-0.4.0a10/dw_mcp/catalog.py +83 -0
- diffusers_workflow-0.4.0a10/dw_mcp/client.py +201 -0
- diffusers_workflow-0.4.0a10/dw_mcp/diagnose.py +89 -0
- diffusers_workflow-0.4.0a10/dw_mcp/media.py +133 -0
- diffusers_workflow-0.4.0a10/dw_mcp/models.py +97 -0
- diffusers_workflow-0.4.0a10/dw_mcp/prompts.py +91 -0
- diffusers_workflow-0.4.0a10/dw_mcp/server.py +392 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/pyproject.toml +4 -1
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_arguments.py +3 -2
- diffusers_workflow-0.4.0a10/tests/test_cli.py +181 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_config_objects.py +10 -2
- diffusers_workflow-0.4.0a10/tests/test_device.py +150 -0
- diffusers_workflow-0.4.0a10/tests/test_device_portability.py +116 -0
- diffusers_workflow-0.4.0a10/tests/test_mcp_authoring.py +156 -0
- diffusers_workflow-0.4.0a10/tests/test_mcp_catalog.py +118 -0
- diffusers_workflow-0.4.0a10/tests/test_mcp_client.py +370 -0
- diffusers_workflow-0.4.0a10/tests/test_mcp_diagnose.py +252 -0
- diffusers_workflow-0.4.0a10/tests/test_mcp_media.py +377 -0
- diffusers_workflow-0.4.0a10/tests/test_mcp_models.py +187 -0
- diffusers_workflow-0.4.0a10/tests/test_mcp_prompts.py +267 -0
- diffusers_workflow-0.4.0a10/tests/test_mcp_server.py +727 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_modular_pipeline.py +9 -2
- diffusers_workflow-0.4.0a10/tests/test_offload_placement.py +105 -0
- diffusers_workflow-0.4.0a10/tests/test_phase_events.py +227 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_pipeline_components.py +33 -1
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_previous_results.py +48 -0
- diffusers_workflow-0.4.0a10/tests/test_repl_worker.py +77 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_result.py +35 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_security.py +17 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_server.py +645 -1
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_step.py +82 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_task.py +1 -1
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_task_discovery.py +43 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_text_generation.py +38 -0
- diffusers_workflow-0.4.0a8/diffusers_workflow.egg-info/top_level.txt +0 -1
- diffusers_workflow-0.4.0a8/dw/server/ui/assets/index-BY3Mtj4M.js +0 -17
- diffusers_workflow-0.4.0a8/dw/server/ui/assets/index-Bug26k2P.css +0 -1
- diffusers_workflow-0.4.0a8/tests/test_device.py +0 -59
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/LICENSE +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/MANIFEST.in +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/diffusers_workflow.egg-info/dependency_links.txt +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/arguments.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/cache_blocks.json +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/cache_blocks.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/community_pipelines/pipeline_flux_rf_inversion.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/log_setup.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/pipeline_processors/remote.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/prompt_schema.json +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/prompt_weighting.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/prompts.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/repl.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/repl_commands.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/repl_worker.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/schema.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/serve.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/__init__.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/enhancers.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/abap-08VXUWAP.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/apex-BWPQTe0t.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/azcli-Bc_sGQ0U.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/bat-i0X4ZdIN.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/bicep-B5-_aFwp.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/cameligo-DMUM7wLl.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/clojure-Cm7r79vr.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/codicon-Brq4_Ui5.ttf +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/coffee-Ba7i2nA0.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/cpp-C7h46wYY.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/csharp-BKxtCVv1.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/csp-bTuwJoIa.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/css-DIMkf-bt.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/css.worker-B3ciXF_0.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/cypher-CVaqCwHa.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/dart-onAF5SnQ.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/dockerfile-DZFCIeNp.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/ecl-D05T4iGw.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/editor-jjEx9u7D.css +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/editor.worker-q-txB4vs.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/elixir-6RTg0lbw.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/flow9-C5_-GSwl.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/fsharp-C8Ef5oNN.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/go-C-y9NEjX.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/graphql-fmXr3nnJ.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/hcl-CpzslTdj.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/html.worker-C93Ht9o9.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/ini-sBoK_t0W.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/java-BEtHBSE6.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/json.worker-B2V3pomh.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/julia-Bri6UV-V.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/kotlin-BOotOW0E.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/less-B9JPFI3C.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/lexon-CfSJPG6W.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/lua-CsQS60Ue.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/m3-D-oSqn_W.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/markdown-Cimd5fb3.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/mips-CIPQ_RoX.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/monaco--ixms01u.css +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/msdax-DauUninz.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/mysql-SOo6toE5.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/objective-c-FvmIjYaQ.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/pascal-DrH0SRf2.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/pascaligo-D-ptJ9y-.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/perl-oz_6vUea.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/pgsql-DTj74zXo.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/php-nr791fC2.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/pla-CopQ2nXW.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/postiats-43DmfD33.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/powerquery-D3hlyOfw.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/powershell-DmHpPYUd.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/protobuf-C531GsRP.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/pug-Z5eAx3Zn.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/qsharp-DkqhCAOL.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/r-BwWrilGY.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/redis-ClamHrr6.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/redshift-DT7zqm-g.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/restructuredtext-BYgofb2h.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/ruby-DezsRK8O.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/rust-DdL9SqIa.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/sb-CcwsVR0C.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/scala-DHpiXF5c.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/scheme-BeGwcela.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/scss-gp-XZpBa.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/shell-CC2rA5mh.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/solidity-BEEn4gHE.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/sophia-CRfGWb83.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/sparql-D_Lu-MrJ.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/sql-NEE52Syq.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/st-DbInun42.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/swift-Bxkupp3x.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/systemverilog-Bz4Y3fRF.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/tcl-DISqw1ZD.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/ts.worker-D7T1-Ig5.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/twig-De2hgUGE.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/typespec-B8J7ngcE.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/vb-DV3o63ZY.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/ui/assets/wgsl-DpFanUEy.js +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/server/updater.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/settings.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/audio_utils.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/background_remover.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/borders.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/concat_videos.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/depth_estimator.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/diffusion_upscale.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/format_messages.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/gather.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/image_to_text.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/image_utils.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/interpolate_frames.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/model_cache.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/pair_audio.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/qr_code.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/restore_faces.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/rife_model.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/segment.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/tensor_image.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/text_sections.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/upscale.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/video_utils.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/tasks/zoe_depth.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/teacache.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/teacache_models.json +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/test.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/type_helpers.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/validate.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/variables.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/worker.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/workflows/augment_prompt.json +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/workflows/describe_image.json +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/workflows/h3_context_ir.json +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/workflows/test.json +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/setup.cfg +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_argument_updates.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_audio_utils.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_borders.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_cache_blocks.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_chain.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_component_pruning.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_concat_videos.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_configuration_schema.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_depth_estimator.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_device_helpers.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_diffusion_upscale.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_docs_links.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_events.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_examples.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_gather.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_hub_cache.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_image_to_text.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_image_utils.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_integration.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_interpolate_frames.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_introspection.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_list_images.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_model_cache.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_pair_audio.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_pipeline_caching.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_prompt_parser.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_prompt_weighting.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_prompts.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_repl_commands.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_repl_ergonomics.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_repl_hierarchical.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_repl_reorganization.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_resize_bucket.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_scheduler_config.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_schema.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_segment.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_strip_exif_and_watermark.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_teacache.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_tensor_image.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_text_sections.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_type_helpers.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_variables.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_video_utils.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_worker.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_worker_execute.py +0 -0
- {diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/tests/test_workflow.py +0 -0
{diffusers_workflow-0.4.0a8/diffusers_workflow.egg-info → diffusers_workflow-0.4.0a10}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: diffusers-workflow
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.0a10
|
|
4
4
|
Summary: Declarative workflow engine and web UI for Hugging Face Diffusers
|
|
5
5
|
Author: dkackman
|
|
6
6
|
License: Apache-2.0
|
|
@@ -57,6 +57,9 @@ Requires-Dist: packaging>=26.3
|
|
|
57
57
|
Provides-Extra: server
|
|
58
58
|
Requires-Dist: fastapi>=0.141.1; extra == "server"
|
|
59
59
|
Requires-Dist: uvicorn[standard]>=0.52.4; extra == "server"
|
|
60
|
+
Provides-Extra: mcp
|
|
61
|
+
Requires-Dist: mcp>=2.1.1; extra == "mcp"
|
|
62
|
+
Requires-Dist: httpx>=0.28.1; extra == "mcp"
|
|
60
63
|
Provides-Extra: dev
|
|
61
64
|
Requires-Dist: pytest>=9.1.1; extra == "dev"
|
|
62
65
|
Requires-Dist: pytest-cov>=7.1.0; extra == "dev"
|
|
@@ -67,6 +70,7 @@ Requires-Dist: pytest-asyncio>=1.4.0; extra == "dev"
|
|
|
67
70
|
Requires-Dist: httpx>=0.28.1; extra == "dev"
|
|
68
71
|
Requires-Dist: black>=26.5.1; extra == "dev"
|
|
69
72
|
Requires-Dist: build; extra == "dev"
|
|
73
|
+
Requires-Dist: mcp>=2.1.1; extra == "dev"
|
|
70
74
|
Dynamic: license-file
|
|
71
75
|
|
|
72
76
|
[](https://github.com/dkackman/diffusers-workflow/actions/workflows/github-code-scanning/codeql)
|
|
@@ -85,6 +89,7 @@ A declarative workflow engine and web UI for the [Hugging Face Diffusers library
|
|
|
85
89
|
## Features
|
|
86
90
|
|
|
87
91
|
- **Web UI** — browse and run workflows, edit them in introspection-driven forms, watch jobs stream live progress, manage generated output and the models on disk. `python -m dw.serve` and open a browser. See [Server & Web UI](docs/SERVER.md).
|
|
92
|
+
- **MCP server** — a stdio server that lets an MCP client (Claude Code first) author, validate, save, run and diagnose workflows against a running `dw.serve`. `dw-mcp`. See [MCP Server](docs/MCP.md).
|
|
88
93
|
- **Declarative JSON workflows** with variable substitution and cross-step data flow
|
|
89
94
|
- **Multi-step pipelines** — chain text-to-image, image-to-video, inpainting, ControlNet
|
|
90
95
|
- **Reproducible by construction** — outputs embed their full workflow definition and seed; any image in the gallery reopens as the exact workflow that made it
|
|
@@ -323,6 +328,7 @@ See [workflows/](workflows/) for more workflow files.
|
|
|
323
328
|
### Guides
|
|
324
329
|
|
|
325
330
|
- [Server & Web UI](docs/SERVER.md) — The web UI, jobs API, and introspection service
|
|
331
|
+
- [MCP Server](docs/MCP.md) — Tool surface for MCP clients (Claude Code, Claude Desktop)
|
|
326
332
|
- [Workflow Guide](docs/WORKFLOW_GUIDE.md) — JSON structure, variables, steps, data flow
|
|
327
333
|
- [Quantization](docs/QUANTIZATION.md) — BitsAndBytes, TorchAO, GGUF, SDNQ
|
|
328
334
|
- [Inference Acceleration](docs/ACCELERATION.md) — torch.compile, FirstBlockCache, MagCache, TaylorSeer, TeaCache
|
|
@@ -14,6 +14,7 @@ A declarative workflow engine and web UI for the [Hugging Face Diffusers library
|
|
|
14
14
|
## Features
|
|
15
15
|
|
|
16
16
|
- **Web UI** — browse and run workflows, edit them in introspection-driven forms, watch jobs stream live progress, manage generated output and the models on disk. `python -m dw.serve` and open a browser. See [Server & Web UI](docs/SERVER.md).
|
|
17
|
+
- **MCP server** — a stdio server that lets an MCP client (Claude Code first) author, validate, save, run and diagnose workflows against a running `dw.serve`. `dw-mcp`. See [MCP Server](docs/MCP.md).
|
|
17
18
|
- **Declarative JSON workflows** with variable substitution and cross-step data flow
|
|
18
19
|
- **Multi-step pipelines** — chain text-to-image, image-to-video, inpainting, ControlNet
|
|
19
20
|
- **Reproducible by construction** — outputs embed their full workflow definition and seed; any image in the gallery reopens as the exact workflow that made it
|
|
@@ -252,6 +253,7 @@ See [workflows/](workflows/) for more workflow files.
|
|
|
252
253
|
### Guides
|
|
253
254
|
|
|
254
255
|
- [Server & Web UI](docs/SERVER.md) — The web UI, jobs API, and introspection service
|
|
256
|
+
- [MCP Server](docs/MCP.md) — Tool surface for MCP clients (Claude Code, Claude Desktop)
|
|
255
257
|
- [Workflow Guide](docs/WORKFLOW_GUIDE.md) — JSON structure, variables, steps, data flow
|
|
256
258
|
- [Quantization](docs/QUANTIZATION.md) — BitsAndBytes, TorchAO, GGUF, SDNQ
|
|
257
259
|
- [Inference Acceleration](docs/ACCELERATION.md) — torch.compile, FirstBlockCache, MagCache, TaylorSeer, TeaCache
|
{diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10/diffusers_workflow.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: diffusers-workflow
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.0a10
|
|
4
4
|
Summary: Declarative workflow engine and web UI for Hugging Face Diffusers
|
|
5
5
|
Author: dkackman
|
|
6
6
|
License: Apache-2.0
|
|
@@ -57,6 +57,9 @@ Requires-Dist: packaging>=26.3
|
|
|
57
57
|
Provides-Extra: server
|
|
58
58
|
Requires-Dist: fastapi>=0.141.1; extra == "server"
|
|
59
59
|
Requires-Dist: uvicorn[standard]>=0.52.4; extra == "server"
|
|
60
|
+
Provides-Extra: mcp
|
|
61
|
+
Requires-Dist: mcp>=2.1.1; extra == "mcp"
|
|
62
|
+
Requires-Dist: httpx>=0.28.1; extra == "mcp"
|
|
60
63
|
Provides-Extra: dev
|
|
61
64
|
Requires-Dist: pytest>=9.1.1; extra == "dev"
|
|
62
65
|
Requires-Dist: pytest-cov>=7.1.0; extra == "dev"
|
|
@@ -67,6 +70,7 @@ Requires-Dist: pytest-asyncio>=1.4.0; extra == "dev"
|
|
|
67
70
|
Requires-Dist: httpx>=0.28.1; extra == "dev"
|
|
68
71
|
Requires-Dist: black>=26.5.1; extra == "dev"
|
|
69
72
|
Requires-Dist: build; extra == "dev"
|
|
73
|
+
Requires-Dist: mcp>=2.1.1; extra == "dev"
|
|
70
74
|
Dynamic: license-file
|
|
71
75
|
|
|
72
76
|
[](https://github.com/dkackman/diffusers-workflow/actions/workflows/github-code-scanning/codeql)
|
|
@@ -85,6 +89,7 @@ A declarative workflow engine and web UI for the [Hugging Face Diffusers library
|
|
|
85
89
|
## Features
|
|
86
90
|
|
|
87
91
|
- **Web UI** — browse and run workflows, edit them in introspection-driven forms, watch jobs stream live progress, manage generated output and the models on disk. `python -m dw.serve` and open a browser. See [Server & Web UI](docs/SERVER.md).
|
|
92
|
+
- **MCP server** — a stdio server that lets an MCP client (Claude Code first) author, validate, save, run and diagnose workflows against a running `dw.serve`. `dw-mcp`. See [MCP Server](docs/MCP.md).
|
|
88
93
|
- **Declarative JSON workflows** with variable substitution and cross-step data flow
|
|
89
94
|
- **Multi-step pipelines** — chain text-to-image, image-to-video, inpainting, ControlNet
|
|
90
95
|
- **Reproducible by construction** — outputs embed their full workflow definition and seed; any image in the gallery reopens as the exact workflow that made it
|
|
@@ -323,6 +328,7 @@ See [workflows/](workflows/) for more workflow files.
|
|
|
323
328
|
### Guides
|
|
324
329
|
|
|
325
330
|
- [Server & Web UI](docs/SERVER.md) — The web UI, jobs API, and introspection service
|
|
331
|
+
- [MCP Server](docs/MCP.md) — Tool surface for MCP clients (Claude Code, Claude Desktop)
|
|
326
332
|
- [Workflow Guide](docs/WORKFLOW_GUIDE.md) — JSON structure, variables, steps, data flow
|
|
327
333
|
- [Quantization](docs/QUANTIZATION.md) — BitsAndBytes, TorchAO, GGUF, SDNQ
|
|
328
334
|
- [Inference Acceleration](docs/ACCELERATION.md) — torch.compile, FirstBlockCache, MagCache, TaylorSeer, TeaCache
|
{diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/diffusers_workflow.egg-info/SOURCES.txt
RENAMED
|
@@ -64,45 +64,45 @@ dw/server/ui/assets/csharp-BKxtCVv1.js
|
|
|
64
64
|
dw/server/ui/assets/csp-bTuwJoIa.js
|
|
65
65
|
dw/server/ui/assets/css-DIMkf-bt.js
|
|
66
66
|
dw/server/ui/assets/css.worker-B3ciXF_0.js
|
|
67
|
-
dw/server/ui/assets/cssMode-
|
|
67
|
+
dw/server/ui/assets/cssMode-DBf-T_da.js
|
|
68
68
|
dw/server/ui/assets/cypher-CVaqCwHa.js
|
|
69
69
|
dw/server/ui/assets/dart-onAF5SnQ.js
|
|
70
70
|
dw/server/ui/assets/dockerfile-DZFCIeNp.js
|
|
71
71
|
dw/server/ui/assets/ecl-D05T4iGw.js
|
|
72
72
|
dw/server/ui/assets/editor-jjEx9u7D.css
|
|
73
|
-
dw/server/ui/assets/editor.api-
|
|
73
|
+
dw/server/ui/assets/editor.api-B0D5Ygq7.js
|
|
74
74
|
dw/server/ui/assets/editor.worker-q-txB4vs.js
|
|
75
75
|
dw/server/ui/assets/elixir-6RTg0lbw.js
|
|
76
76
|
dw/server/ui/assets/flow9-C5_-GSwl.js
|
|
77
|
-
dw/server/ui/assets/freemarker2-
|
|
77
|
+
dw/server/ui/assets/freemarker2-Br8g4G1T.js
|
|
78
78
|
dw/server/ui/assets/fsharp-C8Ef5oNN.js
|
|
79
79
|
dw/server/ui/assets/go-C-y9NEjX.js
|
|
80
80
|
dw/server/ui/assets/graphql-fmXr3nnJ.js
|
|
81
|
-
dw/server/ui/assets/handlebars-
|
|
81
|
+
dw/server/ui/assets/handlebars-BKo1TaOF.js
|
|
82
82
|
dw/server/ui/assets/hcl-CpzslTdj.js
|
|
83
|
-
dw/server/ui/assets/html-
|
|
83
|
+
dw/server/ui/assets/html-Bis1seyM.js
|
|
84
84
|
dw/server/ui/assets/html.worker-C93Ht9o9.js
|
|
85
|
-
dw/server/ui/assets/htmlMode-
|
|
86
|
-
dw/server/ui/assets/index-
|
|
87
|
-
dw/server/ui/assets/index-
|
|
85
|
+
dw/server/ui/assets/htmlMode-D2SOD2MF.js
|
|
86
|
+
dw/server/ui/assets/index-D7eWnTCB.css
|
|
87
|
+
dw/server/ui/assets/index-JyFxgIR9.js
|
|
88
88
|
dw/server/ui/assets/ini-sBoK_t0W.js
|
|
89
89
|
dw/server/ui/assets/java-BEtHBSE6.js
|
|
90
|
-
dw/server/ui/assets/javascript-
|
|
90
|
+
dw/server/ui/assets/javascript-CkEbVb78.js
|
|
91
91
|
dw/server/ui/assets/json.worker-B2V3pomh.js
|
|
92
|
-
dw/server/ui/assets/jsonMode-
|
|
92
|
+
dw/server/ui/assets/jsonMode-dVJbYwxg.js
|
|
93
93
|
dw/server/ui/assets/julia-Bri6UV-V.js
|
|
94
94
|
dw/server/ui/assets/kotlin-BOotOW0E.js
|
|
95
95
|
dw/server/ui/assets/less-B9JPFI3C.js
|
|
96
96
|
dw/server/ui/assets/lexon-CfSJPG6W.js
|
|
97
|
-
dw/server/ui/assets/liquid-
|
|
98
|
-
dw/server/ui/assets/lspLanguageFeatures-
|
|
97
|
+
dw/server/ui/assets/liquid-Btak-6uF.js
|
|
98
|
+
dw/server/ui/assets/lspLanguageFeatures-BfeZZQbb.js
|
|
99
99
|
dw/server/ui/assets/lua-CsQS60Ue.js
|
|
100
100
|
dw/server/ui/assets/m3-D-oSqn_W.js
|
|
101
101
|
dw/server/ui/assets/markdown-Cimd5fb3.js
|
|
102
|
-
dw/server/ui/assets/mdx-
|
|
102
|
+
dw/server/ui/assets/mdx-D9KXK7-s.js
|
|
103
103
|
dw/server/ui/assets/mips-CIPQ_RoX.js
|
|
104
104
|
dw/server/ui/assets/monaco--ixms01u.css
|
|
105
|
-
dw/server/ui/assets/monaco-
|
|
105
|
+
dw/server/ui/assets/monaco-ZMCk_MWf.js
|
|
106
106
|
dw/server/ui/assets/msdax-DauUninz.js
|
|
107
107
|
dw/server/ui/assets/mysql-SOo6toE5.js
|
|
108
108
|
dw/server/ui/assets/objective-c-FvmIjYaQ.js
|
|
@@ -117,10 +117,10 @@ dw/server/ui/assets/powerquery-D3hlyOfw.js
|
|
|
117
117
|
dw/server/ui/assets/powershell-DmHpPYUd.js
|
|
118
118
|
dw/server/ui/assets/protobuf-C531GsRP.js
|
|
119
119
|
dw/server/ui/assets/pug-Z5eAx3Zn.js
|
|
120
|
-
dw/server/ui/assets/python-
|
|
120
|
+
dw/server/ui/assets/python-0FnO4xGM.js
|
|
121
121
|
dw/server/ui/assets/qsharp-DkqhCAOL.js
|
|
122
122
|
dw/server/ui/assets/r-BwWrilGY.js
|
|
123
|
-
dw/server/ui/assets/razor-
|
|
123
|
+
dw/server/ui/assets/razor-B6PMzeY4.js
|
|
124
124
|
dw/server/ui/assets/redis-ClamHrr6.js
|
|
125
125
|
dw/server/ui/assets/redshift-DT7zqm-g.js
|
|
126
126
|
dw/server/ui/assets/restructuredtext-BYgofb2h.js
|
|
@@ -140,15 +140,15 @@ dw/server/ui/assets/swift-Bxkupp3x.js
|
|
|
140
140
|
dw/server/ui/assets/systemverilog-Bz4Y3fRF.js
|
|
141
141
|
dw/server/ui/assets/tcl-DISqw1ZD.js
|
|
142
142
|
dw/server/ui/assets/ts.worker-D7T1-Ig5.js
|
|
143
|
-
dw/server/ui/assets/tsMode-
|
|
143
|
+
dw/server/ui/assets/tsMode-nxyvZH1t.js
|
|
144
144
|
dw/server/ui/assets/twig-De2hgUGE.js
|
|
145
|
-
dw/server/ui/assets/typescript-
|
|
145
|
+
dw/server/ui/assets/typescript-BhBe8aGf.js
|
|
146
146
|
dw/server/ui/assets/typespec-B8J7ngcE.js
|
|
147
147
|
dw/server/ui/assets/vb-DV3o63ZY.js
|
|
148
148
|
dw/server/ui/assets/wgsl-DpFanUEy.js
|
|
149
|
-
dw/server/ui/assets/workers-
|
|
150
|
-
dw/server/ui/assets/xml-
|
|
151
|
-
dw/server/ui/assets/yaml-
|
|
149
|
+
dw/server/ui/assets/workers-ChAf-t8A.js
|
|
150
|
+
dw/server/ui/assets/xml-z2r9dHSO.js
|
|
151
|
+
dw/server/ui/assets/yaml-DrcHrz7f.js
|
|
152
152
|
dw/tasks/audio_utils.py
|
|
153
153
|
dw/tasks/background_remover.py
|
|
154
154
|
dw/tasks/borders.py
|
|
@@ -177,12 +177,23 @@ dw/workflows/augment_prompt.json
|
|
|
177
177
|
dw/workflows/describe_image.json
|
|
178
178
|
dw/workflows/h3_context_ir.json
|
|
179
179
|
dw/workflows/test.json
|
|
180
|
+
dw_mcp/__init__.py
|
|
181
|
+
dw_mcp/__main__.py
|
|
182
|
+
dw_mcp/authoring.py
|
|
183
|
+
dw_mcp/catalog.py
|
|
184
|
+
dw_mcp/client.py
|
|
185
|
+
dw_mcp/diagnose.py
|
|
186
|
+
dw_mcp/media.py
|
|
187
|
+
dw_mcp/models.py
|
|
188
|
+
dw_mcp/prompts.py
|
|
189
|
+
dw_mcp/server.py
|
|
180
190
|
tests/test_argument_updates.py
|
|
181
191
|
tests/test_arguments.py
|
|
182
192
|
tests/test_audio_utils.py
|
|
183
193
|
tests/test_borders.py
|
|
184
194
|
tests/test_cache_blocks.py
|
|
185
195
|
tests/test_chain.py
|
|
196
|
+
tests/test_cli.py
|
|
186
197
|
tests/test_component_pruning.py
|
|
187
198
|
tests/test_concat_videos.py
|
|
188
199
|
tests/test_config_objects.py
|
|
@@ -190,6 +201,7 @@ tests/test_configuration_schema.py
|
|
|
190
201
|
tests/test_depth_estimator.py
|
|
191
202
|
tests/test_device.py
|
|
192
203
|
tests/test_device_helpers.py
|
|
204
|
+
tests/test_device_portability.py
|
|
193
205
|
tests/test_diffusion_upscale.py
|
|
194
206
|
tests/test_docs_links.py
|
|
195
207
|
tests/test_events.py
|
|
@@ -202,9 +214,19 @@ tests/test_integration.py
|
|
|
202
214
|
tests/test_interpolate_frames.py
|
|
203
215
|
tests/test_introspection.py
|
|
204
216
|
tests/test_list_images.py
|
|
217
|
+
tests/test_mcp_authoring.py
|
|
218
|
+
tests/test_mcp_catalog.py
|
|
219
|
+
tests/test_mcp_client.py
|
|
220
|
+
tests/test_mcp_diagnose.py
|
|
221
|
+
tests/test_mcp_media.py
|
|
222
|
+
tests/test_mcp_models.py
|
|
223
|
+
tests/test_mcp_prompts.py
|
|
224
|
+
tests/test_mcp_server.py
|
|
205
225
|
tests/test_model_cache.py
|
|
206
226
|
tests/test_modular_pipeline.py
|
|
227
|
+
tests/test_offload_placement.py
|
|
207
228
|
tests/test_pair_audio.py
|
|
229
|
+
tests/test_phase_events.py
|
|
208
230
|
tests/test_pipeline_caching.py
|
|
209
231
|
tests/test_pipeline_components.py
|
|
210
232
|
tests/test_previous_results.py
|
|
@@ -215,6 +237,7 @@ tests/test_repl_commands.py
|
|
|
215
237
|
tests/test_repl_ergonomics.py
|
|
216
238
|
tests/test_repl_hierarchical.py
|
|
217
239
|
tests/test_repl_reorganization.py
|
|
240
|
+
tests/test_repl_worker.py
|
|
218
241
|
tests/test_resize_bucket.py
|
|
219
242
|
tests/test_result.py
|
|
220
243
|
tests/test_scheduler_config.py
|
|
@@ -138,6 +138,81 @@ def get_device_type(device=None):
|
|
|
138
138
|
return torch.device(device if device is not None else get_device()).type
|
|
139
139
|
|
|
140
140
|
|
|
141
|
+
def backend_available(device_type):
|
|
142
|
+
"""
|
|
143
|
+
Whether this machine can actually run on a backend.
|
|
144
|
+
|
|
145
|
+
Only the backends dw knows how to probe get an answer. An unrecognized one is
|
|
146
|
+
reported available rather than guessed at, so a device torch understands and dw
|
|
147
|
+
does not is left alone instead of being rewritten.
|
|
148
|
+
|
|
149
|
+
Args:
|
|
150
|
+
device_type: Backend name ('cuda', 'mps', 'cpu', ...)
|
|
151
|
+
|
|
152
|
+
Returns:
|
|
153
|
+
bool: Whether the backend is usable here
|
|
154
|
+
"""
|
|
155
|
+
if not _TORCH_AVAILABLE:
|
|
156
|
+
return device_type == "cpu"
|
|
157
|
+
|
|
158
|
+
if device_type == "cpu":
|
|
159
|
+
return True
|
|
160
|
+
|
|
161
|
+
if device_type == "cuda":
|
|
162
|
+
return torch.cuda.is_available()
|
|
163
|
+
|
|
164
|
+
if device_type == "mps":
|
|
165
|
+
return hasattr(torch.backends, "mps") and torch.backends.mps.is_available()
|
|
166
|
+
|
|
167
|
+
is_available = getattr(getattr(torch, device_type, None), "is_available", None)
|
|
168
|
+
return bool(is_available()) if callable(is_available) else True
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
def resolve_device(requested):
|
|
172
|
+
"""
|
|
173
|
+
Translate a device a workflow asked for into one this machine has.
|
|
174
|
+
|
|
175
|
+
A device named in a workflow is nearly always the author saying 'the accelerator'
|
|
176
|
+
rather than 'specifically NVIDIA', so a workflow written on a CUDA box runs on a
|
|
177
|
+
Mac and back again. The backend is what gets translated - an index is left alone
|
|
178
|
+
when the backend matches, since 'cuda:1' on a single-GPU CUDA box is a genuine
|
|
179
|
+
mistake and not a portability problem. A CPU device is never rewritten: pinning a
|
|
180
|
+
step to the CPU is how a GPU-specific problem gets ruled out.
|
|
181
|
+
|
|
182
|
+
Args:
|
|
183
|
+
requested: Device identifier from a workflow, or None for no override
|
|
184
|
+
|
|
185
|
+
Returns:
|
|
186
|
+
The device to use, or None if None was passed
|
|
187
|
+
"""
|
|
188
|
+
if requested is None or not _TORCH_AVAILABLE:
|
|
189
|
+
return requested
|
|
190
|
+
|
|
191
|
+
try:
|
|
192
|
+
device = torch.device(requested)
|
|
193
|
+
except (RuntimeError, TypeError, ValueError):
|
|
194
|
+
# Not a device torch understands - let the failure surface where it is used
|
|
195
|
+
return requested
|
|
196
|
+
|
|
197
|
+
if device.type == "cpu" or backend_available(device.type):
|
|
198
|
+
return requested
|
|
199
|
+
|
|
200
|
+
target = get_device()
|
|
201
|
+
if device.index is not None:
|
|
202
|
+
logging.warning(
|
|
203
|
+
f"Workflow asks for '{requested}', which this machine has no {device.type} "
|
|
204
|
+
f"backend for - running on {target}. The device index is dropped, so a "
|
|
205
|
+
"workflow that meant to spread work across accelerators will not."
|
|
206
|
+
)
|
|
207
|
+
else:
|
|
208
|
+
logging.warning(
|
|
209
|
+
f"Workflow asks for '{requested}', which this machine has no {device.type} "
|
|
210
|
+
f"backend for - running on {target}"
|
|
211
|
+
)
|
|
212
|
+
|
|
213
|
+
return target
|
|
214
|
+
|
|
215
|
+
|
|
141
216
|
def get_autocast_device_type():
|
|
142
217
|
"""
|
|
143
218
|
Get the device type to use for torch.autocast.
|
|
@@ -76,3 +76,20 @@ def activate_context(context):
|
|
|
76
76
|
|
|
77
77
|
def deactivate_context(token):
|
|
78
78
|
_active_context.reset(token)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
# The coarse states a run passes through. Small on purpose: a phase says what
|
|
82
|
+
# the run is waiting on, not what any one library is doing internally
|
|
83
|
+
PHASES = ("loading", "cached", "generating", "decoding", "saving", "task")
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def emit_phase(phase, detail=None):
|
|
87
|
+
"""Report a coarse phase change on the active run.
|
|
88
|
+
|
|
89
|
+
A step spends most of its wall clock outside the denoise loop - pulling
|
|
90
|
+
weights, decoding latents, encoding video - and a step counter says
|
|
91
|
+
nothing about any of that. These are the rest of the story. They are rare
|
|
92
|
+
enough (a handful per step) to carry a free-text detail alongside, which
|
|
93
|
+
is what makes 'loading' readable as 'which model'.
|
|
94
|
+
"""
|
|
95
|
+
get_context().emit("phase", phase=phase, detail=detail)
|
|
@@ -150,6 +150,7 @@ class DownloadManager:
|
|
|
150
150
|
except HFValidationError as e:
|
|
151
151
|
raise ValueError(str(e))
|
|
152
152
|
|
|
153
|
+
cancel_event = threading.Event()
|
|
153
154
|
with self._lock:
|
|
154
155
|
for entry in self._downloads.values():
|
|
155
156
|
if entry["repo_id"] == repo_id and entry["status"] == "downloading":
|
|
@@ -163,12 +164,14 @@ class DownloadManager:
|
|
|
163
164
|
"error": None,
|
|
164
165
|
"started_at": time.time(),
|
|
165
166
|
"finished_at": None,
|
|
167
|
+
# Set before the entry is published: cancel() reaches for this
|
|
168
|
+
# the moment the id is visible, and assigning it after the
|
|
169
|
+
# lock left a window where cancelling raised KeyError
|
|
170
|
+
"_cancel": cancel_event,
|
|
166
171
|
}
|
|
167
172
|
self._downloads[entry["id"]] = entry
|
|
168
173
|
self._prune()
|
|
169
174
|
|
|
170
|
-
cancel_event = threading.Event()
|
|
171
|
-
entry["_cancel"] = cancel_event
|
|
172
175
|
thread = threading.Thread(
|
|
173
176
|
target=self._run, args=(entry, cancel_event), daemon=True
|
|
174
177
|
)
|
|
@@ -19,9 +19,12 @@ logger = logging.getLogger("dw")
|
|
|
19
19
|
|
|
20
20
|
_NAME_PATTERN = re.compile(r"^[A-Za-z_][A-Za-z0-9_]*$")
|
|
21
21
|
|
|
22
|
-
# Matches a
|
|
22
|
+
# Matches a docstring parameter header, with or without a declared type:
|
|
23
23
|
# prompt (`str` or `List[str]`, *optional*):
|
|
24
|
-
|
|
24
|
+
# prompt: The user message
|
|
25
|
+
# The leading stars let a '**kwargs:' block be recognized as a header of its
|
|
26
|
+
# own, so what it documents can be read as parameters too.
|
|
27
|
+
_DOC_PARAM_PATTERN = re.compile(r"^(\*{0,2}[A-Za-z_]\w*)(?: \((.+?)\))?:\s*(.*)$")
|
|
25
28
|
|
|
26
29
|
|
|
27
30
|
# Companion packages whose classes workflows commonly name. Extending this
|
|
@@ -150,14 +153,21 @@ def _json_safe_default(value):
|
|
|
150
153
|
|
|
151
154
|
|
|
152
155
|
def _parse_docstring_args(docstring):
|
|
153
|
-
"""Parameter descriptions from a
|
|
156
|
+
"""Parameter descriptions from a docstring's 'Args:' block.
|
|
154
157
|
|
|
155
|
-
|
|
156
|
-
|
|
158
|
+
Returns (documented, documented_kwargs): the entries at the block's own
|
|
159
|
+
indent, and those nested one level under a '**kwargs:' entry. The nested
|
|
160
|
+
ones are the only declaration a task that funnels its real arguments
|
|
161
|
+
through **kwargs ever makes, so discovery needs them as much as the
|
|
162
|
+
signature.
|
|
163
|
+
|
|
164
|
+
Best effort by design: a docstring with an unusual shape simply yields
|
|
165
|
+
fewer descriptions, never an error.
|
|
157
166
|
"""
|
|
158
|
-
|
|
167
|
+
documented = {}
|
|
168
|
+
documented_kwargs = {}
|
|
159
169
|
if not docstring:
|
|
160
|
-
return
|
|
170
|
+
return documented, documented_kwargs
|
|
161
171
|
|
|
162
172
|
lines = docstring.splitlines()
|
|
163
173
|
try:
|
|
@@ -167,11 +177,15 @@ def _parse_docstring_args(docstring):
|
|
|
167
177
|
if line.strip() in ("Args:", "Parameters:")
|
|
168
178
|
)
|
|
169
179
|
except StopIteration:
|
|
170
|
-
return
|
|
180
|
+
return documented, documented_kwargs
|
|
171
181
|
|
|
182
|
+
# The entry being described, and where its description is accumulating:
|
|
183
|
+
# a top-level entry, or one nested inside the **kwargs block
|
|
172
184
|
current = None
|
|
185
|
+
target = documented
|
|
173
186
|
parts = []
|
|
174
187
|
base_indent = None
|
|
188
|
+
kwargs_indent = None
|
|
175
189
|
for line in lines[start + 1 :]:
|
|
176
190
|
stripped = line.strip()
|
|
177
191
|
if not stripped:
|
|
@@ -182,25 +196,56 @@ def _parse_docstring_args(docstring):
|
|
|
182
196
|
if indent < base_indent:
|
|
183
197
|
break # left the Args block (Returns:, Examples:, ...)
|
|
184
198
|
|
|
185
|
-
|
|
199
|
+
nested = kwargs_indent is not None and indent == kwargs_indent
|
|
200
|
+
header = (
|
|
201
|
+
_DOC_PARAM_PATTERN.match(stripped)
|
|
202
|
+
if indent == base_indent or nested
|
|
203
|
+
else None
|
|
204
|
+
)
|
|
186
205
|
if header:
|
|
187
206
|
if current:
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
207
|
+
target[current]["description"] = " ".join(parts).strip()
|
|
208
|
+
name = header.group(1)
|
|
209
|
+
if name.startswith("*"):
|
|
210
|
+
# The kwargs entry itself is not a parameter; what it
|
|
211
|
+
# indents is. Its own indent is unknown until the first
|
|
212
|
+
# nested line arrives
|
|
213
|
+
current = None
|
|
214
|
+
target = documented_kwargs
|
|
215
|
+
kwargs_indent = None
|
|
216
|
+
parts = []
|
|
217
|
+
continue
|
|
218
|
+
if indent == base_indent:
|
|
219
|
+
target = documented
|
|
220
|
+
kwargs_indent = None
|
|
221
|
+
elif kwargs_indent is None:
|
|
222
|
+
kwargs_indent = indent
|
|
223
|
+
current = name
|
|
224
|
+
target[current] = {"doc_type": header.group(2)}
|
|
191
225
|
parts = [header.group(3)] if header.group(3) else []
|
|
192
226
|
elif current:
|
|
193
227
|
parts.append(stripped)
|
|
228
|
+
elif target is documented_kwargs and kwargs_indent is None:
|
|
229
|
+
# First line under '**kwargs:' - it sets the nested indent, and
|
|
230
|
+
# is a header if it reads like one
|
|
231
|
+
kwargs_indent = indent
|
|
232
|
+
header = _DOC_PARAM_PATTERN.match(stripped)
|
|
233
|
+
if header and not header.group(1).startswith("*"):
|
|
234
|
+
current = header.group(1)
|
|
235
|
+
target[current] = {"doc_type": header.group(2)}
|
|
236
|
+
parts = [header.group(3)] if header.group(3) else []
|
|
194
237
|
if current:
|
|
195
|
-
|
|
196
|
-
return
|
|
238
|
+
target[current]["description"] = " ".join(parts).strip()
|
|
239
|
+
return documented, documented_kwargs
|
|
197
240
|
|
|
198
241
|
|
|
199
242
|
def _callable_parameters(target_callable):
|
|
200
243
|
"""A callable's parameters as form-ready entries, merged with its
|
|
201
244
|
docstring's Args descriptions. Returns (parameters, accepts_kwargs)."""
|
|
202
245
|
signature = inspect.signature(target_callable)
|
|
203
|
-
documented = _parse_docstring_args(
|
|
246
|
+
documented, documented_kwargs = _parse_docstring_args(
|
|
247
|
+
inspect.getdoc(target_callable)
|
|
248
|
+
)
|
|
204
249
|
|
|
205
250
|
parameters = []
|
|
206
251
|
accepts_kwargs = False
|
|
@@ -223,7 +268,23 @@ def _callable_parameters(target_callable):
|
|
|
223
268
|
),
|
|
224
269
|
}
|
|
225
270
|
entry.update(documented.get(parameter.name, {}))
|
|
271
|
+
documented_kwargs.pop(parameter.name, None)
|
|
226
272
|
parameters.append(entry)
|
|
273
|
+
|
|
274
|
+
if accepts_kwargs:
|
|
275
|
+
# Whatever the **kwargs block names is a real argument the callable
|
|
276
|
+
# takes; the signature just never says so. There is no default to
|
|
277
|
+
# read, and anything funnelled through kwargs is optional
|
|
278
|
+
for name, entry in documented_kwargs.items():
|
|
279
|
+
parameters.append(
|
|
280
|
+
{
|
|
281
|
+
"name": name,
|
|
282
|
+
"required": False,
|
|
283
|
+
"default": None,
|
|
284
|
+
"annotation": None,
|
|
285
|
+
**entry,
|
|
286
|
+
}
|
|
287
|
+
)
|
|
227
288
|
return parameters, accepts_kwargs
|
|
228
289
|
|
|
229
290
|
|
|
@@ -326,6 +326,9 @@ def run_chain(pipeline, chain_definition, arguments):
|
|
|
326
326
|
+ (f": {segment.num_frames} frames" if segment.num_frames else "")
|
|
327
327
|
)
|
|
328
328
|
|
|
329
|
+
# The denoise counter restarts for every segment - without this the
|
|
330
|
+
# bar rewinds to zero with nothing saying why
|
|
331
|
+
pipeline.segment_label = f"segment {segment.index + 1}/{len(config.plan)}"
|
|
329
332
|
output = pipeline._run_once(segment_arguments)
|
|
330
333
|
artifact = _single_artifact(output)
|
|
331
334
|
|
|
@@ -355,6 +358,8 @@ def run_chain(pipeline, chain_definition, arguments):
|
|
|
355
358
|
gc.collect()
|
|
356
359
|
empty_device_cache()
|
|
357
360
|
|
|
361
|
+
pipeline.segment_label = None
|
|
362
|
+
|
|
358
363
|
if spill is not None:
|
|
359
364
|
# match_audio overshoots by design - the tail trim happens as the
|
|
360
365
|
# lazy frames replay, so the files themselves stay whole
|
{diffusers_workflow-0.4.0a8 → diffusers_workflow-0.4.0a10}/dw/pipeline_processors/config_objects.py
RENAMED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
import torch
|
|
3
3
|
|
|
4
|
+
from .. import resolve_device
|
|
5
|
+
|
|
4
6
|
logger = logging.getLogger("dw")
|
|
5
7
|
|
|
6
8
|
|
|
@@ -105,10 +107,10 @@ def get_group_offload_configuration(configuration, default_device):
|
|
|
105
107
|
logger.debug(f"Group offload parameters: {group_offload_config}")
|
|
106
108
|
# replace device references with device objects
|
|
107
109
|
group_offload_config["onload_device"] = torch.device(
|
|
108
|
-
group_offload_config.get("onload_device", default_device)
|
|
110
|
+
resolve_device(group_offload_config.get("onload_device", default_device))
|
|
109
111
|
)
|
|
110
112
|
group_offload_config["offload_device"] = torch.device(
|
|
111
|
-
group_offload_config.get("offload_device", "cpu")
|
|
113
|
+
resolve_device(group_offload_config.get("offload_device", "cpu"))
|
|
112
114
|
)
|
|
113
115
|
|
|
114
116
|
return group_offload_config
|