diffusers-workflow 0.13.0__tar.gz → 0.15.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.
Files changed (654) hide show
  1. {diffusers_workflow-0.13.0/diffusers_workflow.egg-info → diffusers_workflow-0.15.0}/PKG-INFO +3 -2
  2. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/README.md +1 -1
  3. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0/diffusers_workflow.egg-info}/PKG-INFO +3 -2
  4. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/diffusers_workflow.egg-info/SOURCES.txt +60 -22
  5. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/diffusers_workflow.egg-info/requires.txt +1 -0
  6. diffusers_workflow-0.15.0/dw/acceleration_warnings.py +311 -0
  7. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/adapter_compatibility.py +160 -44
  8. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/assessment_rules.py +5 -4
  9. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/cache_blocks.json +5 -0
  10. diffusers_workflow-0.15.0/dw/cost_scaling.py +300 -0
  11. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/docs/ACCELERATION.md +86 -20
  12. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/docs/ARCHITECTURE.md +25 -13
  13. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/docs/DEPENDENCIES.md +2 -0
  14. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/docs/LORAS.md +7 -1
  15. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/docs/MCP.md +23 -15
  16. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/docs/QUANTIZATION.md +2 -0
  17. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/docs/RECIPES_24GB.md +1 -1
  18. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/docs/RELEASING.md +174 -3
  19. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/docs/SECURITY.md +26 -0
  20. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/docs/SERVER.md +180 -18
  21. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/docs/TASKS.md +21 -3
  22. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/docs/WORKFLOW_GUIDE.md +92 -6
  23. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/docs/WORKSPACES.md +178 -0
  24. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/for_each.py +8 -0
  25. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/host_memory.py +13 -0
  26. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/host_memory_projection.py +72 -27
  27. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/hub_cache.py +157 -16
  28. diffusers_workflow-0.15.0/dw/media_compare.py +418 -0
  29. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/media_frames.py +61 -33
  30. diffusers_workflow-0.15.0/dw/notes.py +177 -0
  31. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/pipeline_ownership.py +3 -0
  32. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/pipeline_processors/components.py +204 -12
  33. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/pipeline_processors/config_objects.py +7 -1
  34. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/pipeline_processors/h3_guides.py +62 -1
  35. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/pipeline_processors/pipeline.py +66 -63
  36. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/pipeline_processors/progress.py +5 -0
  37. diffusers_workflow-0.15.0/dw/pipeline_processors/timing.py +502 -0
  38. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/plan.py +174 -173
  39. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/realize.py +5 -0
  40. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/references.py +28 -0
  41. diffusers_workflow-0.15.0/dw/roles.py +320 -0
  42. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/runs.py +105 -13
  43. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/script_lines.py +134 -18
  44. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/security.py +29 -2
  45. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/admission.py +72 -6
  46. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/api_models.py +209 -224
  47. diffusers_workflow-0.15.0/dw/server/api_models_base.py +55 -0
  48. diffusers_workflow-0.15.0/dw/server/api_models_library.py +214 -0
  49. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/app.py +2 -0
  50. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/deps.py +179 -19
  51. diffusers_workflow-0.15.0/dw/server/dispatch.py +136 -0
  52. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/exports.py +16 -0
  53. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/guides.py +1 -1
  54. diffusers_workflow-0.15.0/dw/server/host_ram_need.py +117 -0
  55. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/job_history.py +173 -85
  56. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/job_record.py +26 -0
  57. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/job_results.py +23 -0
  58. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/jobs.py +157 -53
  59. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/observed_cost.py +7 -1
  60. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/outputs.py +212 -0
  61. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/pool.py +37 -4
  62. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/routes/assets.py +119 -6
  63. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/routes/gallery.py +71 -26
  64. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/routes/jobs.py +33 -12
  65. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/routes/library.py +106 -1
  66. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/routes/loras.py +1 -26
  67. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/routes/media.py +389 -12
  68. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/routes/system.py +5 -2
  69. diffusers_workflow-0.13.0/dw/server/ui/assets/cssMode-QzCkHHkC.js → diffusers_workflow-0.15.0/dw/server/ui/assets/cssMode-D_BuRO9Y.js +1 -1
  70. diffusers_workflow-0.13.0/dw/server/ui/assets/editor.api-LvRbw1iL.js → diffusers_workflow-0.15.0/dw/server/ui/assets/editor.api-B6pi6BSE.js +1 -1
  71. diffusers_workflow-0.13.0/dw/server/ui/assets/freemarker2-BFEReHqW.js → diffusers_workflow-0.15.0/dw/server/ui/assets/freemarker2-mPiw3NV_.js +1 -1
  72. diffusers_workflow-0.13.0/dw/server/ui/assets/handlebars--qZ0WvL7.js → diffusers_workflow-0.15.0/dw/server/ui/assets/handlebars-BfGb596Y.js +1 -1
  73. diffusers_workflow-0.13.0/dw/server/ui/assets/html-Bs0VSJAA.js → diffusers_workflow-0.15.0/dw/server/ui/assets/html-xXIqw-JZ.js +1 -1
  74. diffusers_workflow-0.13.0/dw/server/ui/assets/htmlMode-DrsyYX5n.js → diffusers_workflow-0.15.0/dw/server/ui/assets/htmlMode-B3FC_H4q.js +1 -1
  75. diffusers_workflow-0.15.0/dw/server/ui/assets/index-Civ6zDZP.js +64 -0
  76. diffusers_workflow-0.15.0/dw/server/ui/assets/index-PRSQwOeN.css +1 -0
  77. diffusers_workflow-0.13.0/dw/server/ui/assets/javascript-C3KR7rul.js → diffusers_workflow-0.15.0/dw/server/ui/assets/javascript-B-FFcgST.js +1 -1
  78. diffusers_workflow-0.13.0/dw/server/ui/assets/jsonMode-DEXt-mqp.js → diffusers_workflow-0.15.0/dw/server/ui/assets/jsonMode-BELbxUQD.js +1 -1
  79. diffusers_workflow-0.13.0/dw/server/ui/assets/liquid-ByBJuq1e.js → diffusers_workflow-0.15.0/dw/server/ui/assets/liquid-CxXhb7_e.js +1 -1
  80. diffusers_workflow-0.13.0/dw/server/ui/assets/lspLanguageFeatures-6nDoG86-.js → diffusers_workflow-0.15.0/dw/server/ui/assets/lspLanguageFeatures-sXyBqSzn.js +1 -1
  81. diffusers_workflow-0.13.0/dw/server/ui/assets/mdx-BH2GyjV6.js → diffusers_workflow-0.15.0/dw/server/ui/assets/mdx-4jPGQ4yb.js +1 -1
  82. diffusers_workflow-0.13.0/dw/server/ui/assets/monaco-B6Bmfo5o.js → diffusers_workflow-0.15.0/dw/server/ui/assets/monaco-ByFdQnrs.js +4 -4
  83. diffusers_workflow-0.13.0/dw/server/ui/assets/python-C1sJMrAm.js → diffusers_workflow-0.15.0/dw/server/ui/assets/python-D3CL9Y6O.js +1 -1
  84. diffusers_workflow-0.13.0/dw/server/ui/assets/razor-BdPZ4bvZ.js → diffusers_workflow-0.15.0/dw/server/ui/assets/razor-F_hjmtqk.js +1 -1
  85. diffusers_workflow-0.13.0/dw/server/ui/assets/tsMode-DW5i-ukN.js → diffusers_workflow-0.15.0/dw/server/ui/assets/tsMode-BiyDvHYY.js +1 -1
  86. diffusers_workflow-0.13.0/dw/server/ui/assets/typescript-C_QzKQY3.js → diffusers_workflow-0.15.0/dw/server/ui/assets/typescript-DBE1Uz0U.js +1 -1
  87. diffusers_workflow-0.13.0/dw/server/ui/assets/workers-DHqaOvh8.js → diffusers_workflow-0.15.0/dw/server/ui/assets/workers-Ci7sZ35J.js +1 -1
  88. diffusers_workflow-0.13.0/dw/server/ui/assets/xml-D3UEcM_2.js → diffusers_workflow-0.15.0/dw/server/ui/assets/xml-Eqpmo6a1.js +1 -1
  89. diffusers_workflow-0.13.0/dw/server/ui/assets/yaml-C0TnGcnd.js → diffusers_workflow-0.15.0/dw/server/ui/assets/yaml-BNP_JiwW.js +1 -1
  90. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/index.html +2 -2
  91. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/shot_span_preflight.py +44 -1
  92. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/shots.py +28 -0
  93. diffusers_workflow-0.15.0/dw/sparse_attention.py +669 -0
  94. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/step_cache.py +51 -2
  95. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/step_value_checks.py +78 -1
  96. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/concat_videos.py +88 -9
  97. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/joins.py +4 -0
  98. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/loop_bed.py +50 -8
  99. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/script_check.py +153 -5
  100. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/speech_generation.py +46 -18
  101. diffusers_workflow-0.15.0/dw/tasks/text_generation.py +465 -0
  102. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/trust.py +33 -0
  103. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/type_references.py +42 -8
  104. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/validation.py +49 -9
  105. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/variables.py +14 -0
  106. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/vram_estimate.py +22 -0
  107. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/vram_inheritance.py +171 -18
  108. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/worker.py +10 -1
  109. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/worker_manager.py +38 -5
  110. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/worker_protocol.py +13 -2
  111. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/workflow.py +3 -0
  112. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/workflow_run.py +118 -47
  113. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/workflow_schema.json +48 -7
  114. diffusers_workflow-0.15.0/dw/workflows/flux3_klein_upsample.json +33 -0
  115. diffusers_workflow-0.15.0/dw/workflows/flux3_klein_upsample_edit.json +51 -0
  116. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/workspace.py +7 -2
  117. diffusers_workflow-0.15.0/dw/workspace_copy.py +573 -0
  118. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw_mcp/assets.py +45 -11
  119. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw_mcp/catalog.py +41 -9
  120. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw_mcp/client.py +18 -1
  121. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw_mcp/diagnose.py +9 -2
  122. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw_mcp/media.py +58 -0
  123. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw_mcp/server.py +12 -12
  124. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw_mcp/tools_authoring.py +22 -1
  125. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw_mcp/tools_catalog.py +27 -34
  126. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw_mcp/tools_jobs.py +14 -6
  127. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw_mcp/tools_media.py +53 -7
  128. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw_mcp/workspaces.py +21 -7
  129. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/pyproject.toml +6 -1
  130. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_admission_capacity.py +4 -1
  131. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_api_contract.py +5 -0
  132. diffusers_workflow-0.15.0/tests/test_attention_backend_trace.py +29 -0
  133. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_cache_blocks.py +195 -0
  134. diffusers_workflow-0.15.0/tests/test_cache_stats.py +413 -0
  135. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_catalog_speed_defaults.py +6 -1
  136. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_catalog_structure.py +167 -3
  137. diffusers_workflow-0.15.0/tests/test_compare_route.py +325 -0
  138. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_concat_videos.py +62 -0
  139. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_config_objects.py +21 -0
  140. diffusers_workflow-0.15.0/tests/test_dependencies_declared.py +9 -0
  141. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_find_loop_bed.py +19 -0
  142. diffusers_workflow-0.15.0/tests/test_flux3_catalog.py +188 -0
  143. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_for_each.py +6 -0
  144. diffusers_workflow-0.15.0/tests/test_forget_workspace_history.py +46 -0
  145. diffusers_workflow-0.15.0/tests/test_gallery_roles.py +411 -0
  146. diffusers_workflow-0.15.0/tests/test_h3_adapters.py +369 -0
  147. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_h3_guides.py +2 -3
  148. diffusers_workflow-0.15.0/tests/test_h3_sparse_defaults.py +45 -0
  149. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_host_memory.py +13 -0
  150. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_host_memory_projection.py +6 -3
  151. diffusers_workflow-0.15.0/tests/test_host_ram_need.py +392 -0
  152. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_hub_cache.py +215 -1
  153. diffusers_workflow-0.15.0/tests/test_inherited_cost.py +772 -0
  154. diffusers_workflow-0.15.0/tests/test_job_history_wal.py +58 -0
  155. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_jobs_listing.py +36 -0
  156. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_mcp_assets.py +38 -0
  157. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_mcp_catalog.py +72 -0
  158. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_mcp_client.py +12 -0
  159. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_mcp_diagnose.py +80 -1
  160. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_mcp_server.py +135 -1
  161. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_mcp_workspaces.py +11 -0
  162. diffusers_workflow-0.15.0/tests/test_media_compare.py +187 -0
  163. diffusers_workflow-0.15.0/tests/test_notes.py +79 -0
  164. diffusers_workflow-0.15.0/tests/test_notes_api.py +617 -0
  165. diffusers_workflow-0.15.0/tests/test_notes_bookkeeping.py +83 -0
  166. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_observed_cost.py +71 -2
  167. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_pipeline_components.py +27 -0
  168. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_plan.py +690 -28
  169. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_plugin_skills.py +81 -0
  170. diffusers_workflow-0.15.0/tests/test_rerun_lineage.py +69 -0
  171. diffusers_workflow-0.15.0/tests/test_roles.py +366 -0
  172. diffusers_workflow-0.15.0/tests/test_run_manifest_roles.py +159 -0
  173. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_script_check.py +161 -3
  174. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_security_ssrf.py +14 -0
  175. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_security_trust_gate.py +100 -0
  176. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_server.py +47 -2
  177. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_server_guides.py +45 -0
  178. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_server_jobs.py +37 -0
  179. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_server_loras.py +107 -0
  180. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_server_workspaces.py +5 -0
  181. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_shot_span_preflight.py +62 -1
  182. diffusers_workflow-0.15.0/tests/test_sparse_attention_backends.py +111 -0
  183. diffusers_workflow-0.15.0/tests/test_sparse_attention_processor.py +597 -0
  184. diffusers_workflow-0.15.0/tests/test_sparse_attention_tiles.py +63 -0
  185. diffusers_workflow-0.15.0/tests/test_sparse_attention_wiring.py +699 -0
  186. diffusers_workflow-0.15.0/tests/test_stars.py +61 -0
  187. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_step_cache.py +49 -30
  188. diffusers_workflow-0.15.0/tests/test_step_timing.py +637 -0
  189. diffusers_workflow-0.15.0/tests/test_text_generation.py +734 -0
  190. diffusers_workflow-0.15.0/tests/test_unbraced_type_warning.py +45 -0
  191. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_validate_arguments.py +21 -0
  192. diffusers_workflow-0.15.0/tests/test_validation.py +1082 -0
  193. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_vram_estimate.py +20 -0
  194. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_worker_execute.py +30 -0
  195. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_worker_manager.py +26 -0
  196. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_worker_messages.py +9 -0
  197. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_worker_pool.py +389 -13
  198. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_workflow_step_cache.py +109 -0
  199. diffusers_workflow-0.15.0/tests/test_workspace_copy.py +903 -0
  200. diffusers_workflow-0.13.0/dw/server/ui/assets/index-BgBhcVj3.js +0 -54
  201. diffusers_workflow-0.13.0/dw/server/ui/assets/index-DSM5LA24.css +0 -1
  202. diffusers_workflow-0.13.0/dw/tasks/text_generation.py +0 -169
  203. diffusers_workflow-0.13.0/tests/test_h3_adapters.py +0 -195
  204. diffusers_workflow-0.13.0/tests/test_inherited_cost.py +0 -225
  205. diffusers_workflow-0.13.0/tests/test_job_history_wal.py +0 -14
  206. diffusers_workflow-0.13.0/tests/test_text_generation.py +0 -340
  207. diffusers_workflow-0.13.0/tests/test_validation.py +0 -435
  208. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/LICENSE +0 -0
  209. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/MANIFEST.in +0 -0
  210. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/diffusers_workflow.egg-info/dependency_links.txt +0 -0
  211. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/diffusers_workflow.egg-info/entry_points.txt +0 -0
  212. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/diffusers_workflow.egg-info/top_level.txt +0 -0
  213. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/__init__.py +0 -0
  214. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/argument_media.py +0 -0
  215. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/argument_warnings.py +0 -0
  216. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/arguments.py +0 -0
  217. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/assets.py +0 -0
  218. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/audio_qc.py +0 -0
  219. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/cache_blocks.py +0 -0
  220. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/community_pipelines/pipeline_flux_rf_inversion.py +0 -0
  221. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/community_pipelines/pipeline_ltx2_refine.py +0 -0
  222. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/content_types.py +0 -0
  223. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/devices.py +0 -0
  224. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/disk_caches.py +0 -0
  225. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/dissolve_frame_errors.py +0 -0
  226. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/docs/AGENT_LOOP.md +0 -0
  227. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/docs/IP_ADAPTER.md +0 -0
  228. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/docs/PROMPT_WEIGHTING.md +0 -0
  229. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/docs/REMOTE.md +0 -0
  230. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/docs/SECURITY_QUICKREF.md +0 -0
  231. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/docs/TESTING.md +0 -0
  232. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/docs/WORKER_GUIDE.md +0 -0
  233. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/download_watch.py +0 -0
  234. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/dsp.py +0 -0
  235. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/elision.py +0 -0
  236. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/events.py +0 -0
  237. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/guides.py +0 -0
  238. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/hold_audio.py +0 -0
  239. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/introspection.py +0 -0
  240. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/kernel_availability.py +0 -0
  241. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/library.py +0 -0
  242. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/locations.py +0 -0
  243. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/log_setup.py +0 -0
  244. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/lora_catalog.py +0 -0
  245. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/lora_catalog_schema.json +0 -0
  246. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/lora_hub.py +0 -0
  247. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/media.py +0 -0
  248. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/media_types.py +0 -0
  249. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/outbound.py +0 -0
  250. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/output_extraction.py +0 -0
  251. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/path_redaction.py +0 -0
  252. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/pipeline_processors/adapters.py +0 -0
  253. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/pipeline_processors/chain.py +0 -0
  254. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/pipeline_processors/h3_guide_steps.py +0 -0
  255. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/pipeline_processors/h3_hold.py +0 -0
  256. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/pipeline_processors/h3_hold_steps.py +0 -0
  257. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/pipeline_processors/h3_rules.py +0 -0
  258. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/pipeline_processors/placement.py +0 -0
  259. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/pipeline_processors/remote.py +0 -0
  260. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/previous_results.py +0 -0
  261. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/probe_paths.py +0 -0
  262. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/prompt_schema.json +0 -0
  263. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/prompt_weighting.py +0 -0
  264. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/prompts.py +0 -0
  265. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/quantized_cache.py +0 -0
  266. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/reference_limits.py +0 -0
  267. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/reference_names.py +0 -0
  268. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/result.py +0 -0
  269. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/run.py +0 -0
  270. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/scalar_result_validation.py +0 -0
  271. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/schema.py +0 -0
  272. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/serve.py +0 -0
  273. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/__init__.py +0 -0
  274. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/assess.py +0 -0
  275. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/catalog.py +0 -0
  276. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/catalog_shape.py +0 -0
  277. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/enhancers.py +0 -0
  278. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/http_security.py +0 -0
  279. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/inline_media.py +0 -0
  280. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/mcp_mount.py +0 -0
  281. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/netinfo.py +0 -0
  282. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/routes/__init__.py +0 -0
  283. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/routes/files.py +0 -0
  284. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/sysinfo.py +0 -0
  285. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/abap-08VXUWAP.js +0 -0
  286. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/apex-BWPQTe0t.js +0 -0
  287. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/azcli-Bc_sGQ0U.js +0 -0
  288. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/bat-i0X4ZdIN.js +0 -0
  289. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/bicep-B5-_aFwp.js +0 -0
  290. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/cameligo-DMUM7wLl.js +0 -0
  291. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/clojure-Cm7r79vr.js +0 -0
  292. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/codicon-DF1abBS2.ttf +0 -0
  293. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/coffee-Ba7i2nA0.js +0 -0
  294. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/cpp-C7h46wYY.js +0 -0
  295. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/csharp-BKxtCVv1.js +0 -0
  296. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/csp-bTuwJoIa.js +0 -0
  297. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/css-DIMkf-bt.js +0 -0
  298. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/css.worker-C6lDtRpF.js +0 -0
  299. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/cypher-CVaqCwHa.js +0 -0
  300. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/dart-onAF5SnQ.js +0 -0
  301. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/dockerfile-DZFCIeNp.js +0 -0
  302. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/ecl-D05T4iGw.js +0 -0
  303. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/editor-DjpsE8to.css +0 -0
  304. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/editor.worker-BmdWdrHZ.js +0 -0
  305. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/elixir-6RTg0lbw.js +0 -0
  306. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/flow9-C5_-GSwl.js +0 -0
  307. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/fsharp-C8Ef5oNN.js +0 -0
  308. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/go-C-y9NEjX.js +0 -0
  309. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/graphql-fmXr3nnJ.js +0 -0
  310. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/hcl-CpzslTdj.js +0 -0
  311. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/html.worker-C5yZDBHz.js +0 -0
  312. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/ini-sBoK_t0W.js +0 -0
  313. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/java-BEtHBSE6.js +0 -0
  314. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/json.worker-DdeUAmHa.js +0 -0
  315. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/julia-Bri6UV-V.js +0 -0
  316. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/kotlin-BOotOW0E.js +0 -0
  317. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/less-B9JPFI3C.js +0 -0
  318. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/lexon-CfSJPG6W.js +0 -0
  319. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/lua-CsQS60Ue.js +0 -0
  320. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/m3-D-oSqn_W.js +0 -0
  321. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/markdown-Cimd5fb3.js +0 -0
  322. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/mips-CIPQ_RoX.js +0 -0
  323. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/monaco-n7clI0si.css +0 -0
  324. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/msdax-DauUninz.js +0 -0
  325. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/mysql-SOo6toE5.js +0 -0
  326. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/objective-c-FvmIjYaQ.js +0 -0
  327. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/pascal-DrH0SRf2.js +0 -0
  328. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/pascaligo-D-ptJ9y-.js +0 -0
  329. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/perl-oz_6vUea.js +0 -0
  330. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/pgsql-DTj74zXo.js +0 -0
  331. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/php-nr791fC2.js +0 -0
  332. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/pla-CopQ2nXW.js +0 -0
  333. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/postiats-43DmfD33.js +0 -0
  334. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/powerquery-D3hlyOfw.js +0 -0
  335. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/powershell-DmHpPYUd.js +0 -0
  336. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/protobuf-C531GsRP.js +0 -0
  337. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/pug-Z5eAx3Zn.js +0 -0
  338. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/qsharp-DkqhCAOL.js +0 -0
  339. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/r-BwWrilGY.js +0 -0
  340. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/redis-ClamHrr6.js +0 -0
  341. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/redshift-DT7zqm-g.js +0 -0
  342. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/restructuredtext-BYgofb2h.js +0 -0
  343. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/ruby-DezsRK8O.js +0 -0
  344. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/rust-DdL9SqIa.js +0 -0
  345. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/sb-CcwsVR0C.js +0 -0
  346. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/scala-DHpiXF5c.js +0 -0
  347. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/scheme-BeGwcela.js +0 -0
  348. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/scss-gp-XZpBa.js +0 -0
  349. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/shell-CC2rA5mh.js +0 -0
  350. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/solidity-BEEn4gHE.js +0 -0
  351. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/sophia-CRfGWb83.js +0 -0
  352. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/sparql-D_Lu-MrJ.js +0 -0
  353. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/sql-NEE52Syq.js +0 -0
  354. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/st-DbInun42.js +0 -0
  355. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/swift-Bxkupp3x.js +0 -0
  356. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/systemverilog-Bz4Y3fRF.js +0 -0
  357. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/tcl-DISqw1ZD.js +0 -0
  358. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/ts.worker-DGGa2mF8.js +0 -0
  359. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/twig-De2hgUGE.js +0 -0
  360. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/typespec-B8J7ngcE.js +0 -0
  361. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/vb-DV3o63ZY.js +0 -0
  362. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/ui/assets/wgsl-DpFanUEy.js +0 -0
  363. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/updater.py +0 -0
  364. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/server/worker_memory.py +0 -0
  365. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/settings.py +0 -0
  366. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/slice_preflight.py +0 -0
  367. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/step.py +0 -0
  368. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/subfolders.py +0 -0
  369. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/task_domains.py +0 -0
  370. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/task_problems.py +0 -0
  371. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/assess.py +0 -0
  372. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/audio_dynamics.py +0 -0
  373. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/audio_handlers.py +0 -0
  374. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/audio_transcription.py +0 -0
  375. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/audio_utils.py +0 -0
  376. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/background_remover.py +0 -0
  377. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/beats.py +0 -0
  378. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/borders.py +0 -0
  379. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/compose_text.py +0 -0
  380. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/cuts.py +0 -0
  381. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/depth_estimator.py +0 -0
  382. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/diffusion_upscale.py +0 -0
  383. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/dissolve_videos.py +0 -0
  384. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/face_track.py +0 -0
  385. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/finish.py +0 -0
  386. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/finish_handlers.py +0 -0
  387. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/fit.py +0 -0
  388. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/format_messages.py +0 -0
  389. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/gather.py +0 -0
  390. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/grade.py +0 -0
  391. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/h3_latent_upscale.py +0 -0
  392. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/h3_latent_upscaler_model.py +0 -0
  393. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/image_ops.py +0 -0
  394. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/image_to_text.py +0 -0
  395. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/image_utils.py +0 -0
  396. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/interpolate_frames.py +0 -0
  397. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/join_into_song.py +0 -0
  398. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/judge.py +0 -0
  399. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/lut.py +0 -0
  400. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/measure_sync.py +0 -0
  401. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/model_cache.py +0 -0
  402. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/model_handlers.py +0 -0
  403. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/pair_audio.py +0 -0
  404. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/qr_code.py +0 -0
  405. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/registry.py +0 -0
  406. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/restore_faces.py +0 -0
  407. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/rife_model.py +0 -0
  408. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/segment.py +0 -0
  409. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/select.py +0 -0
  410. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/stabilize.py +0 -0
  411. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/task.py +0 -0
  412. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/tensor_image.py +0 -0
  413. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/text_sections.py +0 -0
  414. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/trim.py +0 -0
  415. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/upscale.py +0 -0
  416. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/video_handlers.py +0 -0
  417. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/video_utils.py +0 -0
  418. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/voice_attribution.py +0 -0
  419. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/windows.py +0 -0
  420. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/tasks/zoe_depth.py +0 -0
  421. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/test.py +0 -0
  422. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/type_helpers.py +0 -0
  423. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/validate.py +0 -0
  424. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/variable_constraints.py +0 -0
  425. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/video_extensions.py +0 -0
  426. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/video_size_errors.py +0 -0
  427. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/window_count_errors.py +0 -0
  428. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/workflows/h3_context_ir.json +0 -0
  429. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/workflows/test.json +0 -0
  430. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw/writers.py +0 -0
  431. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw_mcp/__init__.py +0 -0
  432. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw_mcp/__main__.py +0 -0
  433. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw_mcp/authoring.py +0 -0
  434. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw_mcp/confine.py +0 -0
  435. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw_mcp/exports.py +0 -0
  436. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw_mcp/guides.py +0 -0
  437. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw_mcp/loras.py +0 -0
  438. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw_mcp/models.py +0 -0
  439. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/dw_mcp/prompts.py +0 -0
  440. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/setup.cfg +0 -0
  441. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_admission.py +0 -0
  442. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_analyze_beats.py +0 -0
  443. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_arch_metrics.py +0 -0
  444. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_arch_report.py +0 -0
  445. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_architecture_map.py +0 -0
  446. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_argument_updates.py +0 -0
  447. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_arguments.py +0 -0
  448. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_assemble_and_score_target_lufs.py +0 -0
  449. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_assess.py +0 -0
  450. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_assessment_rules.py +0 -0
  451. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_assets.py +0 -0
  452. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_attention_slicing.py +0 -0
  453. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_audio_utils.py +0 -0
  454. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_best_of_n_template.py +0 -0
  455. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_borders.py +0 -0
  456. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_catalog_shape.py +0 -0
  457. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_chain.py +0 -0
  458. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_ci_config.py +0 -0
  459. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_cli.py +0 -0
  460. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_component_name_errors.py +0 -0
  461. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_component_pruning.py +0 -0
  462. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_component_type_errors.py +0 -0
  463. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_compose_text.py +0 -0
  464. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_configuration_schema.py +0 -0
  465. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_content_types.py +0 -0
  466. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_depth_estimator.py +0 -0
  467. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_device.py +0 -0
  468. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_device_helpers.py +0 -0
  469. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_device_portability.py +0 -0
  470. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_dialogue_short_voices.py +0 -0
  471. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_diffusion_upscale.py +0 -0
  472. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_disk_caches.py +0 -0
  473. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_dissolve_frame_errors.py +0 -0
  474. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_dissolve_videos.py +0 -0
  475. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_docs_links.py +0 -0
  476. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_download_watch.py +0 -0
  477. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_dsp.py +0 -0
  478. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_elision.py +0 -0
  479. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_events.py +0 -0
  480. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_examples.py +0 -0
  481. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_face_track.py +0 -0
  482. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_faststart.py +0 -0
  483. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_finish.py +0 -0
  484. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_fit_templates.py +0 -0
  485. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_fit_to_model.py +0 -0
  486. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_gather.py +0 -0
  487. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_grade.py +0 -0
  488. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_guide_chain_validation.py +0 -0
  489. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_guides_validation.py +0 -0
  490. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_h3_context_ir.py +0 -0
  491. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_h3_hold_audio.py +0 -0
  492. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_h3_latent_upscale.py +0 -0
  493. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_h3_refine.py +0 -0
  494. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_h3_rules.py +0 -0
  495. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_h3_schedule.py +0 -0
  496. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_h3_upscaler_source.py +0 -0
  497. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_h3_vram_ceiling.py +0 -0
  498. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_hf_placement.py +0 -0
  499. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_image_ops.py +0 -0
  500. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_image_to_text.py +0 -0
  501. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_image_utils.py +0 -0
  502. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_inductor_cache_default.py +0 -0
  503. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_ingredients_grid.py +0 -0
  504. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_integration.py +0 -0
  505. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_interpolate_frames.py +0 -0
  506. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_introspection.py +0 -0
  507. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_job_history_device.py +0 -0
  508. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_job_progress.py +0 -0
  509. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_job_warnings.py +0 -0
  510. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_jobs_reused.py +0 -0
  511. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_join_into_song.py +0 -0
  512. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_join_windows.py +0 -0
  513. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_judge.py +0 -0
  514. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_kernel_availability.py +0 -0
  515. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_library_path.py +0 -0
  516. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_library_sources.py +0 -0
  517. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_list_images.py +0 -0
  518. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_locations.py +0 -0
  519. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_lora_alpha.py +0 -0
  520. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_lora_catalog.py +0 -0
  521. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_lora_disable.py +0 -0
  522. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_lora_hub.py +0 -0
  523. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_lora_library.py +0 -0
  524. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_ltx2_diffusion_decode.py +0 -0
  525. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_ltx2_extend_clip.py +0 -0
  526. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_ltx2_ic_loras.py +0 -0
  527. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_ltx2_refine_pipeline.py +0 -0
  528. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_ltx_prompt_library.py +0 -0
  529. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_lut.py +0 -0
  530. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_mcp_authoring.py +0 -0
  531. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_mcp_confine.py +0 -0
  532. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_mcp_exports.py +0 -0
  533. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_mcp_guides.py +0 -0
  534. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_mcp_loras.py +0 -0
  535. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_mcp_main.py +0 -0
  536. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_mcp_media.py +0 -0
  537. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_mcp_models.py +0 -0
  538. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_mcp_prompts.py +0 -0
  539. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_mcp_twins.py +0 -0
  540. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_measure_sync.py +0 -0
  541. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_media_audio.py +0 -0
  542. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_media_decode_threads.py +0 -0
  543. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_media_frames.py +0 -0
  544. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_media_info.py +0 -0
  545. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_media_layering.py +0 -0
  546. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_mix_audio.py +0 -0
  547. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_model_cache.py +0 -0
  548. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_modular_output_properties.py +0 -0
  549. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_modular_pipeline.py +0 -0
  550. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_modular_progress.py +0 -0
  551. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_mps_fallback_warning.py +0 -0
  552. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_mps_rope_precision.py +0 -0
  553. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_null_media.py +0 -0
  554. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_numeric_coercion.py +0 -0
  555. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_offload_placement.py +0 -0
  556. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_outbound.py +0 -0
  557. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_output_references.py +0 -0
  558. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_pair_audio.py +0 -0
  559. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_pair_audio_fit.py +0 -0
  560. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_parallel_loading_default.py +0 -0
  561. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_path_redaction.py +0 -0
  562. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_phase_events.py +0 -0
  563. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_pipeline_caching.py +0 -0
  564. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_plan_cuts.py +0 -0
  565. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_prepare_pipeline.py +0 -0
  566. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_previous_result_walker_parity.py +0 -0
  567. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_previous_results.py +0 -0
  568. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_prompt_library.py +0 -0
  569. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_prompt_parser.py +0 -0
  570. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_prompt_references.py +0 -0
  571. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_prompt_weighting.py +0 -0
  572. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_prompts.py +0 -0
  573. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_quantized_cache.py +0 -0
  574. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_read_frame_range.py +0 -0
  575. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_real_models.py +0 -0
  576. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_realize.py +0 -0
  577. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_recenter_crop.py +0 -0
  578. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_reference_limits.py +0 -0
  579. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_reference_names.py +0 -0
  580. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_reference_skip_sets.py +0 -0
  581. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_references.py +0 -0
  582. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_rerun_new_seed.py +0 -0
  583. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_resize_bucket.py +0 -0
  584. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_restore_faces_helper_cache.py +0 -0
  585. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_restore_faces_video.py +0 -0
  586. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_result.py +0 -0
  587. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_result_fps.py +0 -0
  588. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_result_output_naming.py +0 -0
  589. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_rule_parity.py +0 -0
  590. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_runs.py +0 -0
  591. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_runtime_settings.py +0 -0
  592. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_scalar_result_validation.py +0 -0
  593. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_scheduler_config.py +0 -0
  594. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_schema.py +0 -0
  595. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_security.py +0 -0
  596. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_security_auth.py +0 -0
  597. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_security_decoder_bombs.py +0 -0
  598. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_security_input_caps.py +0 -0
  599. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_security_symlinks.py +0 -0
  600. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_security_web_headers.py +0 -0
  601. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_segment.py +0 -0
  602. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_select.py +0 -0
  603. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_select_validation.py +0 -0
  604. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_separate_stems.py +0 -0
  605. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_serve_main.py +0 -0
  606. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_server_assess.py +0 -0
  607. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_server_downloads.py +0 -0
  608. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_server_exports.py +0 -0
  609. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_server_gallery_image.py +0 -0
  610. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_server_info.py +0 -0
  611. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_server_library_path.py +0 -0
  612. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_server_mcp.py +0 -0
  613. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_shaping_logs.py +0 -0
  614. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_shots.py +0 -0
  615. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_slice_preflight.py +0 -0
  616. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_speech_generation.py +0 -0
  617. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_stabilize.py +0 -0
  618. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_step.py +0 -0
  619. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_strip_exif_and_watermark.py +0 -0
  620. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_sub_workflow_resolver.py +0 -0
  621. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_subfolders.py +0 -0
  622. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_task.py +0 -0
  623. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_task_discovery.py +0 -0
  624. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_task_domains.py +0 -0
  625. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_task_public_imports.py +0 -0
  626. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_task_registry_rules.py +0 -0
  627. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_task_signature_errors.py +0 -0
  628. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_template_defaults.py +0 -0
  629. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_template_subfolders.py +0 -0
  630. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_tensor_image.py +0 -0
  631. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_text_sections.py +0 -0
  632. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_transcribe_audio.py +0 -0
  633. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_trim_video.py +0 -0
  634. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_type_helpers.py +0 -0
  635. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_type_helpers_concurrency.py +0 -0
  636. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_ui_twins.py +0 -0
  637. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_updater.py +0 -0
  638. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_variable_constraints.py +0 -0
  639. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_variables.py +0 -0
  640. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_video_extensions.py +0 -0
  641. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_video_size_errors.py +0 -0
  642. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_video_utils.py +0 -0
  643. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_voice_attribution.py +0 -0
  644. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_vram_guides.py +0 -0
  645. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_vram_inheritance.py +0 -0
  646. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_window_count_errors.py +0 -0
  647. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_window_video.py +0 -0
  648. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_worker.py +0 -0
  649. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_worker_job_peak_rss.py +0 -0
  650. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_workflow.py +0 -0
  651. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_workflow_run_keys.py +0 -0
  652. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_workflow_snapshot.py +0 -0
  653. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_workflow_trust.py +0 -0
  654. {diffusers_workflow-0.13.0 → diffusers_workflow-0.15.0}/tests/test_workspace.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diffusers-workflow
3
- Version: 0.13.0
3
+ Version: 0.15.0
4
4
  Summary: Declarative workflow engine and web UI for Hugging Face Diffusers
5
5
  Author: dkackman
6
6
  License: Apache-2.0
@@ -37,6 +37,7 @@ Requires-Dist: controlnet-aux>=0.0.10
37
37
  Requires-Dist: opencv-python-headless>=5.0.0.93
38
38
  Requires-Dist: kornia>=0.8.3
39
39
  Requires-Dist: kernels>=0.17.2
40
+ Requires-Dist: comfy-kitchen<0.3,>=0.2.38
40
41
  Requires-Dist: spandrel>=0.4.2
41
42
  Requires-Dist: facexlib>=0.3.0
42
43
  Requires-Dist: numpy>=2.5.4
@@ -168,7 +169,7 @@ once; without it the run fails partway through with a 401/403 from the Hub.
168
169
 
169
170
  ## Drive it from an agent
170
171
 
171
- Then just ask. The agent has 62 tools covering the whole surface — the
172
+ Then just ask. The agent has 65 tools covering the whole surface — the
172
173
  workflow catalog, the real diffusers pipeline signatures, the job queue, the
173
174
  gallery, the model cache:
174
175
 
@@ -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 62 tools covering the whole surface — the
86
+ Then just ask. The agent has 65 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
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diffusers-workflow
3
- Version: 0.13.0
3
+ Version: 0.15.0
4
4
  Summary: Declarative workflow engine and web UI for Hugging Face Diffusers
5
5
  Author: dkackman
6
6
  License: Apache-2.0
@@ -37,6 +37,7 @@ Requires-Dist: controlnet-aux>=0.0.10
37
37
  Requires-Dist: opencv-python-headless>=5.0.0.93
38
38
  Requires-Dist: kornia>=0.8.3
39
39
  Requires-Dist: kernels>=0.17.2
40
+ Requires-Dist: comfy-kitchen<0.3,>=0.2.38
40
41
  Requires-Dist: spandrel>=0.4.2
41
42
  Requires-Dist: facexlib>=0.3.0
42
43
  Requires-Dist: numpy>=2.5.4
@@ -168,7 +169,7 @@ once; without it the run fails partway through with a 401/403 from the Hub.
168
169
 
169
170
  ## Drive it from an agent
170
171
 
171
- Then just ask. The agent has 62 tools covering the whole surface — the
172
+ Then just ask. The agent has 65 tools covering the whole surface — the
172
173
  workflow catalog, the real diffusers pipeline signatures, the job queue, the
173
174
  gallery, the model cache:
174
175
 
@@ -9,6 +9,7 @@ diffusers_workflow.egg-info/entry_points.txt
9
9
  diffusers_workflow.egg-info/requires.txt
10
10
  diffusers_workflow.egg-info/top_level.txt
11
11
  dw/__init__.py
12
+ dw/acceleration_warnings.py
12
13
  dw/adapter_compatibility.py
13
14
  dw/argument_media.py
14
15
  dw/argument_warnings.py
@@ -19,6 +20,7 @@ dw/audio_qc.py
19
20
  dw/cache_blocks.json
20
21
  dw/cache_blocks.py
21
22
  dw/content_types.py
23
+ dw/cost_scaling.py
22
24
  dw/devices.py
23
25
  dw/disk_caches.py
24
26
  dw/dissolve_frame_errors.py
@@ -41,8 +43,10 @@ dw/lora_catalog.py
41
43
  dw/lora_catalog_schema.json
42
44
  dw/lora_hub.py
43
45
  dw/media.py
46
+ dw/media_compare.py
44
47
  dw/media_frames.py
45
48
  dw/media_types.py
49
+ dw/notes.py
46
50
  dw/outbound.py
47
51
  dw/output_extraction.py
48
52
  dw/path_redaction.py
@@ -59,6 +63,7 @@ dw/reference_limits.py
59
63
  dw/reference_names.py
60
64
  dw/references.py
61
65
  dw/result.py
66
+ dw/roles.py
62
67
  dw/run.py
63
68
  dw/runs.py
64
69
  dw/scalar_result_validation.py
@@ -70,6 +75,7 @@ dw/settings.py
70
75
  dw/shot_span_preflight.py
71
76
  dw/shots.py
72
77
  dw/slice_preflight.py
78
+ dw/sparse_attention.py
73
79
  dw/step.py
74
80
  dw/step_cache.py
75
81
  dw/step_value_checks.py
@@ -96,6 +102,7 @@ dw/workflow.py
96
102
  dw/workflow_run.py
97
103
  dw/workflow_schema.json
98
104
  dw/workspace.py
105
+ dw/workspace_copy.py
99
106
  dw/writers.py
100
107
  dw/community_pipelines/pipeline_flux_rf_inversion.py
101
108
  dw/community_pipelines/pipeline_ltx2_refine.py
@@ -132,17 +139,22 @@ dw/pipeline_processors/pipeline.py
132
139
  dw/pipeline_processors/placement.py
133
140
  dw/pipeline_processors/progress.py
134
141
  dw/pipeline_processors/remote.py
142
+ dw/pipeline_processors/timing.py
135
143
  dw/server/__init__.py
136
144
  dw/server/admission.py
137
145
  dw/server/api_models.py
146
+ dw/server/api_models_base.py
147
+ dw/server/api_models_library.py
138
148
  dw/server/app.py
139
149
  dw/server/assess.py
140
150
  dw/server/catalog.py
141
151
  dw/server/catalog_shape.py
142
152
  dw/server/deps.py
153
+ dw/server/dispatch.py
143
154
  dw/server/enhancers.py
144
155
  dw/server/exports.py
145
156
  dw/server/guides.py
157
+ dw/server/host_ram_need.py
146
158
  dw/server/http_security.py
147
159
  dw/server/inline_media.py
148
160
  dw/server/job_history.py
@@ -181,44 +193,44 @@ dw/server/ui/assets/csharp-BKxtCVv1.js
181
193
  dw/server/ui/assets/csp-bTuwJoIa.js
182
194
  dw/server/ui/assets/css-DIMkf-bt.js
183
195
  dw/server/ui/assets/css.worker-C6lDtRpF.js
184
- dw/server/ui/assets/cssMode-QzCkHHkC.js
196
+ dw/server/ui/assets/cssMode-D_BuRO9Y.js
185
197
  dw/server/ui/assets/cypher-CVaqCwHa.js
186
198
  dw/server/ui/assets/dart-onAF5SnQ.js
187
199
  dw/server/ui/assets/dockerfile-DZFCIeNp.js
188
200
  dw/server/ui/assets/ecl-D05T4iGw.js
189
201
  dw/server/ui/assets/editor-DjpsE8to.css
190
- dw/server/ui/assets/editor.api-LvRbw1iL.js
202
+ dw/server/ui/assets/editor.api-B6pi6BSE.js
191
203
  dw/server/ui/assets/editor.worker-BmdWdrHZ.js
192
204
  dw/server/ui/assets/elixir-6RTg0lbw.js
193
205
  dw/server/ui/assets/flow9-C5_-GSwl.js
194
- dw/server/ui/assets/freemarker2-BFEReHqW.js
206
+ dw/server/ui/assets/freemarker2-mPiw3NV_.js
195
207
  dw/server/ui/assets/fsharp-C8Ef5oNN.js
196
208
  dw/server/ui/assets/go-C-y9NEjX.js
197
209
  dw/server/ui/assets/graphql-fmXr3nnJ.js
198
- dw/server/ui/assets/handlebars--qZ0WvL7.js
210
+ dw/server/ui/assets/handlebars-BfGb596Y.js
199
211
  dw/server/ui/assets/hcl-CpzslTdj.js
200
- dw/server/ui/assets/html-Bs0VSJAA.js
212
+ dw/server/ui/assets/html-xXIqw-JZ.js
201
213
  dw/server/ui/assets/html.worker-C5yZDBHz.js
202
- dw/server/ui/assets/htmlMode-DrsyYX5n.js
203
- dw/server/ui/assets/index-BgBhcVj3.js
204
- dw/server/ui/assets/index-DSM5LA24.css
214
+ dw/server/ui/assets/htmlMode-B3FC_H4q.js
215
+ dw/server/ui/assets/index-Civ6zDZP.js
216
+ dw/server/ui/assets/index-PRSQwOeN.css
205
217
  dw/server/ui/assets/ini-sBoK_t0W.js
206
218
  dw/server/ui/assets/java-BEtHBSE6.js
207
- dw/server/ui/assets/javascript-C3KR7rul.js
219
+ dw/server/ui/assets/javascript-B-FFcgST.js
208
220
  dw/server/ui/assets/json.worker-DdeUAmHa.js
209
- dw/server/ui/assets/jsonMode-DEXt-mqp.js
221
+ dw/server/ui/assets/jsonMode-BELbxUQD.js
210
222
  dw/server/ui/assets/julia-Bri6UV-V.js
211
223
  dw/server/ui/assets/kotlin-BOotOW0E.js
212
224
  dw/server/ui/assets/less-B9JPFI3C.js
213
225
  dw/server/ui/assets/lexon-CfSJPG6W.js
214
- dw/server/ui/assets/liquid-ByBJuq1e.js
215
- dw/server/ui/assets/lspLanguageFeatures-6nDoG86-.js
226
+ dw/server/ui/assets/liquid-CxXhb7_e.js
227
+ dw/server/ui/assets/lspLanguageFeatures-sXyBqSzn.js
216
228
  dw/server/ui/assets/lua-CsQS60Ue.js
217
229
  dw/server/ui/assets/m3-D-oSqn_W.js
218
230
  dw/server/ui/assets/markdown-Cimd5fb3.js
219
- dw/server/ui/assets/mdx-BH2GyjV6.js
231
+ dw/server/ui/assets/mdx-4jPGQ4yb.js
220
232
  dw/server/ui/assets/mips-CIPQ_RoX.js
221
- dw/server/ui/assets/monaco-B6Bmfo5o.js
233
+ dw/server/ui/assets/monaco-ByFdQnrs.js
222
234
  dw/server/ui/assets/monaco-n7clI0si.css
223
235
  dw/server/ui/assets/msdax-DauUninz.js
224
236
  dw/server/ui/assets/mysql-SOo6toE5.js
@@ -234,10 +246,10 @@ dw/server/ui/assets/powerquery-D3hlyOfw.js
234
246
  dw/server/ui/assets/powershell-DmHpPYUd.js
235
247
  dw/server/ui/assets/protobuf-C531GsRP.js
236
248
  dw/server/ui/assets/pug-Z5eAx3Zn.js
237
- dw/server/ui/assets/python-C1sJMrAm.js
249
+ dw/server/ui/assets/python-D3CL9Y6O.js
238
250
  dw/server/ui/assets/qsharp-DkqhCAOL.js
239
251
  dw/server/ui/assets/r-BwWrilGY.js
240
- dw/server/ui/assets/razor-BdPZ4bvZ.js
252
+ dw/server/ui/assets/razor-F_hjmtqk.js
241
253
  dw/server/ui/assets/redis-ClamHrr6.js
242
254
  dw/server/ui/assets/redshift-DT7zqm-g.js
243
255
  dw/server/ui/assets/restructuredtext-BYgofb2h.js
@@ -257,15 +269,15 @@ dw/server/ui/assets/swift-Bxkupp3x.js
257
269
  dw/server/ui/assets/systemverilog-Bz4Y3fRF.js
258
270
  dw/server/ui/assets/tcl-DISqw1ZD.js
259
271
  dw/server/ui/assets/ts.worker-DGGa2mF8.js
260
- dw/server/ui/assets/tsMode-DW5i-ukN.js
272
+ dw/server/ui/assets/tsMode-BiyDvHYY.js
261
273
  dw/server/ui/assets/twig-De2hgUGE.js
262
- dw/server/ui/assets/typescript-C_QzKQY3.js
274
+ dw/server/ui/assets/typescript-DBE1Uz0U.js
263
275
  dw/server/ui/assets/typespec-B8J7ngcE.js
264
276
  dw/server/ui/assets/vb-DV3o63ZY.js
265
277
  dw/server/ui/assets/wgsl-DpFanUEy.js
266
- dw/server/ui/assets/workers-DHqaOvh8.js
267
- dw/server/ui/assets/xml-D3UEcM_2.js
268
- dw/server/ui/assets/yaml-C0TnGcnd.js
278
+ dw/server/ui/assets/workers-Ci7sZ35J.js
279
+ dw/server/ui/assets/xml-Eqpmo6a1.js
280
+ dw/server/ui/assets/yaml-BNP_JiwW.js
269
281
  dw/tasks/assess.py
270
282
  dw/tasks/audio_dynamics.py
271
283
  dw/tasks/audio_handlers.py
@@ -322,6 +334,8 @@ dw/tasks/video_utils.py
322
334
  dw/tasks/voice_attribution.py
323
335
  dw/tasks/windows.py
324
336
  dw/tasks/zoe_depth.py
337
+ dw/workflows/flux3_klein_upsample.json
338
+ dw/workflows/flux3_klein_upsample_edit.json
325
339
  dw/workflows/h3_context_ir.json
326
340
  dw/workflows/test.json
327
341
  dw_mcp/__init__.py
@@ -357,17 +371,20 @@ tests/test_assemble_and_score_target_lufs.py
357
371
  tests/test_assess.py
358
372
  tests/test_assessment_rules.py
359
373
  tests/test_assets.py
374
+ tests/test_attention_backend_trace.py
360
375
  tests/test_attention_slicing.py
361
376
  tests/test_audio_utils.py
362
377
  tests/test_best_of_n_template.py
363
378
  tests/test_borders.py
364
379
  tests/test_cache_blocks.py
380
+ tests/test_cache_stats.py
365
381
  tests/test_catalog_shape.py
366
382
  tests/test_catalog_speed_defaults.py
367
383
  tests/test_catalog_structure.py
368
384
  tests/test_chain.py
369
385
  tests/test_ci_config.py
370
386
  tests/test_cli.py
387
+ tests/test_compare_route.py
371
388
  tests/test_component_name_errors.py
372
389
  tests/test_component_pruning.py
373
390
  tests/test_component_type_errors.py
@@ -376,6 +393,7 @@ tests/test_concat_videos.py
376
393
  tests/test_config_objects.py
377
394
  tests/test_configuration_schema.py
378
395
  tests/test_content_types.py
396
+ tests/test_dependencies_declared.py
379
397
  tests/test_depth_estimator.py
380
398
  tests/test_device.py
381
399
  tests/test_device_helpers.py
@@ -397,7 +415,10 @@ tests/test_find_loop_bed.py
397
415
  tests/test_finish.py
398
416
  tests/test_fit_templates.py
399
417
  tests/test_fit_to_model.py
418
+ tests/test_flux3_catalog.py
400
419
  tests/test_for_each.py
420
+ tests/test_forget_workspace_history.py
421
+ tests/test_gallery_roles.py
401
422
  tests/test_gather.py
402
423
  tests/test_grade.py
403
424
  tests/test_guide_chain_validation.py
@@ -410,11 +431,13 @@ tests/test_h3_latent_upscale.py
410
431
  tests/test_h3_refine.py
411
432
  tests/test_h3_rules.py
412
433
  tests/test_h3_schedule.py
434
+ tests/test_h3_sparse_defaults.py
413
435
  tests/test_h3_upscaler_source.py
414
436
  tests/test_h3_vram_ceiling.py
415
437
  tests/test_hf_placement.py
416
438
  tests/test_host_memory.py
417
439
  tests/test_host_memory_projection.py
440
+ tests/test_host_ram_need.py
418
441
  tests/test_hub_cache.py
419
442
  tests/test_image_ops.py
420
443
  tests/test_image_to_text.py
@@ -468,6 +491,7 @@ tests/test_mcp_twins.py
468
491
  tests/test_mcp_workspaces.py
469
492
  tests/test_measure_sync.py
470
493
  tests/test_media_audio.py
494
+ tests/test_media_compare.py
471
495
  tests/test_media_decode_threads.py
472
496
  tests/test_media_frames.py
473
497
  tests/test_media_info.py
@@ -479,6 +503,9 @@ tests/test_modular_pipeline.py
479
503
  tests/test_modular_progress.py
480
504
  tests/test_mps_fallback_warning.py
481
505
  tests/test_mps_rope_precision.py
506
+ tests/test_notes.py
507
+ tests/test_notes_api.py
508
+ tests/test_notes_bookkeeping.py
482
509
  tests/test_null_media.py
483
510
  tests/test_numeric_coercion.py
484
511
  tests/test_observed_cost.py
@@ -512,6 +539,7 @@ tests/test_reference_limits.py
512
539
  tests/test_reference_names.py
513
540
  tests/test_reference_skip_sets.py
514
541
  tests/test_references.py
542
+ tests/test_rerun_lineage.py
515
543
  tests/test_rerun_new_seed.py
516
544
  tests/test_resize_bucket.py
517
545
  tests/test_restore_faces_helper_cache.py
@@ -519,7 +547,9 @@ tests/test_restore_faces_video.py
519
547
  tests/test_result.py
520
548
  tests/test_result_fps.py
521
549
  tests/test_result_output_naming.py
550
+ tests/test_roles.py
522
551
  tests/test_rule_parity.py
552
+ tests/test_run_manifest_roles.py
523
553
  tests/test_runs.py
524
554
  tests/test_runtime_settings.py
525
555
  tests/test_scalar_result_validation.py
@@ -555,10 +585,16 @@ tests/test_shaping_logs.py
555
585
  tests/test_shot_span_preflight.py
556
586
  tests/test_shots.py
557
587
  tests/test_slice_preflight.py
588
+ tests/test_sparse_attention_backends.py
589
+ tests/test_sparse_attention_processor.py
590
+ tests/test_sparse_attention_tiles.py
591
+ tests/test_sparse_attention_wiring.py
558
592
  tests/test_speech_generation.py
559
593
  tests/test_stabilize.py
594
+ tests/test_stars.py
560
595
  tests/test_step.py
561
596
  tests/test_step_cache.py
597
+ tests/test_step_timing.py
562
598
  tests/test_strip_exif_and_watermark.py
563
599
  tests/test_sub_workflow_resolver.py
564
600
  tests/test_subfolders.py
@@ -578,6 +614,7 @@ tests/test_trim_video.py
578
614
  tests/test_type_helpers.py
579
615
  tests/test_type_helpers_concurrency.py
580
616
  tests/test_ui_twins.py
617
+ tests/test_unbraced_type_warning.py
581
618
  tests/test_updater.py
582
619
  tests/test_validate_arguments.py
583
620
  tests/test_validation.py
@@ -603,4 +640,5 @@ tests/test_workflow_run_keys.py
603
640
  tests/test_workflow_snapshot.py
604
641
  tests/test_workflow_step_cache.py
605
642
  tests/test_workflow_trust.py
606
- tests/test_workspace.py
643
+ tests/test_workspace.py
644
+ tests/test_workspace_copy.py
@@ -18,6 +18,7 @@ controlnet-aux>=0.0.10
18
18
  opencv-python-headless>=5.0.0.93
19
19
  kornia>=0.8.3
20
20
  kernels>=0.17.2
21
+ comfy-kitchen<0.3,>=0.2.38
21
22
  spandrel>=0.4.2
22
23
  facexlib>=0.3.0
23
24
  numpy>=2.5.4
@@ -0,0 +1,311 @@
1
+ """Acceleration settings that validate passes and that cannot pay off (#868).
2
+
3
+ Each of these cost a render to find out in Don's `h3-quality` matrix:
4
+
5
+ - `cache_short_schedule`: a threshold cache (`first_block`, `mag`) on a
6
+ schedule under `CACHE_MIN_USEFUL_STEPS`. Consecutive steps of a short
7
+ schedule differ too much for the residual threshold, so the cache skips
8
+ nothing and still perturbs the result - on MiniMax-H3 a `first_block` cache
9
+ at 0.05 skipped no step at 12 steps and took 22% off at 30. `docs/RECIPES_24GB.md` states the
10
+ rule and `tests/test_catalog_speed_defaults.py` holds the catalog to it;
11
+ this is where a hand-written workflow meets it. The interval caches
12
+ (`taylorseer`, `faster`) skip on a fixed interval and `text_kv` skips no
13
+ step at all, so none of them is held to it.
14
+ - `taylorseer_state_unestimated`: TaylorSeer keeps per-block state on the
15
+ device that no VRAM estimate charges - P5 ran out of memory two minutes
16
+ into a run validate had passed. Always said when TaylorSeer is set. Sizing
17
+ that state would need the architecture data the engine never holds, and
18
+ charging it in `vram_estimate` would turn a warning into a refusal and move
19
+ jobs between cards, so the warning only states the estimate it sits on top
20
+ of.
21
+ - `cache_unsupported`: a cache on a pipeline whose class declares no
22
+ transformer (a UNet pipeline such as SD 1.5), or whose transformer class has
23
+ no `enable_cache()` (Z-Image's, in the diffusers this server runs). Read from
24
+ the pipeline class's constructor alone, nothing is loaded; the run only says
25
+ "not applied" and carries on uncached.
26
+ - `compile_fullgraph_with_cache`: `fullgraph` forbids the graph break a
27
+ cache's skip decision needs (`docs/ACCELERATION.md`).
28
+ - `attention_backend_unavailable`: a CUDA-only attention backend on a device
29
+ that isn't CUDA passes validate and fails at load.
30
+ - `sparse_attention_fallback`: the `sparse` attention backend on a device that
31
+ isn't CUDA. It never fails a run: it falls back to dense attention, so this
32
+ says the speedup is not coming, not that the job will break.
33
+
34
+ Every one is a warning and never a refusal. A value that cannot be resolved
35
+ before the run (a null variable, an unknown device) leaves its warning
36
+ silent rather than guessed at.
37
+ """
38
+
39
+ import inspect
40
+ import typing
41
+
42
+ from . import get_device_type
43
+ from .introspection import load_pipeline_class
44
+ from .references import iter_steps, render_path
45
+ from . import sparse_attention
46
+ from .sparse_attention import SPARSE_BACKEND
47
+ from .vram_estimate import required_vram_gb
48
+
49
+ # The fewest denoise steps a threshold cache is expected to skip any of. A
50
+ # general fact about residual-threshold caching, not a per-model rule: H3
51
+ # skipped nothing at 12 steps and 22% at 30 (RECIPES_24GB.md); nothing
52
+ # between has been measured yet (#875 measures 20)
53
+ CACHE_MIN_USEFUL_STEPS = 20
54
+
55
+ # The cache types that decide each step's skip on a residual threshold
56
+ THRESHOLD_CACHES = ("first_block", "mag")
57
+
58
+ # The attention backends diffusers registers that need CUDA: the flash,
59
+ # flash-3, sage and xformers families, Hub kernels included. Matched by name,
60
+ # never by a `_hub` suffix; no `native`-family backend is here. A name
61
+ # missing from this set only means no warning - today's behavior
62
+ CUDA_ONLY_ATTENTION_BACKENDS = frozenset(
63
+ {
64
+ "flash",
65
+ "flash_hub",
66
+ "flash_varlen",
67
+ "flash_varlen_hub",
68
+ "flash_4_hub",
69
+ "_flash_3",
70
+ "_flash_varlen_3",
71
+ "_flash_3_hub",
72
+ "_flash_3_varlen_hub",
73
+ "aiter_fa2_hub",
74
+ "sage",
75
+ "sage_hub",
76
+ "sage_blackwell_hub",
77
+ "sage_varlen",
78
+ "_sage_qk_int8_pv_fp8_cuda",
79
+ "_sage_qk_int8_pv_fp8_cuda_sm90",
80
+ "_sage_qk_int8_pv_fp16_cuda",
81
+ "_sage_qk_int8_pv_fp16_triton",
82
+ "xformers",
83
+ }
84
+ )
85
+
86
+ SHORT_SCHEDULE = "cache_short_schedule"
87
+ TAYLORSEER_STATE = "taylorseer_state_unestimated"
88
+ FULLGRAPH_WITH_CACHE = "compile_fullgraph_with_cache"
89
+ BACKEND_UNAVAILABLE = "attention_backend_unavailable"
90
+ SPARSE_FALLBACK = "sparse_attention_fallback"
91
+ CACHE_UNSUPPORTED = "cache_unsupported"
92
+
93
+ # The component names a cache hook attaches to, as in
94
+ # dw.pipeline_processors.components.get_cache_transformer
95
+ _CACHE_COMPONENTS = ("transformer", "transformer_ref")
96
+
97
+
98
+ def _steps(pipeline):
99
+ """The resolved `num_inference_steps` the pipeline is called with, or
100
+ None when it is not a number known before the run."""
101
+ arguments = pipeline.get("arguments")
102
+ value = (arguments if isinstance(arguments, dict) else {}).get(
103
+ "num_inference_steps"
104
+ )
105
+ if isinstance(value, bool) or not isinstance(value, (int, float)):
106
+ return None
107
+ return value
108
+
109
+
110
+ def _backend(device_type):
111
+ """The backend `device_type` belongs to ('cuda' for 'cuda:1'), or None
112
+ when the device is unknown."""
113
+ if not isinstance(device_type, str) or not device_type:
114
+ return None
115
+ try:
116
+ return get_device_type(device_type)
117
+ except (RuntimeError, ValueError):
118
+ return None
119
+
120
+
121
+ def _components(configuration):
122
+ components = configuration.get("components")
123
+ if not isinstance(components, dict):
124
+ return []
125
+ return [
126
+ (name, component)
127
+ for name, component in components.items()
128
+ if isinstance(component, dict)
129
+ ]
130
+
131
+
132
+ def _estimate_clause(context):
133
+ """'; this job is estimated at X of Y GB' when the workflow declares a
134
+ VRAM estimate and the device's capacity is known, else ''."""
135
+ if context.capacity_gb is None:
136
+ return ""
137
+ required = required_vram_gb(
138
+ context.expanded,
139
+ context.arguments,
140
+ device_type=context.device_type,
141
+ base_dir=context.base_dir,
142
+ probe=context.probe,
143
+ )
144
+ if required is None or not required[1]:
145
+ # Only a declared vram_estimate is an estimate; a measured `cost`
146
+ # entry records a card, not what this job needs
147
+ return ""
148
+ return (
149
+ f"; this job is estimated at {required[0]:.1f} of "
150
+ f"{context.capacity_gb:.1f} GB, and that state comes on top"
151
+ )
152
+
153
+
154
+ def _cache_unsupported(component_type):
155
+ """Why a cache cannot attach to the pipeline class `component_type`
156
+ names, or None when it can or that cannot be told from the class alone
157
+ (an unresolvable class, a **kwargs constructor, a component whose type is
158
+ not a single class)."""
159
+ if not isinstance(component_type, str):
160
+ return None
161
+ try:
162
+ cls = load_pipeline_class(component_type)
163
+ parameters = inspect.signature(cls.__init__).parameters
164
+ except (ValueError, TypeError):
165
+ return None
166
+ if any(p.kind == inspect.Parameter.VAR_KEYWORD for p in parameters.values()):
167
+ return None
168
+ names = [name for name in _CACHE_COMPONENTS if name in parameters]
169
+ if not names:
170
+ return (
171
+ f"{cls.__name__} has no transformer component to attach a cache to "
172
+ f"(a UNet pipeline is not supported)"
173
+ )
174
+ try:
175
+ hints = typing.get_type_hints(cls.__init__)
176
+ except Exception:
177
+ return None
178
+ classes = [hints.get(name) for name in names]
179
+ if all(isinstance(c, type) and not hasattr(c, "enable_cache") for c in classes):
180
+ return (
181
+ f"{cls.__name__}'s transformer ({classes[0].__name__}) does not "
182
+ f"support diffusers' enable_cache()"
183
+ )
184
+ return None
185
+
186
+
187
+ def _cache_warnings(cache, pipeline, path, where, context, component_type=None):
188
+ cache_type = cache.get("type")
189
+ warnings = []
190
+ steps = _steps(pipeline)
191
+ if (
192
+ cache_type in THRESHOLD_CACHES
193
+ and steps is not None
194
+ and steps < CACHE_MIN_USEFUL_STEPS
195
+ ):
196
+ warnings.append(
197
+ f"{path}: {SHORT_SCHEDULE}: a '{cache_type}' cache on {steps:g} "
198
+ f"steps will likely skip nothing (consecutive steps differ too much "
199
+ f"for its threshold) and still perturbs the result{where}; drop the "
200
+ f"cache or run >= {CACHE_MIN_USEFUL_STEPS} steps"
201
+ )
202
+ reason = _cache_unsupported(component_type)
203
+ if reason:
204
+ warnings.append(
205
+ f"{path}: {CACHE_UNSUPPORTED}: the '{cache_type}' cache will not be "
206
+ f"applied: {reason}{where}; the step runs uncached, so drop the cache"
207
+ )
208
+ if cache_type == "taylorseer":
209
+ max_order = cache.get("max_order")
210
+ if isinstance(max_order, bool) or not isinstance(max_order, int):
211
+ max_order = 1
212
+ warnings.append(
213
+ f"{path}: {TAYLORSEER_STATE}: TaylorSeer keeps per-block state on "
214
+ f"the GPU (more with a higher max_order; this one is {max_order}) "
215
+ f"that the VRAM estimate doesn't include{_estimate_clause(context)}"
216
+ f"{where}. A run that fits without the cache can run out of memory "
217
+ f"with it"
218
+ )
219
+ return warnings
220
+
221
+
222
+ def acceleration_warnings(context):
223
+ """Every acceleration setting in the expanded definition that cannot pay
224
+ off, as `"<path>: <code>: <message>"` strings, each said once."""
225
+ warnings = []
226
+ backend = _backend(context.device_type)
227
+ for _, _, pipeline, source, where in iter_steps(
228
+ context.expanded.get("steps"), context.source_indices, "pipeline"
229
+ ):
230
+ configuration = pipeline.get("configuration")
231
+ if not isinstance(configuration, dict):
232
+ continue
233
+ base = ("steps", source, "pipeline", "configuration")
234
+ cache = configuration.get("cache")
235
+ if isinstance(cache, dict):
236
+ warnings += _cache_warnings(
237
+ cache,
238
+ pipeline,
239
+ render_path(base + ("cache",)),
240
+ where,
241
+ context,
242
+ configuration.get("component_type"),
243
+ )
244
+
245
+ backends = [(base + ("attention_backend",), configuration)]
246
+ for name, component in _components(configuration):
247
+ component_path = base + ("components", name)
248
+ compile_config = component.get("compile")
249
+ if (
250
+ isinstance(cache, dict)
251
+ and isinstance(compile_config, dict)
252
+ and compile_config.get("fullgraph") is True
253
+ ):
254
+ warnings.append(
255
+ f"{render_path(component_path + ('compile', 'fullgraph'))}: "
256
+ f"{FULLGRAPH_WITH_CACHE}: fullgraph forbids the graph break "
257
+ f"the '{cache.get('type')}' cache's skip decision needs"
258
+ f"{where}; use partial graph mode (fullgraph false) with a "
259
+ f"cache"
260
+ )
261
+ backends.append((component_path + ("attention_backend",), component))
262
+
263
+ if backend is None or backend == "cuda":
264
+ continue
265
+ for path, block in backends:
266
+ name = block.get("attention_backend")
267
+ if name == SPARSE_BACKEND:
268
+ warnings.append(
269
+ f"{render_path(path)}: {SPARSE_FALLBACK}: sparse attention "
270
+ f"needs CUDA; this server is '{context.device_type}', so "
271
+ f"the run uses dense attention{where}"
272
+ )
273
+ continue
274
+ if name not in CUDA_ONLY_ATTENTION_BACKENDS:
275
+ continue
276
+ warnings.append(
277
+ f"{render_path(path)}: {BACKEND_UNAVAILABLE}: attention backend "
278
+ f"'{name}' needs CUDA; this server is '{context.device_type}', "
279
+ f"so the job will fail at load{where}; leave it unset or use a "
280
+ f"'native'-family backend"
281
+ )
282
+ # A for_each step's members share their written path: say each code once
283
+ # there, naming the first member it fired for
284
+ said = {}
285
+ for warning in warnings:
286
+ path, _, rest = warning.partition(": ")
287
+ said.setdefault((path, rest.partition(": ")[0]), warning)
288
+ return list(said.values())
289
+
290
+
291
+ def available_attention_backends(device_type: str) -> list[str]:
292
+ """The attention backends a server on `device_type` can run, in menu order.
293
+
294
+ `native` first, then the other `native`-family names; on CUDA, `sparse`
295
+ (only where the compiled kernels loaded) and the CUDA-only names. A name
296
+ diffusers' `AttentionBackendName` lacks is dropped, so the menu never
297
+ offers one the pipeline would refuse.
298
+ """
299
+ from diffusers.models.attention_dispatch import AttentionBackendName
300
+
301
+ known = {backend.value for backend in AttentionBackendName}
302
+ cuda = device_type == "cuda"
303
+ names = ["native", "_native_flash", "_native_efficient", "_native_math"]
304
+ if cuda:
305
+ names.append("_native_cudnn")
306
+ names.append("flex")
307
+ if cuda:
308
+ if sparse_attention._kernels_importable():
309
+ names.append(SPARSE_BACKEND)
310
+ names.extend(sorted(CUDA_ONLY_ATTENTION_BACKENDS))
311
+ return [name for name in names if name == SPARSE_BACKEND or name in known]