diffusers-workflow 0.9.0__tar.gz → 0.10.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.9.0/diffusers_workflow.egg-info → diffusers_workflow-0.10.0}/PKG-INFO +1 -1
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0/diffusers_workflow.egg-info}/PKG-INFO +1 -1
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/diffusers_workflow.egg-info/SOURCES.txt +78 -21
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/adapter_compatibility.py +1 -1
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/argument_media.py +69 -18
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/arguments.py +15 -5
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/assessment_rules.py +4 -1
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/audio_qc.py +19 -6
- diffusers_workflow-0.10.0/dw/community_pipelines/pipeline_ltx2_refine.py +154 -0
- diffusers_workflow-0.10.0/dw/devices.py +247 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/docs/ARCHITECTURE.md +28 -11
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/docs/DEPENDENCIES.md +1 -1
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/docs/MCP.md +11 -6
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/docs/RECIPES_24GB.md +2 -1
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/docs/RELEASING.md +137 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/docs/SECURITY.md +33 -4
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/docs/SERVER.md +74 -12
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/docs/TASKS.md +1144 -8
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/docs/WORKFLOW_GUIDE.md +548 -18
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/docs/WORKSPACES.md +6 -3
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/dsp.py +348 -2
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/for_each.py +5 -0
- diffusers_workflow-0.10.0/dw/guides.py +327 -0
- diffusers_workflow-0.10.0/dw/hold_audio.py +151 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/host_memory.py +56 -1
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/hub_cache.py +3 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/introspection.py +132 -9
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/locations.py +169 -60
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/media.py +103 -20
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/media_types.py +43 -0
- diffusers_workflow-0.10.0/dw/outbound.py +539 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/output_extraction.py +15 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/path_redaction.py +40 -6
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/pipeline_ownership.py +16 -2
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/pipeline_processors/chain.py +335 -104
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/pipeline_processors/components.py +8 -0
- diffusers_workflow-0.10.0/dw/pipeline_processors/h3_guides.py +790 -0
- diffusers_workflow-0.10.0/dw/pipeline_processors/h3_hold.py +609 -0
- diffusers_workflow-0.10.0/dw/pipeline_processors/h3_rules.py +223 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/pipeline_processors/pipeline.py +167 -1
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/pipeline_processors/remote.py +22 -2
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/plan.py +35 -5
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/previous_results.py +37 -2
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/result.py +58 -3
- diffusers_workflow-0.10.0/dw/script_lines.py +148 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/security.py +2 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/serve.py +41 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/admission.py +73 -8
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/api_models.py +67 -11
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/app.py +4 -1
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/catalog_shape.py +20 -6
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/deps.py +6 -3
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/enhancers.py +6 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/job_history.py +61 -7
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/job_record.py +18 -0
- diffusers_workflow-0.10.0/dw/server/job_results.py +188 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/jobs.py +394 -378
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/observed_cost.py +84 -22
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/outputs.py +7 -3
- diffusers_workflow-0.10.0/dw/server/pool.py +230 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/routes/assets.py +23 -9
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/routes/jobs.py +92 -16
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/routes/library.py +3 -2
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/routes/system.py +41 -26
- diffusers_workflow-0.9.0/dw/server/ui/assets/cssMode-C1mrKegs.js → diffusers_workflow-0.10.0/dw/server/ui/assets/cssMode-wXe774OW.js +1 -1
- diffusers_workflow-0.9.0/dw/server/ui/assets/editor.api-EZbUgQvM.js → diffusers_workflow-0.10.0/dw/server/ui/assets/editor.api-DqvgVCmU.js +1 -1
- diffusers_workflow-0.9.0/dw/server/ui/assets/freemarker2-Dth1K2Vy.js → diffusers_workflow-0.10.0/dw/server/ui/assets/freemarker2-DR8uhCda.js +1 -1
- diffusers_workflow-0.9.0/dw/server/ui/assets/handlebars-8Sswqnxq.js → diffusers_workflow-0.10.0/dw/server/ui/assets/handlebars-D1n_Fhy1.js +1 -1
- diffusers_workflow-0.9.0/dw/server/ui/assets/html-BYtYo7f1.js → diffusers_workflow-0.10.0/dw/server/ui/assets/html-BVJM2HQM.js +1 -1
- diffusers_workflow-0.9.0/dw/server/ui/assets/htmlMode-B_AiWoXc.js → diffusers_workflow-0.10.0/dw/server/ui/assets/htmlMode-Cb3bisrD.js +1 -1
- diffusers_workflow-0.10.0/dw/server/ui/assets/index-BxCxre0j.css +1 -0
- diffusers_workflow-0.9.0/dw/server/ui/assets/index-B6Ujrvuj.js → diffusers_workflow-0.10.0/dw/server/ui/assets/index-Bxcur2S3.js +32 -32
- diffusers_workflow-0.9.0/dw/server/ui/assets/javascript-E4m083D3.js → diffusers_workflow-0.10.0/dw/server/ui/assets/javascript-DhyRtgFn.js +1 -1
- diffusers_workflow-0.9.0/dw/server/ui/assets/jsonMode--h7ZikWy.js → diffusers_workflow-0.10.0/dw/server/ui/assets/jsonMode-IURul1-R.js +1 -1
- diffusers_workflow-0.9.0/dw/server/ui/assets/liquid-BzbKdLRW.js → diffusers_workflow-0.10.0/dw/server/ui/assets/liquid-CdeVzoDf.js +1 -1
- diffusers_workflow-0.9.0/dw/server/ui/assets/lspLanguageFeatures-CRa0bRFV.js → diffusers_workflow-0.10.0/dw/server/ui/assets/lspLanguageFeatures-C7DVi-2z.js +1 -1
- diffusers_workflow-0.9.0/dw/server/ui/assets/mdx-BJ4u6XQs.js → diffusers_workflow-0.10.0/dw/server/ui/assets/mdx-BDSAHpOx.js +1 -1
- diffusers_workflow-0.9.0/dw/server/ui/assets/monaco-DwaeaVri.js → diffusers_workflow-0.10.0/dw/server/ui/assets/monaco-B8zQveVO.js +4 -4
- diffusers_workflow-0.9.0/dw/server/ui/assets/python-CoX_gCAL.js → diffusers_workflow-0.10.0/dw/server/ui/assets/python-C6JhntrO.js +1 -1
- diffusers_workflow-0.9.0/dw/server/ui/assets/razor-BCTdG5SN.js → diffusers_workflow-0.10.0/dw/server/ui/assets/razor-DUoZWg4e.js +1 -1
- diffusers_workflow-0.9.0/dw/server/ui/assets/tsMode-B6BV7a76.js → diffusers_workflow-0.10.0/dw/server/ui/assets/tsMode-CxKbOt5l.js +1 -1
- diffusers_workflow-0.9.0/dw/server/ui/assets/typescript-DJe7-fvZ.js → diffusers_workflow-0.10.0/dw/server/ui/assets/typescript-BYnQ0RjU.js +1 -1
- diffusers_workflow-0.9.0/dw/server/ui/assets/workers-DCzLJTPE.js → diffusers_workflow-0.10.0/dw/server/ui/assets/workers-CqfSFzdX.js +1 -1
- diffusers_workflow-0.9.0/dw/server/ui/assets/xml-CNvWfUrB.js → diffusers_workflow-0.10.0/dw/server/ui/assets/xml-BTej-yKG.js +1 -1
- diffusers_workflow-0.9.0/dw/server/ui/assets/yaml-ByARP6WE.js → diffusers_workflow-0.10.0/dw/server/ui/assets/yaml-DLu_25Zn.js +1 -1
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/index.html +2 -2
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/updater.py +42 -19
- diffusers_workflow-0.10.0/dw/server/worker_memory.py +239 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/settings.py +8 -2
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/shots.py +84 -15
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/slice_preflight.py +4 -2
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/step_cache.py +13 -5
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/step_value_checks.py +75 -7
- diffusers_workflow-0.10.0/dw/task_domains.py +1467 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/assess.py +33 -8
- diffusers_workflow-0.10.0/dw/tasks/audio_transcription.py +294 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/audio_utils.py +39 -33
- diffusers_workflow-0.10.0/dw/tasks/beats.py +320 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/concat_videos.py +38 -1
- diffusers_workflow-0.10.0/dw/tasks/cuts.py +865 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/dissolve_videos.py +1 -1
- diffusers_workflow-0.10.0/dw/tasks/face_track.py +696 -0
- diffusers_workflow-0.10.0/dw/tasks/finish.py +144 -0
- diffusers_workflow-0.10.0/dw/tasks/fit.py +310 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/gather.py +2 -1
- diffusers_workflow-0.10.0/dw/tasks/grade.py +202 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/h3_latent_upscale.py +20 -4
- diffusers_workflow-0.10.0/dw/tasks/image_ops.py +67 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/image_to_text.py +2 -2
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/image_utils.py +237 -1
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/joins.py +49 -12
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/judge.py +2 -2
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/loop_bed.py +14 -7
- diffusers_workflow-0.10.0/dw/tasks/lut.py +328 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/pair_audio.py +16 -1
- diffusers_workflow-0.10.0/dw/tasks/registry.py +205 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/restore_faces.py +2 -2
- diffusers_workflow-0.10.0/dw/tasks/script_check.py +697 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/select.py +7 -8
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/task.py +627 -177
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/text_generation.py +2 -2
- diffusers_workflow-0.10.0/dw/tasks/trim.py +133 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/upscale.py +2 -2
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/video_utils.py +45 -39
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/voice_attribution.py +181 -88
- diffusers_workflow-0.10.0/dw/tasks/windows.py +506 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/type_helpers.py +14 -6
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/validation.py +76 -10
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/variable_constraints.py +27 -3
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/vram_estimate.py +175 -21
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/vram_inheritance.py +6 -0
- diffusers_workflow-0.10.0/dw/window_count_errors.py +121 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/worker.py +10 -6
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/worker_manager.py +100 -3
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/worker_protocol.py +10 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/workflow.py +11 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/workflow_run.py +16 -12
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/workflow_schema.json +32 -10
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/writers.py +14 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw_mcp/assets.py +1 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw_mcp/catalog.py +28 -15
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw_mcp/diagnose.py +8 -2
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw_mcp/prompts.py +1 -1
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw_mcp/server.py +9 -9
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw_mcp/tools_authoring.py +1 -1
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw_mcp/tools_catalog.py +33 -39
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw_mcp/tools_jobs.py +13 -12
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/pyproject.toml +3 -1
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_admission.py +71 -0
- diffusers_workflow-0.10.0/tests/test_admission_capacity.py +56 -0
- diffusers_workflow-0.10.0/tests/test_analyze_beats.py +477 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_api_contract.py +9 -1
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_arguments.py +51 -3
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_assemble_and_score_target_lufs.py +18 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_assess.py +92 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_catalog_shape.py +17 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_catalog_structure.py +184 -16
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_chain.py +446 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_concat_videos.py +24 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_dsp.py +11 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_elision.py +20 -0
- diffusers_workflow-0.10.0/tests/test_face_track.py +810 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_find_loop_bed.py +14 -0
- diffusers_workflow-0.10.0/tests/test_finish.py +461 -0
- diffusers_workflow-0.10.0/tests/test_fit_templates.py +137 -0
- diffusers_workflow-0.10.0/tests/test_fit_to_model.py +485 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_for_each.py +164 -5
- diffusers_workflow-0.10.0/tests/test_grade.py +514 -0
- diffusers_workflow-0.10.0/tests/test_guide_chain_validation.py +234 -0
- diffusers_workflow-0.10.0/tests/test_guides_validation.py +211 -0
- diffusers_workflow-0.10.0/tests/test_h3_guides.py +1062 -0
- diffusers_workflow-0.10.0/tests/test_h3_hold_audio.py +835 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_h3_latent_upscale.py +35 -0
- diffusers_workflow-0.10.0/tests/test_h3_refine.py +594 -0
- diffusers_workflow-0.10.0/tests/test_h3_rules.py +45 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_h3_schedule.py +28 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_host_memory.py +19 -1
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_hub_cache.py +3 -0
- diffusers_workflow-0.10.0/tests/test_image_ops.py +124 -0
- diffusers_workflow-0.10.0/tests/test_ingredients_grid.py +173 -0
- diffusers_workflow-0.10.0/tests/test_job_history_device.py +172 -0
- diffusers_workflow-0.10.0/tests/test_join_windows.py +678 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_locations.py +373 -7
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_ltx2_ic_loras.py +35 -5
- diffusers_workflow-0.10.0/tests/test_ltx2_refine_pipeline.py +273 -0
- diffusers_workflow-0.10.0/tests/test_lut.py +480 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_mcp_catalog.py +27 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_mcp_server.py +12 -2
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_media_frames.py +10 -0
- diffusers_workflow-0.10.0/tests/test_numeric_coercion.py +306 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_observed_cost.py +197 -2
- diffusers_workflow-0.10.0/tests/test_outbound.py +556 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_pair_audio.py +1 -1
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_pair_audio_fit.py +36 -6
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_path_redaction.py +24 -1
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_phase_events.py +17 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_pipeline_components.py +55 -4
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_plan.py +34 -0
- diffusers_workflow-0.10.0/tests/test_plan_cuts.py +721 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_plugin_skills.py +196 -1
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_prompt_library.py +1 -0
- diffusers_workflow-0.10.0/tests/test_read_frame_range.py +87 -0
- diffusers_workflow-0.10.0/tests/test_restore_faces_video.py +38 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_result.py +145 -8
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_result_fps.py +17 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_runs.py +39 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_schema.py +16 -0
- diffusers_workflow-0.10.0/tests/test_script_check.py +989 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_security_input_caps.py +42 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_security_ssrf.py +27 -11
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_select.py +22 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_select_validation.py +115 -0
- diffusers_workflow-0.10.0/tests/test_separate_stems.py +105 -0
- diffusers_workflow-0.10.0/tests/test_serve_main.py +240 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_server.py +162 -8
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_server_guides.py +1 -1
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_server_jobs.py +1 -1
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_server_workspaces.py +17 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_shots.py +91 -4
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_slice_preflight.py +17 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_step_cache.py +76 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_sub_workflow_resolver.py +5 -1
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_task_discovery.py +23 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_task_domains.py +204 -0
- diffusers_workflow-0.10.0/tests/test_task_public_imports.py +39 -0
- diffusers_workflow-0.10.0/tests/test_task_registry_rules.py +137 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_text_generation.py +2 -2
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_transcribe_audio.py +217 -2
- diffusers_workflow-0.10.0/tests/test_trim_video.py +181 -0
- diffusers_workflow-0.10.0/tests/test_type_helpers_concurrency.py +23 -0
- diffusers_workflow-0.10.0/tests/test_updater.py +167 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_validation.py +6 -1
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_variable_constraints.py +87 -5
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_voice_attribution.py +198 -3
- diffusers_workflow-0.10.0/tests/test_vram_guides.py +272 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_vram_inheritance.py +7 -1
- diffusers_workflow-0.10.0/tests/test_window_count_errors.py +254 -0
- diffusers_workflow-0.10.0/tests/test_window_video.py +428 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_worker_execute.py +41 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_worker_manager.py +99 -0
- diffusers_workflow-0.10.0/tests/test_worker_pool.py +1056 -0
- diffusers_workflow-0.9.0/dw/server/ui/assets/index-BChhQc7I.css +0 -1
- diffusers_workflow-0.9.0/dw/task_domains.py +0 -484
- diffusers_workflow-0.9.0/dw/tasks/audio_transcription.py +0 -136
- diffusers_workflow-0.9.0/dw/tasks/grade.py +0 -97
- diffusers_workflow-0.9.0/tests/test_grade.py +0 -265
- diffusers_workflow-0.9.0/tests/test_serve_main.py +0 -96
- diffusers_workflow-0.9.0/tests/test_updater.py +0 -135
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/LICENSE +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/MANIFEST.in +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/README.md +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/diffusers_workflow.egg-info/dependency_links.txt +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/diffusers_workflow.egg-info/entry_points.txt +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/diffusers_workflow.egg-info/requires.txt +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/diffusers_workflow.egg-info/top_level.txt +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/__init__.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/argument_warnings.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/assets.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/cache_blocks.json +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/cache_blocks.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/community_pipelines/pipeline_flux_rf_inversion.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/content_types.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/dissolve_frame_errors.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/docs/ACCELERATION.md +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/docs/AGENT_LOOP.md +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/docs/IP_ADAPTER.md +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/docs/LORAS.md +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/docs/PROMPT_WEIGHTING.md +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/docs/QUANTIZATION.md +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/docs/REMOTE.md +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/docs/SECURITY_QUICKREF.md +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/docs/TESTING.md +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/docs/WORKER_GUIDE.md +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/download_watch.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/elision.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/events.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/host_memory_projection.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/kernel_availability.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/library.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/log_setup.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/lora_catalog.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/lora_catalog_schema.json +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/lora_hub.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/media_frames.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/pipeline_processors/adapters.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/pipeline_processors/config_objects.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/pipeline_processors/placement.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/pipeline_processors/progress.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/probe_paths.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/prompt_schema.json +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/prompt_weighting.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/prompts.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/realize.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/reference_limits.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/reference_names.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/references.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/run.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/runs.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/scalar_result_validation.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/schema.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/__init__.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/assess.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/catalog.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/exports.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/guides.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/http_security.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/inline_media.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/mcp_mount.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/netinfo.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/routes/__init__.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/routes/files.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/routes/gallery.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/routes/loras.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/routes/media.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/sysinfo.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/abap-08VXUWAP.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/apex-BWPQTe0t.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/azcli-Bc_sGQ0U.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/bat-i0X4ZdIN.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/bicep-B5-_aFwp.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/cameligo-DMUM7wLl.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/clojure-Cm7r79vr.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/codicon-Brq4_Ui5.ttf +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/coffee-Ba7i2nA0.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/cpp-C7h46wYY.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/csharp-BKxtCVv1.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/csp-bTuwJoIa.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/css-DIMkf-bt.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/css.worker-B3ciXF_0.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/cypher-CVaqCwHa.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/dart-onAF5SnQ.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/dockerfile-DZFCIeNp.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/ecl-D05T4iGw.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/editor-jjEx9u7D.css +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/editor.worker-q-txB4vs.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/elixir-6RTg0lbw.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/flow9-C5_-GSwl.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/fsharp-C8Ef5oNN.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/go-C-y9NEjX.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/graphql-fmXr3nnJ.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/hcl-CpzslTdj.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/html.worker-C93Ht9o9.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/ini-sBoK_t0W.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/java-BEtHBSE6.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/json.worker-B2V3pomh.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/julia-Bri6UV-V.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/kotlin-BOotOW0E.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/less-B9JPFI3C.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/lexon-CfSJPG6W.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/lua-CsQS60Ue.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/m3-D-oSqn_W.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/markdown-Cimd5fb3.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/mips-CIPQ_RoX.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/monaco--ixms01u.css +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/msdax-DauUninz.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/mysql-SOo6toE5.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/objective-c-FvmIjYaQ.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/pascal-DrH0SRf2.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/pascaligo-D-ptJ9y-.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/perl-oz_6vUea.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/pgsql-DTj74zXo.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/php-nr791fC2.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/pla-CopQ2nXW.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/postiats-43DmfD33.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/powerquery-D3hlyOfw.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/powershell-DmHpPYUd.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/protobuf-C531GsRP.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/pug-Z5eAx3Zn.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/qsharp-DkqhCAOL.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/r-BwWrilGY.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/redis-ClamHrr6.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/redshift-DT7zqm-g.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/restructuredtext-BYgofb2h.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/ruby-DezsRK8O.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/rust-DdL9SqIa.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/sb-CcwsVR0C.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/scala-DHpiXF5c.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/scheme-BeGwcela.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/scss-gp-XZpBa.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/shell-CC2rA5mh.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/solidity-BEEn4gHE.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/sophia-CRfGWb83.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/sparql-D_Lu-MrJ.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/sql-NEE52Syq.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/st-DbInun42.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/swift-Bxkupp3x.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/systemverilog-Bz4Y3fRF.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/tcl-DISqw1ZD.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/ts.worker-D7T1-Ig5.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/twig-De2hgUGE.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/typespec-B8J7ngcE.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/vb-DV3o63ZY.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/server/ui/assets/wgsl-DpFanUEy.js +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/shot_span_preflight.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/step.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/subfolders.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/audio_dynamics.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/background_remover.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/borders.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/compose_text.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/depth_estimator.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/diffusion_upscale.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/format_messages.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/h3_latent_upscaler_model.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/interpolate_frames.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/join_into_song.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/model_cache.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/qr_code.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/rife_model.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/segment.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/speech_generation.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/stabilize.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/tensor_image.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/text_sections.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/tasks/zoe_depth.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/test.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/trust.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/type_references.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/validate.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/variables.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/video_extensions.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/video_size_errors.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/workflows/h3_context_ir.json +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/workflows/test.json +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw/workspace.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw_mcp/__init__.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw_mcp/__main__.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw_mcp/authoring.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw_mcp/client.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw_mcp/confine.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw_mcp/exports.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw_mcp/guides.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw_mcp/loras.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw_mcp/media.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw_mcp/models.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw_mcp/tools_media.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/dw_mcp/workspaces.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/setup.cfg +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_arch_metrics.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_arch_report.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_architecture_map.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_argument_updates.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_assessment_rules.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_assets.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_attention_slicing.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_audio_utils.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_best_of_n_template.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_borders.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_cache_blocks.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_ci_config.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_cli.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_component_name_errors.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_component_pruning.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_component_type_errors.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_compose_text.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_config_objects.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_configuration_schema.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_content_types.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_depth_estimator.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_device.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_device_helpers.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_device_portability.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_dialogue_short_voices.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_diffusion_upscale.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_dissolve_frame_errors.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_dissolve_videos.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_docs_links.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_download_watch.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_events.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_examples.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_gather.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_h3_adapters.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_h3_context_ir.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_h3_upscaler_source.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_h3_vram_ceiling.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_hf_placement.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_host_memory_projection.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_image_to_text.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_image_utils.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_integration.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_interpolate_frames.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_introspection.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_job_history_wal.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_job_progress.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_job_warnings.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_jobs_listing.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_jobs_reused.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_join_into_song.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_judge.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_kernel_availability.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_library_path.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_library_sources.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_list_images.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_lora_alpha.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_lora_catalog.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_lora_disable.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_lora_hub.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_lora_library.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_ltx2_diffusion_decode.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_ltx2_extend_clip.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_ltx_prompt_library.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_mcp_assets.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_mcp_authoring.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_mcp_client.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_mcp_confine.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_mcp_diagnose.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_mcp_exports.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_mcp_guides.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_mcp_loras.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_mcp_main.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_mcp_media.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_mcp_models.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_mcp_prompts.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_mcp_twins.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_mcp_workspaces.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_media_audio.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_media_info.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_media_layering.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_mix_audio.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_model_cache.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_modular_output_properties.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_modular_pipeline.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_modular_progress.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_mps_fallback_warning.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_mps_rope_precision.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_null_media.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_offload_placement.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_output_references.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_parallel_loading_default.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_pipeline_caching.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_prepare_pipeline.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_previous_result_walker_parity.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_previous_results.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_prompt_parser.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_prompt_references.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_prompt_weighting.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_prompts.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_real_models.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_realize.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_recenter_crop.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_reference_limits.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_reference_names.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_reference_skip_sets.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_references.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_rerun_new_seed.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_resize_bucket.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_result_output_naming.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_rule_parity.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_scalar_result_validation.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_scheduler_config.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_security.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_security_auth.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_security_decoder_bombs.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_security_symlinks.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_security_trust_gate.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_security_web_headers.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_segment.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_server_assess.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_server_downloads.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_server_exports.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_server_gallery_image.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_server_info.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_server_library_path.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_server_loras.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_server_mcp.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_shaping_logs.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_shot_span_preflight.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_speech_generation.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_stabilize.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_step.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_strip_exif_and_watermark.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_subfolders.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_task.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_task_signature_errors.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_template_defaults.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_template_subfolders.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_tensor_image.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_text_sections.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_type_helpers.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_ui_twins.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_validate_arguments.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_variables.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_video_extensions.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_video_size_errors.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_video_utils.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_vram_estimate.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_worker.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_worker_job_peak_rss.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_worker_messages.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_workflow.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_workflow_snapshot.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_workflow_step_cache.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_workflow_trust.py +0 -0
- {diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/tests/test_workspace.py +0 -0
{diffusers_workflow-0.9.0 → diffusers_workflow-0.10.0}/diffusers_workflow.egg-info/SOURCES.txt
RENAMED
|
@@ -19,12 +19,15 @@ dw/audio_qc.py
|
|
|
19
19
|
dw/cache_blocks.json
|
|
20
20
|
dw/cache_blocks.py
|
|
21
21
|
dw/content_types.py
|
|
22
|
+
dw/devices.py
|
|
22
23
|
dw/dissolve_frame_errors.py
|
|
23
24
|
dw/download_watch.py
|
|
24
25
|
dw/dsp.py
|
|
25
26
|
dw/elision.py
|
|
26
27
|
dw/events.py
|
|
27
28
|
dw/for_each.py
|
|
29
|
+
dw/guides.py
|
|
30
|
+
dw/hold_audio.py
|
|
28
31
|
dw/host_memory.py
|
|
29
32
|
dw/host_memory_projection.py
|
|
30
33
|
dw/hub_cache.py
|
|
@@ -39,6 +42,7 @@ dw/lora_hub.py
|
|
|
39
42
|
dw/media.py
|
|
40
43
|
dw/media_frames.py
|
|
41
44
|
dw/media_types.py
|
|
45
|
+
dw/outbound.py
|
|
42
46
|
dw/output_extraction.py
|
|
43
47
|
dw/path_redaction.py
|
|
44
48
|
dw/pipeline_ownership.py
|
|
@@ -57,6 +61,7 @@ dw/run.py
|
|
|
57
61
|
dw/runs.py
|
|
58
62
|
dw/scalar_result_validation.py
|
|
59
63
|
dw/schema.py
|
|
64
|
+
dw/script_lines.py
|
|
60
65
|
dw/security.py
|
|
61
66
|
dw/serve.py
|
|
62
67
|
dw/settings.py
|
|
@@ -80,6 +85,7 @@ dw/video_extensions.py
|
|
|
80
85
|
dw/video_size_errors.py
|
|
81
86
|
dw/vram_estimate.py
|
|
82
87
|
dw/vram_inheritance.py
|
|
88
|
+
dw/window_count_errors.py
|
|
83
89
|
dw/worker.py
|
|
84
90
|
dw/worker_manager.py
|
|
85
91
|
dw/worker_protocol.py
|
|
@@ -89,6 +95,7 @@ dw/workflow_schema.json
|
|
|
89
95
|
dw/workspace.py
|
|
90
96
|
dw/writers.py
|
|
91
97
|
dw/community_pipelines/pipeline_flux_rf_inversion.py
|
|
98
|
+
dw/community_pipelines/pipeline_ltx2_refine.py
|
|
92
99
|
dw/docs/ACCELERATION.md
|
|
93
100
|
dw/docs/AGENT_LOOP.md
|
|
94
101
|
dw/docs/ARCHITECTURE.md
|
|
@@ -113,6 +120,9 @@ dw/pipeline_processors/adapters.py
|
|
|
113
120
|
dw/pipeline_processors/chain.py
|
|
114
121
|
dw/pipeline_processors/components.py
|
|
115
122
|
dw/pipeline_processors/config_objects.py
|
|
123
|
+
dw/pipeline_processors/h3_guides.py
|
|
124
|
+
dw/pipeline_processors/h3_hold.py
|
|
125
|
+
dw/pipeline_processors/h3_rules.py
|
|
116
126
|
dw/pipeline_processors/pipeline.py
|
|
117
127
|
dw/pipeline_processors/placement.py
|
|
118
128
|
dw/pipeline_processors/progress.py
|
|
@@ -132,13 +142,16 @@ dw/server/http_security.py
|
|
|
132
142
|
dw/server/inline_media.py
|
|
133
143
|
dw/server/job_history.py
|
|
134
144
|
dw/server/job_record.py
|
|
145
|
+
dw/server/job_results.py
|
|
135
146
|
dw/server/jobs.py
|
|
136
147
|
dw/server/mcp_mount.py
|
|
137
148
|
dw/server/netinfo.py
|
|
138
149
|
dw/server/observed_cost.py
|
|
139
150
|
dw/server/outputs.py
|
|
151
|
+
dw/server/pool.py
|
|
140
152
|
dw/server/sysinfo.py
|
|
141
153
|
dw/server/updater.py
|
|
154
|
+
dw/server/worker_memory.py
|
|
142
155
|
dw/server/routes/__init__.py
|
|
143
156
|
dw/server/routes/assets.py
|
|
144
157
|
dw/server/routes/files.py
|
|
@@ -163,45 +176,45 @@ dw/server/ui/assets/csharp-BKxtCVv1.js
|
|
|
163
176
|
dw/server/ui/assets/csp-bTuwJoIa.js
|
|
164
177
|
dw/server/ui/assets/css-DIMkf-bt.js
|
|
165
178
|
dw/server/ui/assets/css.worker-B3ciXF_0.js
|
|
166
|
-
dw/server/ui/assets/cssMode-
|
|
179
|
+
dw/server/ui/assets/cssMode-wXe774OW.js
|
|
167
180
|
dw/server/ui/assets/cypher-CVaqCwHa.js
|
|
168
181
|
dw/server/ui/assets/dart-onAF5SnQ.js
|
|
169
182
|
dw/server/ui/assets/dockerfile-DZFCIeNp.js
|
|
170
183
|
dw/server/ui/assets/ecl-D05T4iGw.js
|
|
171
184
|
dw/server/ui/assets/editor-jjEx9u7D.css
|
|
172
|
-
dw/server/ui/assets/editor.api-
|
|
185
|
+
dw/server/ui/assets/editor.api-DqvgVCmU.js
|
|
173
186
|
dw/server/ui/assets/editor.worker-q-txB4vs.js
|
|
174
187
|
dw/server/ui/assets/elixir-6RTg0lbw.js
|
|
175
188
|
dw/server/ui/assets/flow9-C5_-GSwl.js
|
|
176
|
-
dw/server/ui/assets/freemarker2-
|
|
189
|
+
dw/server/ui/assets/freemarker2-DR8uhCda.js
|
|
177
190
|
dw/server/ui/assets/fsharp-C8Ef5oNN.js
|
|
178
191
|
dw/server/ui/assets/go-C-y9NEjX.js
|
|
179
192
|
dw/server/ui/assets/graphql-fmXr3nnJ.js
|
|
180
|
-
dw/server/ui/assets/handlebars-
|
|
193
|
+
dw/server/ui/assets/handlebars-D1n_Fhy1.js
|
|
181
194
|
dw/server/ui/assets/hcl-CpzslTdj.js
|
|
182
|
-
dw/server/ui/assets/html-
|
|
195
|
+
dw/server/ui/assets/html-BVJM2HQM.js
|
|
183
196
|
dw/server/ui/assets/html.worker-C93Ht9o9.js
|
|
184
|
-
dw/server/ui/assets/htmlMode-
|
|
185
|
-
dw/server/ui/assets/index-
|
|
186
|
-
dw/server/ui/assets/index-
|
|
197
|
+
dw/server/ui/assets/htmlMode-Cb3bisrD.js
|
|
198
|
+
dw/server/ui/assets/index-BxCxre0j.css
|
|
199
|
+
dw/server/ui/assets/index-Bxcur2S3.js
|
|
187
200
|
dw/server/ui/assets/ini-sBoK_t0W.js
|
|
188
201
|
dw/server/ui/assets/java-BEtHBSE6.js
|
|
189
|
-
dw/server/ui/assets/javascript-
|
|
202
|
+
dw/server/ui/assets/javascript-DhyRtgFn.js
|
|
190
203
|
dw/server/ui/assets/json.worker-B2V3pomh.js
|
|
191
|
-
dw/server/ui/assets/jsonMode
|
|
204
|
+
dw/server/ui/assets/jsonMode-IURul1-R.js
|
|
192
205
|
dw/server/ui/assets/julia-Bri6UV-V.js
|
|
193
206
|
dw/server/ui/assets/kotlin-BOotOW0E.js
|
|
194
207
|
dw/server/ui/assets/less-B9JPFI3C.js
|
|
195
208
|
dw/server/ui/assets/lexon-CfSJPG6W.js
|
|
196
|
-
dw/server/ui/assets/liquid-
|
|
197
|
-
dw/server/ui/assets/lspLanguageFeatures-
|
|
209
|
+
dw/server/ui/assets/liquid-CdeVzoDf.js
|
|
210
|
+
dw/server/ui/assets/lspLanguageFeatures-C7DVi-2z.js
|
|
198
211
|
dw/server/ui/assets/lua-CsQS60Ue.js
|
|
199
212
|
dw/server/ui/assets/m3-D-oSqn_W.js
|
|
200
213
|
dw/server/ui/assets/markdown-Cimd5fb3.js
|
|
201
|
-
dw/server/ui/assets/mdx-
|
|
214
|
+
dw/server/ui/assets/mdx-BDSAHpOx.js
|
|
202
215
|
dw/server/ui/assets/mips-CIPQ_RoX.js
|
|
203
216
|
dw/server/ui/assets/monaco--ixms01u.css
|
|
204
|
-
dw/server/ui/assets/monaco-
|
|
217
|
+
dw/server/ui/assets/monaco-B8zQveVO.js
|
|
205
218
|
dw/server/ui/assets/msdax-DauUninz.js
|
|
206
219
|
dw/server/ui/assets/mysql-SOo6toE5.js
|
|
207
220
|
dw/server/ui/assets/objective-c-FvmIjYaQ.js
|
|
@@ -216,10 +229,10 @@ dw/server/ui/assets/powerquery-D3hlyOfw.js
|
|
|
216
229
|
dw/server/ui/assets/powershell-DmHpPYUd.js
|
|
217
230
|
dw/server/ui/assets/protobuf-C531GsRP.js
|
|
218
231
|
dw/server/ui/assets/pug-Z5eAx3Zn.js
|
|
219
|
-
dw/server/ui/assets/python-
|
|
232
|
+
dw/server/ui/assets/python-C6JhntrO.js
|
|
220
233
|
dw/server/ui/assets/qsharp-DkqhCAOL.js
|
|
221
234
|
dw/server/ui/assets/r-BwWrilGY.js
|
|
222
|
-
dw/server/ui/assets/razor-
|
|
235
|
+
dw/server/ui/assets/razor-DUoZWg4e.js
|
|
223
236
|
dw/server/ui/assets/redis-ClamHrr6.js
|
|
224
237
|
dw/server/ui/assets/redshift-DT7zqm-g.js
|
|
225
238
|
dw/server/ui/assets/restructuredtext-BYgofb2h.js
|
|
@@ -239,31 +252,37 @@ dw/server/ui/assets/swift-Bxkupp3x.js
|
|
|
239
252
|
dw/server/ui/assets/systemverilog-Bz4Y3fRF.js
|
|
240
253
|
dw/server/ui/assets/tcl-DISqw1ZD.js
|
|
241
254
|
dw/server/ui/assets/ts.worker-D7T1-Ig5.js
|
|
242
|
-
dw/server/ui/assets/tsMode-
|
|
255
|
+
dw/server/ui/assets/tsMode-CxKbOt5l.js
|
|
243
256
|
dw/server/ui/assets/twig-De2hgUGE.js
|
|
244
|
-
dw/server/ui/assets/typescript-
|
|
257
|
+
dw/server/ui/assets/typescript-BYnQ0RjU.js
|
|
245
258
|
dw/server/ui/assets/typespec-B8J7ngcE.js
|
|
246
259
|
dw/server/ui/assets/vb-DV3o63ZY.js
|
|
247
260
|
dw/server/ui/assets/wgsl-DpFanUEy.js
|
|
248
|
-
dw/server/ui/assets/workers-
|
|
249
|
-
dw/server/ui/assets/xml-
|
|
250
|
-
dw/server/ui/assets/yaml-
|
|
261
|
+
dw/server/ui/assets/workers-CqfSFzdX.js
|
|
262
|
+
dw/server/ui/assets/xml-BTej-yKG.js
|
|
263
|
+
dw/server/ui/assets/yaml-DLu_25Zn.js
|
|
251
264
|
dw/tasks/assess.py
|
|
252
265
|
dw/tasks/audio_dynamics.py
|
|
253
266
|
dw/tasks/audio_transcription.py
|
|
254
267
|
dw/tasks/audio_utils.py
|
|
255
268
|
dw/tasks/background_remover.py
|
|
269
|
+
dw/tasks/beats.py
|
|
256
270
|
dw/tasks/borders.py
|
|
257
271
|
dw/tasks/compose_text.py
|
|
258
272
|
dw/tasks/concat_videos.py
|
|
273
|
+
dw/tasks/cuts.py
|
|
259
274
|
dw/tasks/depth_estimator.py
|
|
260
275
|
dw/tasks/diffusion_upscale.py
|
|
261
276
|
dw/tasks/dissolve_videos.py
|
|
277
|
+
dw/tasks/face_track.py
|
|
278
|
+
dw/tasks/finish.py
|
|
279
|
+
dw/tasks/fit.py
|
|
262
280
|
dw/tasks/format_messages.py
|
|
263
281
|
dw/tasks/gather.py
|
|
264
282
|
dw/tasks/grade.py
|
|
265
283
|
dw/tasks/h3_latent_upscale.py
|
|
266
284
|
dw/tasks/h3_latent_upscaler_model.py
|
|
285
|
+
dw/tasks/image_ops.py
|
|
267
286
|
dw/tasks/image_to_text.py
|
|
268
287
|
dw/tasks/image_utils.py
|
|
269
288
|
dw/tasks/interpolate_frames.py
|
|
@@ -271,11 +290,14 @@ dw/tasks/join_into_song.py
|
|
|
271
290
|
dw/tasks/joins.py
|
|
272
291
|
dw/tasks/judge.py
|
|
273
292
|
dw/tasks/loop_bed.py
|
|
293
|
+
dw/tasks/lut.py
|
|
274
294
|
dw/tasks/model_cache.py
|
|
275
295
|
dw/tasks/pair_audio.py
|
|
276
296
|
dw/tasks/qr_code.py
|
|
297
|
+
dw/tasks/registry.py
|
|
277
298
|
dw/tasks/restore_faces.py
|
|
278
299
|
dw/tasks/rife_model.py
|
|
300
|
+
dw/tasks/script_check.py
|
|
279
301
|
dw/tasks/segment.py
|
|
280
302
|
dw/tasks/select.py
|
|
281
303
|
dw/tasks/speech_generation.py
|
|
@@ -284,9 +306,11 @@ dw/tasks/task.py
|
|
|
284
306
|
dw/tasks/tensor_image.py
|
|
285
307
|
dw/tasks/text_generation.py
|
|
286
308
|
dw/tasks/text_sections.py
|
|
309
|
+
dw/tasks/trim.py
|
|
287
310
|
dw/tasks/upscale.py
|
|
288
311
|
dw/tasks/video_utils.py
|
|
289
312
|
dw/tasks/voice_attribution.py
|
|
313
|
+
dw/tasks/windows.py
|
|
290
314
|
dw/tasks/zoe_depth.py
|
|
291
315
|
dw/workflows/h3_context_ir.json
|
|
292
316
|
dw/workflows/test.json
|
|
@@ -311,6 +335,8 @@ dw_mcp/tools_jobs.py
|
|
|
311
335
|
dw_mcp/tools_media.py
|
|
312
336
|
dw_mcp/workspaces.py
|
|
313
337
|
tests/test_admission.py
|
|
338
|
+
tests/test_admission_capacity.py
|
|
339
|
+
tests/test_analyze_beats.py
|
|
314
340
|
tests/test_api_contract.py
|
|
315
341
|
tests/test_arch_metrics.py
|
|
316
342
|
tests/test_arch_report.py
|
|
@@ -353,13 +379,23 @@ tests/test_dsp.py
|
|
|
353
379
|
tests/test_elision.py
|
|
354
380
|
tests/test_events.py
|
|
355
381
|
tests/test_examples.py
|
|
382
|
+
tests/test_face_track.py
|
|
356
383
|
tests/test_find_loop_bed.py
|
|
384
|
+
tests/test_finish.py
|
|
385
|
+
tests/test_fit_templates.py
|
|
386
|
+
tests/test_fit_to_model.py
|
|
357
387
|
tests/test_for_each.py
|
|
358
388
|
tests/test_gather.py
|
|
359
389
|
tests/test_grade.py
|
|
390
|
+
tests/test_guide_chain_validation.py
|
|
391
|
+
tests/test_guides_validation.py
|
|
360
392
|
tests/test_h3_adapters.py
|
|
361
393
|
tests/test_h3_context_ir.py
|
|
394
|
+
tests/test_h3_guides.py
|
|
395
|
+
tests/test_h3_hold_audio.py
|
|
362
396
|
tests/test_h3_latent_upscale.py
|
|
397
|
+
tests/test_h3_refine.py
|
|
398
|
+
tests/test_h3_rules.py
|
|
363
399
|
tests/test_h3_schedule.py
|
|
364
400
|
tests/test_h3_upscaler_source.py
|
|
365
401
|
tests/test_h3_vram_ceiling.py
|
|
@@ -367,17 +403,21 @@ tests/test_hf_placement.py
|
|
|
367
403
|
tests/test_host_memory.py
|
|
368
404
|
tests/test_host_memory_projection.py
|
|
369
405
|
tests/test_hub_cache.py
|
|
406
|
+
tests/test_image_ops.py
|
|
370
407
|
tests/test_image_to_text.py
|
|
371
408
|
tests/test_image_utils.py
|
|
409
|
+
tests/test_ingredients_grid.py
|
|
372
410
|
tests/test_integration.py
|
|
373
411
|
tests/test_interpolate_frames.py
|
|
374
412
|
tests/test_introspection.py
|
|
413
|
+
tests/test_job_history_device.py
|
|
375
414
|
tests/test_job_history_wal.py
|
|
376
415
|
tests/test_job_progress.py
|
|
377
416
|
tests/test_job_warnings.py
|
|
378
417
|
tests/test_jobs_listing.py
|
|
379
418
|
tests/test_jobs_reused.py
|
|
380
419
|
tests/test_join_into_song.py
|
|
420
|
+
tests/test_join_windows.py
|
|
381
421
|
tests/test_judge.py
|
|
382
422
|
tests/test_kernel_availability.py
|
|
383
423
|
tests/test_library_path.py
|
|
@@ -392,7 +432,9 @@ tests/test_lora_library.py
|
|
|
392
432
|
tests/test_ltx2_diffusion_decode.py
|
|
393
433
|
tests/test_ltx2_extend_clip.py
|
|
394
434
|
tests/test_ltx2_ic_loras.py
|
|
435
|
+
tests/test_ltx2_refine_pipeline.py
|
|
395
436
|
tests/test_ltx_prompt_library.py
|
|
437
|
+
tests/test_lut.py
|
|
396
438
|
tests/test_mcp_assets.py
|
|
397
439
|
tests/test_mcp_authoring.py
|
|
398
440
|
tests/test_mcp_catalog.py
|
|
@@ -421,8 +463,10 @@ tests/test_modular_progress.py
|
|
|
421
463
|
tests/test_mps_fallback_warning.py
|
|
422
464
|
tests/test_mps_rope_precision.py
|
|
423
465
|
tests/test_null_media.py
|
|
466
|
+
tests/test_numeric_coercion.py
|
|
424
467
|
tests/test_observed_cost.py
|
|
425
468
|
tests/test_offload_placement.py
|
|
469
|
+
tests/test_outbound.py
|
|
426
470
|
tests/test_output_references.py
|
|
427
471
|
tests/test_pair_audio.py
|
|
428
472
|
tests/test_pair_audio_fit.py
|
|
@@ -432,6 +476,7 @@ tests/test_phase_events.py
|
|
|
432
476
|
tests/test_pipeline_caching.py
|
|
433
477
|
tests/test_pipeline_components.py
|
|
434
478
|
tests/test_plan.py
|
|
479
|
+
tests/test_plan_cuts.py
|
|
435
480
|
tests/test_plugin_skills.py
|
|
436
481
|
tests/test_prepare_pipeline.py
|
|
437
482
|
tests/test_previous_result_walker_parity.py
|
|
@@ -441,6 +486,7 @@ tests/test_prompt_parser.py
|
|
|
441
486
|
tests/test_prompt_references.py
|
|
442
487
|
tests/test_prompt_weighting.py
|
|
443
488
|
tests/test_prompts.py
|
|
489
|
+
tests/test_read_frame_range.py
|
|
444
490
|
tests/test_real_models.py
|
|
445
491
|
tests/test_realize.py
|
|
446
492
|
tests/test_recenter_crop.py
|
|
@@ -450,6 +496,7 @@ tests/test_reference_skip_sets.py
|
|
|
450
496
|
tests/test_references.py
|
|
451
497
|
tests/test_rerun_new_seed.py
|
|
452
498
|
tests/test_resize_bucket.py
|
|
499
|
+
tests/test_restore_faces_video.py
|
|
453
500
|
tests/test_result.py
|
|
454
501
|
tests/test_result_fps.py
|
|
455
502
|
tests/test_result_output_naming.py
|
|
@@ -458,6 +505,7 @@ tests/test_runs.py
|
|
|
458
505
|
tests/test_scalar_result_validation.py
|
|
459
506
|
tests/test_scheduler_config.py
|
|
460
507
|
tests/test_schema.py
|
|
508
|
+
tests/test_script_check.py
|
|
461
509
|
tests/test_security.py
|
|
462
510
|
tests/test_security_auth.py
|
|
463
511
|
tests/test_security_decoder_bombs.py
|
|
@@ -469,6 +517,7 @@ tests/test_security_web_headers.py
|
|
|
469
517
|
tests/test_segment.py
|
|
470
518
|
tests/test_select.py
|
|
471
519
|
tests/test_select_validation.py
|
|
520
|
+
tests/test_separate_stems.py
|
|
472
521
|
tests/test_serve_main.py
|
|
473
522
|
tests/test_server.py
|
|
474
523
|
tests/test_server_assess.py
|
|
@@ -496,6 +545,8 @@ tests/test_subfolders.py
|
|
|
496
545
|
tests/test_task.py
|
|
497
546
|
tests/test_task_discovery.py
|
|
498
547
|
tests/test_task_domains.py
|
|
548
|
+
tests/test_task_public_imports.py
|
|
549
|
+
tests/test_task_registry_rules.py
|
|
499
550
|
tests/test_task_signature_errors.py
|
|
500
551
|
tests/test_template_defaults.py
|
|
501
552
|
tests/test_template_subfolders.py
|
|
@@ -503,7 +554,9 @@ tests/test_tensor_image.py
|
|
|
503
554
|
tests/test_text_generation.py
|
|
504
555
|
tests/test_text_sections.py
|
|
505
556
|
tests/test_transcribe_audio.py
|
|
557
|
+
tests/test_trim_video.py
|
|
506
558
|
tests/test_type_helpers.py
|
|
559
|
+
tests/test_type_helpers_concurrency.py
|
|
507
560
|
tests/test_ui_twins.py
|
|
508
561
|
tests/test_updater.py
|
|
509
562
|
tests/test_validate_arguments.py
|
|
@@ -515,12 +568,16 @@ tests/test_video_size_errors.py
|
|
|
515
568
|
tests/test_video_utils.py
|
|
516
569
|
tests/test_voice_attribution.py
|
|
517
570
|
tests/test_vram_estimate.py
|
|
571
|
+
tests/test_vram_guides.py
|
|
518
572
|
tests/test_vram_inheritance.py
|
|
573
|
+
tests/test_window_count_errors.py
|
|
574
|
+
tests/test_window_video.py
|
|
519
575
|
tests/test_worker.py
|
|
520
576
|
tests/test_worker_execute.py
|
|
521
577
|
tests/test_worker_job_peak_rss.py
|
|
522
578
|
tests/test_worker_manager.py
|
|
523
579
|
tests/test_worker_messages.py
|
|
580
|
+
tests/test_worker_pool.py
|
|
524
581
|
tests/test_workflow.py
|
|
525
582
|
tests/test_workflow_snapshot.py
|
|
526
583
|
tests/test_workflow_step_cache.py
|
|
@@ -30,7 +30,7 @@ names and the partition each one denoises against are diffusers' own, and
|
|
|
30
30
|
import logging
|
|
31
31
|
|
|
32
32
|
from . import references
|
|
33
|
-
from .
|
|
33
|
+
from .references import MEMBER_SEPARATOR, render_path
|
|
34
34
|
|
|
35
35
|
logger = logging.getLogger("dw")
|
|
36
36
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
{media_type, location} reference, an `image`/`video` argument's path or URL, and
|
|
3
3
|
the frame rate and shots a loaded video carries."""
|
|
4
4
|
|
|
5
|
+
import contextlib
|
|
5
6
|
import io
|
|
6
7
|
import os
|
|
7
8
|
import logging
|
|
@@ -16,7 +17,8 @@ from .security import (
|
|
|
16
17
|
ALLOWED_IMAGE_EXTENSIONS,
|
|
17
18
|
ALLOWED_VIDEO_EXTENSIONS,
|
|
18
19
|
)
|
|
19
|
-
from .locations import
|
|
20
|
+
from .locations import is_http_url, validate_media_path
|
|
21
|
+
from .outbound import safe_get
|
|
20
22
|
|
|
21
23
|
logger = logging.getLogger("dw")
|
|
22
24
|
|
|
@@ -81,10 +83,14 @@ def fetch_image_with_context(v, base_dir, key):
|
|
|
81
83
|
) from error
|
|
82
84
|
|
|
83
85
|
|
|
84
|
-
def fetch_video_with_context(v, base_dir, key):
|
|
86
|
+
def fetch_video_with_context(v, base_dir, key, with_audio=False):
|
|
85
87
|
"""fetch_video, with the same argument-key context as
|
|
86
|
-
fetch_image_with_context.
|
|
88
|
+
fetch_image_with_context. `with_audio` reads a file's soundtrack along with
|
|
89
|
+
its frames, as an AudioVideo - an H3 guide's `"audio": true` beside its
|
|
90
|
+
`video` (#649), where frames alone leave the guide no audio to hold."""
|
|
87
91
|
try:
|
|
92
|
+
if with_audio:
|
|
93
|
+
return _fetch_audio_video(v, base_dir)
|
|
88
94
|
return fetch_video(v, base_dir)
|
|
89
95
|
except ValueError as error:
|
|
90
96
|
raise ValueError(
|
|
@@ -94,7 +100,30 @@ def fetch_video_with_context(v, base_dir, key):
|
|
|
94
100
|
) from error
|
|
95
101
|
|
|
96
102
|
|
|
97
|
-
def
|
|
103
|
+
def _fetch_audio_video(video_spec, base_dir=None):
|
|
104
|
+
"""A video file - a path, URL or {"location": ...} - loaded with its audio
|
|
105
|
+
as an AudioVideo. A deferred reference stays for later resolution, and a
|
|
106
|
+
value already loaded passes through, so a second realization keeps it."""
|
|
107
|
+
from .tasks.video_utils import is_video_location, load_audio_video
|
|
108
|
+
|
|
109
|
+
if isinstance(video_spec, str) and references.is_ref(
|
|
110
|
+
references.LAZY_MEDIA, video_spec
|
|
111
|
+
):
|
|
112
|
+
return video_spec
|
|
113
|
+
if is_video_location(video_spec):
|
|
114
|
+
return load_audio_video(video_spec, base_dir)
|
|
115
|
+
return video_spec
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def _rgb_keeping_alpha(image):
|
|
119
|
+
"""RGBA when the file carries transparency (an alpha band, or a palette
|
|
120
|
+
or greyscale image's transparency key), plain RGB otherwise."""
|
|
121
|
+
if "A" in image.getbands() or "transparency" in image.info:
|
|
122
|
+
return image.convert("RGBA")
|
|
123
|
+
return image.convert("RGB")
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def fetch_image(img_spec, base_dir=None, keep_alpha=False):
|
|
98
127
|
"""
|
|
99
128
|
Load image from file path or URL with security validation.
|
|
100
129
|
|
|
@@ -102,6 +131,10 @@ def fetch_image(img_spec, base_dir=None):
|
|
|
102
131
|
img_spec: Image specification (file path, URL, dict with 'location' key, PIL Image, or list of any of these)
|
|
103
132
|
base_dir: Directory relative file paths are resolved against - the
|
|
104
133
|
workflow file's directory. Defaults to the process working directory
|
|
134
|
+
keep_alpha: Load a file with transparency as RGBA instead of
|
|
135
|
+
flattening it to RGB. A pipeline input wants RGB; the finishing
|
|
136
|
+
commands (grade, sharpen, film_grain, apply_lut) put the alpha
|
|
137
|
+
back after their op, so a cutout stays a cutout (#775)
|
|
105
138
|
|
|
106
139
|
Returns:
|
|
107
140
|
Loaded PIL Image, list of PIL Images, or None if img_spec is None
|
|
@@ -116,7 +149,7 @@ def fetch_image(img_spec, base_dir=None):
|
|
|
116
149
|
# Handle lists of images (recursively process each)
|
|
117
150
|
if isinstance(img_spec, list):
|
|
118
151
|
logger.debug(f"Loading list of {len(img_spec)} images")
|
|
119
|
-
return [fetch_image(img, base_dir) for img in img_spec]
|
|
152
|
+
return [fetch_image(img, base_dir, keep_alpha) for img in img_spec]
|
|
120
153
|
|
|
121
154
|
# If already a PIL Image, return as-is (allows multiple realize_args calls)
|
|
122
155
|
if hasattr(img_spec, "mode") and hasattr(img_spec, "size"):
|
|
@@ -140,6 +173,7 @@ def fetch_image(img_spec, base_dir=None):
|
|
|
140
173
|
return img_spec
|
|
141
174
|
|
|
142
175
|
logger.debug(f"Loading image from: {img_spec}")
|
|
176
|
+
convert_method = _rgb_keeping_alpha if keep_alpha else None
|
|
143
177
|
|
|
144
178
|
try:
|
|
145
179
|
# Check if it's a URL
|
|
@@ -150,7 +184,7 @@ def fetch_image(img_spec, base_dir=None):
|
|
|
150
184
|
# without re-checking them; load_image still does the EXIF
|
|
151
185
|
# transpose and RGB conversion on the decoded result
|
|
152
186
|
response = safe_get(img_spec, "an image argument", timeout=60)
|
|
153
|
-
return load_image(Image.open(io.BytesIO(response.content)))
|
|
187
|
+
return load_image(Image.open(io.BytesIO(response.content)), convert_method)
|
|
154
188
|
else:
|
|
155
189
|
# Treat as file path, relative to the workflow file, and confined
|
|
156
190
|
# to the directories this workflow may read (dw/locations.py)
|
|
@@ -164,7 +198,7 @@ def fetch_image(img_spec, base_dir=None):
|
|
|
164
198
|
f"Image file extension not allowed: {ext} - a video file "
|
|
165
199
|
"must go through video_frames first"
|
|
166
200
|
)
|
|
167
|
-
return load_image(validated_path)
|
|
201
|
+
return load_image(validated_path, convert_method)
|
|
168
202
|
|
|
169
203
|
except SecurityError:
|
|
170
204
|
raise
|
|
@@ -209,24 +243,41 @@ def _declared_fps(path):
|
|
|
209
243
|
return None
|
|
210
244
|
|
|
211
245
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
decodes differently."""
|
|
218
|
-
from .tasks.video_utils import FrameList
|
|
246
|
+
@contextlib.contextmanager
|
|
247
|
+
def local_media_file(location, what, default_suffix=""):
|
|
248
|
+
"""`location` as a path a loader opens: a path as it is, an http(s) URL
|
|
249
|
+
fetched through `safe_get` into a temporary file that lasts as long as
|
|
250
|
+
the `with` block.
|
|
219
251
|
|
|
220
|
-
|
|
221
|
-
|
|
252
|
+
A loader handed a URL fetches it itself - diffusers' `load_video`,
|
|
253
|
+
`load_image` and its H3 references' `from_file` all call requests
|
|
254
|
+
directly, resolving the host a second time and following redirects
|
|
255
|
+
unchecked, with no cap on the body. Handed a path, they only decode.
|
|
256
|
+
The suffix comes from the URL, as those loaders' own downloads name
|
|
257
|
+
it, since a container is often told apart by it. The loader must have
|
|
258
|
+
read the file before the block ends.
|
|
259
|
+
"""
|
|
260
|
+
if not is_http_url(location):
|
|
261
|
+
yield location
|
|
262
|
+
return
|
|
263
|
+
response = safe_get(location, what, timeout=300)
|
|
264
|
+
suffix = os.path.splitext(unquote(urlparse(location).path))[1] or default_suffix
|
|
222
265
|
handle = tempfile.NamedTemporaryFile(suffix=suffix, delete=False)
|
|
223
266
|
try:
|
|
224
267
|
with handle:
|
|
225
268
|
handle.write(response.content)
|
|
226
|
-
|
|
227
|
-
fps = _declared_fps(handle.name)
|
|
269
|
+
yield handle.name
|
|
228
270
|
finally:
|
|
229
271
|
os.remove(handle.name)
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
def _fetch_remote_video(url):
|
|
275
|
+
"""A video URL's frames, decoded from `local_media_file`'s copy."""
|
|
276
|
+
from .tasks.video_utils import FrameList
|
|
277
|
+
|
|
278
|
+
with local_media_file(url, "a video argument", default_suffix=".mp4") as path:
|
|
279
|
+
frames = load_video(path)
|
|
280
|
+
fps = _declared_fps(path)
|
|
230
281
|
# A URL has no run beside it, so it carries no shots
|
|
231
282
|
return FrameList(frames, fps, None) if fps else frames
|
|
232
283
|
|
|
@@ -23,6 +23,7 @@ from .argument_media import (
|
|
|
23
23
|
fetch_image_with_context,
|
|
24
24
|
fetch_video,
|
|
25
25
|
fetch_video_with_context,
|
|
26
|
+
local_media_file,
|
|
26
27
|
)
|
|
27
28
|
from PIL import Image
|
|
28
29
|
from .security import (
|
|
@@ -139,7 +140,10 @@ def realize_args(arg, base_dir=None, apply_key_conventions=True):
|
|
|
139
140
|
# Handle video loading for keys ending in '_video' or exactly 'video'
|
|
140
141
|
elif apply_key_conventions and (k.endswith("_video") or k == "video"):
|
|
141
142
|
logger.debug(f"Loading video for key: {k}")
|
|
142
|
-
|
|
143
|
+
# A guide holding its soundtrack (#649) needs the file's audio too
|
|
144
|
+
arg[k] = fetch_video_with_context(
|
|
145
|
+
v, base_dir, k, with_audio=arg.get("audio") is True
|
|
146
|
+
)
|
|
143
147
|
# Handle type references, and the keys that only look like one
|
|
144
148
|
elif apply_key_conventions and (
|
|
145
149
|
k.endswith("_type") or k.endswith("_dtype") or k == "dtype"
|
|
@@ -511,9 +515,11 @@ def realize_object(value, base_dir=None):
|
|
|
511
515
|
k: v for k, v in value.items() if k not in (FROM_FILE_KEY, type_keys[0])
|
|
512
516
|
}
|
|
513
517
|
accepted, overrides = split_from_file_arguments(object_type, arguments)
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
)
|
|
518
|
+
# A URL is fetched here, through the host policy, and the type handed a
|
|
519
|
+
# path: diffusers' from_file downloads a URL with requests itself
|
|
520
|
+
with local_media_file(location, f"'{FROM_FILE_KEY}' media") as path:
|
|
521
|
+
built = object_type.from_file(path, **accepted)
|
|
522
|
+
return apply_field_overrides(built, overrides, object_type)
|
|
517
523
|
|
|
518
524
|
|
|
519
525
|
def split_from_file_arguments(object_type, arguments):
|
|
@@ -906,7 +912,9 @@ def resolve_relative_path(path, base_dir):
|
|
|
906
912
|
# get_frame and its two fixed-index siblings, and the assessment probes
|
|
907
913
|
# (dw/tasks/assess.py), which stream the file themselves - decoding it to a
|
|
908
914
|
# frame list first dropped the soundtrack they measure and failed every probe
|
|
909
|
-
# on an asset:/output: video (#387) -
|
|
915
|
+
# on an asset:/output: video (#387) - and window_video, which cuts the
|
|
916
|
+
# source's soundtrack with its frames and so reads the file with its audio
|
|
917
|
+
# (#601) - and trim_video, which cuts a soundtrack the same way (#627) - see _realize_lazy_frame_arguments
|
|
910
918
|
_LAZY_FRAME_COMMANDS = frozenset(
|
|
911
919
|
{
|
|
912
920
|
"get_frame",
|
|
@@ -915,6 +923,8 @@ _LAZY_FRAME_COMMANDS = frozenset(
|
|
|
915
923
|
"analyze_shots",
|
|
916
924
|
"analyze_seams",
|
|
917
925
|
"analyze_sync_drift",
|
|
926
|
+
"window_video",
|
|
927
|
+
"trim_video",
|
|
918
928
|
}
|
|
919
929
|
)
|
|
920
930
|
|
|
@@ -88,7 +88,10 @@ RULES = (
|
|
|
88
88
|
"threshold": -50.0,
|
|
89
89
|
"severity": "warn",
|
|
90
90
|
"says": "the track drops out at the join while both sides are voiced",
|
|
91
|
-
"unless":
|
|
91
|
+
"unless": (
|
|
92
|
+
f"either side's rms is at or below {HOLE_VOICED_DBFS} dBFS, or the"
|
|
93
|
+
" incoming shot is marked seam_fade_ms - a fade the caller asked for"
|
|
94
|
+
),
|
|
92
95
|
},
|
|
93
96
|
{
|
|
94
97
|
"name": "seam_frame_jump",
|
|
@@ -172,8 +172,9 @@ def warn_if_written_above_full_scale(
|
|
|
172
172
|
f"{name} decodes at {peak:+.2f} dBFS - above full scale, so it "
|
|
173
173
|
f"clips on playback. {cause}, so the fix is more headroom before "
|
|
174
174
|
f"the file is written: a 'normalize_audio' step at 'peak_dbfs: -3' "
|
|
175
|
-
f"ahead of the step that saves it
|
|
176
|
-
f"
|
|
175
|
+
f"ahead of the step that saves it (a template's intermediate shot has "
|
|
176
|
+
f"no such step to edit: set the join's 'match_levels' instead). A "
|
|
177
|
+
f"mux into a video needs more of it than an audio file does.",
|
|
177
178
|
kind="audio_clipped",
|
|
178
179
|
file=name,
|
|
179
180
|
peak_dbfs=round(peak, 2),
|
|
@@ -291,7 +292,8 @@ def remeasure_shots_after_mux(artifact, probed_info, output_path, video_fps):
|
|
|
291
292
|
round(probed_info["audio_stream_seconds"] * probed_info["sample_rate"])
|
|
292
293
|
)
|
|
293
294
|
measured_num_samples(artifact.shots, written_samples)
|
|
294
|
-
|
|
295
|
+
frames = getattr(artifact, "frames", None)
|
|
296
|
+
frame_count = 0 if frames is None else len(frames)
|
|
295
297
|
fps = video_fps(artifact)
|
|
296
298
|
if not (frame_count and fps):
|
|
297
299
|
return
|
|
@@ -340,10 +342,12 @@ def written_peak_already_warned(content_type, consumed_by_normalizer, headroom_w
|
|
|
340
342
|
|
|
341
343
|
Only a plain audio save suppresses the post-write check; a lossless one
|
|
342
344
|
only when a normalizer consumed it, a lossy one also when the pre-write
|
|
343
|
-
warning fired. A video
|
|
345
|
+
warning fired. A video gets the ground-truth check, unless a normalizer
|
|
346
|
+
or a level-matching join consumes it: that step resets the level it
|
|
347
|
+
ships at, so the file's own written peak is not the deliverable's (#671).
|
|
344
348
|
"""
|
|
345
349
|
if not content_type.startswith("audio"):
|
|
346
|
-
return
|
|
350
|
+
return consumed_by_normalizer
|
|
347
351
|
if content_type not in LOSSY_AUDIO_CONTENT_TYPES:
|
|
348
352
|
return consumed_by_normalizer
|
|
349
353
|
return headroom_warned or consumed_by_normalizer
|
|
@@ -414,7 +418,16 @@ def check_written_media(
|
|
|
414
418
|
# that predicted risk but measured merely close-but-clean says
|
|
415
419
|
# nothing. That is the file's own ground truth, not a threshold
|
|
416
420
|
# bug.
|
|
417
|
-
|
|
421
|
+
#
|
|
422
|
+
# A video a normalizer or level-matching join consumes skips both:
|
|
423
|
+
# that step resets the level it ships at, so neither the written
|
|
424
|
+
# peak nor the prediction is the deliverable's (#671)
|
|
425
|
+
if (
|
|
426
|
+
is_video
|
|
427
|
+
and headroom_warned
|
|
428
|
+
and not consumed_by_normalizer
|
|
429
|
+
and written_peak is None
|
|
430
|
+
):
|
|
418
431
|
warn_held_prediction(output_path, predicted_peak_dbfs)
|
|
419
432
|
source_mean_dbfs = getattr(artifact, "source_mean_dbfs", None)
|
|
420
433
|
warn_if_written_near_silent(
|