diffusers-workflow 0.12.0__tar.gz → 0.13.0__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.12.0/diffusers_workflow.egg-info → diffusers_workflow-0.13.0}/PKG-INFO +28 -28
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/README.md +1 -1
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0/diffusers_workflow.egg-info}/PKG-INFO +28 -28
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/diffusers_workflow.egg-info/SOURCES.txt +22 -21
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/diffusers_workflow.egg-info/requires.txt +26 -26
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/disk_caches.py +61 -9
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/ARCHITECTURE.md +2 -2
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/DEPENDENCIES.md +2 -2
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/MCP.md +1 -1
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/QUANTIZATION.md +1 -1
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/RELEASING.md +82 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/SERVER.md +11 -1
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/media.py +35 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/media_frames.py +9 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/components.py +1 -1
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/quantized_cache.py +36 -11
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/result.py +6 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/api_models.py +11 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/app.py +2 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/deps.py +33 -1
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/jobs.py +28 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/routes/assets.py +8 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/routes/library.py +11 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/routes/media.py +46 -28
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/routes/system.py +25 -17
- diffusers_workflow-0.12.0/dw/server/ui/assets/cssMode-n9saDHXf.js → diffusers_workflow-0.13.0/dw/server/ui/assets/cssMode-QzCkHHkC.js +1 -1
- diffusers_workflow-0.12.0/dw/server/ui/assets/editor.api-DBE2zlnf.js → diffusers_workflow-0.13.0/dw/server/ui/assets/editor.api-LvRbw1iL.js +1 -1
- diffusers_workflow-0.12.0/dw/server/ui/assets/freemarker2-BomqYelz.js → diffusers_workflow-0.13.0/dw/server/ui/assets/freemarker2-BFEReHqW.js +1 -1
- diffusers_workflow-0.12.0/dw/server/ui/assets/handlebars-8Houv1UM.js → diffusers_workflow-0.13.0/dw/server/ui/assets/handlebars--qZ0WvL7.js +1 -1
- diffusers_workflow-0.12.0/dw/server/ui/assets/html-DaY0zzOJ.js → diffusers_workflow-0.13.0/dw/server/ui/assets/html-Bs0VSJAA.js +1 -1
- diffusers_workflow-0.12.0/dw/server/ui/assets/htmlMode-DP2rYJIT.js → diffusers_workflow-0.13.0/dw/server/ui/assets/htmlMode-DrsyYX5n.js +1 -1
- diffusers_workflow-0.13.0/dw/server/ui/assets/index-BgBhcVj3.js +54 -0
- diffusers_workflow-0.13.0/dw/server/ui/assets/index-DSM5LA24.css +1 -0
- diffusers_workflow-0.12.0/dw/server/ui/assets/javascript-B5R3UPTQ.js → diffusers_workflow-0.13.0/dw/server/ui/assets/javascript-C3KR7rul.js +1 -1
- diffusers_workflow-0.12.0/dw/server/ui/assets/jsonMode-DsuGIxoD.js → diffusers_workflow-0.13.0/dw/server/ui/assets/jsonMode-DEXt-mqp.js +1 -1
- diffusers_workflow-0.12.0/dw/server/ui/assets/liquid-B2d5ZvOn.js → diffusers_workflow-0.13.0/dw/server/ui/assets/liquid-ByBJuq1e.js +1 -1
- diffusers_workflow-0.12.0/dw/server/ui/assets/lspLanguageFeatures-ChdmQify.js → diffusers_workflow-0.13.0/dw/server/ui/assets/lspLanguageFeatures-6nDoG86-.js +1 -1
- diffusers_workflow-0.12.0/dw/server/ui/assets/mdx-DIXDAORJ.js → diffusers_workflow-0.13.0/dw/server/ui/assets/mdx-BH2GyjV6.js +1 -1
- diffusers_workflow-0.12.0/dw/server/ui/assets/monaco-BgG3yDUh.js → diffusers_workflow-0.13.0/dw/server/ui/assets/monaco-B6Bmfo5o.js +4 -4
- diffusers_workflow-0.12.0/dw/server/ui/assets/python-CXHtns6L.js → diffusers_workflow-0.13.0/dw/server/ui/assets/python-C1sJMrAm.js +1 -1
- diffusers_workflow-0.12.0/dw/server/ui/assets/razor-BSKKsa7H.js → diffusers_workflow-0.13.0/dw/server/ui/assets/razor-BdPZ4bvZ.js +1 -1
- diffusers_workflow-0.12.0/dw/server/ui/assets/tsMode-DRjPuZ2P.js → diffusers_workflow-0.13.0/dw/server/ui/assets/tsMode-DW5i-ukN.js +1 -1
- diffusers_workflow-0.12.0/dw/server/ui/assets/typescript-CBpoJtqE.js → diffusers_workflow-0.13.0/dw/server/ui/assets/typescript-C_QzKQY3.js +1 -1
- diffusers_workflow-0.12.0/dw/server/ui/assets/workers-DUo4Mox_.js → diffusers_workflow-0.13.0/dw/server/ui/assets/workers-DHqaOvh8.js +1 -1
- diffusers_workflow-0.12.0/dw/server/ui/assets/xml-B2gZoNmP.js → diffusers_workflow-0.13.0/dw/server/ui/assets/xml-D3UEcM_2.js +1 -1
- diffusers_workflow-0.12.0/dw/server/ui/assets/yaml-CSvo_Woe.js → diffusers_workflow-0.13.0/dw/server/ui/assets/yaml-C0TnGcnd.js +1 -1
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/index.html +2 -2
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/cuts.py +5 -6
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/tools_catalog.py +11 -11
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/workspaces.py +35 -10
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/pyproject.toml +30 -33
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_api_contract.py +1 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_disk_caches.py +140 -2
- diffusers_workflow-0.13.0/tests/test_faststart.py +103 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_workspaces.py +24 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_modular_pipeline.py +4 -4
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_plan_cuts.py +19 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_quantized_cache.py +32 -2
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server.py +68 -3
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server_library_path.py +52 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_updater.py +12 -3
- diffusers_workflow-0.12.0/dw/server/ui/assets/index-CZtjWH1q.css +0 -1
- diffusers_workflow-0.12.0/dw/server/ui/assets/index-DGl2EK47.js +0 -48
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/LICENSE +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/MANIFEST.in +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/diffusers_workflow.egg-info/dependency_links.txt +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/diffusers_workflow.egg-info/entry_points.txt +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/diffusers_workflow.egg-info/top_level.txt +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/__init__.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/adapter_compatibility.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/argument_media.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/argument_warnings.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/arguments.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/assessment_rules.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/assets.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/audio_qc.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/cache_blocks.json +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/cache_blocks.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/community_pipelines/pipeline_flux_rf_inversion.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/community_pipelines/pipeline_ltx2_refine.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/content_types.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/devices.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/dissolve_frame_errors.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/ACCELERATION.md +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/AGENT_LOOP.md +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/IP_ADAPTER.md +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/LORAS.md +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/PROMPT_WEIGHTING.md +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/RECIPES_24GB.md +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/REMOTE.md +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/SECURITY.md +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/SECURITY_QUICKREF.md +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/TASKS.md +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/TESTING.md +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/WORKER_GUIDE.md +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/WORKFLOW_GUIDE.md +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/WORKSPACES.md +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/download_watch.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/dsp.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/elision.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/events.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/for_each.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/guides.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/hold_audio.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/host_memory.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/host_memory_projection.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/hub_cache.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/introspection.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/kernel_availability.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/library.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/locations.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/log_setup.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/lora_catalog.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/lora_catalog_schema.json +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/lora_hub.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/media_types.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/outbound.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/output_extraction.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/path_redaction.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_ownership.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/adapters.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/chain.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/config_objects.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/h3_guide_steps.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/h3_guides.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/h3_hold.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/h3_hold_steps.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/h3_rules.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/pipeline.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/placement.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/progress.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/remote.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/plan.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/previous_results.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/probe_paths.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/prompt_schema.json +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/prompt_weighting.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/prompts.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/realize.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/reference_limits.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/reference_names.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/references.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/run.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/runs.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/scalar_result_validation.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/schema.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/script_lines.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/security.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/serve.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/__init__.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/admission.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/assess.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/catalog.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/catalog_shape.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/enhancers.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/exports.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/guides.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/http_security.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/inline_media.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/job_history.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/job_record.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/job_results.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/mcp_mount.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/netinfo.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/observed_cost.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/outputs.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/pool.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/routes/__init__.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/routes/files.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/routes/gallery.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/routes/jobs.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/routes/loras.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/sysinfo.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/abap-08VXUWAP.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/apex-BWPQTe0t.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/azcli-Bc_sGQ0U.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/bat-i0X4ZdIN.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/bicep-B5-_aFwp.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/cameligo-DMUM7wLl.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/clojure-Cm7r79vr.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/codicon-DF1abBS2.ttf +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/coffee-Ba7i2nA0.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/cpp-C7h46wYY.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/csharp-BKxtCVv1.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/csp-bTuwJoIa.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/css-DIMkf-bt.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/css.worker-C6lDtRpF.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/cypher-CVaqCwHa.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/dart-onAF5SnQ.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/dockerfile-DZFCIeNp.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/ecl-D05T4iGw.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/editor-DjpsE8to.css +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/editor.worker-BmdWdrHZ.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/elixir-6RTg0lbw.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/flow9-C5_-GSwl.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/fsharp-C8Ef5oNN.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/go-C-y9NEjX.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/graphql-fmXr3nnJ.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/hcl-CpzslTdj.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/html.worker-C5yZDBHz.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/ini-sBoK_t0W.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/java-BEtHBSE6.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/json.worker-DdeUAmHa.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/julia-Bri6UV-V.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/kotlin-BOotOW0E.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/less-B9JPFI3C.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/lexon-CfSJPG6W.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/lua-CsQS60Ue.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/m3-D-oSqn_W.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/markdown-Cimd5fb3.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/mips-CIPQ_RoX.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/monaco-n7clI0si.css +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/msdax-DauUninz.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/mysql-SOo6toE5.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/objective-c-FvmIjYaQ.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/pascal-DrH0SRf2.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/pascaligo-D-ptJ9y-.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/perl-oz_6vUea.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/pgsql-DTj74zXo.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/php-nr791fC2.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/pla-CopQ2nXW.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/postiats-43DmfD33.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/powerquery-D3hlyOfw.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/powershell-DmHpPYUd.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/protobuf-C531GsRP.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/pug-Z5eAx3Zn.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/qsharp-DkqhCAOL.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/r-BwWrilGY.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/redis-ClamHrr6.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/redshift-DT7zqm-g.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/restructuredtext-BYgofb2h.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/ruby-DezsRK8O.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/rust-DdL9SqIa.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/sb-CcwsVR0C.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/scala-DHpiXF5c.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/scheme-BeGwcela.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/scss-gp-XZpBa.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/shell-CC2rA5mh.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/solidity-BEEn4gHE.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/sophia-CRfGWb83.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/sparql-D_Lu-MrJ.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/sql-NEE52Syq.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/st-DbInun42.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/swift-Bxkupp3x.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/systemverilog-Bz4Y3fRF.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/tcl-DISqw1ZD.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/ts.worker-DGGa2mF8.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/twig-De2hgUGE.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/typespec-B8J7ngcE.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/vb-DV3o63ZY.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/wgsl-DpFanUEy.js +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/updater.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/worker_memory.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/settings.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/shot_span_preflight.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/shots.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/slice_preflight.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/step.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/step_cache.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/step_value_checks.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/subfolders.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/task_domains.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/task_problems.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/assess.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/audio_dynamics.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/audio_handlers.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/audio_transcription.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/audio_utils.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/background_remover.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/beats.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/borders.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/compose_text.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/concat_videos.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/depth_estimator.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/diffusion_upscale.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/dissolve_videos.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/face_track.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/finish.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/finish_handlers.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/fit.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/format_messages.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/gather.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/grade.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/h3_latent_upscale.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/h3_latent_upscaler_model.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/image_ops.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/image_to_text.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/image_utils.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/interpolate_frames.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/join_into_song.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/joins.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/judge.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/loop_bed.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/lut.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/measure_sync.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/model_cache.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/model_handlers.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/pair_audio.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/qr_code.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/registry.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/restore_faces.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/rife_model.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/script_check.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/segment.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/select.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/speech_generation.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/stabilize.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/task.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/tensor_image.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/text_generation.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/text_sections.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/trim.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/upscale.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/video_handlers.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/video_utils.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/voice_attribution.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/windows.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/zoe_depth.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/test.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/trust.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/type_helpers.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/type_references.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/validate.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/validation.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/variable_constraints.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/variables.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/video_extensions.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/video_size_errors.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/vram_estimate.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/vram_inheritance.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/window_count_errors.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/worker.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/worker_manager.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/worker_protocol.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/workflow.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/workflow_run.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/workflow_schema.json +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/workflows/h3_context_ir.json +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/workflows/test.json +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/workspace.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/writers.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/__init__.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/__main__.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/assets.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/authoring.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/catalog.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/client.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/confine.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/diagnose.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/exports.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/guides.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/loras.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/media.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/models.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/prompts.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/server.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/tools_authoring.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/tools_jobs.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/tools_media.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/setup.cfg +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_admission.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_admission_capacity.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_analyze_beats.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_arch_metrics.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_arch_report.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_architecture_map.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_argument_updates.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_arguments.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_assemble_and_score_target_lufs.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_assess.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_assessment_rules.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_assets.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_attention_slicing.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_audio_utils.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_best_of_n_template.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_borders.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_cache_blocks.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_catalog_shape.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_catalog_speed_defaults.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_catalog_structure.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_chain.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_ci_config.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_cli.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_component_name_errors.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_component_pruning.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_component_type_errors.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_compose_text.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_concat_videos.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_config_objects.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_configuration_schema.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_content_types.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_depth_estimator.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_device.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_device_helpers.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_device_portability.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_dialogue_short_voices.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_diffusion_upscale.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_dissolve_frame_errors.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_dissolve_videos.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_docs_links.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_download_watch.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_dsp.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_elision.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_events.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_examples.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_face_track.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_find_loop_bed.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_finish.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_fit_templates.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_fit_to_model.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_for_each.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_gather.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_grade.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_guide_chain_validation.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_guides_validation.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_h3_adapters.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_h3_context_ir.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_h3_guides.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_h3_hold_audio.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_h3_latent_upscale.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_h3_refine.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_h3_rules.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_h3_schedule.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_h3_upscaler_source.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_h3_vram_ceiling.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_hf_placement.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_host_memory.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_host_memory_projection.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_hub_cache.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_image_ops.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_image_to_text.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_image_utils.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_inductor_cache_default.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_ingredients_grid.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_inherited_cost.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_integration.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_interpolate_frames.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_introspection.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_job_history_device.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_job_history_wal.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_job_progress.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_job_warnings.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_jobs_listing.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_jobs_reused.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_join_into_song.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_join_windows.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_judge.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_kernel_availability.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_library_path.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_library_sources.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_list_images.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_locations.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_lora_alpha.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_lora_catalog.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_lora_disable.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_lora_hub.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_lora_library.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_ltx2_diffusion_decode.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_ltx2_extend_clip.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_ltx2_ic_loras.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_ltx2_refine_pipeline.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_ltx_prompt_library.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_lut.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_assets.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_authoring.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_catalog.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_client.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_confine.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_diagnose.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_exports.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_guides.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_loras.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_main.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_media.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_models.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_prompts.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_server.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_twins.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_measure_sync.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_media_audio.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_media_decode_threads.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_media_frames.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_media_info.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_media_layering.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mix_audio.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_model_cache.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_modular_output_properties.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_modular_progress.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mps_fallback_warning.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mps_rope_precision.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_null_media.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_numeric_coercion.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_observed_cost.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_offload_placement.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_outbound.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_output_references.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_pair_audio.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_pair_audio_fit.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_parallel_loading_default.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_path_redaction.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_phase_events.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_pipeline_caching.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_pipeline_components.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_plan.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_plugin_skills.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_prepare_pipeline.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_previous_result_walker_parity.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_previous_results.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_prompt_library.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_prompt_parser.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_prompt_references.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_prompt_weighting.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_prompts.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_read_frame_range.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_real_models.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_realize.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_recenter_crop.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_reference_limits.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_reference_names.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_reference_skip_sets.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_references.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_rerun_new_seed.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_resize_bucket.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_restore_faces_helper_cache.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_restore_faces_video.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_result.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_result_fps.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_result_output_naming.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_rule_parity.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_runs.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_runtime_settings.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_scalar_result_validation.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_scheduler_config.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_schema.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_script_check.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_security.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_security_auth.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_security_decoder_bombs.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_security_input_caps.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_security_ssrf.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_security_symlinks.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_security_trust_gate.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_security_web_headers.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_segment.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_select.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_select_validation.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_separate_stems.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_serve_main.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server_assess.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server_downloads.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server_exports.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server_gallery_image.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server_guides.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server_info.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server_jobs.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server_loras.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server_mcp.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server_workspaces.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_shaping_logs.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_shot_span_preflight.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_shots.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_slice_preflight.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_speech_generation.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_stabilize.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_step.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_step_cache.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_strip_exif_and_watermark.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_sub_workflow_resolver.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_subfolders.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_task.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_task_discovery.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_task_domains.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_task_public_imports.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_task_registry_rules.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_task_signature_errors.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_template_defaults.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_template_subfolders.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_tensor_image.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_text_generation.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_text_sections.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_transcribe_audio.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_trim_video.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_type_helpers.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_type_helpers_concurrency.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_ui_twins.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_validate_arguments.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_validation.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_variable_constraints.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_variables.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_video_extensions.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_video_size_errors.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_video_utils.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_voice_attribution.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_vram_estimate.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_vram_guides.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_vram_inheritance.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_window_count_errors.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_window_video.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_worker.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_worker_execute.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_worker_job_peak_rss.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_worker_manager.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_worker_messages.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_worker_pool.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_workflow.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_workflow_run_keys.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_workflow_snapshot.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_workflow_step_cache.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_workflow_trust.py +0 -0
- {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_workspace.py +0 -0
{diffusers_workflow-0.12.0/diffusers_workflow.egg-info → diffusers_workflow-0.13.0}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: diffusers-workflow
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.13.0
|
|
4
4
|
Summary: Declarative workflow engine and web UI for Hugging Face Diffusers
|
|
5
5
|
Author: dkackman
|
|
6
6
|
License: Apache-2.0
|
|
@@ -16,70 +16,70 @@ Classifier: Programming Language :: Python :: 3.14
|
|
|
16
16
|
Requires-Python: >=3.10
|
|
17
17
|
Description-Content-Type: text/markdown
|
|
18
18
|
License-File: LICENSE
|
|
19
|
-
Requires-Dist: torch>=2.
|
|
20
|
-
Requires-Dist: torchvision>=0.
|
|
19
|
+
Requires-Dist: torch>=2.14.1
|
|
20
|
+
Requires-Dist: torchvision>=0.29.1
|
|
21
21
|
Requires-Dist: diffusers>=0.40.0
|
|
22
|
-
Requires-Dist: transformers
|
|
23
|
-
Requires-Dist: accelerate>=1.
|
|
24
|
-
Requires-Dist: peft>=0.
|
|
22
|
+
Requires-Dist: transformers>=5.19.0
|
|
23
|
+
Requires-Dist: accelerate>=1.15.0
|
|
24
|
+
Requires-Dist: peft>=0.21.2
|
|
25
25
|
Requires-Dist: safetensors>=0.8.0
|
|
26
|
-
Requires-Dist: huggingface-hub>=1.
|
|
26
|
+
Requires-Dist: huggingface-hub>=1.33.0
|
|
27
27
|
Requires-Dist: sentencepiece>=0.2.2
|
|
28
|
-
Requires-Dist: protobuf>=7.36.
|
|
28
|
+
Requires-Dist: protobuf>=7.36.2
|
|
29
29
|
Requires-Dist: ftfy>=6.3.1
|
|
30
30
|
Requires-Dist: torchsde>=0.2.6
|
|
31
31
|
Requires-Dist: torchao>=0.18.0
|
|
32
32
|
Requires-Dist: optimum-quanto>=0.2.7
|
|
33
|
-
Requires-Dist: sdnq>=0.2.
|
|
33
|
+
Requires-Dist: sdnq>=0.2.8
|
|
34
34
|
Requires-Dist: gguf>=0.19.0
|
|
35
35
|
Requires-Dist: bitsandbytes>=0.50.2; sys_platform == "linux"
|
|
36
36
|
Requires-Dist: controlnet-aux>=0.0.10
|
|
37
37
|
Requires-Dist: opencv-python-headless>=5.0.0.93
|
|
38
38
|
Requires-Dist: kornia>=0.8.3
|
|
39
|
-
Requires-Dist: kernels>=0.17.
|
|
39
|
+
Requires-Dist: kernels>=0.17.2
|
|
40
40
|
Requires-Dist: spandrel>=0.4.2
|
|
41
41
|
Requires-Dist: facexlib>=0.3.0
|
|
42
|
-
Requires-Dist: numpy>=2.5.
|
|
42
|
+
Requires-Dist: numpy>=2.5.4
|
|
43
43
|
Requires-Dist: Pillow>=12.3.0
|
|
44
44
|
Requires-Dist: piexif>=1.1.3
|
|
45
|
-
Requires-Dist: imageio>=2.
|
|
45
|
+
Requires-Dist: imageio>=2.38.1
|
|
46
46
|
Requires-Dist: imageio-ffmpeg>=0.6.0
|
|
47
|
-
Requires-Dist: av>=
|
|
47
|
+
Requires-Dist: av>=19.0.1
|
|
48
48
|
Requires-Dist: soundfile>=0.14.0
|
|
49
|
-
Requires-Dist: matplotlib>=3.11.
|
|
49
|
+
Requires-Dist: matplotlib>=3.11.2
|
|
50
50
|
Requires-Dist: pyloudnorm>=0.2.0
|
|
51
51
|
Requires-Dist: scipy>=1.18.1
|
|
52
|
-
Requires-Dist: speechbrain>=1.
|
|
52
|
+
Requires-Dist: speechbrain>=1.1.1
|
|
53
53
|
Requires-Dist: demucs>=4.1.0
|
|
54
54
|
Requires-Dist: qrcode>=8.2
|
|
55
55
|
Requires-Dist: requests>=2.34.2
|
|
56
|
-
Requires-Dist: aiohttp>=3.14.
|
|
56
|
+
Requires-Dist: aiohttp>=3.14.5
|
|
57
57
|
Requires-Dist: beautifulsoup4>=4.15.0
|
|
58
58
|
Requires-Dist: jsonschema>=4.26.0
|
|
59
|
-
Requires-Dist: concurrent-log-handler>=0.9.
|
|
60
|
-
Requires-Dist: python-dotenv>=1.2.
|
|
59
|
+
Requires-Dist: concurrent-log-handler>=0.9.30
|
|
60
|
+
Requires-Dist: python-dotenv>=1.2.4
|
|
61
61
|
Requires-Dist: packaging>=26.3
|
|
62
|
-
Requires-Dist: filelock>=
|
|
62
|
+
Requires-Dist: filelock>=4.1.1
|
|
63
63
|
Requires-Dist: httpx>=0.28.1
|
|
64
64
|
Provides-Extra: server
|
|
65
|
-
Requires-Dist: fastapi>=0.
|
|
66
|
-
Requires-Dist: uvicorn[standard]>=0.
|
|
65
|
+
Requires-Dist: fastapi>=0.143.0; extra == "server"
|
|
66
|
+
Requires-Dist: uvicorn[standard]>=0.54.0; extra == "server"
|
|
67
67
|
Provides-Extra: mcp
|
|
68
|
-
Requires-Dist: mcp>=2.
|
|
68
|
+
Requires-Dist: mcp>=2.3.0; extra == "mcp"
|
|
69
69
|
Provides-Extra: dev
|
|
70
70
|
Requires-Dist: pytest>=9.1.1; extra == "dev"
|
|
71
71
|
Requires-Dist: pytest-cov>=7.1.0; extra == "dev"
|
|
72
72
|
Requires-Dist: pytest-xdist>=3.8.0; extra == "dev"
|
|
73
73
|
Requires-Dist: pytest-timeout>=2.4.0; extra == "dev"
|
|
74
|
-
Requires-Dist: pytest-mock>=3.
|
|
74
|
+
Requires-Dist: pytest-mock>=3.16.0; extra == "dev"
|
|
75
75
|
Requires-Dist: pytest-asyncio>=1.4.0; extra == "dev"
|
|
76
76
|
Requires-Dist: httpx>=0.28.1; extra == "dev"
|
|
77
|
-
Requires-Dist: ruff>=0.
|
|
77
|
+
Requires-Dist: ruff>=0.17.0; extra == "dev"
|
|
78
78
|
Requires-Dist: build; extra == "dev"
|
|
79
|
-
Requires-Dist: mcp>=2.
|
|
80
|
-
Requires-Dist: pylint>=
|
|
79
|
+
Requires-Dist: mcp>=2.3.0; extra == "dev"
|
|
80
|
+
Requires-Dist: pylint>=4.1.3; extra == "dev"
|
|
81
81
|
Requires-Dist: import-linter>=2.15; extra == "dev"
|
|
82
|
-
Requires-Dist: networkx>=3.
|
|
82
|
+
Requires-Dist: networkx>=3.7; extra == "dev"
|
|
83
83
|
Requires-Dist: pygount>=3.2; extra == "dev"
|
|
84
84
|
Dynamic: license-file
|
|
85
85
|
|
|
@@ -148,7 +148,7 @@ family that knows which workflow fits a request and the rules that bite:
|
|
|
148
148
|
```
|
|
149
149
|
|
|
150
150
|
Most of the shipped workflows (Flux, LTX-2, MiniMax...) use **gated** models.
|
|
151
|
-
Request access on the model's Hugging Face page, then `
|
|
151
|
+
Request access on the model's Hugging Face page, then `hf auth login`
|
|
152
152
|
once; without it the run fails partway through with a 401/403 from the Hub.
|
|
153
153
|
|
|
154
154
|
> **GPU on another machine?** Start the engine there with `--mcp` and connect
|
|
@@ -63,7 +63,7 @@ family that knows which workflow fits a request and the rules that bite:
|
|
|
63
63
|
```
|
|
64
64
|
|
|
65
65
|
Most of the shipped workflows (Flux, LTX-2, MiniMax...) use **gated** models.
|
|
66
|
-
Request access on the model's Hugging Face page, then `
|
|
66
|
+
Request access on the model's Hugging Face page, then `hf auth login`
|
|
67
67
|
once; without it the run fails partway through with a 401/403 from the Hub.
|
|
68
68
|
|
|
69
69
|
> **GPU on another machine?** Start the engine there with `--mcp` and connect
|
{diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0/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.
|
|
3
|
+
Version: 0.13.0
|
|
4
4
|
Summary: Declarative workflow engine and web UI for Hugging Face Diffusers
|
|
5
5
|
Author: dkackman
|
|
6
6
|
License: Apache-2.0
|
|
@@ -16,70 +16,70 @@ Classifier: Programming Language :: Python :: 3.14
|
|
|
16
16
|
Requires-Python: >=3.10
|
|
17
17
|
Description-Content-Type: text/markdown
|
|
18
18
|
License-File: LICENSE
|
|
19
|
-
Requires-Dist: torch>=2.
|
|
20
|
-
Requires-Dist: torchvision>=0.
|
|
19
|
+
Requires-Dist: torch>=2.14.1
|
|
20
|
+
Requires-Dist: torchvision>=0.29.1
|
|
21
21
|
Requires-Dist: diffusers>=0.40.0
|
|
22
|
-
Requires-Dist: transformers
|
|
23
|
-
Requires-Dist: accelerate>=1.
|
|
24
|
-
Requires-Dist: peft>=0.
|
|
22
|
+
Requires-Dist: transformers>=5.19.0
|
|
23
|
+
Requires-Dist: accelerate>=1.15.0
|
|
24
|
+
Requires-Dist: peft>=0.21.2
|
|
25
25
|
Requires-Dist: safetensors>=0.8.0
|
|
26
|
-
Requires-Dist: huggingface-hub>=1.
|
|
26
|
+
Requires-Dist: huggingface-hub>=1.33.0
|
|
27
27
|
Requires-Dist: sentencepiece>=0.2.2
|
|
28
|
-
Requires-Dist: protobuf>=7.36.
|
|
28
|
+
Requires-Dist: protobuf>=7.36.2
|
|
29
29
|
Requires-Dist: ftfy>=6.3.1
|
|
30
30
|
Requires-Dist: torchsde>=0.2.6
|
|
31
31
|
Requires-Dist: torchao>=0.18.0
|
|
32
32
|
Requires-Dist: optimum-quanto>=0.2.7
|
|
33
|
-
Requires-Dist: sdnq>=0.2.
|
|
33
|
+
Requires-Dist: sdnq>=0.2.8
|
|
34
34
|
Requires-Dist: gguf>=0.19.0
|
|
35
35
|
Requires-Dist: bitsandbytes>=0.50.2; sys_platform == "linux"
|
|
36
36
|
Requires-Dist: controlnet-aux>=0.0.10
|
|
37
37
|
Requires-Dist: opencv-python-headless>=5.0.0.93
|
|
38
38
|
Requires-Dist: kornia>=0.8.3
|
|
39
|
-
Requires-Dist: kernels>=0.17.
|
|
39
|
+
Requires-Dist: kernels>=0.17.2
|
|
40
40
|
Requires-Dist: spandrel>=0.4.2
|
|
41
41
|
Requires-Dist: facexlib>=0.3.0
|
|
42
|
-
Requires-Dist: numpy>=2.5.
|
|
42
|
+
Requires-Dist: numpy>=2.5.4
|
|
43
43
|
Requires-Dist: Pillow>=12.3.0
|
|
44
44
|
Requires-Dist: piexif>=1.1.3
|
|
45
|
-
Requires-Dist: imageio>=2.
|
|
45
|
+
Requires-Dist: imageio>=2.38.1
|
|
46
46
|
Requires-Dist: imageio-ffmpeg>=0.6.0
|
|
47
|
-
Requires-Dist: av>=
|
|
47
|
+
Requires-Dist: av>=19.0.1
|
|
48
48
|
Requires-Dist: soundfile>=0.14.0
|
|
49
|
-
Requires-Dist: matplotlib>=3.11.
|
|
49
|
+
Requires-Dist: matplotlib>=3.11.2
|
|
50
50
|
Requires-Dist: pyloudnorm>=0.2.0
|
|
51
51
|
Requires-Dist: scipy>=1.18.1
|
|
52
|
-
Requires-Dist: speechbrain>=1.
|
|
52
|
+
Requires-Dist: speechbrain>=1.1.1
|
|
53
53
|
Requires-Dist: demucs>=4.1.0
|
|
54
54
|
Requires-Dist: qrcode>=8.2
|
|
55
55
|
Requires-Dist: requests>=2.34.2
|
|
56
|
-
Requires-Dist: aiohttp>=3.14.
|
|
56
|
+
Requires-Dist: aiohttp>=3.14.5
|
|
57
57
|
Requires-Dist: beautifulsoup4>=4.15.0
|
|
58
58
|
Requires-Dist: jsonschema>=4.26.0
|
|
59
|
-
Requires-Dist: concurrent-log-handler>=0.9.
|
|
60
|
-
Requires-Dist: python-dotenv>=1.2.
|
|
59
|
+
Requires-Dist: concurrent-log-handler>=0.9.30
|
|
60
|
+
Requires-Dist: python-dotenv>=1.2.4
|
|
61
61
|
Requires-Dist: packaging>=26.3
|
|
62
|
-
Requires-Dist: filelock>=
|
|
62
|
+
Requires-Dist: filelock>=4.1.1
|
|
63
63
|
Requires-Dist: httpx>=0.28.1
|
|
64
64
|
Provides-Extra: server
|
|
65
|
-
Requires-Dist: fastapi>=0.
|
|
66
|
-
Requires-Dist: uvicorn[standard]>=0.
|
|
65
|
+
Requires-Dist: fastapi>=0.143.0; extra == "server"
|
|
66
|
+
Requires-Dist: uvicorn[standard]>=0.54.0; extra == "server"
|
|
67
67
|
Provides-Extra: mcp
|
|
68
|
-
Requires-Dist: mcp>=2.
|
|
68
|
+
Requires-Dist: mcp>=2.3.0; extra == "mcp"
|
|
69
69
|
Provides-Extra: dev
|
|
70
70
|
Requires-Dist: pytest>=9.1.1; extra == "dev"
|
|
71
71
|
Requires-Dist: pytest-cov>=7.1.0; extra == "dev"
|
|
72
72
|
Requires-Dist: pytest-xdist>=3.8.0; extra == "dev"
|
|
73
73
|
Requires-Dist: pytest-timeout>=2.4.0; extra == "dev"
|
|
74
|
-
Requires-Dist: pytest-mock>=3.
|
|
74
|
+
Requires-Dist: pytest-mock>=3.16.0; extra == "dev"
|
|
75
75
|
Requires-Dist: pytest-asyncio>=1.4.0; extra == "dev"
|
|
76
76
|
Requires-Dist: httpx>=0.28.1; extra == "dev"
|
|
77
|
-
Requires-Dist: ruff>=0.
|
|
77
|
+
Requires-Dist: ruff>=0.17.0; extra == "dev"
|
|
78
78
|
Requires-Dist: build; extra == "dev"
|
|
79
|
-
Requires-Dist: mcp>=2.
|
|
80
|
-
Requires-Dist: pylint>=
|
|
79
|
+
Requires-Dist: mcp>=2.3.0; extra == "dev"
|
|
80
|
+
Requires-Dist: pylint>=4.1.3; extra == "dev"
|
|
81
81
|
Requires-Dist: import-linter>=2.15; extra == "dev"
|
|
82
|
-
Requires-Dist: networkx>=3.
|
|
82
|
+
Requires-Dist: networkx>=3.7; extra == "dev"
|
|
83
83
|
Requires-Dist: pygount>=3.2; extra == "dev"
|
|
84
84
|
Dynamic: license-file
|
|
85
85
|
|
|
@@ -148,7 +148,7 @@ family that knows which workflow fits a request and the rules that bite:
|
|
|
148
148
|
```
|
|
149
149
|
|
|
150
150
|
Most of the shipped workflows (Flux, LTX-2, MiniMax...) use **gated** models.
|
|
151
|
-
Request access on the model's Hugging Face page, then `
|
|
151
|
+
Request access on the model's Hugging Face page, then `hf auth login`
|
|
152
152
|
once; without it the run fails partway through with a 401/403 from the Hub.
|
|
153
153
|
|
|
154
154
|
> **GPU on another machine?** Start the engine there with `--mcp` and connect
|
{diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/diffusers_workflow.egg-info/SOURCES.txt
RENAMED
|
@@ -181,44 +181,44 @@ dw/server/ui/assets/csharp-BKxtCVv1.js
|
|
|
181
181
|
dw/server/ui/assets/csp-bTuwJoIa.js
|
|
182
182
|
dw/server/ui/assets/css-DIMkf-bt.js
|
|
183
183
|
dw/server/ui/assets/css.worker-C6lDtRpF.js
|
|
184
|
-
dw/server/ui/assets/cssMode-
|
|
184
|
+
dw/server/ui/assets/cssMode-QzCkHHkC.js
|
|
185
185
|
dw/server/ui/assets/cypher-CVaqCwHa.js
|
|
186
186
|
dw/server/ui/assets/dart-onAF5SnQ.js
|
|
187
187
|
dw/server/ui/assets/dockerfile-DZFCIeNp.js
|
|
188
188
|
dw/server/ui/assets/ecl-D05T4iGw.js
|
|
189
189
|
dw/server/ui/assets/editor-DjpsE8to.css
|
|
190
|
-
dw/server/ui/assets/editor.api-
|
|
190
|
+
dw/server/ui/assets/editor.api-LvRbw1iL.js
|
|
191
191
|
dw/server/ui/assets/editor.worker-BmdWdrHZ.js
|
|
192
192
|
dw/server/ui/assets/elixir-6RTg0lbw.js
|
|
193
193
|
dw/server/ui/assets/flow9-C5_-GSwl.js
|
|
194
|
-
dw/server/ui/assets/freemarker2-
|
|
194
|
+
dw/server/ui/assets/freemarker2-BFEReHqW.js
|
|
195
195
|
dw/server/ui/assets/fsharp-C8Ef5oNN.js
|
|
196
196
|
dw/server/ui/assets/go-C-y9NEjX.js
|
|
197
197
|
dw/server/ui/assets/graphql-fmXr3nnJ.js
|
|
198
|
-
dw/server/ui/assets/handlebars
|
|
198
|
+
dw/server/ui/assets/handlebars--qZ0WvL7.js
|
|
199
199
|
dw/server/ui/assets/hcl-CpzslTdj.js
|
|
200
|
-
dw/server/ui/assets/html-
|
|
200
|
+
dw/server/ui/assets/html-Bs0VSJAA.js
|
|
201
201
|
dw/server/ui/assets/html.worker-C5yZDBHz.js
|
|
202
|
-
dw/server/ui/assets/htmlMode-
|
|
203
|
-
dw/server/ui/assets/index-
|
|
204
|
-
dw/server/ui/assets/index-
|
|
202
|
+
dw/server/ui/assets/htmlMode-DrsyYX5n.js
|
|
203
|
+
dw/server/ui/assets/index-BgBhcVj3.js
|
|
204
|
+
dw/server/ui/assets/index-DSM5LA24.css
|
|
205
205
|
dw/server/ui/assets/ini-sBoK_t0W.js
|
|
206
206
|
dw/server/ui/assets/java-BEtHBSE6.js
|
|
207
|
-
dw/server/ui/assets/javascript-
|
|
207
|
+
dw/server/ui/assets/javascript-C3KR7rul.js
|
|
208
208
|
dw/server/ui/assets/json.worker-DdeUAmHa.js
|
|
209
|
-
dw/server/ui/assets/jsonMode-
|
|
209
|
+
dw/server/ui/assets/jsonMode-DEXt-mqp.js
|
|
210
210
|
dw/server/ui/assets/julia-Bri6UV-V.js
|
|
211
211
|
dw/server/ui/assets/kotlin-BOotOW0E.js
|
|
212
212
|
dw/server/ui/assets/less-B9JPFI3C.js
|
|
213
213
|
dw/server/ui/assets/lexon-CfSJPG6W.js
|
|
214
|
-
dw/server/ui/assets/liquid-
|
|
215
|
-
dw/server/ui/assets/lspLanguageFeatures-
|
|
214
|
+
dw/server/ui/assets/liquid-ByBJuq1e.js
|
|
215
|
+
dw/server/ui/assets/lspLanguageFeatures-6nDoG86-.js
|
|
216
216
|
dw/server/ui/assets/lua-CsQS60Ue.js
|
|
217
217
|
dw/server/ui/assets/m3-D-oSqn_W.js
|
|
218
218
|
dw/server/ui/assets/markdown-Cimd5fb3.js
|
|
219
|
-
dw/server/ui/assets/mdx-
|
|
219
|
+
dw/server/ui/assets/mdx-BH2GyjV6.js
|
|
220
220
|
dw/server/ui/assets/mips-CIPQ_RoX.js
|
|
221
|
-
dw/server/ui/assets/monaco-
|
|
221
|
+
dw/server/ui/assets/monaco-B6Bmfo5o.js
|
|
222
222
|
dw/server/ui/assets/monaco-n7clI0si.css
|
|
223
223
|
dw/server/ui/assets/msdax-DauUninz.js
|
|
224
224
|
dw/server/ui/assets/mysql-SOo6toE5.js
|
|
@@ -234,10 +234,10 @@ dw/server/ui/assets/powerquery-D3hlyOfw.js
|
|
|
234
234
|
dw/server/ui/assets/powershell-DmHpPYUd.js
|
|
235
235
|
dw/server/ui/assets/protobuf-C531GsRP.js
|
|
236
236
|
dw/server/ui/assets/pug-Z5eAx3Zn.js
|
|
237
|
-
dw/server/ui/assets/python-
|
|
237
|
+
dw/server/ui/assets/python-C1sJMrAm.js
|
|
238
238
|
dw/server/ui/assets/qsharp-DkqhCAOL.js
|
|
239
239
|
dw/server/ui/assets/r-BwWrilGY.js
|
|
240
|
-
dw/server/ui/assets/razor-
|
|
240
|
+
dw/server/ui/assets/razor-BdPZ4bvZ.js
|
|
241
241
|
dw/server/ui/assets/redis-ClamHrr6.js
|
|
242
242
|
dw/server/ui/assets/redshift-DT7zqm-g.js
|
|
243
243
|
dw/server/ui/assets/restructuredtext-BYgofb2h.js
|
|
@@ -257,15 +257,15 @@ dw/server/ui/assets/swift-Bxkupp3x.js
|
|
|
257
257
|
dw/server/ui/assets/systemverilog-Bz4Y3fRF.js
|
|
258
258
|
dw/server/ui/assets/tcl-DISqw1ZD.js
|
|
259
259
|
dw/server/ui/assets/ts.worker-DGGa2mF8.js
|
|
260
|
-
dw/server/ui/assets/tsMode-
|
|
260
|
+
dw/server/ui/assets/tsMode-DW5i-ukN.js
|
|
261
261
|
dw/server/ui/assets/twig-De2hgUGE.js
|
|
262
|
-
dw/server/ui/assets/typescript-
|
|
262
|
+
dw/server/ui/assets/typescript-C_QzKQY3.js
|
|
263
263
|
dw/server/ui/assets/typespec-B8J7ngcE.js
|
|
264
264
|
dw/server/ui/assets/vb-DV3o63ZY.js
|
|
265
265
|
dw/server/ui/assets/wgsl-DpFanUEy.js
|
|
266
|
-
dw/server/ui/assets/workers-
|
|
267
|
-
dw/server/ui/assets/xml-
|
|
268
|
-
dw/server/ui/assets/yaml-
|
|
266
|
+
dw/server/ui/assets/workers-DHqaOvh8.js
|
|
267
|
+
dw/server/ui/assets/xml-D3UEcM_2.js
|
|
268
|
+
dw/server/ui/assets/yaml-C0TnGcnd.js
|
|
269
269
|
dw/tasks/assess.py
|
|
270
270
|
dw/tasks/audio_dynamics.py
|
|
271
271
|
dw/tasks/audio_handlers.py
|
|
@@ -392,6 +392,7 @@ tests/test_elision.py
|
|
|
392
392
|
tests/test_events.py
|
|
393
393
|
tests/test_examples.py
|
|
394
394
|
tests/test_face_track.py
|
|
395
|
+
tests/test_faststart.py
|
|
395
396
|
tests/test_find_loop_bed.py
|
|
396
397
|
tests/test_finish.py
|
|
397
398
|
tests/test_fit_templates.py
|
{diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/diffusers_workflow.egg-info/requires.txt
RENAMED
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
torch>=2.
|
|
2
|
-
torchvision>=0.
|
|
1
|
+
torch>=2.14.1
|
|
2
|
+
torchvision>=0.29.1
|
|
3
3
|
diffusers>=0.40.0
|
|
4
|
-
transformers
|
|
5
|
-
accelerate>=1.
|
|
6
|
-
peft>=0.
|
|
4
|
+
transformers>=5.19.0
|
|
5
|
+
accelerate>=1.15.0
|
|
6
|
+
peft>=0.21.2
|
|
7
7
|
safetensors>=0.8.0
|
|
8
|
-
huggingface-hub>=1.
|
|
8
|
+
huggingface-hub>=1.33.0
|
|
9
9
|
sentencepiece>=0.2.2
|
|
10
|
-
protobuf>=7.36.
|
|
10
|
+
protobuf>=7.36.2
|
|
11
11
|
ftfy>=6.3.1
|
|
12
12
|
torchsde>=0.2.6
|
|
13
13
|
torchao>=0.18.0
|
|
14
14
|
optimum-quanto>=0.2.7
|
|
15
|
-
sdnq>=0.2.
|
|
15
|
+
sdnq>=0.2.8
|
|
16
16
|
gguf>=0.19.0
|
|
17
17
|
controlnet-aux>=0.0.10
|
|
18
18
|
opencv-python-headless>=5.0.0.93
|
|
19
19
|
kornia>=0.8.3
|
|
20
|
-
kernels>=0.17.
|
|
20
|
+
kernels>=0.17.2
|
|
21
21
|
spandrel>=0.4.2
|
|
22
22
|
facexlib>=0.3.0
|
|
23
|
-
numpy>=2.5.
|
|
23
|
+
numpy>=2.5.4
|
|
24
24
|
Pillow>=12.3.0
|
|
25
25
|
piexif>=1.1.3
|
|
26
|
-
imageio>=2.
|
|
26
|
+
imageio>=2.38.1
|
|
27
27
|
imageio-ffmpeg>=0.6.0
|
|
28
|
-
av>=
|
|
28
|
+
av>=19.0.1
|
|
29
29
|
soundfile>=0.14.0
|
|
30
|
-
matplotlib>=3.11.
|
|
30
|
+
matplotlib>=3.11.2
|
|
31
31
|
pyloudnorm>=0.2.0
|
|
32
32
|
scipy>=1.18.1
|
|
33
|
-
speechbrain>=1.
|
|
33
|
+
speechbrain>=1.1.1
|
|
34
34
|
demucs>=4.1.0
|
|
35
35
|
qrcode>=8.2
|
|
36
36
|
requests>=2.34.2
|
|
37
|
-
aiohttp>=3.14.
|
|
37
|
+
aiohttp>=3.14.5
|
|
38
38
|
beautifulsoup4>=4.15.0
|
|
39
39
|
jsonschema>=4.26.0
|
|
40
|
-
concurrent-log-handler>=0.9.
|
|
41
|
-
python-dotenv>=1.2.
|
|
40
|
+
concurrent-log-handler>=0.9.30
|
|
41
|
+
python-dotenv>=1.2.4
|
|
42
42
|
packaging>=26.3
|
|
43
|
-
filelock>=
|
|
43
|
+
filelock>=4.1.1
|
|
44
44
|
httpx>=0.28.1
|
|
45
45
|
|
|
46
46
|
[:sys_platform == "linux"]
|
|
@@ -51,20 +51,20 @@ pytest>=9.1.1
|
|
|
51
51
|
pytest-cov>=7.1.0
|
|
52
52
|
pytest-xdist>=3.8.0
|
|
53
53
|
pytest-timeout>=2.4.0
|
|
54
|
-
pytest-mock>=3.
|
|
54
|
+
pytest-mock>=3.16.0
|
|
55
55
|
pytest-asyncio>=1.4.0
|
|
56
56
|
httpx>=0.28.1
|
|
57
|
-
ruff>=0.
|
|
57
|
+
ruff>=0.17.0
|
|
58
58
|
build
|
|
59
|
-
mcp>=2.
|
|
60
|
-
pylint>=
|
|
59
|
+
mcp>=2.3.0
|
|
60
|
+
pylint>=4.1.3
|
|
61
61
|
import-linter>=2.15
|
|
62
|
-
networkx>=3.
|
|
62
|
+
networkx>=3.7
|
|
63
63
|
pygount>=3.2
|
|
64
64
|
|
|
65
65
|
[mcp]
|
|
66
|
-
mcp>=2.
|
|
66
|
+
mcp>=2.3.0
|
|
67
67
|
|
|
68
68
|
[server]
|
|
69
|
-
fastapi>=0.
|
|
70
|
-
uvicorn[standard]>=0.
|
|
69
|
+
fastapi>=0.143.0
|
|
70
|
+
uvicorn[standard]>=0.54.0
|
|
@@ -33,7 +33,11 @@ refused, until someone marks it by hand.
|
|
|
33
33
|
is renamed into one `<root>/.clearing-<pid>-<rand>/` directory, which is then
|
|
34
34
|
deleted. A writer racing the clear finds an empty cache and rebuilds; it never
|
|
35
35
|
reads a half-deleted tree. An entry delete moves the one entry the same way. The
|
|
36
|
-
routes refuse while a job is running or queued
|
|
36
|
+
routes refuse while a job is running or queued, and hold the job queue still
|
|
37
|
+
(`JobManager.hold_dispatch`) while they work, so a job submitted meanwhile waits
|
|
38
|
+
instead of starting into a root being emptied. A staging directory a killed
|
|
39
|
+
server left behind is removed at `mark_roots()` and at the next clear, and is
|
|
40
|
+
never counted by a scan. `scan_all()` reuses its answer for a few seconds.
|
|
37
41
|
|
|
38
42
|
**An entry id must have a cache key's shape** (`quantized_cache.is_key`, 64
|
|
39
43
|
lowercase hex) before any path is built from it.
|
|
@@ -45,6 +49,7 @@ import os
|
|
|
45
49
|
import secrets
|
|
46
50
|
import shutil
|
|
47
51
|
import threading
|
|
52
|
+
import time
|
|
48
53
|
from dataclasses import dataclass
|
|
49
54
|
from typing import Callable
|
|
50
55
|
|
|
@@ -65,6 +70,12 @@ _MARKER_TEXT = (
|
|
|
65
70
|
_clear_lock = threading.Lock()
|
|
66
71
|
|
|
67
72
|
|
|
73
|
+
# How long scan_all's answer is reused. A scan stat()s every file of every
|
|
74
|
+
# cache, and get_server_info asks on each call (#840)
|
|
75
|
+
_SCAN_TTL = 5.0
|
|
76
|
+
_scan_memo = None # (monotonic time, scan_all's result)
|
|
77
|
+
|
|
78
|
+
|
|
68
79
|
class UnknownCache(ValueError):
|
|
69
80
|
pass
|
|
70
81
|
|
|
@@ -210,9 +221,28 @@ def _write_marker(root):
|
|
|
210
221
|
f.write(_MARKER_TEXT)
|
|
211
222
|
|
|
212
223
|
|
|
213
|
-
def
|
|
224
|
+
def _sweep_staging(root):
|
|
225
|
+
"""Delete the `.clearing-*` directories a clear that died mid-delete left
|
|
226
|
+
in `root`. Only called where no clear can be running: server start, or
|
|
227
|
+
inside `_clear_lock`."""
|
|
228
|
+
try:
|
|
229
|
+
leftovers = [
|
|
230
|
+
entry.path
|
|
231
|
+
for entry in _children(root)
|
|
232
|
+
if entry.name.startswith(_CLEARING_PREFIX)
|
|
233
|
+
and entry.is_dir(follow_symlinks=False)
|
|
234
|
+
]
|
|
235
|
+
except OSError:
|
|
236
|
+
return
|
|
237
|
+
for path in leftovers:
|
|
238
|
+
shutil.rmtree(path, ignore_errors=True)
|
|
239
|
+
logger.info(f"Removed the leftover {path} from an interrupted clear")
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
def mark_root(cache, quiet=False):
|
|
214
243
|
"""Mark one cache's root as dw's to clear, if the rule allows it.
|
|
215
|
-
Returns whether the root carries the marker afterwards.
|
|
244
|
+
Returns whether the root carries the marker afterwards. `quiet` logs the
|
|
245
|
+
refusal at DEBUG: only the startup pass says it at INFO (#841)."""
|
|
216
246
|
root = cache.root()
|
|
217
247
|
if os.path.islink(root) or (os.path.exists(root) and not os.path.isdir(root)):
|
|
218
248
|
return False
|
|
@@ -223,9 +253,10 @@ def mark_root(cache):
|
|
|
223
253
|
if _has_marker(root):
|
|
224
254
|
return True
|
|
225
255
|
if _children(root) and root != cache.default_root():
|
|
226
|
-
logger.
|
|
256
|
+
logger.log(
|
|
257
|
+
logging.DEBUG if quiet else logging.INFO,
|
|
227
258
|
f"The {cache.name} cache at {root} was not created by dw and "
|
|
228
|
-
f"has no {MARKER} marker, so it can't be cleared from the server"
|
|
259
|
+
f"has no {MARKER} marker, so it can't be cleared from the server",
|
|
229
260
|
)
|
|
230
261
|
return False
|
|
231
262
|
_write_marker(root)
|
|
@@ -237,7 +268,8 @@ def mark_roots():
|
|
|
237
268
|
once at server start; a root it can't write is left unclearable."""
|
|
238
269
|
for cache in CACHES.values():
|
|
239
270
|
try:
|
|
240
|
-
mark_root(cache)
|
|
271
|
+
if mark_root(cache):
|
|
272
|
+
_sweep_staging(cache.root())
|
|
241
273
|
except (OSError, SecurityError) as e:
|
|
242
274
|
logger.warning(f"Could not mark the {cache.name} cache: {e}")
|
|
243
275
|
|
|
@@ -255,6 +287,9 @@ def _walk(top):
|
|
|
255
287
|
continue
|
|
256
288
|
with entries:
|
|
257
289
|
for entry in entries:
|
|
290
|
+
if directory == top and entry.name.startswith(_CLEARING_PREFIX):
|
|
291
|
+
# A clear's staging directory is on its way out
|
|
292
|
+
continue
|
|
258
293
|
try:
|
|
259
294
|
if entry.is_dir(follow_symlinks=False):
|
|
260
295
|
stack.append(entry.path)
|
|
@@ -295,7 +330,7 @@ def _reason(cache):
|
|
|
295
330
|
root = cache.root()
|
|
296
331
|
if os.path.isdir(root) and not _has_marker(root):
|
|
297
332
|
try:
|
|
298
|
-
mark_root(cache)
|
|
333
|
+
mark_root(cache, quiet=True)
|
|
299
334
|
except (OSError, SecurityError) as e:
|
|
300
335
|
logger.warning(f"Could not mark the {cache.name} cache: {e}")
|
|
301
336
|
return _not_clearable_reason(root)
|
|
@@ -340,7 +375,7 @@ def scan(cache):
|
|
|
340
375
|
def _entry_fields(path):
|
|
341
376
|
"""What an entry's `entry.json` says of it, or None when it can't be
|
|
342
377
|
read. `component` falls back to the subfolder - the component's name in
|
|
343
|
-
a diffusers repo -
|
|
378
|
+
a diffusers repo - for entries written before entry.json recorded it."""
|
|
344
379
|
try:
|
|
345
380
|
entry = quantized_cache.read_entry(path)
|
|
346
381
|
except (OSError, ValueError):
|
|
@@ -385,7 +420,20 @@ def scan_entries(root):
|
|
|
385
420
|
|
|
386
421
|
|
|
387
422
|
def scan_all():
|
|
388
|
-
|
|
423
|
+
"""Every cache as plain data, reused for `_SCAN_TTL` seconds; a clear or
|
|
424
|
+
entry delete drops the reused answer."""
|
|
425
|
+
global _scan_memo
|
|
426
|
+
memo = _scan_memo
|
|
427
|
+
if memo is not None and time.monotonic() - memo[0] < _SCAN_TTL:
|
|
428
|
+
return memo[1]
|
|
429
|
+
result = [scan(cache) for cache in CACHES.values()]
|
|
430
|
+
_scan_memo = (time.monotonic(), result)
|
|
431
|
+
return result
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
def _forget_scans():
|
|
435
|
+
global _scan_memo
|
|
436
|
+
_scan_memo = None
|
|
389
437
|
|
|
390
438
|
|
|
391
439
|
def entry_cache(name, entry):
|
|
@@ -441,10 +489,12 @@ def delete_entry(name, entry):
|
|
|
441
489
|
if reason:
|
|
442
490
|
raise NotClearable(f"The {name} cache at {root} can't be changed: {reason}")
|
|
443
491
|
root = validate_path(root)
|
|
492
|
+
_sweep_staging(root)
|
|
444
493
|
path = quantized_cache.entry_path(root, entry)
|
|
445
494
|
if os.path.islink(path) or not os.path.isdir(path):
|
|
446
495
|
raise UnknownEntry(f"The {name} cache has no entry {entry}")
|
|
447
496
|
freed, files = _stage_out(root, [path])
|
|
497
|
+
_forget_scans()
|
|
448
498
|
logger.info(f"Deleted {name} cache entry {entry} ({freed} bytes, {files} files)")
|
|
449
499
|
return {"freed": freed, "files": files}
|
|
450
500
|
|
|
@@ -462,10 +512,12 @@ def clear(name):
|
|
|
462
512
|
if reason:
|
|
463
513
|
raise NotClearable(f"The {name} cache at {root} can't be cleared: {reason}")
|
|
464
514
|
root = validate_path(root)
|
|
515
|
+
_sweep_staging(root)
|
|
465
516
|
# A link is left alone: validate_path resolves it, so the rename
|
|
466
517
|
# would move its target, not the link
|
|
467
518
|
freed, files = _stage_out(
|
|
468
519
|
root, [entry.path for entry in _children(root) if not entry.is_symlink()]
|
|
469
520
|
)
|
|
521
|
+
_forget_scans()
|
|
470
522
|
logger.info(f"Cleared the {name} cache at {root} ({freed} bytes, {files} files)")
|
|
471
523
|
return {"freed": freed, "files": files}
|
|
@@ -150,10 +150,10 @@ one to open.
|
|
|
150
150
|
| App factory | `dw/server/app.py`: `create_app` | `create_app` builds the JobManager and `app.state`, installs the middleware and registers the routes, and all state lives in the JobManager. | — |
|
|
151
151
|
| Routers | `dw/server/routes/*.py`, `dw/server/routes/__init__.py`: `ROUTERS`, `include_routers`, `include_file_routes` | Routers register in `ROUTERS` order, because a greedy `{name:path}` route must come after its specific siblings. The files router comes later, after `/mcp`. | `tests/test_server_downloads.py::test_download_workflow_sets_content_disposition_attachment` |
|
|
152
152
|
| Job queue | `dw/server/jobs.py`: `JobManager`; `dw/server/job_results.py`: `consume_results` | A dispatcher thread hands queued jobs, in queue order, to the pool's workers (`Worker pool dispatch`); each worker runs one job at a time, and `consume_results` folds that worker's replies into the job, naming files relative to the job's own `output_dir`. A job carries its own `output_dir`, `asset_dir` and `workflow_dir`, so it stays in its workspace. | `tests/test_server_workspaces.py::TestRunning::test_rerun_stays_in_the_workspace_it_ran_in` (FIFO: —) |
|
|
153
|
-
| Worker pool dispatch | `dw/server/jobs.py`: `JobManager._next_dispatch`; `dw/server/pool.py`: `WorkerSlot`, `check_fits`, `largest_ceiling_gb`; `dw/vram_estimate.py`: `required_vram_gb`; `dw/server/admission.py`: `pool_capacity` | `--devices` runs one worker per card; a queued job goes to a free card that fits what it needs, a job that fits no free card keeps its place while a smaller one behind it takes the card, a job bigger than every card is refused at submit, and cancel or a crash touches only the worker running that job. On a backend no `cost` entry describes, a declared `vram_estimate` is held at admission to the pool's largest card, so a job the first card cannot hold is not refused when a larger card can hold it. | `tests/test_worker_pool.py::TestConcurrency::test_two_workers_run_two_jobs_at_once`, `tests/test_worker_pool.py::TestBackfill::test_a_job_too_big_for_the_free_card_waits_while_a_smaller_one_takes_it`, `tests/test_worker_pool.py::TestFitAtSubmit::test_a_job_too_big_for_every_card_is_refused_naming_the_largest`, `tests/test_worker_pool.py::TestCancel::test_cancel_reaches_the_worker_running_the_job`, `tests/test_worker_pool.py::TestCrashIsolation::test_a_crashed_worker_fails_only_its_own_job`, `tests/test_worker_pool.py::TestOomRanking::test_the_later_started_worker_is_ranked_first`, `tests/test_worker_pool.py::TestFitAtSubmit::test_a_job_only_the_larger_card_holds_is_admitted` |
|
|
153
|
+
| Worker pool dispatch | `dw/server/jobs.py`: `JobManager._next_dispatch`; `dw/server/pool.py`: `WorkerSlot`, `check_fits`, `largest_ceiling_gb`; `dw/vram_estimate.py`: `required_vram_gb`; `dw/server/admission.py`: `pool_capacity` | `--devices` runs one worker per card; a queued job goes to a free card that fits what it needs (none starts while a cache clear holds dispatch, `dw disk caches`), a job that fits no free card keeps its place while a smaller one behind it takes the card, a job bigger than every card is refused at submit, and cancel or a crash touches only the worker running that job. On a backend no `cost` entry describes, a declared `vram_estimate` is held at admission to the pool's largest card, so a job the first card cannot hold is not refused when a larger card can hold it. | `tests/test_worker_pool.py::TestConcurrency::test_two_workers_run_two_jobs_at_once`, `tests/test_worker_pool.py::TestBackfill::test_a_job_too_big_for_the_free_card_waits_while_a_smaller_one_takes_it`, `tests/test_worker_pool.py::TestFitAtSubmit::test_a_job_too_big_for_every_card_is_refused_naming_the_largest`, `tests/test_worker_pool.py::TestCancel::test_cancel_reaches_the_worker_running_the_job`, `tests/test_worker_pool.py::TestCrashIsolation::test_a_crashed_worker_fails_only_its_own_job`, `tests/test_worker_pool.py::TestOomRanking::test_the_later_started_worker_is_ranked_first`, `tests/test_worker_pool.py::TestFitAtSubmit::test_a_job_only_the_larger_card_holds_is_admitted` |
|
|
154
154
|
| Card affinity | `dw/server/pool.py`: `choose_slot`; `dw/server/jobs.py`: `JobManager.route`; `dw/worker_protocol.py`: `workflow_identity` | Among the free cards a job fits it goes to the rerun's original card, else the card whose worker last ran its workflow identity (`workflow_identity`, the one rule the worker caches by too), else one with no worker running, else the first in `--devices` order; a cache probe and `plan.estimate` (`priced_for`) ask about the card `route` names, and memory is read and cleared per card. | `tests/test_worker_pool.py::TestIdentityAffinity::test_a_second_run_lands_on_the_card_that_ran_the_workflow_first`, `tests/test_worker_pool.py::TestRerunAffinity::test_a_rerun_lands_on_the_original_card_when_it_is_free`, `tests/test_worker_pool.py::TestProbeRouting::test_the_probe_goes_to_the_worker_the_job_would_be_routed_to`, `tests/test_worker_pool.py::TestMemoryPerCard::test_a_named_card_running_a_job_is_refused_though_the_other_is_idle` |
|
|
155
155
|
| Per-card memory and cache | `dw/server/worker_memory.py`: `memory_status`, `clear_memory`, `probe_cache` | Each card keeps its own last memory reading; an idle card's worker is asked live, a busy one answers with the run's last report and says why it is not live, and a clear leaves a card running a job alone. Every request takes the card's lock with a bounded wait, and a card's lock is never taken while the JobManager's lock is held. | `tests/test_worker_pool.py::TestMemoryPerCard::test_a_named_card_running_a_job_is_refused_though_the_other_is_idle`, `tests/test_worker_pool.py::TestProbeRouting::test_the_probe_goes_to_the_worker_the_job_would_be_routed_to`, `tests/test_server.py::test_memory_says_why_a_reading_is_not_the_worker_s` |
|
|
156
|
-
| dw disk caches | `dw/disk_caches.py` | Members `inductor`, `triton`, `quantized`. Clear only a root carrying the `.dw-cache` marker, never while a job is running or queued (`quantized` also not during a model download); an entry delete takes only a 64-hex id, checked before any path is built; clear renames into `.clearing-*` then deletes. | `tests/test_disk_caches.py` |
|
|
156
|
+
| dw disk caches | `dw/disk_caches.py`; `dw/server/jobs.py`: `JobManager.hold_dispatch`; `dw/server/routes/system.py`: `clear_cache`, `delete_cache_entry` | Members `inductor`, `triton`, `quantized`. Clear only a root carrying the `.dw-cache` marker, never while a job is running or queued (`quantized` also not during a model download); an entry delete takes only a 64-hex id, checked before any path is built; clear renames into `.clearing-*` then deletes. The busy check and the dispatch hold are one step in `JobManager.hold_dispatch`, kept for the whole clear or entry delete: a job submitted meanwhile is accepted but stays queued until it ends. | `tests/test_disk_caches.py`, `tests/test_disk_caches.py::test_job_submitted_during_a_clear_waits_for_it` |
|
|
157
157
|
| Job-to-run link | `dw/server/job_record.py`, `dw/server/jobs.py`: `JobManager.realized` | A job records `run_id`, `run_dir` and `run_version`, and `JobManager.realized` reads that run's `workflow.json`, confined to the output root. | `tests/test_server_jobs.py::test_realized_reads_the_file_the_run_wrote`, `tests/test_server_jobs.py::test_realized_refuses_a_run_dir_that_escapes_the_output_root` |
|
|
158
158
|
| Job history | `dw/server/job_history.py`: `JobHistory` | Finished jobs persist in `jobs.sqlite`, in WAL mode, so the Jobs view survives a restart. | `tests/test_server.py::test_job_history_survives_restart_and_reruns`, `tests/test_job_history_wal.py::test_the_jobs_database_uses_wal_mode` |
|
|
159
159
|
| HTTP security | `dw/server/http_security.py`: `install_middleware`, `query_token_ok` | Every API route needs the token, and only a route marked `query_token_ok` takes it as `?token=`. | `tests/test_security_auth.py::TestTheTokenGate::test_every_api_spelling_needs_the_token`, `tests/test_security_auth.py::TestTheTokenGate::test_the_query_token_is_refused_where_it_is_not_allowed` |
|
|
@@ -76,10 +76,10 @@ bash ./install.sh
|
|
|
76
76
|
|
|
77
77
|
## Troubleshooting
|
|
78
78
|
|
|
79
|
-
**Hugging Face authentication (401/403 downloading a model):** Most workflows under `workflows/` (Flux, LTX-2, MiniMax...) point at **gated** models on the Hub — repos that require the owner to approve your account before you can download them. A run against one of these fails with an actionable error naming the repo and `
|
|
79
|
+
**Hugging Face authentication (401/403 downloading a model):** Most workflows under `workflows/` (Flux, LTX-2, MiniMax...) point at **gated** models on the Hub — repos that require the owner to approve your account before you can download them. A run against one of these fails with an actionable error naming the repo and `hf auth login` (mapped from the Hub's 401/403 in `load_component()`, `dw/pipeline_processors/components.py`) — request access on the model's page (e.g. [black-forest-labs/FLUX.1-dev](https://huggingface.co/black-forest-labs/FLUX.1-dev)) and then log in once, locally:
|
|
80
80
|
|
|
81
81
|
```bash
|
|
82
|
-
|
|
82
|
+
hf auth login
|
|
83
83
|
```
|
|
84
84
|
|
|
85
85
|
`workflows/templates/text-to-image.json` uses an ungated model and needs no login - start there if you just want to confirm the install works.
|