diffusers-workflow 0.4.0b7__tar.gz → 0.5.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.4.0b7/diffusers_workflow.egg-info → diffusers_workflow-0.5.0}/PKG-INFO +24 -4
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/README.md +20 -3
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0/diffusers_workflow.egg-info}/PKG-INFO +24 -4
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/diffusers_workflow.egg-info/SOURCES.txt +74 -23
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/diffusers_workflow.egg-info/requires.txt +3 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/__init__.py +83 -14
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/adapter_compatibility.py +64 -12
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/arguments.py +193 -20
- diffusers_workflow-0.5.0/dw/assessment_rules.py +192 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/cache_blocks.py +2 -1
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/content_types.py +46 -1
- diffusers_workflow-0.5.0/dw/dissolve_frame_errors.py +121 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/docs/ACCELERATION.md +9 -5
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/docs/AGENT_LOOP.md +9 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/docs/DEPENDENCIES.md +1 -1
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/docs/MCP.md +12 -8
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/docs/RECIPES_24GB.md +8 -0
- diffusers_workflow-0.5.0/dw/docs/RELEASING.md +324 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/docs/REMOTE.md +21 -2
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/docs/SECURITY.md +55 -8
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/docs/SERVER.md +17 -2
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/docs/TASKS.md +301 -12
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/docs/TESTING.md +1 -1
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/docs/WORKFLOW_GUIDE.md +226 -9
- diffusers_workflow-0.5.0/dw/download_watch.py +335 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/events.py +50 -7
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/host_memory_projection.py +72 -17
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/hub_cache.py +114 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/introspection.py +436 -23
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/locations.py +147 -15
- diffusers_workflow-0.5.0/dw/loudness.py +82 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/media_frames.py +37 -10
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/media_info.py +53 -12
- diffusers_workflow-0.5.0/dw/null_media.py +99 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/pipeline_processors/chain.py +55 -3
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/pipeline_processors/config_objects.py +50 -2
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/pipeline_processors/pipeline.py +97 -26
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/plan.py +92 -25
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/previous_results.py +23 -3
- diffusers_workflow-0.5.0/dw/probe_paths.py +59 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/realize.py +12 -6
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/reference_limits.py +10 -5
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/repl_commands.py +2 -12
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/result.py +213 -24
- diffusers_workflow-0.5.0/dw/result_fps.py +82 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/runs.py +354 -5
- diffusers_workflow-0.5.0/dw/scalar_result_validation.py +139 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/security.py +164 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/serve.py +9 -1
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/app.py +594 -101
- diffusers_workflow-0.5.0/dw/server/assess.py +135 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/exports.py +12 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/guides.py +60 -7
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/jobs.py +51 -8
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/observed_cost.py +29 -1
- diffusers_workflow-0.4.0b7/dw/server/ui/assets/cssMode-xQCqMuag.js → diffusers_workflow-0.5.0/dw/server/ui/assets/cssMode-DRY1oIAQ.js +1 -1
- diffusers_workflow-0.4.0b7/dw/server/ui/assets/editor.api-Bfiq9hmW.js → diffusers_workflow-0.5.0/dw/server/ui/assets/editor.api-C_Q9knYh.js +1 -1
- diffusers_workflow-0.4.0b7/dw/server/ui/assets/freemarker2-BwDnlSuz.js → diffusers_workflow-0.5.0/dw/server/ui/assets/freemarker2-CoeF3Y-p.js +1 -1
- diffusers_workflow-0.4.0b7/dw/server/ui/assets/handlebars-Beb1we4G.js → diffusers_workflow-0.5.0/dw/server/ui/assets/handlebars-ClJeebFA.js +1 -1
- diffusers_workflow-0.4.0b7/dw/server/ui/assets/html-Yw-qdTCH.js → diffusers_workflow-0.5.0/dw/server/ui/assets/html-Bp7ECOGB.js +1 -1
- diffusers_workflow-0.4.0b7/dw/server/ui/assets/htmlMode-Dbp7eBPO.js → diffusers_workflow-0.5.0/dw/server/ui/assets/htmlMode-DWzbYXCs.js +1 -1
- diffusers_workflow-0.4.0b7/dw/server/ui/assets/index-CsXMC8a8.css → diffusers_workflow-0.5.0/dw/server/ui/assets/index-3Vw6WAPW.css +1 -1
- diffusers_workflow-0.5.0/dw/server/ui/assets/index-Bv4OgazC.js +43 -0
- diffusers_workflow-0.4.0b7/dw/server/ui/assets/javascript-BNzP7yQZ.js → diffusers_workflow-0.5.0/dw/server/ui/assets/javascript-B6Cbtyg8.js +1 -1
- diffusers_workflow-0.4.0b7/dw/server/ui/assets/jsonMode-DxIEESAg.js → diffusers_workflow-0.5.0/dw/server/ui/assets/jsonMode-dg5n9059.js +1 -1
- diffusers_workflow-0.4.0b7/dw/server/ui/assets/liquid-CeQTai1N.js → diffusers_workflow-0.5.0/dw/server/ui/assets/liquid-CAyPEpMs.js +1 -1
- diffusers_workflow-0.4.0b7/dw/server/ui/assets/lspLanguageFeatures-DKVB_UCB.js → diffusers_workflow-0.5.0/dw/server/ui/assets/lspLanguageFeatures-BGj-zQOH.js +1 -1
- diffusers_workflow-0.4.0b7/dw/server/ui/assets/mdx-Bczl_PHr.js → diffusers_workflow-0.5.0/dw/server/ui/assets/mdx-B5EuIkzP.js +1 -1
- diffusers_workflow-0.4.0b7/dw/server/ui/assets/monaco-Bu2OB6wI.js → diffusers_workflow-0.5.0/dw/server/ui/assets/monaco-ULLHC90E.js +4 -4
- diffusers_workflow-0.4.0b7/dw/server/ui/assets/python-CeTsj82v.js → diffusers_workflow-0.5.0/dw/server/ui/assets/python-C5D4i8ni.js +1 -1
- diffusers_workflow-0.4.0b7/dw/server/ui/assets/razor-CN7JaWqc.js → diffusers_workflow-0.5.0/dw/server/ui/assets/razor-DL9EVLH-.js +1 -1
- diffusers_workflow-0.4.0b7/dw/server/ui/assets/tsMode-CoSEMx-L.js → diffusers_workflow-0.5.0/dw/server/ui/assets/tsMode-BtDRLqfW.js +1 -1
- diffusers_workflow-0.4.0b7/dw/server/ui/assets/typescript-CcsolRTO.js → diffusers_workflow-0.5.0/dw/server/ui/assets/typescript-DYpkXm7y.js +1 -1
- diffusers_workflow-0.4.0b7/dw/server/ui/assets/workers-DLaycdy4.js → diffusers_workflow-0.5.0/dw/server/ui/assets/workers-B4R84wCs.js +1 -1
- diffusers_workflow-0.4.0b7/dw/server/ui/assets/xml-QEwuyn1w.js → diffusers_workflow-0.5.0/dw/server/ui/assets/xml-CQNiPADm.js +1 -1
- diffusers_workflow-0.4.0b7/dw/server/ui/assets/yaml-BB4U5D-R.js → diffusers_workflow-0.5.0/dw/server/ui/assets/yaml-iWBPUkB-.js +1 -1
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/index.html +2 -2
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/settings.py +9 -0
- diffusers_workflow-0.5.0/dw/shot_span_preflight.py +116 -0
- diffusers_workflow-0.5.0/dw/shots.py +392 -0
- diffusers_workflow-0.5.0/dw/slice_preflight.py +148 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/step_cache.py +98 -12
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/task_domains.py +56 -9
- diffusers_workflow-0.5.0/dw/tasks/assess.py +910 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/audio_transcription.py +46 -3
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/audio_utils.py +523 -29
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/concat_videos.py +100 -19
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/dissolve_videos.py +160 -22
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/gather.py +7 -3
- diffusers_workflow-0.5.0/dw/tasks/grade.py +97 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/image_utils.py +38 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/interpolate_frames.py +9 -1
- diffusers_workflow-0.5.0/dw/tasks/pair_audio.py +304 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/segment.py +15 -4
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/stabilize.py +9 -1
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/task.py +154 -3
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/video_utils.py +100 -22
- diffusers_workflow-0.5.0/dw/tasks/voice_attribution.py +781 -0
- diffusers_workflow-0.5.0/dw/type_helpers.py +231 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/variables.py +46 -4
- diffusers_workflow-0.5.0/dw/video_extensions.py +141 -0
- diffusers_workflow-0.5.0/dw/video_size_errors.py +107 -0
- diffusers_workflow-0.5.0/dw/vram_estimate.py +326 -0
- diffusers_workflow-0.5.0/dw/vram_inheritance.py +195 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/worker.py +47 -14
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/workflow.py +363 -28
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/workflow_schema.json +13 -9
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/workflow_sources.py +86 -10
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/workflows/test.json +1 -1
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/workspace.py +5 -1
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw_mcp/assets.py +117 -15
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw_mcp/authoring.py +30 -38
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw_mcp/catalog.py +88 -14
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw_mcp/client.py +38 -3
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw_mcp/diagnose.py +24 -11
- diffusers_workflow-0.5.0/dw_mcp/exports.py +84 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw_mcp/guides.py +3 -1
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw_mcp/media.py +66 -6
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw_mcp/prompts.py +2 -1
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw_mcp/server.py +284 -272
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw_mcp/workspaces.py +10 -5
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/pyproject.toml +14 -1
- diffusers_workflow-0.5.0/tests/test_argument_updates.py +64 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_arguments.py +147 -43
- diffusers_workflow-0.5.0/tests/test_assemble_and_score_target_lufs.py +117 -0
- diffusers_workflow-0.5.0/tests/test_assess.py +926 -0
- diffusers_workflow-0.5.0/tests/test_assessment_rules.py +291 -0
- diffusers_workflow-0.5.0/tests/test_attention_slicing.py +31 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_audio_utils.py +415 -1
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_best_of_n_template.py +0 -10
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_borders.py +0 -6
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_catalog_structure.py +11 -2
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_chain.py +25 -0
- diffusers_workflow-0.5.0/tests/test_component_name_errors.py +141 -0
- diffusers_workflow-0.5.0/tests/test_component_type_errors.py +335 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_concat_videos.py +155 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_config_objects.py +130 -1
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_device_helpers.py +56 -6
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_dialogue_short_voices.py +0 -10
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_diffusion_upscale.py +1 -11
- diffusers_workflow-0.5.0/tests/test_dissolve_frame_errors.py +146 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_dissolve_videos.py +105 -0
- diffusers_workflow-0.5.0/tests/test_download_watch.py +265 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_elision.py +66 -31
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_events.py +142 -18
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_gather.py +20 -80
- diffusers_workflow-0.5.0/tests/test_grade.py +265 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_h3_schedule.py +35 -7
- diffusers_workflow-0.5.0/tests/test_h3_vram_ceiling.py +250 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_host_memory.py +13 -1
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_host_memory_projection.py +47 -10
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_hub_cache.py +133 -1
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_image_utils.py +0 -8
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_integration.py +55 -7
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_introspection.py +39 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_list_images.py +0 -17
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_locations.py +25 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_lora_alpha.py +4 -4
- diffusers_workflow-0.5.0/tests/test_lora_disable.py +174 -0
- diffusers_workflow-0.5.0/tests/test_ltx2_extend_clip.py +35 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_mcp_assets.py +259 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_mcp_authoring.py +61 -19
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_mcp_catalog.py +131 -14
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_mcp_client.py +16 -14
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_mcp_diagnose.py +50 -59
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_mcp_exports.py +55 -16
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_mcp_guides.py +0 -16
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_mcp_media.py +96 -46
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_mcp_models.py +0 -58
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_mcp_prompts.py +2 -135
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_mcp_server.py +124 -42
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_mcp_workspaces.py +47 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_media_frames.py +37 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_media_info.py +55 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_model_cache.py +5 -37
- diffusers_workflow-0.5.0/tests/test_modular_output_properties.py +182 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_modular_progress.py +18 -2
- diffusers_workflow-0.5.0/tests/test_mps_fallback_warning.py +28 -0
- diffusers_workflow-0.5.0/tests/test_mps_rope_precision.py +64 -0
- diffusers_workflow-0.5.0/tests/test_null_media.py +107 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_observed_cost.py +63 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_output_references.py +0 -4
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_pair_audio_fit.py +78 -8
- diffusers_workflow-0.5.0/tests/test_parallel_loading_default.py +51 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_pipeline_caching.py +134 -28
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_pipeline_components.py +0 -4
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_plan.py +149 -6
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_plugin_skills.py +85 -8
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_previous_results.py +22 -13
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_prompt_references.py +13 -1
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_prompts.py +10 -41
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_realize.py +15 -12
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_recenter_crop.py +7 -1
- diffusers_workflow-0.5.0/tests/test_repl_commands.py +56 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_resize_bucket.py +1 -10
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_result.py +300 -56
- diffusers_workflow-0.5.0/tests/test_result_fps.py +189 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_runs.py +298 -0
- diffusers_workflow-0.5.0/tests/test_scalar_result_validation.py +378 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_schema.py +0 -8
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_security.py +6 -27
- diffusers_workflow-0.5.0/tests/test_security_auth.py +451 -0
- diffusers_workflow-0.5.0/tests/test_security_decoder_bombs.py +209 -0
- diffusers_workflow-0.5.0/tests/test_security_input_caps.py +241 -0
- diffusers_workflow-0.5.0/tests/test_security_ssrf.py +771 -0
- diffusers_workflow-0.5.0/tests/test_security_symlinks.py +696 -0
- diffusers_workflow-0.5.0/tests/test_security_trust_gate.py +976 -0
- diffusers_workflow-0.5.0/tests/test_security_web_headers.py +307 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_segment.py +87 -1
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_select.py +0 -5
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_serve_main.py +7 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_server.py +437 -89
- diffusers_workflow-0.5.0/tests/test_server_assess.py +282 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_server_exports.py +73 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_server_guides.py +61 -1
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_server_info.py +63 -14
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_server_jobs.py +36 -2
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_server_workspaces.py +95 -36
- diffusers_workflow-0.5.0/tests/test_shot_span_preflight.py +124 -0
- diffusers_workflow-0.5.0/tests/test_shots.py +1208 -0
- diffusers_workflow-0.5.0/tests/test_slice_preflight.py +148 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_speech_generation.py +0 -17
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_step_cache.py +117 -12
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_strip_exif_and_watermark.py +38 -12
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_task.py +16 -24
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_task_domains.py +30 -2
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_task_signature_errors.py +76 -4
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_teacache.py +0 -10
- diffusers_workflow-0.5.0/tests/test_template_defaults.py +59 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_tensor_image.py +0 -11
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_text_generation.py +0 -9
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_text_sections.py +7 -1
- diffusers_workflow-0.5.0/tests/test_transcribe_audio.py +219 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_type_helpers.py +2 -10
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_validate_arguments.py +126 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_variable_constraints.py +32 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_variables.py +50 -1
- diffusers_workflow-0.5.0/tests/test_video_extensions.py +107 -0
- diffusers_workflow-0.5.0/tests/test_video_size_errors.py +136 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_video_utils.py +329 -1
- diffusers_workflow-0.5.0/tests/test_voice_attribution.py +784 -0
- diffusers_workflow-0.5.0/tests/test_vram_estimate.py +344 -0
- diffusers_workflow-0.5.0/tests/test_vram_inheritance.py +427 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_worker.py +6 -68
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_worker_execute.py +74 -1
- diffusers_workflow-0.5.0/tests/test_worker_job_peak_rss.py +56 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_workflow.py +114 -25
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_workflow_sources.py +67 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_workflow_step_cache.py +4 -2
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_workflow_trust.py +152 -2
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_workspace.py +0 -5
- diffusers_workflow-0.4.0b7/dw/docs/RELEASING.md +0 -81
- diffusers_workflow-0.4.0b7/dw/scalar_result_validation.py +0 -78
- diffusers_workflow-0.4.0b7/dw/server/ui/assets/index-DqbiZNFq.js +0 -43
- diffusers_workflow-0.4.0b7/dw/tasks/pair_audio.py +0 -189
- diffusers_workflow-0.4.0b7/dw/type_helpers.py +0 -80
- diffusers_workflow-0.4.0b7/dw/vram_estimate.py +0 -116
- diffusers_workflow-0.4.0b7/dw_mcp/exports.py +0 -43
- diffusers_workflow-0.4.0b7/tests/test_argument_updates.py +0 -250
- diffusers_workflow-0.4.0b7/tests/test_repl_commands.py +0 -60
- diffusers_workflow-0.4.0b7/tests/test_repl_hierarchical.py +0 -119
- diffusers_workflow-0.4.0b7/tests/test_repl_reorganization.py +0 -144
- diffusers_workflow-0.4.0b7/tests/test_scalar_result_validation.py +0 -103
- diffusers_workflow-0.4.0b7/tests/test_transcribe_audio.py +0 -104
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/LICENSE +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/MANIFEST.in +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/diffusers_workflow.egg-info/dependency_links.txt +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/diffusers_workflow.egg-info/entry_points.txt +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/diffusers_workflow.egg-info/top_level.txt +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/assets.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/cache_blocks.json +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/community_pipelines/pipeline_flux_rf_inversion.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/docs/IP_ADAPTER.md +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/docs/LORAS.md +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/docs/PROMPT_WEIGHTING.md +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/docs/QUANTIZATION.md +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/docs/REPL_COMMANDS.md +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/docs/REPL_WORKER_GUIDE.md +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/docs/SECURITY_QUICKREF.md +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/docs/WORKSPACES.md +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/elision.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/for_each.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/host_memory.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/kernel_availability.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/log_setup.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/media_audio.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/pipeline_processors/remote.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/prompt_schema.json +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/prompt_weighting.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/prompts.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/reference_names.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/repl.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/repl_worker.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/run.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/schema.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/select_validation.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/__init__.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/catalog_shape.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/enhancers.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/mcp_mount.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/netinfo.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/sysinfo.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/abap-08VXUWAP.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/apex-BWPQTe0t.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/azcli-Bc_sGQ0U.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/bat-i0X4ZdIN.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/bicep-B5-_aFwp.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/cameligo-DMUM7wLl.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/clojure-Cm7r79vr.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/codicon-Brq4_Ui5.ttf +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/coffee-Ba7i2nA0.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/cpp-C7h46wYY.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/csharp-BKxtCVv1.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/csp-bTuwJoIa.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/css-DIMkf-bt.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/css.worker-B3ciXF_0.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/cypher-CVaqCwHa.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/dart-onAF5SnQ.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/dockerfile-DZFCIeNp.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/ecl-D05T4iGw.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/editor-jjEx9u7D.css +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/editor.worker-q-txB4vs.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/elixir-6RTg0lbw.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/flow9-C5_-GSwl.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/fsharp-C8Ef5oNN.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/go-C-y9NEjX.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/graphql-fmXr3nnJ.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/hcl-CpzslTdj.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/html.worker-C93Ht9o9.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/ini-sBoK_t0W.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/java-BEtHBSE6.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/json.worker-B2V3pomh.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/julia-Bri6UV-V.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/kotlin-BOotOW0E.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/less-B9JPFI3C.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/lexon-CfSJPG6W.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/lua-CsQS60Ue.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/m3-D-oSqn_W.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/markdown-Cimd5fb3.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/mips-CIPQ_RoX.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/monaco--ixms01u.css +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/msdax-DauUninz.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/mysql-SOo6toE5.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/objective-c-FvmIjYaQ.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/pascal-DrH0SRf2.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/pascaligo-D-ptJ9y-.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/perl-oz_6vUea.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/pgsql-DTj74zXo.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/php-nr791fC2.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/pla-CopQ2nXW.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/postiats-43DmfD33.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/powerquery-D3hlyOfw.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/powershell-DmHpPYUd.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/protobuf-C531GsRP.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/pug-Z5eAx3Zn.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/qsharp-DkqhCAOL.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/r-BwWrilGY.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/redis-ClamHrr6.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/redshift-DT7zqm-g.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/restructuredtext-BYgofb2h.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/ruby-DezsRK8O.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/rust-DdL9SqIa.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/sb-CcwsVR0C.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/scala-DHpiXF5c.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/scheme-BeGwcela.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/scss-gp-XZpBa.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/shell-CC2rA5mh.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/solidity-BEEn4gHE.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/sophia-CRfGWb83.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/sparql-D_Lu-MrJ.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/sql-NEE52Syq.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/st-DbInun42.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/swift-Bxkupp3x.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/systemverilog-Bz4Y3fRF.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/tcl-DISqw1ZD.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/ts.worker-D7T1-Ig5.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/twig-De2hgUGE.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/typespec-B8J7ngcE.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/vb-DV3o63ZY.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/ui/assets/wgsl-DpFanUEy.js +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/server/updater.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/step.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/subfolders.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/background_remover.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/borders.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/compose_text.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/depth_estimator.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/diffusion_upscale.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/format_messages.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/image_to_text.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/judge.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/model_cache.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/qr_code.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/restore_faces.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/rife_model.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/select.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/speech_generation.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/tensor_image.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/text_generation.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/text_sections.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/upscale.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/tasks/zoe_depth.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/teacache.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/teacache_models.json +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/test.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/validate.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/variable_constraints.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw/workflows/h3_context_ir.json +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw_mcp/__init__.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw_mcp/__main__.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/dw_mcp/models.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/setup.cfg +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_assets.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_cache_blocks.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_catalog_shape.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_cli.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_component_pruning.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_compose_text.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_configuration_schema.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_content_types.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_depth_estimator.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_device.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_device_portability.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_docs_links.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_examples.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_for_each.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_h3_adapters.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_h3_context_ir.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_hf_placement.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_image_to_text.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_interpolate_frames.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_job_history_wal.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_job_progress.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_job_warnings.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_jobs_listing.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_jobs_reused.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_judge.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_kernel_availability.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_library_sources.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_ltx2_diffusion_decode.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_ltx2_ic_loras.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_ltx_prompt_library.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_mcp_main.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_media_audio.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_mix_audio.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_modular_pipeline.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_offload_placement.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_pair_audio.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_phase_events.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_prompt_library.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_prompt_parser.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_prompt_weighting.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_reference_limits.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_reference_names.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_repl_ergonomics.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_repl_worker.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_rerun_new_seed.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_result_output_naming.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_scheduler_config.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_select_validation.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_server_downloads.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_server_mcp.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_stabilize.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_step.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_subfolders.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_task_discovery.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_template_subfolders.py +0 -0
- {diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/tests/test_updater.py +0 -0
{diffusers_workflow-0.4.0b7/diffusers_workflow.egg-info → diffusers_workflow-0.5.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.5.0
|
|
4
4
|
Summary: Declarative workflow engine and web UI for Hugging Face Diffusers
|
|
5
5
|
Author: dkackman
|
|
6
6
|
License: Apache-2.0
|
|
@@ -47,7 +47,10 @@ Requires-Dist: imageio-ffmpeg>=0.6.0
|
|
|
47
47
|
Requires-Dist: av>=18.1.0
|
|
48
48
|
Requires-Dist: soundfile>=0.14.0
|
|
49
49
|
Requires-Dist: matplotlib>=3.11.1
|
|
50
|
+
Requires-Dist: pyloudnorm>=0.2.0
|
|
51
|
+
Requires-Dist: scipy>=1.18.1
|
|
50
52
|
Requires-Dist: speechbrain>=1.0.3
|
|
53
|
+
Requires-Dist: demucs>=4.1.0
|
|
51
54
|
Requires-Dist: qrcode>=8.2
|
|
52
55
|
Requires-Dist: requests>=2.34.2
|
|
53
56
|
Requires-Dist: aiohttp>=3.14.3
|
|
@@ -109,8 +112,8 @@ source ./activate
|
|
|
109
112
|
.\venv\scripts\activate
|
|
110
113
|
```
|
|
111
114
|
|
|
112
|
-
`python -m dw.test`
|
|
113
|
-
accelerator was found.
|
|
115
|
+
`python -m dw.test` runs a small built-in workflow end to end - it downloads
|
|
116
|
+
SD 1.5 (a few GB) and generates one image on whichever accelerator was found.
|
|
114
117
|
|
|
115
118
|
**2. Start the engine.** Leave it running; everything else talks to it.
|
|
116
119
|
|
|
@@ -160,7 +163,7 @@ once; without it the run fails partway through with a 401/403 from the Hub.
|
|
|
160
163
|
|
|
161
164
|
## Drive it from an agent
|
|
162
165
|
|
|
163
|
-
Then just ask. The agent has
|
|
166
|
+
Then just ask. The agent has 59 tools covering the whole surface — the
|
|
164
167
|
workflow catalog, the real diffusers pipeline signatures, the job queue, the
|
|
165
168
|
gallery, the model cache:
|
|
166
169
|
|
|
@@ -199,6 +202,23 @@ and outputs — so two agents, or an agent and you in the browser, share the GPU
|
|
|
199
202
|
without saving over each other. An agent calls `use_workspace` once and the
|
|
200
203
|
rest of the session lands there.
|
|
201
204
|
|
|
205
|
+
**Feedback from a session.** At the end of a working session, ask the agent
|
|
206
|
+
what got in its way: bugs, gaps, misleading skill text, tools it reached for
|
|
207
|
+
and couldn't find. Have it file each one as an issue on
|
|
208
|
+
`dkackman/diffusers-workflow` with the `field-report` label, for example:
|
|
209
|
+
|
|
210
|
+
> File each bug or gap you hit as an issue on dkackman/diffusers-workflow
|
|
211
|
+
> with the label `field-report`.
|
|
212
|
+
|
|
213
|
+
The label marks a report as coming from real use, not from the automated test
|
|
214
|
+
loop. The agent loop (see [Agent Loop](docs/AGENT_LOOP.md)) picks the report up
|
|
215
|
+
like any other issue when you filed it yourself; a report filed under any
|
|
216
|
+
other GitHub login is parked for the maintainer to review first (relabelled
|
|
217
|
+
`owner:don` + `status:needs-approval`), since the loop must not act
|
|
218
|
+
unattended on third-party text in a public repo, and is only handed to the
|
|
219
|
+
loop, or not, after that review. The label is also what feature planning
|
|
220
|
+
reads as evidence of demand.
|
|
221
|
+
|
|
202
222
|
The complete tool reference, client configuration for other MCP hosts, and the
|
|
203
223
|
troubleshooting table: [MCP Server](docs/MCP.md). Workspaces in depth:
|
|
204
224
|
[Workspaces](docs/WORKSPACES.md).
|
|
@@ -32,8 +32,8 @@ source ./activate
|
|
|
32
32
|
.\venv\scripts\activate
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
`python -m dw.test`
|
|
36
|
-
accelerator was found.
|
|
35
|
+
`python -m dw.test` runs a small built-in workflow end to end - it downloads
|
|
36
|
+
SD 1.5 (a few GB) and generates one image on whichever accelerator was found.
|
|
37
37
|
|
|
38
38
|
**2. Start the engine.** Leave it running; everything else talks to it.
|
|
39
39
|
|
|
@@ -83,7 +83,7 @@ once; without it the run fails partway through with a 401/403 from the Hub.
|
|
|
83
83
|
|
|
84
84
|
## Drive it from an agent
|
|
85
85
|
|
|
86
|
-
Then just ask. The agent has
|
|
86
|
+
Then just ask. The agent has 59 tools covering the whole surface — the
|
|
87
87
|
workflow catalog, the real diffusers pipeline signatures, the job queue, the
|
|
88
88
|
gallery, the model cache:
|
|
89
89
|
|
|
@@ -122,6 +122,23 @@ and outputs — so two agents, or an agent and you in the browser, share the GPU
|
|
|
122
122
|
without saving over each other. An agent calls `use_workspace` once and the
|
|
123
123
|
rest of the session lands there.
|
|
124
124
|
|
|
125
|
+
**Feedback from a session.** At the end of a working session, ask the agent
|
|
126
|
+
what got in its way: bugs, gaps, misleading skill text, tools it reached for
|
|
127
|
+
and couldn't find. Have it file each one as an issue on
|
|
128
|
+
`dkackman/diffusers-workflow` with the `field-report` label, for example:
|
|
129
|
+
|
|
130
|
+
> File each bug or gap you hit as an issue on dkackman/diffusers-workflow
|
|
131
|
+
> with the label `field-report`.
|
|
132
|
+
|
|
133
|
+
The label marks a report as coming from real use, not from the automated test
|
|
134
|
+
loop. The agent loop (see [Agent Loop](docs/AGENT_LOOP.md)) picks the report up
|
|
135
|
+
like any other issue when you filed it yourself; a report filed under any
|
|
136
|
+
other GitHub login is parked for the maintainer to review first (relabelled
|
|
137
|
+
`owner:don` + `status:needs-approval`), since the loop must not act
|
|
138
|
+
unattended on third-party text in a public repo, and is only handed to the
|
|
139
|
+
loop, or not, after that review. The label is also what feature planning
|
|
140
|
+
reads as evidence of demand.
|
|
141
|
+
|
|
125
142
|
The complete tool reference, client configuration for other MCP hosts, and the
|
|
126
143
|
troubleshooting table: [MCP Server](docs/MCP.md). Workspaces in depth:
|
|
127
144
|
[Workspaces](docs/WORKSPACES.md).
|
{diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.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.5.0
|
|
4
4
|
Summary: Declarative workflow engine and web UI for Hugging Face Diffusers
|
|
5
5
|
Author: dkackman
|
|
6
6
|
License: Apache-2.0
|
|
@@ -47,7 +47,10 @@ Requires-Dist: imageio-ffmpeg>=0.6.0
|
|
|
47
47
|
Requires-Dist: av>=18.1.0
|
|
48
48
|
Requires-Dist: soundfile>=0.14.0
|
|
49
49
|
Requires-Dist: matplotlib>=3.11.1
|
|
50
|
+
Requires-Dist: pyloudnorm>=0.2.0
|
|
51
|
+
Requires-Dist: scipy>=1.18.1
|
|
50
52
|
Requires-Dist: speechbrain>=1.0.3
|
|
53
|
+
Requires-Dist: demucs>=4.1.0
|
|
51
54
|
Requires-Dist: qrcode>=8.2
|
|
52
55
|
Requires-Dist: requests>=2.34.2
|
|
53
56
|
Requires-Dist: aiohttp>=3.14.3
|
|
@@ -109,8 +112,8 @@ source ./activate
|
|
|
109
112
|
.\venv\scripts\activate
|
|
110
113
|
```
|
|
111
114
|
|
|
112
|
-
`python -m dw.test`
|
|
113
|
-
accelerator was found.
|
|
115
|
+
`python -m dw.test` runs a small built-in workflow end to end - it downloads
|
|
116
|
+
SD 1.5 (a few GB) and generates one image on whichever accelerator was found.
|
|
114
117
|
|
|
115
118
|
**2. Start the engine.** Leave it running; everything else talks to it.
|
|
116
119
|
|
|
@@ -160,7 +163,7 @@ once; without it the run fails partway through with a 401/403 from the Hub.
|
|
|
160
163
|
|
|
161
164
|
## Drive it from an agent
|
|
162
165
|
|
|
163
|
-
Then just ask. The agent has
|
|
166
|
+
Then just ask. The agent has 59 tools covering the whole surface — the
|
|
164
167
|
workflow catalog, the real diffusers pipeline signatures, the job queue, the
|
|
165
168
|
gallery, the model cache:
|
|
166
169
|
|
|
@@ -199,6 +202,23 @@ and outputs — so two agents, or an agent and you in the browser, share the GPU
|
|
|
199
202
|
without saving over each other. An agent calls `use_workspace` once and the
|
|
200
203
|
rest of the session lands there.
|
|
201
204
|
|
|
205
|
+
**Feedback from a session.** At the end of a working session, ask the agent
|
|
206
|
+
what got in its way: bugs, gaps, misleading skill text, tools it reached for
|
|
207
|
+
and couldn't find. Have it file each one as an issue on
|
|
208
|
+
`dkackman/diffusers-workflow` with the `field-report` label, for example:
|
|
209
|
+
|
|
210
|
+
> File each bug or gap you hit as an issue on dkackman/diffusers-workflow
|
|
211
|
+
> with the label `field-report`.
|
|
212
|
+
|
|
213
|
+
The label marks a report as coming from real use, not from the automated test
|
|
214
|
+
loop. The agent loop (see [Agent Loop](docs/AGENT_LOOP.md)) picks the report up
|
|
215
|
+
like any other issue when you filed it yourself; a report filed under any
|
|
216
|
+
other GitHub login is parked for the maintainer to review first (relabelled
|
|
217
|
+
`owner:don` + `status:needs-approval`), since the loop must not act
|
|
218
|
+
unattended on third-party text in a public repo, and is only handed to the
|
|
219
|
+
loop, or not, after that review. The label is also what feature planning
|
|
220
|
+
reads as evidence of demand.
|
|
221
|
+
|
|
202
222
|
The complete tool reference, client configuration for other MCP hosts, and the
|
|
203
223
|
troubleshooting table: [MCP Server](docs/MCP.md). Workspaces in depth:
|
|
204
224
|
[Workspaces](docs/WORKSPACES.md).
|
{diffusers_workflow-0.4.0b7 → diffusers_workflow-0.5.0}/diffusers_workflow.egg-info/SOURCES.txt
RENAMED
|
@@ -11,10 +11,13 @@ diffusers_workflow.egg-info/top_level.txt
|
|
|
11
11
|
dw/__init__.py
|
|
12
12
|
dw/adapter_compatibility.py
|
|
13
13
|
dw/arguments.py
|
|
14
|
+
dw/assessment_rules.py
|
|
14
15
|
dw/assets.py
|
|
15
16
|
dw/cache_blocks.json
|
|
16
17
|
dw/cache_blocks.py
|
|
17
18
|
dw/content_types.py
|
|
19
|
+
dw/dissolve_frame_errors.py
|
|
20
|
+
dw/download_watch.py
|
|
18
21
|
dw/elision.py
|
|
19
22
|
dw/events.py
|
|
20
23
|
dw/for_each.py
|
|
@@ -25,11 +28,14 @@ dw/introspection.py
|
|
|
25
28
|
dw/kernel_availability.py
|
|
26
29
|
dw/locations.py
|
|
27
30
|
dw/log_setup.py
|
|
31
|
+
dw/loudness.py
|
|
28
32
|
dw/media_audio.py
|
|
29
33
|
dw/media_frames.py
|
|
30
34
|
dw/media_info.py
|
|
35
|
+
dw/null_media.py
|
|
31
36
|
dw/plan.py
|
|
32
37
|
dw/previous_results.py
|
|
38
|
+
dw/probe_paths.py
|
|
33
39
|
dw/prompt_schema.json
|
|
34
40
|
dw/prompt_weighting.py
|
|
35
41
|
dw/prompts.py
|
|
@@ -40,6 +46,7 @@ dw/repl.py
|
|
|
40
46
|
dw/repl_commands.py
|
|
41
47
|
dw/repl_worker.py
|
|
42
48
|
dw/result.py
|
|
49
|
+
dw/result_fps.py
|
|
43
50
|
dw/run.py
|
|
44
51
|
dw/runs.py
|
|
45
52
|
dw/scalar_result_validation.py
|
|
@@ -48,6 +55,9 @@ dw/security.py
|
|
|
48
55
|
dw/select_validation.py
|
|
49
56
|
dw/serve.py
|
|
50
57
|
dw/settings.py
|
|
58
|
+
dw/shot_span_preflight.py
|
|
59
|
+
dw/shots.py
|
|
60
|
+
dw/slice_preflight.py
|
|
51
61
|
dw/step.py
|
|
52
62
|
dw/step_cache.py
|
|
53
63
|
dw/subfolders.py
|
|
@@ -59,7 +69,10 @@ dw/type_helpers.py
|
|
|
59
69
|
dw/validate.py
|
|
60
70
|
dw/variable_constraints.py
|
|
61
71
|
dw/variables.py
|
|
72
|
+
dw/video_extensions.py
|
|
73
|
+
dw/video_size_errors.py
|
|
62
74
|
dw/vram_estimate.py
|
|
75
|
+
dw/vram_inheritance.py
|
|
63
76
|
dw/worker.py
|
|
64
77
|
dw/workflow.py
|
|
65
78
|
dw/workflow_schema.json
|
|
@@ -92,6 +105,7 @@ dw/pipeline_processors/pipeline.py
|
|
|
92
105
|
dw/pipeline_processors/remote.py
|
|
93
106
|
dw/server/__init__.py
|
|
94
107
|
dw/server/app.py
|
|
108
|
+
dw/server/assess.py
|
|
95
109
|
dw/server/catalog_shape.py
|
|
96
110
|
dw/server/enhancers.py
|
|
97
111
|
dw/server/exports.py
|
|
@@ -117,45 +131,45 @@ dw/server/ui/assets/csharp-BKxtCVv1.js
|
|
|
117
131
|
dw/server/ui/assets/csp-bTuwJoIa.js
|
|
118
132
|
dw/server/ui/assets/css-DIMkf-bt.js
|
|
119
133
|
dw/server/ui/assets/css.worker-B3ciXF_0.js
|
|
120
|
-
dw/server/ui/assets/cssMode-
|
|
134
|
+
dw/server/ui/assets/cssMode-DRY1oIAQ.js
|
|
121
135
|
dw/server/ui/assets/cypher-CVaqCwHa.js
|
|
122
136
|
dw/server/ui/assets/dart-onAF5SnQ.js
|
|
123
137
|
dw/server/ui/assets/dockerfile-DZFCIeNp.js
|
|
124
138
|
dw/server/ui/assets/ecl-D05T4iGw.js
|
|
125
139
|
dw/server/ui/assets/editor-jjEx9u7D.css
|
|
126
|
-
dw/server/ui/assets/editor.api-
|
|
140
|
+
dw/server/ui/assets/editor.api-C_Q9knYh.js
|
|
127
141
|
dw/server/ui/assets/editor.worker-q-txB4vs.js
|
|
128
142
|
dw/server/ui/assets/elixir-6RTg0lbw.js
|
|
129
143
|
dw/server/ui/assets/flow9-C5_-GSwl.js
|
|
130
|
-
dw/server/ui/assets/freemarker2-
|
|
144
|
+
dw/server/ui/assets/freemarker2-CoeF3Y-p.js
|
|
131
145
|
dw/server/ui/assets/fsharp-C8Ef5oNN.js
|
|
132
146
|
dw/server/ui/assets/go-C-y9NEjX.js
|
|
133
147
|
dw/server/ui/assets/graphql-fmXr3nnJ.js
|
|
134
|
-
dw/server/ui/assets/handlebars-
|
|
148
|
+
dw/server/ui/assets/handlebars-ClJeebFA.js
|
|
135
149
|
dw/server/ui/assets/hcl-CpzslTdj.js
|
|
136
|
-
dw/server/ui/assets/html-
|
|
150
|
+
dw/server/ui/assets/html-Bp7ECOGB.js
|
|
137
151
|
dw/server/ui/assets/html.worker-C93Ht9o9.js
|
|
138
|
-
dw/server/ui/assets/htmlMode-
|
|
139
|
-
dw/server/ui/assets/index-
|
|
140
|
-
dw/server/ui/assets/index-
|
|
152
|
+
dw/server/ui/assets/htmlMode-DWzbYXCs.js
|
|
153
|
+
dw/server/ui/assets/index-3Vw6WAPW.css
|
|
154
|
+
dw/server/ui/assets/index-Bv4OgazC.js
|
|
141
155
|
dw/server/ui/assets/ini-sBoK_t0W.js
|
|
142
156
|
dw/server/ui/assets/java-BEtHBSE6.js
|
|
143
|
-
dw/server/ui/assets/javascript-
|
|
157
|
+
dw/server/ui/assets/javascript-B6Cbtyg8.js
|
|
144
158
|
dw/server/ui/assets/json.worker-B2V3pomh.js
|
|
145
|
-
dw/server/ui/assets/jsonMode-
|
|
159
|
+
dw/server/ui/assets/jsonMode-dg5n9059.js
|
|
146
160
|
dw/server/ui/assets/julia-Bri6UV-V.js
|
|
147
161
|
dw/server/ui/assets/kotlin-BOotOW0E.js
|
|
148
162
|
dw/server/ui/assets/less-B9JPFI3C.js
|
|
149
163
|
dw/server/ui/assets/lexon-CfSJPG6W.js
|
|
150
|
-
dw/server/ui/assets/liquid-
|
|
151
|
-
dw/server/ui/assets/lspLanguageFeatures-
|
|
164
|
+
dw/server/ui/assets/liquid-CAyPEpMs.js
|
|
165
|
+
dw/server/ui/assets/lspLanguageFeatures-BGj-zQOH.js
|
|
152
166
|
dw/server/ui/assets/lua-CsQS60Ue.js
|
|
153
167
|
dw/server/ui/assets/m3-D-oSqn_W.js
|
|
154
168
|
dw/server/ui/assets/markdown-Cimd5fb3.js
|
|
155
|
-
dw/server/ui/assets/mdx-
|
|
169
|
+
dw/server/ui/assets/mdx-B5EuIkzP.js
|
|
156
170
|
dw/server/ui/assets/mips-CIPQ_RoX.js
|
|
157
171
|
dw/server/ui/assets/monaco--ixms01u.css
|
|
158
|
-
dw/server/ui/assets/monaco-
|
|
172
|
+
dw/server/ui/assets/monaco-ULLHC90E.js
|
|
159
173
|
dw/server/ui/assets/msdax-DauUninz.js
|
|
160
174
|
dw/server/ui/assets/mysql-SOo6toE5.js
|
|
161
175
|
dw/server/ui/assets/objective-c-FvmIjYaQ.js
|
|
@@ -170,10 +184,10 @@ dw/server/ui/assets/powerquery-D3hlyOfw.js
|
|
|
170
184
|
dw/server/ui/assets/powershell-DmHpPYUd.js
|
|
171
185
|
dw/server/ui/assets/protobuf-C531GsRP.js
|
|
172
186
|
dw/server/ui/assets/pug-Z5eAx3Zn.js
|
|
173
|
-
dw/server/ui/assets/python-
|
|
187
|
+
dw/server/ui/assets/python-C5D4i8ni.js
|
|
174
188
|
dw/server/ui/assets/qsharp-DkqhCAOL.js
|
|
175
189
|
dw/server/ui/assets/r-BwWrilGY.js
|
|
176
|
-
dw/server/ui/assets/razor-
|
|
190
|
+
dw/server/ui/assets/razor-DL9EVLH-.js
|
|
177
191
|
dw/server/ui/assets/redis-ClamHrr6.js
|
|
178
192
|
dw/server/ui/assets/redshift-DT7zqm-g.js
|
|
179
193
|
dw/server/ui/assets/restructuredtext-BYgofb2h.js
|
|
@@ -193,15 +207,16 @@ dw/server/ui/assets/swift-Bxkupp3x.js
|
|
|
193
207
|
dw/server/ui/assets/systemverilog-Bz4Y3fRF.js
|
|
194
208
|
dw/server/ui/assets/tcl-DISqw1ZD.js
|
|
195
209
|
dw/server/ui/assets/ts.worker-D7T1-Ig5.js
|
|
196
|
-
dw/server/ui/assets/tsMode-
|
|
210
|
+
dw/server/ui/assets/tsMode-BtDRLqfW.js
|
|
197
211
|
dw/server/ui/assets/twig-De2hgUGE.js
|
|
198
|
-
dw/server/ui/assets/typescript-
|
|
212
|
+
dw/server/ui/assets/typescript-DYpkXm7y.js
|
|
199
213
|
dw/server/ui/assets/typespec-B8J7ngcE.js
|
|
200
214
|
dw/server/ui/assets/vb-DV3o63ZY.js
|
|
201
215
|
dw/server/ui/assets/wgsl-DpFanUEy.js
|
|
202
|
-
dw/server/ui/assets/workers-
|
|
203
|
-
dw/server/ui/assets/xml-
|
|
204
|
-
dw/server/ui/assets/yaml-
|
|
216
|
+
dw/server/ui/assets/workers-B4R84wCs.js
|
|
217
|
+
dw/server/ui/assets/xml-CQNiPADm.js
|
|
218
|
+
dw/server/ui/assets/yaml-iWBPUkB-.js
|
|
219
|
+
dw/tasks/assess.py
|
|
205
220
|
dw/tasks/audio_transcription.py
|
|
206
221
|
dw/tasks/audio_utils.py
|
|
207
222
|
dw/tasks/background_remover.py
|
|
@@ -213,6 +228,7 @@ dw/tasks/diffusion_upscale.py
|
|
|
213
228
|
dw/tasks/dissolve_videos.py
|
|
214
229
|
dw/tasks/format_messages.py
|
|
215
230
|
dw/tasks/gather.py
|
|
231
|
+
dw/tasks/grade.py
|
|
216
232
|
dw/tasks/image_to_text.py
|
|
217
233
|
dw/tasks/image_utils.py
|
|
218
234
|
dw/tasks/interpolate_frames.py
|
|
@@ -232,6 +248,7 @@ dw/tasks/text_generation.py
|
|
|
232
248
|
dw/tasks/text_sections.py
|
|
233
249
|
dw/tasks/upscale.py
|
|
234
250
|
dw/tasks/video_utils.py
|
|
251
|
+
dw/tasks/voice_attribution.py
|
|
235
252
|
dw/tasks/zoe_depth.py
|
|
236
253
|
dw/workflows/h3_context_ir.json
|
|
237
254
|
dw/workflows/test.json
|
|
@@ -251,7 +268,11 @@ dw_mcp/server.py
|
|
|
251
268
|
dw_mcp/workspaces.py
|
|
252
269
|
tests/test_argument_updates.py
|
|
253
270
|
tests/test_arguments.py
|
|
271
|
+
tests/test_assemble_and_score_target_lufs.py
|
|
272
|
+
tests/test_assess.py
|
|
273
|
+
tests/test_assessment_rules.py
|
|
254
274
|
tests/test_assets.py
|
|
275
|
+
tests/test_attention_slicing.py
|
|
255
276
|
tests/test_audio_utils.py
|
|
256
277
|
tests/test_best_of_n_template.py
|
|
257
278
|
tests/test_borders.py
|
|
@@ -260,7 +281,9 @@ tests/test_catalog_shape.py
|
|
|
260
281
|
tests/test_catalog_structure.py
|
|
261
282
|
tests/test_chain.py
|
|
262
283
|
tests/test_cli.py
|
|
284
|
+
tests/test_component_name_errors.py
|
|
263
285
|
tests/test_component_pruning.py
|
|
286
|
+
tests/test_component_type_errors.py
|
|
264
287
|
tests/test_compose_text.py
|
|
265
288
|
tests/test_concat_videos.py
|
|
266
289
|
tests/test_config_objects.py
|
|
@@ -272,16 +295,20 @@ tests/test_device_helpers.py
|
|
|
272
295
|
tests/test_device_portability.py
|
|
273
296
|
tests/test_dialogue_short_voices.py
|
|
274
297
|
tests/test_diffusion_upscale.py
|
|
298
|
+
tests/test_dissolve_frame_errors.py
|
|
275
299
|
tests/test_dissolve_videos.py
|
|
276
300
|
tests/test_docs_links.py
|
|
301
|
+
tests/test_download_watch.py
|
|
277
302
|
tests/test_elision.py
|
|
278
303
|
tests/test_events.py
|
|
279
304
|
tests/test_examples.py
|
|
280
305
|
tests/test_for_each.py
|
|
281
306
|
tests/test_gather.py
|
|
307
|
+
tests/test_grade.py
|
|
282
308
|
tests/test_h3_adapters.py
|
|
283
309
|
tests/test_h3_context_ir.py
|
|
284
310
|
tests/test_h3_schedule.py
|
|
311
|
+
tests/test_h3_vram_ceiling.py
|
|
285
312
|
tests/test_hf_placement.py
|
|
286
313
|
tests/test_host_memory.py
|
|
287
314
|
tests/test_host_memory_projection.py
|
|
@@ -302,7 +329,9 @@ tests/test_library_sources.py
|
|
|
302
329
|
tests/test_list_images.py
|
|
303
330
|
tests/test_locations.py
|
|
304
331
|
tests/test_lora_alpha.py
|
|
332
|
+
tests/test_lora_disable.py
|
|
305
333
|
tests/test_ltx2_diffusion_decode.py
|
|
334
|
+
tests/test_ltx2_extend_clip.py
|
|
306
335
|
tests/test_ltx2_ic_loras.py
|
|
307
336
|
tests/test_ltx_prompt_library.py
|
|
308
337
|
tests/test_mcp_assets.py
|
|
@@ -323,13 +352,18 @@ tests/test_media_frames.py
|
|
|
323
352
|
tests/test_media_info.py
|
|
324
353
|
tests/test_mix_audio.py
|
|
325
354
|
tests/test_model_cache.py
|
|
355
|
+
tests/test_modular_output_properties.py
|
|
326
356
|
tests/test_modular_pipeline.py
|
|
327
357
|
tests/test_modular_progress.py
|
|
358
|
+
tests/test_mps_fallback_warning.py
|
|
359
|
+
tests/test_mps_rope_precision.py
|
|
360
|
+
tests/test_null_media.py
|
|
328
361
|
tests/test_observed_cost.py
|
|
329
362
|
tests/test_offload_placement.py
|
|
330
363
|
tests/test_output_references.py
|
|
331
364
|
tests/test_pair_audio.py
|
|
332
365
|
tests/test_pair_audio_fit.py
|
|
366
|
+
tests/test_parallel_loading_default.py
|
|
333
367
|
tests/test_phase_events.py
|
|
334
368
|
tests/test_pipeline_caching.py
|
|
335
369
|
tests/test_pipeline_components.py
|
|
@@ -347,23 +381,30 @@ tests/test_reference_limits.py
|
|
|
347
381
|
tests/test_reference_names.py
|
|
348
382
|
tests/test_repl_commands.py
|
|
349
383
|
tests/test_repl_ergonomics.py
|
|
350
|
-
tests/test_repl_hierarchical.py
|
|
351
|
-
tests/test_repl_reorganization.py
|
|
352
384
|
tests/test_repl_worker.py
|
|
353
385
|
tests/test_rerun_new_seed.py
|
|
354
386
|
tests/test_resize_bucket.py
|
|
355
387
|
tests/test_result.py
|
|
388
|
+
tests/test_result_fps.py
|
|
356
389
|
tests/test_result_output_naming.py
|
|
357
390
|
tests/test_runs.py
|
|
358
391
|
tests/test_scalar_result_validation.py
|
|
359
392
|
tests/test_scheduler_config.py
|
|
360
393
|
tests/test_schema.py
|
|
361
394
|
tests/test_security.py
|
|
395
|
+
tests/test_security_auth.py
|
|
396
|
+
tests/test_security_decoder_bombs.py
|
|
397
|
+
tests/test_security_input_caps.py
|
|
398
|
+
tests/test_security_ssrf.py
|
|
399
|
+
tests/test_security_symlinks.py
|
|
400
|
+
tests/test_security_trust_gate.py
|
|
401
|
+
tests/test_security_web_headers.py
|
|
362
402
|
tests/test_segment.py
|
|
363
403
|
tests/test_select.py
|
|
364
404
|
tests/test_select_validation.py
|
|
365
405
|
tests/test_serve_main.py
|
|
366
406
|
tests/test_server.py
|
|
407
|
+
tests/test_server_assess.py
|
|
367
408
|
tests/test_server_downloads.py
|
|
368
409
|
tests/test_server_exports.py
|
|
369
410
|
tests/test_server_guides.py
|
|
@@ -371,6 +412,9 @@ tests/test_server_info.py
|
|
|
371
412
|
tests/test_server_jobs.py
|
|
372
413
|
tests/test_server_mcp.py
|
|
373
414
|
tests/test_server_workspaces.py
|
|
415
|
+
tests/test_shot_span_preflight.py
|
|
416
|
+
tests/test_shots.py
|
|
417
|
+
tests/test_slice_preflight.py
|
|
374
418
|
tests/test_speech_generation.py
|
|
375
419
|
tests/test_stabilize.py
|
|
376
420
|
tests/test_step.py
|
|
@@ -382,6 +426,7 @@ tests/test_task_discovery.py
|
|
|
382
426
|
tests/test_task_domains.py
|
|
383
427
|
tests/test_task_signature_errors.py
|
|
384
428
|
tests/test_teacache.py
|
|
429
|
+
tests/test_template_defaults.py
|
|
385
430
|
tests/test_template_subfolders.py
|
|
386
431
|
tests/test_tensor_image.py
|
|
387
432
|
tests/test_text_generation.py
|
|
@@ -392,9 +437,15 @@ tests/test_updater.py
|
|
|
392
437
|
tests/test_validate_arguments.py
|
|
393
438
|
tests/test_variable_constraints.py
|
|
394
439
|
tests/test_variables.py
|
|
440
|
+
tests/test_video_extensions.py
|
|
441
|
+
tests/test_video_size_errors.py
|
|
395
442
|
tests/test_video_utils.py
|
|
443
|
+
tests/test_voice_attribution.py
|
|
444
|
+
tests/test_vram_estimate.py
|
|
445
|
+
tests/test_vram_inheritance.py
|
|
396
446
|
tests/test_worker.py
|
|
397
447
|
tests/test_worker_execute.py
|
|
448
|
+
tests/test_worker_job_peak_rss.py
|
|
398
449
|
tests/test_workflow.py
|
|
399
450
|
tests/test_workflow_sources.py
|
|
400
451
|
tests/test_workflow_step_cache.py
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
from .settings import resolve_path, load_settings
|
|
2
2
|
from .log_setup import setup_logging
|
|
3
|
+
import functools
|
|
3
4
|
import os
|
|
4
5
|
import re
|
|
5
6
|
import logging
|
|
7
|
+
import subprocess
|
|
8
|
+
import sys
|
|
6
9
|
import warnings
|
|
7
10
|
from dotenv import load_dotenv
|
|
8
11
|
|
|
@@ -20,14 +23,35 @@ if "PYTORCH_MPS_HIGH_WATERMARK_RATIO" not in os.environ:
|
|
|
20
23
|
if "PYTORCH_CUDA_ALLOC_CONF" not in os.environ:
|
|
21
24
|
os.environ["PYTORCH_CUDA_ALLOC_CONF"] = "expandable_segments:True"
|
|
22
25
|
|
|
23
|
-
|
|
26
|
+
|
|
27
|
+
def _parallel_loading_default(platform):
|
|
28
|
+
"""Whether diffusers loads a sharded checkpoint on several threads.
|
|
29
|
+
|
|
30
|
+
A pure cold-start win on CUDA. On MPS the loader threads each copy their
|
|
31
|
+
tensors onto the device at once, and that segfaulted LTX-2.5's SDNQ
|
|
32
|
+
transformer load (exit 139, four threads inside copy_ to mps) where the
|
|
33
|
+
serial load succeeded in 39s. diffusers reads the variable once at import,
|
|
34
|
+
before dw can ask torch for a device, so this goes by platform: macOS has
|
|
35
|
+
no CUDA, and its accelerator is always MPS."""
|
|
36
|
+
return "false" if platform == "darwin" else "true"
|
|
37
|
+
|
|
38
|
+
|
|
24
39
|
if "HF_ENABLE_PARALLEL_LOADING" not in os.environ:
|
|
25
|
-
os.environ["HF_ENABLE_PARALLEL_LOADING"] =
|
|
40
|
+
os.environ["HF_ENABLE_PARALLEL_LOADING"] = _parallel_loading_default(sys.platform)
|
|
26
41
|
|
|
27
42
|
# Suppress all common library warnings before any imports
|
|
28
43
|
warnings.filterwarnings("ignore", category=FutureWarning)
|
|
29
44
|
warnings.filterwarnings("ignore", category=UserWarning)
|
|
30
45
|
warnings.filterwarnings("ignore", category=DeprecationWarning)
|
|
46
|
+
# ...except torch's notice that an op the MPS backend lacks ran on the CPU. With
|
|
47
|
+
# PYTORCH_ENABLE_MPS_FALLBACK set (the fp4-fp8-for-torch-mps autoload sets it)
|
|
48
|
+
# that is otherwise a step that got several times slower with nothing to say why.
|
|
49
|
+
# Later filters take precedence, so this one wins over the blanket ignore above
|
|
50
|
+
warnings.filterwarnings(
|
|
51
|
+
"default",
|
|
52
|
+
message=r".*not currently supported on the MPS backend and will fall back",
|
|
53
|
+
category=UserWarning,
|
|
54
|
+
)
|
|
31
55
|
|
|
32
56
|
# Eager (but guarded) import of torch. This module's own top-level code needs
|
|
33
57
|
# torch's exceptions/types unconditionally to detect its absence gracefully
|
|
@@ -299,10 +323,11 @@ def device_memory_stats():
|
|
|
299
323
|
"""
|
|
300
324
|
Snapshot of allocator memory usage for the device dw is configured for.
|
|
301
325
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
326
|
+
CUDA exposes free/total via torch.cuda.mem_get_info. MPS reports
|
|
327
|
+
allocated (tensors), reserved (everything the Metal driver holds) and
|
|
328
|
+
total (Metal's recommended working set); free is total minus reserved.
|
|
329
|
+
CPU, or a CUDA/MPS backend that isn't actually available despite being
|
|
330
|
+
the configured device type, results in an "unavailable" snapshot.
|
|
306
331
|
|
|
307
332
|
Returns:
|
|
308
333
|
dict with keys:
|
|
@@ -310,10 +335,10 @@ def device_memory_stats():
|
|
|
310
335
|
device_name (str or None)
|
|
311
336
|
allocated_mb (float)
|
|
312
337
|
reserved_mb (float)
|
|
313
|
-
free_mb (float or None): None only when
|
|
314
|
-
itself fails
|
|
315
|
-
total_mb (float or None): None only when
|
|
316
|
-
itself fails
|
|
338
|
+
free_mb (float or None): None only when the backend's capacity
|
|
339
|
+
probe itself fails
|
|
340
|
+
total_mb (float or None): None only when the backend's capacity
|
|
341
|
+
probe itself fails
|
|
317
342
|
"""
|
|
318
343
|
stats = {
|
|
319
344
|
"available": False,
|
|
@@ -344,15 +369,59 @@ def device_memory_stats():
|
|
|
344
369
|
and hasattr(torch.backends, "mps")
|
|
345
370
|
and torch.backends.mps.is_available()
|
|
346
371
|
):
|
|
347
|
-
#
|
|
372
|
+
# Unified memory: 'reserved' is everything the Metal driver holds for
|
|
373
|
+
# this process, and the ceiling is Metal's recommended working set -
|
|
374
|
+
# the figure past which an allocation starts to page
|
|
348
375
|
stats["available"] = True
|
|
349
|
-
stats["device_name"] = "
|
|
350
|
-
stats["
|
|
351
|
-
stats["
|
|
376
|
+
stats["device_name"] = f"{_apple_chip_name()} (MPS)"
|
|
377
|
+
stats["allocated_mb"] = torch.mps.current_allocated_memory() / 1024 / 1024
|
|
378
|
+
stats["reserved_mb"] = torch.mps.driver_allocated_memory() / 1024 / 1024
|
|
379
|
+
try:
|
|
380
|
+
total = torch.mps.recommended_max_memory() / 1024 / 1024
|
|
381
|
+
stats["total_mb"] = total
|
|
382
|
+
stats["free_mb"] = max(total - stats["reserved_mb"], 0.0)
|
|
383
|
+
except (RuntimeError, AttributeError):
|
|
384
|
+
pass
|
|
352
385
|
|
|
353
386
|
return stats
|
|
354
387
|
|
|
355
388
|
|
|
389
|
+
@functools.lru_cache(maxsize=1)
|
|
390
|
+
def _apple_chip_name():
|
|
391
|
+
"""The chip's marketing name ('Apple M5 Pro'), so a reading from an 8 GB M1
|
|
392
|
+
and one from a 128 GB M4 Max are not reported as the same device."""
|
|
393
|
+
try:
|
|
394
|
+
result = subprocess.run(
|
|
395
|
+
["sysctl", "-n", "machdep.cpu.brand_string"],
|
|
396
|
+
capture_output=True,
|
|
397
|
+
text=True,
|
|
398
|
+
timeout=2,
|
|
399
|
+
check=True,
|
|
400
|
+
)
|
|
401
|
+
return result.stdout.strip() or "Apple Silicon"
|
|
402
|
+
except (OSError, subprocess.SubprocessError):
|
|
403
|
+
return "Apple Silicon"
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
def device_capacity_gb(device=None):
|
|
407
|
+
"""How much memory the accelerator can hold, in GiB - Metal's recommended
|
|
408
|
+
working set on MPS, the card's total on CUDA - or None where there is no
|
|
409
|
+
accelerator or the probe fails. Used where a check needs a ceiling for a
|
|
410
|
+
device no curated 'cost' entry describes."""
|
|
411
|
+
if not _TORCH_AVAILABLE:
|
|
412
|
+
return None
|
|
413
|
+
try:
|
|
414
|
+
device_type = get_device_type(device)
|
|
415
|
+
if device_type == "mps":
|
|
416
|
+
return torch.mps.recommended_max_memory() / 1024**3
|
|
417
|
+
if device_type == "cuda":
|
|
418
|
+
index = torch.device(device or get_device()).index or 0
|
|
419
|
+
return torch.cuda.get_device_properties(index).total_memory / 1024**3
|
|
420
|
+
except (RuntimeError, AttributeError, AssertionError):
|
|
421
|
+
return None
|
|
422
|
+
return None
|
|
423
|
+
|
|
424
|
+
|
|
356
425
|
def startup(log_level=None):
|
|
357
426
|
if not _TORCH_AVAILABLE:
|
|
358
427
|
raise ImportError(
|