diffusers-workflow 0.4.0b4__tar.gz → 0.4.0b6__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 (388) hide show
  1. {diffusers_workflow-0.4.0b4/diffusers_workflow.egg-info → diffusers_workflow-0.4.0b6}/PKG-INFO +5 -3
  2. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/README.md +1 -0
  3. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6/diffusers_workflow.egg-info}/PKG-INFO +5 -3
  4. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/diffusers_workflow.egg-info/SOURCES.txt +49 -21
  5. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/diffusers_workflow.egg-info/requires.txt +3 -2
  6. diffusers_workflow-0.4.0b6/dw/adapter_compatibility.py +226 -0
  7. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/arguments.py +14 -11
  8. diffusers_workflow-0.4.0b6/dw/content_types.py +105 -0
  9. diffusers_workflow-0.4.0b6/dw/docs/AGENT_LOOP.md +86 -0
  10. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/docs/MCP.md +25 -11
  11. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/docs/RECIPES_24GB.md +14 -3
  12. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/docs/SECURITY.md +66 -10
  13. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/docs/SECURITY_QUICKREF.md +34 -6
  14. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/docs/SERVER.md +64 -7
  15. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/docs/TASKS.md +19 -2
  16. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/docs/WORKFLOW_GUIDE.md +171 -4
  17. diffusers_workflow-0.4.0b6/dw/elision.py +306 -0
  18. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/events.py +86 -2
  19. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/introspection.py +128 -8
  20. diffusers_workflow-0.4.0b6/dw/kernel_availability.py +208 -0
  21. diffusers_workflow-0.4.0b6/dw/locations.py +541 -0
  22. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/pipeline_processors/pipeline.py +190 -5
  23. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/pipeline_processors/remote.py +27 -10
  24. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/plan.py +93 -3
  25. diffusers_workflow-0.4.0b6/dw/reference_limits.py +210 -0
  26. diffusers_workflow-0.4.0b6/dw/reference_names.py +125 -0
  27. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/repl.py +2 -2
  28. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/result.py +148 -0
  29. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/schema.py +70 -4
  30. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/security.py +83 -5
  31. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/serve.py +2 -3
  32. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/app.py +632 -98
  33. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/catalog_shape.py +74 -2
  34. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/guides.py +1 -1
  35. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/jobs.py +62 -2
  36. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/mcp_mount.py +4 -0
  37. diffusers_workflow-0.4.0b6/dw/server/observed_cost.py +335 -0
  38. diffusers_workflow-0.4.0b4/dw/server/ui/assets/cssMode-_LF3nQQz.js → diffusers_workflow-0.4.0b6/dw/server/ui/assets/cssMode-1t4O7A8b.js +1 -1
  39. diffusers_workflow-0.4.0b4/dw/server/ui/assets/editor.api-Df8mF5HS.js → diffusers_workflow-0.4.0b6/dw/server/ui/assets/editor.api-C2mqCHa9.js +1 -1
  40. diffusers_workflow-0.4.0b4/dw/server/ui/assets/freemarker2-BFhhUaaI.js → diffusers_workflow-0.4.0b6/dw/server/ui/assets/freemarker2-Cb6RGT42.js +1 -1
  41. diffusers_workflow-0.4.0b4/dw/server/ui/assets/handlebars-uOyL83kB.js → diffusers_workflow-0.4.0b6/dw/server/ui/assets/handlebars-LzK4_SEF.js +1 -1
  42. diffusers_workflow-0.4.0b4/dw/server/ui/assets/html-CNOcS1qq.js → diffusers_workflow-0.4.0b6/dw/server/ui/assets/html-Biz_qd50.js +1 -1
  43. diffusers_workflow-0.4.0b4/dw/server/ui/assets/htmlMode-BrZs8ZFo.js → diffusers_workflow-0.4.0b6/dw/server/ui/assets/htmlMode-CP4Kjl0x.js +1 -1
  44. diffusers_workflow-0.4.0b6/dw/server/ui/assets/index-Bt8BlCkf.js +41 -0
  45. diffusers_workflow-0.4.0b6/dw/server/ui/assets/index-D9tEUhx5.css +1 -0
  46. diffusers_workflow-0.4.0b4/dw/server/ui/assets/javascript-BjmXvHYV.js → diffusers_workflow-0.4.0b6/dw/server/ui/assets/javascript-DX4-t0BE.js +1 -1
  47. diffusers_workflow-0.4.0b4/dw/server/ui/assets/jsonMode-CUpeMAA9.js → diffusers_workflow-0.4.0b6/dw/server/ui/assets/jsonMode-hZa_qOEa.js +1 -1
  48. diffusers_workflow-0.4.0b4/dw/server/ui/assets/liquid-CDCYHjo5.js → diffusers_workflow-0.4.0b6/dw/server/ui/assets/liquid-BRkTuJ_A.js +1 -1
  49. diffusers_workflow-0.4.0b4/dw/server/ui/assets/lspLanguageFeatures-C3BQ9bHy.js → diffusers_workflow-0.4.0b6/dw/server/ui/assets/lspLanguageFeatures-Dvt5tod9.js +1 -1
  50. diffusers_workflow-0.4.0b4/dw/server/ui/assets/mdx-Z0OBIKet.js → diffusers_workflow-0.4.0b6/dw/server/ui/assets/mdx-Bdet7qev.js +1 -1
  51. diffusers_workflow-0.4.0b4/dw/server/ui/assets/monaco-CXIxqF1g.js → diffusers_workflow-0.4.0b6/dw/server/ui/assets/monaco-QRyCMGAv.js +4 -4
  52. diffusers_workflow-0.4.0b4/dw/server/ui/assets/python-zEGBkDvi.js → diffusers_workflow-0.4.0b6/dw/server/ui/assets/python-DO0uJyUr.js +1 -1
  53. diffusers_workflow-0.4.0b4/dw/server/ui/assets/razor-QEBcCsTz.js → diffusers_workflow-0.4.0b6/dw/server/ui/assets/razor-CkfVe6oz.js +1 -1
  54. diffusers_workflow-0.4.0b4/dw/server/ui/assets/tsMode-YMmO0OvA.js → diffusers_workflow-0.4.0b6/dw/server/ui/assets/tsMode-z26QXNyE.js +1 -1
  55. diffusers_workflow-0.4.0b4/dw/server/ui/assets/typescript-DmCSelwV.js → diffusers_workflow-0.4.0b6/dw/server/ui/assets/typescript-DIdNc_uc.js +1 -1
  56. diffusers_workflow-0.4.0b4/dw/server/ui/assets/workers-DNhR6kh1.js → diffusers_workflow-0.4.0b6/dw/server/ui/assets/workers-Ce8CDVu5.js +1 -1
  57. diffusers_workflow-0.4.0b4/dw/server/ui/assets/xml-B9wx0o_u.js → diffusers_workflow-0.4.0b6/dw/server/ui/assets/xml-Djj2U0Rl.js +1 -1
  58. diffusers_workflow-0.4.0b4/dw/server/ui/assets/yaml-DRuGviYp.js → diffusers_workflow-0.4.0b6/dw/server/ui/assets/yaml-CePLO71e.js +1 -1
  59. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/index.html +2 -2
  60. diffusers_workflow-0.4.0b6/dw/task_domains.py +219 -0
  61. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/audio_utils.py +199 -43
  62. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/concat_videos.py +70 -7
  63. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/gather.py +16 -4
  64. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/image_utils.py +2 -2
  65. diffusers_workflow-0.4.0b6/dw/tasks/pair_audio.py +181 -0
  66. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/task.py +34 -0
  67. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/video_utils.py +56 -9
  68. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/teacache.py +6 -1
  69. diffusers_workflow-0.4.0b6/dw/variable_constraints.py +444 -0
  70. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/worker.py +38 -2
  71. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/workflow.py +201 -9
  72. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/workflow_schema.json +129 -32
  73. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/workspace.py +5 -2
  74. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw_mcp/assets.py +77 -0
  75. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw_mcp/authoring.py +28 -7
  76. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw_mcp/catalog.py +45 -9
  77. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw_mcp/client.py +6 -0
  78. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw_mcp/diagnose.py +31 -14
  79. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw_mcp/media.py +74 -2
  80. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw_mcp/server.py +118 -25
  81. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/pyproject.toml +30 -5
  82. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_argument_updates.py +21 -26
  83. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_arguments.py +12 -10
  84. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_audio_utils.py +211 -0
  85. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_cache_blocks.py +0 -2
  86. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_catalog_shape.py +1 -0
  87. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_catalog_structure.py +127 -56
  88. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_chain.py +0 -2
  89. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_concat_videos.py +85 -3
  90. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_configuration_schema.py +3 -1
  91. diffusers_workflow-0.4.0b6/tests/test_content_types.py +132 -0
  92. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_device.py +0 -1
  93. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_diffusion_upscale.py +2 -6
  94. diffusers_workflow-0.4.0b6/tests/test_elision.py +499 -0
  95. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_events.py +144 -0
  96. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_examples.py +26 -0
  97. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_for_each.py +15 -2
  98. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_gather.py +6 -6
  99. diffusers_workflow-0.4.0b6/tests/test_h3_adapters.py +195 -0
  100. diffusers_workflow-0.4.0b6/tests/test_h3_schedule.py +152 -0
  101. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_integration.py +0 -1
  102. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_introspection.py +1 -2
  103. diffusers_workflow-0.4.0b6/tests/test_job_warnings.py +46 -0
  104. diffusers_workflow-0.4.0b6/tests/test_kernel_availability.py +255 -0
  105. diffusers_workflow-0.4.0b6/tests/test_locations.py +476 -0
  106. diffusers_workflow-0.4.0b6/tests/test_lora_alpha.py +128 -0
  107. diffusers_workflow-0.4.0b6/tests/test_ltx2_diffusion_decode.py +97 -0
  108. diffusers_workflow-0.4.0b6/tests/test_ltx2_ic_loras.py +166 -0
  109. diffusers_workflow-0.4.0b6/tests/test_ltx_prompt_library.py +123 -0
  110. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_mcp_assets.py +87 -0
  111. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_mcp_catalog.py +36 -0
  112. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_mcp_main.py +0 -2
  113. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_mcp_media.py +98 -6
  114. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_mcp_server.py +86 -3
  115. diffusers_workflow-0.4.0b6/tests/test_observed_cost.py +594 -0
  116. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_output_references.py +37 -0
  117. diffusers_workflow-0.4.0b6/tests/test_pair_audio_fit.py +149 -0
  118. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_pipeline_caching.py +231 -27
  119. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_pipeline_components.py +93 -1
  120. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_plan.py +156 -3
  121. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_plugin_skills.py +71 -32
  122. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_realize.py +12 -13
  123. diffusers_workflow-0.4.0b6/tests/test_reference_limits.py +138 -0
  124. diffusers_workflow-0.4.0b6/tests/test_reference_names.py +103 -0
  125. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_repl_commands.py +2 -2
  126. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_repl_reorganization.py +6 -6
  127. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_result.py +275 -0
  128. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_result_output_naming.py +0 -2
  129. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_schema.py +226 -0
  130. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_segment.py +0 -1
  131. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_server.py +497 -14
  132. diffusers_workflow-0.4.0b6/tests/test_server_downloads.py +283 -0
  133. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_server_exports.py +15 -1
  134. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_server_info.py +17 -0
  135. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_server_workspaces.py +30 -1
  136. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_step.py +2 -2
  137. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_task.py +6 -6
  138. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_task_discovery.py +12 -5
  139. diffusers_workflow-0.4.0b6/tests/test_task_domains.py +286 -0
  140. diffusers_workflow-0.4.0b6/tests/test_task_signature_errors.py +146 -0
  141. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_template_subfolders.py +9 -9
  142. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_tensor_image.py +0 -1
  143. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_type_helpers.py +0 -2
  144. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_validate_arguments.py +56 -0
  145. diffusers_workflow-0.4.0b6/tests/test_variable_constraints.py +566 -0
  146. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_video_utils.py +55 -3
  147. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_worker_execute.py +61 -4
  148. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_workflow.py +7 -1
  149. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_workflow_step_cache.py +5 -1
  150. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_workflow_trust.py +108 -0
  151. diffusers_workflow-0.4.0b4/dw/server/ui/assets/index-BkC2KOK-.js +0 -37
  152. diffusers_workflow-0.4.0b4/dw/server/ui/assets/index-Dvcgq7CV.css +0 -1
  153. diffusers_workflow-0.4.0b4/dw/tasks/pair_audio.py +0 -81
  154. diffusers_workflow-0.4.0b4/tests/test_ltx_prompt_library.py +0 -72
  155. diffusers_workflow-0.4.0b4/tests/test_server_downloads.py +0 -123
  156. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/LICENSE +0 -0
  157. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/MANIFEST.in +0 -0
  158. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/diffusers_workflow.egg-info/dependency_links.txt +0 -0
  159. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/diffusers_workflow.egg-info/entry_points.txt +0 -0
  160. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/diffusers_workflow.egg-info/top_level.txt +0 -0
  161. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/__init__.py +0 -0
  162. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/assets.py +0 -0
  163. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/cache_blocks.json +0 -0
  164. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/cache_blocks.py +0 -0
  165. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/community_pipelines/pipeline_flux_rf_inversion.py +0 -0
  166. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/docs/ACCELERATION.md +0 -0
  167. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/docs/DEPENDENCIES.md +0 -0
  168. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/docs/IP_ADAPTER.md +0 -0
  169. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/docs/LORAS.md +0 -0
  170. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/docs/PROMPT_WEIGHTING.md +0 -0
  171. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/docs/QUANTIZATION.md +0 -0
  172. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/docs/RELEASING.md +0 -0
  173. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/docs/REMOTE.md +0 -0
  174. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/docs/REPL_COMMANDS.md +0 -0
  175. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/docs/REPL_WORKER_GUIDE.md +0 -0
  176. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/docs/TESTING.md +0 -0
  177. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/docs/WORKSPACES.md +0 -0
  178. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/for_each.py +0 -0
  179. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/host_memory.py +0 -0
  180. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/hub_cache.py +0 -0
  181. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/log_setup.py +0 -0
  182. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/media_info.py +0 -0
  183. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/pipeline_processors/chain.py +0 -0
  184. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/pipeline_processors/config_objects.py +0 -0
  185. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/previous_results.py +0 -0
  186. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/prompt_schema.json +0 -0
  187. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/prompt_weighting.py +0 -0
  188. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/prompts.py +0 -0
  189. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/realize.py +0 -0
  190. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/repl_commands.py +0 -0
  191. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/repl_worker.py +0 -0
  192. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/run.py +0 -0
  193. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/runs.py +0 -0
  194. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/__init__.py +0 -0
  195. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/enhancers.py +0 -0
  196. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/exports.py +0 -0
  197. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/netinfo.py +0 -0
  198. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/abap-08VXUWAP.js +0 -0
  199. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/apex-BWPQTe0t.js +0 -0
  200. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/azcli-Bc_sGQ0U.js +0 -0
  201. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/bat-i0X4ZdIN.js +0 -0
  202. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/bicep-B5-_aFwp.js +0 -0
  203. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/cameligo-DMUM7wLl.js +0 -0
  204. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/clojure-Cm7r79vr.js +0 -0
  205. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/codicon-Brq4_Ui5.ttf +0 -0
  206. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/coffee-Ba7i2nA0.js +0 -0
  207. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/cpp-C7h46wYY.js +0 -0
  208. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/csharp-BKxtCVv1.js +0 -0
  209. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/csp-bTuwJoIa.js +0 -0
  210. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/css-DIMkf-bt.js +0 -0
  211. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/css.worker-B3ciXF_0.js +0 -0
  212. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/cypher-CVaqCwHa.js +0 -0
  213. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/dart-onAF5SnQ.js +0 -0
  214. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/dockerfile-DZFCIeNp.js +0 -0
  215. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/ecl-D05T4iGw.js +0 -0
  216. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/editor-jjEx9u7D.css +0 -0
  217. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/editor.worker-q-txB4vs.js +0 -0
  218. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/elixir-6RTg0lbw.js +0 -0
  219. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/flow9-C5_-GSwl.js +0 -0
  220. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/fsharp-C8Ef5oNN.js +0 -0
  221. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/go-C-y9NEjX.js +0 -0
  222. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/graphql-fmXr3nnJ.js +0 -0
  223. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/hcl-CpzslTdj.js +0 -0
  224. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/html.worker-C93Ht9o9.js +0 -0
  225. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/ini-sBoK_t0W.js +0 -0
  226. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/java-BEtHBSE6.js +0 -0
  227. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/json.worker-B2V3pomh.js +0 -0
  228. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/julia-Bri6UV-V.js +0 -0
  229. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/kotlin-BOotOW0E.js +0 -0
  230. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/less-B9JPFI3C.js +0 -0
  231. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/lexon-CfSJPG6W.js +0 -0
  232. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/lua-CsQS60Ue.js +0 -0
  233. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/m3-D-oSqn_W.js +0 -0
  234. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/markdown-Cimd5fb3.js +0 -0
  235. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/mips-CIPQ_RoX.js +0 -0
  236. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/monaco--ixms01u.css +0 -0
  237. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/msdax-DauUninz.js +0 -0
  238. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/mysql-SOo6toE5.js +0 -0
  239. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/objective-c-FvmIjYaQ.js +0 -0
  240. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/pascal-DrH0SRf2.js +0 -0
  241. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/pascaligo-D-ptJ9y-.js +0 -0
  242. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/perl-oz_6vUea.js +0 -0
  243. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/pgsql-DTj74zXo.js +0 -0
  244. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/php-nr791fC2.js +0 -0
  245. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/pla-CopQ2nXW.js +0 -0
  246. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/postiats-43DmfD33.js +0 -0
  247. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/powerquery-D3hlyOfw.js +0 -0
  248. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/powershell-DmHpPYUd.js +0 -0
  249. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/protobuf-C531GsRP.js +0 -0
  250. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/pug-Z5eAx3Zn.js +0 -0
  251. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/qsharp-DkqhCAOL.js +0 -0
  252. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/r-BwWrilGY.js +0 -0
  253. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/redis-ClamHrr6.js +0 -0
  254. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/redshift-DT7zqm-g.js +0 -0
  255. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/restructuredtext-BYgofb2h.js +0 -0
  256. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/ruby-DezsRK8O.js +0 -0
  257. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/rust-DdL9SqIa.js +0 -0
  258. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/sb-CcwsVR0C.js +0 -0
  259. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/scala-DHpiXF5c.js +0 -0
  260. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/scheme-BeGwcela.js +0 -0
  261. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/scss-gp-XZpBa.js +0 -0
  262. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/shell-CC2rA5mh.js +0 -0
  263. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/solidity-BEEn4gHE.js +0 -0
  264. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/sophia-CRfGWb83.js +0 -0
  265. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/sparql-D_Lu-MrJ.js +0 -0
  266. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/sql-NEE52Syq.js +0 -0
  267. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/st-DbInun42.js +0 -0
  268. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/swift-Bxkupp3x.js +0 -0
  269. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/systemverilog-Bz4Y3fRF.js +0 -0
  270. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/tcl-DISqw1ZD.js +0 -0
  271. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/ts.worker-D7T1-Ig5.js +0 -0
  272. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/twig-De2hgUGE.js +0 -0
  273. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/typespec-B8J7ngcE.js +0 -0
  274. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/vb-DV3o63ZY.js +0 -0
  275. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/ui/assets/wgsl-DpFanUEy.js +0 -0
  276. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/server/updater.py +0 -0
  277. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/settings.py +0 -0
  278. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/step.py +0 -0
  279. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/step_cache.py +0 -0
  280. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/subfolders.py +0 -0
  281. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/background_remover.py +0 -0
  282. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/borders.py +0 -0
  283. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/compose_text.py +0 -0
  284. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/depth_estimator.py +0 -0
  285. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/diffusion_upscale.py +0 -0
  286. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/dissolve_videos.py +0 -0
  287. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/format_messages.py +0 -0
  288. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/image_to_text.py +0 -0
  289. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/interpolate_frames.py +0 -0
  290. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/model_cache.py +0 -0
  291. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/qr_code.py +0 -0
  292. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/restore_faces.py +0 -0
  293. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/rife_model.py +0 -0
  294. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/segment.py +0 -0
  295. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/speech_generation.py +0 -0
  296. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/stabilize.py +0 -0
  297. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/tensor_image.py +0 -0
  298. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/text_generation.py +0 -0
  299. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/text_sections.py +0 -0
  300. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/upscale.py +0 -0
  301. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/tasks/zoe_depth.py +0 -0
  302. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/teacache_models.json +0 -0
  303. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/test.py +0 -0
  304. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/type_helpers.py +0 -0
  305. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/validate.py +0 -0
  306. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/variables.py +0 -0
  307. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/workflow_sources.py +0 -0
  308. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/workflows/h3_context_ir.json +0 -0
  309. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw/workflows/test.json +0 -0
  310. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw_mcp/__init__.py +0 -0
  311. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw_mcp/__main__.py +0 -0
  312. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw_mcp/exports.py +0 -0
  313. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw_mcp/guides.py +0 -0
  314. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw_mcp/models.py +0 -0
  315. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw_mcp/prompts.py +0 -0
  316. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/dw_mcp/workspaces.py +0 -0
  317. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/setup.cfg +0 -0
  318. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_assets.py +0 -0
  319. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_borders.py +0 -0
  320. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_cli.py +0 -0
  321. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_component_pruning.py +0 -0
  322. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_compose_text.py +0 -0
  323. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_config_objects.py +0 -0
  324. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_depth_estimator.py +0 -0
  325. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_device_helpers.py +0 -0
  326. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_device_portability.py +0 -0
  327. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_dialogue_short_voices.py +0 -0
  328. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_dissolve_videos.py +0 -0
  329. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_docs_links.py +0 -0
  330. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_h3_context_ir.py +0 -0
  331. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_hf_placement.py +0 -0
  332. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_host_memory.py +0 -0
  333. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_hub_cache.py +0 -0
  334. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_image_to_text.py +0 -0
  335. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_image_utils.py +0 -0
  336. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_interpolate_frames.py +0 -0
  337. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_job_progress.py +0 -0
  338. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_jobs_listing.py +0 -0
  339. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_jobs_reused.py +0 -0
  340. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_library_sources.py +0 -0
  341. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_list_images.py +0 -0
  342. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_mcp_authoring.py +0 -0
  343. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_mcp_client.py +0 -0
  344. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_mcp_diagnose.py +0 -0
  345. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_mcp_exports.py +0 -0
  346. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_mcp_guides.py +0 -0
  347. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_mcp_models.py +0 -0
  348. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_mcp_prompts.py +0 -0
  349. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_mcp_workspaces.py +0 -0
  350. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_media_info.py +0 -0
  351. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_mix_audio.py +0 -0
  352. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_model_cache.py +0 -0
  353. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_modular_pipeline.py +0 -0
  354. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_modular_progress.py +0 -0
  355. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_offload_placement.py +0 -0
  356. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_pair_audio.py +0 -0
  357. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_phase_events.py +0 -0
  358. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_previous_results.py +0 -0
  359. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_prompt_parser.py +0 -0
  360. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_prompt_references.py +0 -0
  361. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_prompt_weighting.py +0 -0
  362. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_prompts.py +0 -0
  363. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_recenter_crop.py +0 -0
  364. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_repl_ergonomics.py +0 -0
  365. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_repl_hierarchical.py +0 -0
  366. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_repl_worker.py +0 -0
  367. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_rerun_new_seed.py +0 -0
  368. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_resize_bucket.py +0 -0
  369. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_runs.py +0 -0
  370. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_scheduler_config.py +0 -0
  371. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_security.py +0 -0
  372. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_serve_main.py +0 -0
  373. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_server_guides.py +0 -0
  374. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_server_jobs.py +0 -0
  375. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_server_mcp.py +0 -0
  376. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_speech_generation.py +0 -0
  377. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_stabilize.py +0 -0
  378. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_step_cache.py +0 -0
  379. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_strip_exif_and_watermark.py +0 -0
  380. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_subfolders.py +0 -0
  381. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_teacache.py +0 -0
  382. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_text_generation.py +0 -0
  383. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_text_sections.py +0 -0
  384. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_updater.py +0 -0
  385. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_variables.py +0 -0
  386. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_worker.py +0 -0
  387. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_workflow_sources.py +0 -0
  388. {diffusers_workflow-0.4.0b4 → diffusers_workflow-0.4.0b6}/tests/test_workspace.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diffusers-workflow
3
- Version: 0.4.0b4
3
+ Version: 0.4.0b6
4
4
  Summary: Declarative workflow engine and web UI for Hugging Face Diffusers
5
5
  Author: dkackman
6
6
  License: Apache-2.0
@@ -19,7 +19,7 @@ License-File: LICENSE
19
19
  Requires-Dist: torch>=2.13.0
20
20
  Requires-Dist: torchvision>=0.28.0
21
21
  Requires-Dist: diffusers>=0.40.0
22
- Requires-Dist: transformers>=5.16.1
22
+ Requires-Dist: transformers!=5.17.0,>=5.16.1
23
23
  Requires-Dist: accelerate>=1.14.0
24
24
  Requires-Dist: peft>=0.20.0
25
25
  Requires-Dist: safetensors>=0.8.0
@@ -36,6 +36,7 @@ Requires-Dist: bitsandbytes>=0.50.2; sys_platform == "linux"
36
36
  Requires-Dist: controlnet-aux>=0.0.10
37
37
  Requires-Dist: opencv-python-headless>=5.0.0.93
38
38
  Requires-Dist: kornia>=0.8.3
39
+ Requires-Dist: kernels>=0.17.0
39
40
  Requires-Dist: spandrel>=0.4.2
40
41
  Requires-Dist: facexlib>=0.3.0
41
42
  Requires-Dist: numpy>=2.5.2
@@ -68,7 +69,7 @@ Requires-Dist: pytest-timeout>=2.4.0; extra == "dev"
68
69
  Requires-Dist: pytest-mock>=3.15.1; extra == "dev"
69
70
  Requires-Dist: pytest-asyncio>=1.4.0; extra == "dev"
70
71
  Requires-Dist: httpx>=0.28.1; extra == "dev"
71
- Requires-Dist: black>=26.5.1; extra == "dev"
72
+ Requires-Dist: ruff>=0.15.0; extra == "dev"
72
73
  Requires-Dist: build; extra == "dev"
73
74
  Requires-Dist: mcp>=2.1.1; extra == "dev"
74
75
  Dynamic: license-file
@@ -295,3 +296,4 @@ frame interpolation and more.
295
296
  - [Security](docs/SECURITY.md) — Security model
296
297
  - [Testing](docs/TESTING.md) — Running the test suite
297
298
  - [Releasing](docs/RELEASING.md) — Cutting a release from a version tag
299
+ - [Agent Loop](docs/AGENT_LOOP.md) — What the automated implementer/tester ticket labels mean, for anyone joining an Issue
@@ -220,3 +220,4 @@ frame interpolation and more.
220
220
  - [Security](docs/SECURITY.md) — Security model
221
221
  - [Testing](docs/TESTING.md) — Running the test suite
222
222
  - [Releasing](docs/RELEASING.md) — Cutting a release from a version tag
223
+ - [Agent Loop](docs/AGENT_LOOP.md) — What the automated implementer/tester ticket labels mean, for anyone joining an Issue
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diffusers-workflow
3
- Version: 0.4.0b4
3
+ Version: 0.4.0b6
4
4
  Summary: Declarative workflow engine and web UI for Hugging Face Diffusers
5
5
  Author: dkackman
6
6
  License: Apache-2.0
@@ -19,7 +19,7 @@ License-File: LICENSE
19
19
  Requires-Dist: torch>=2.13.0
20
20
  Requires-Dist: torchvision>=0.28.0
21
21
  Requires-Dist: diffusers>=0.40.0
22
- Requires-Dist: transformers>=5.16.1
22
+ Requires-Dist: transformers!=5.17.0,>=5.16.1
23
23
  Requires-Dist: accelerate>=1.14.0
24
24
  Requires-Dist: peft>=0.20.0
25
25
  Requires-Dist: safetensors>=0.8.0
@@ -36,6 +36,7 @@ Requires-Dist: bitsandbytes>=0.50.2; sys_platform == "linux"
36
36
  Requires-Dist: controlnet-aux>=0.0.10
37
37
  Requires-Dist: opencv-python-headless>=5.0.0.93
38
38
  Requires-Dist: kornia>=0.8.3
39
+ Requires-Dist: kernels>=0.17.0
39
40
  Requires-Dist: spandrel>=0.4.2
40
41
  Requires-Dist: facexlib>=0.3.0
41
42
  Requires-Dist: numpy>=2.5.2
@@ -68,7 +69,7 @@ Requires-Dist: pytest-timeout>=2.4.0; extra == "dev"
68
69
  Requires-Dist: pytest-mock>=3.15.1; extra == "dev"
69
70
  Requires-Dist: pytest-asyncio>=1.4.0; extra == "dev"
70
71
  Requires-Dist: httpx>=0.28.1; extra == "dev"
71
- Requires-Dist: black>=26.5.1; extra == "dev"
72
+ Requires-Dist: ruff>=0.15.0; extra == "dev"
72
73
  Requires-Dist: build; extra == "dev"
73
74
  Requires-Dist: mcp>=2.1.1; extra == "dev"
74
75
  Dynamic: license-file
@@ -295,3 +296,4 @@ frame interpolation and more.
295
296
  - [Security](docs/SECURITY.md) — Security model
296
297
  - [Testing](docs/TESTING.md) — Running the test suite
297
298
  - [Releasing](docs/RELEASING.md) — Cutting a release from a version tag
299
+ - [Agent Loop](docs/AGENT_LOOP.md) — What the automated implementer/tester ticket labels mean, for anyone joining an Issue
@@ -9,15 +9,20 @@ 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/adapter_compatibility.py
12
13
  dw/arguments.py
13
14
  dw/assets.py
14
15
  dw/cache_blocks.json
15
16
  dw/cache_blocks.py
17
+ dw/content_types.py
18
+ dw/elision.py
16
19
  dw/events.py
17
20
  dw/for_each.py
18
21
  dw/host_memory.py
19
22
  dw/hub_cache.py
20
23
  dw/introspection.py
24
+ dw/kernel_availability.py
25
+ dw/locations.py
21
26
  dw/log_setup.py
22
27
  dw/media_info.py
23
28
  dw/plan.py
@@ -26,6 +31,8 @@ dw/prompt_schema.json
26
31
  dw/prompt_weighting.py
27
32
  dw/prompts.py
28
33
  dw/realize.py
34
+ dw/reference_limits.py
35
+ dw/reference_names.py
29
36
  dw/repl.py
30
37
  dw/repl_commands.py
31
38
  dw/repl_worker.py
@@ -39,11 +46,13 @@ dw/settings.py
39
46
  dw/step.py
40
47
  dw/step_cache.py
41
48
  dw/subfolders.py
49
+ dw/task_domains.py
42
50
  dw/teacache.py
43
51
  dw/teacache_models.json
44
52
  dw/test.py
45
53
  dw/type_helpers.py
46
54
  dw/validate.py
55
+ dw/variable_constraints.py
47
56
  dw/variables.py
48
57
  dw/worker.py
49
58
  dw/workflow.py
@@ -52,6 +61,7 @@ dw/workflow_sources.py
52
61
  dw/workspace.py
53
62
  dw/community_pipelines/pipeline_flux_rf_inversion.py
54
63
  dw/docs/ACCELERATION.md
64
+ dw/docs/AGENT_LOOP.md
55
65
  dw/docs/DEPENDENCIES.md
56
66
  dw/docs/IP_ADAPTER.md
57
67
  dw/docs/LORAS.md
@@ -83,6 +93,7 @@ dw/server/guides.py
83
93
  dw/server/jobs.py
84
94
  dw/server/mcp_mount.py
85
95
  dw/server/netinfo.py
96
+ dw/server/observed_cost.py
86
97
  dw/server/updater.py
87
98
  dw/server/ui/index.html
88
99
  dw/server/ui/assets/abap-08VXUWAP.js
@@ -99,45 +110,45 @@ dw/server/ui/assets/csharp-BKxtCVv1.js
99
110
  dw/server/ui/assets/csp-bTuwJoIa.js
100
111
  dw/server/ui/assets/css-DIMkf-bt.js
101
112
  dw/server/ui/assets/css.worker-B3ciXF_0.js
102
- dw/server/ui/assets/cssMode-_LF3nQQz.js
113
+ dw/server/ui/assets/cssMode-1t4O7A8b.js
103
114
  dw/server/ui/assets/cypher-CVaqCwHa.js
104
115
  dw/server/ui/assets/dart-onAF5SnQ.js
105
116
  dw/server/ui/assets/dockerfile-DZFCIeNp.js
106
117
  dw/server/ui/assets/ecl-D05T4iGw.js
107
118
  dw/server/ui/assets/editor-jjEx9u7D.css
108
- dw/server/ui/assets/editor.api-Df8mF5HS.js
119
+ dw/server/ui/assets/editor.api-C2mqCHa9.js
109
120
  dw/server/ui/assets/editor.worker-q-txB4vs.js
110
121
  dw/server/ui/assets/elixir-6RTg0lbw.js
111
122
  dw/server/ui/assets/flow9-C5_-GSwl.js
112
- dw/server/ui/assets/freemarker2-BFhhUaaI.js
123
+ dw/server/ui/assets/freemarker2-Cb6RGT42.js
113
124
  dw/server/ui/assets/fsharp-C8Ef5oNN.js
114
125
  dw/server/ui/assets/go-C-y9NEjX.js
115
126
  dw/server/ui/assets/graphql-fmXr3nnJ.js
116
- dw/server/ui/assets/handlebars-uOyL83kB.js
127
+ dw/server/ui/assets/handlebars-LzK4_SEF.js
117
128
  dw/server/ui/assets/hcl-CpzslTdj.js
118
- dw/server/ui/assets/html-CNOcS1qq.js
129
+ dw/server/ui/assets/html-Biz_qd50.js
119
130
  dw/server/ui/assets/html.worker-C93Ht9o9.js
120
- dw/server/ui/assets/htmlMode-BrZs8ZFo.js
121
- dw/server/ui/assets/index-BkC2KOK-.js
122
- dw/server/ui/assets/index-Dvcgq7CV.css
131
+ dw/server/ui/assets/htmlMode-CP4Kjl0x.js
132
+ dw/server/ui/assets/index-Bt8BlCkf.js
133
+ dw/server/ui/assets/index-D9tEUhx5.css
123
134
  dw/server/ui/assets/ini-sBoK_t0W.js
124
135
  dw/server/ui/assets/java-BEtHBSE6.js
125
- dw/server/ui/assets/javascript-BjmXvHYV.js
136
+ dw/server/ui/assets/javascript-DX4-t0BE.js
126
137
  dw/server/ui/assets/json.worker-B2V3pomh.js
127
- dw/server/ui/assets/jsonMode-CUpeMAA9.js
138
+ dw/server/ui/assets/jsonMode-hZa_qOEa.js
128
139
  dw/server/ui/assets/julia-Bri6UV-V.js
129
140
  dw/server/ui/assets/kotlin-BOotOW0E.js
130
141
  dw/server/ui/assets/less-B9JPFI3C.js
131
142
  dw/server/ui/assets/lexon-CfSJPG6W.js
132
- dw/server/ui/assets/liquid-CDCYHjo5.js
133
- dw/server/ui/assets/lspLanguageFeatures-C3BQ9bHy.js
143
+ dw/server/ui/assets/liquid-BRkTuJ_A.js
144
+ dw/server/ui/assets/lspLanguageFeatures-Dvt5tod9.js
134
145
  dw/server/ui/assets/lua-CsQS60Ue.js
135
146
  dw/server/ui/assets/m3-D-oSqn_W.js
136
147
  dw/server/ui/assets/markdown-Cimd5fb3.js
137
- dw/server/ui/assets/mdx-Z0OBIKet.js
148
+ dw/server/ui/assets/mdx-Bdet7qev.js
138
149
  dw/server/ui/assets/mips-CIPQ_RoX.js
139
150
  dw/server/ui/assets/monaco--ixms01u.css
140
- dw/server/ui/assets/monaco-CXIxqF1g.js
151
+ dw/server/ui/assets/monaco-QRyCMGAv.js
141
152
  dw/server/ui/assets/msdax-DauUninz.js
142
153
  dw/server/ui/assets/mysql-SOo6toE5.js
143
154
  dw/server/ui/assets/objective-c-FvmIjYaQ.js
@@ -152,10 +163,10 @@ dw/server/ui/assets/powerquery-D3hlyOfw.js
152
163
  dw/server/ui/assets/powershell-DmHpPYUd.js
153
164
  dw/server/ui/assets/protobuf-C531GsRP.js
154
165
  dw/server/ui/assets/pug-Z5eAx3Zn.js
155
- dw/server/ui/assets/python-zEGBkDvi.js
166
+ dw/server/ui/assets/python-DO0uJyUr.js
156
167
  dw/server/ui/assets/qsharp-DkqhCAOL.js
157
168
  dw/server/ui/assets/r-BwWrilGY.js
158
- dw/server/ui/assets/razor-QEBcCsTz.js
169
+ dw/server/ui/assets/razor-CkfVe6oz.js
159
170
  dw/server/ui/assets/redis-ClamHrr6.js
160
171
  dw/server/ui/assets/redshift-DT7zqm-g.js
161
172
  dw/server/ui/assets/restructuredtext-BYgofb2h.js
@@ -175,15 +186,15 @@ dw/server/ui/assets/swift-Bxkupp3x.js
175
186
  dw/server/ui/assets/systemverilog-Bz4Y3fRF.js
176
187
  dw/server/ui/assets/tcl-DISqw1ZD.js
177
188
  dw/server/ui/assets/ts.worker-D7T1-Ig5.js
178
- dw/server/ui/assets/tsMode-YMmO0OvA.js
189
+ dw/server/ui/assets/tsMode-z26QXNyE.js
179
190
  dw/server/ui/assets/twig-De2hgUGE.js
180
- dw/server/ui/assets/typescript-DmCSelwV.js
191
+ dw/server/ui/assets/typescript-DIdNc_uc.js
181
192
  dw/server/ui/assets/typespec-B8J7ngcE.js
182
193
  dw/server/ui/assets/vb-DV3o63ZY.js
183
194
  dw/server/ui/assets/wgsl-DpFanUEy.js
184
- dw/server/ui/assets/workers-DNhR6kh1.js
185
- dw/server/ui/assets/xml-B9wx0o_u.js
186
- dw/server/ui/assets/yaml-DRuGviYp.js
195
+ dw/server/ui/assets/workers-Ce8CDVu5.js
196
+ dw/server/ui/assets/xml-Djj2U0Rl.js
197
+ dw/server/ui/assets/yaml-CePLO71e.js
187
198
  dw/tasks/audio_utils.py
188
199
  dw/tasks/background_remover.py
189
200
  dw/tasks/borders.py
@@ -243,6 +254,7 @@ tests/test_compose_text.py
243
254
  tests/test_concat_videos.py
244
255
  tests/test_config_objects.py
245
256
  tests/test_configuration_schema.py
257
+ tests/test_content_types.py
246
258
  tests/test_depth_estimator.py
247
259
  tests/test_device.py
248
260
  tests/test_device_helpers.py
@@ -251,11 +263,14 @@ tests/test_dialogue_short_voices.py
251
263
  tests/test_diffusion_upscale.py
252
264
  tests/test_dissolve_videos.py
253
265
  tests/test_docs_links.py
266
+ tests/test_elision.py
254
267
  tests/test_events.py
255
268
  tests/test_examples.py
256
269
  tests/test_for_each.py
257
270
  tests/test_gather.py
271
+ tests/test_h3_adapters.py
258
272
  tests/test_h3_context_ir.py
273
+ tests/test_h3_schedule.py
259
274
  tests/test_hf_placement.py
260
275
  tests/test_host_memory.py
261
276
  tests/test_hub_cache.py
@@ -265,10 +280,16 @@ tests/test_integration.py
265
280
  tests/test_interpolate_frames.py
266
281
  tests/test_introspection.py
267
282
  tests/test_job_progress.py
283
+ tests/test_job_warnings.py
268
284
  tests/test_jobs_listing.py
269
285
  tests/test_jobs_reused.py
286
+ tests/test_kernel_availability.py
270
287
  tests/test_library_sources.py
271
288
  tests/test_list_images.py
289
+ tests/test_locations.py
290
+ tests/test_lora_alpha.py
291
+ tests/test_ltx2_diffusion_decode.py
292
+ tests/test_ltx2_ic_loras.py
272
293
  tests/test_ltx_prompt_library.py
273
294
  tests/test_mcp_assets.py
274
295
  tests/test_mcp_authoring.py
@@ -288,9 +309,11 @@ tests/test_mix_audio.py
288
309
  tests/test_model_cache.py
289
310
  tests/test_modular_pipeline.py
290
311
  tests/test_modular_progress.py
312
+ tests/test_observed_cost.py
291
313
  tests/test_offload_placement.py
292
314
  tests/test_output_references.py
293
315
  tests/test_pair_audio.py
316
+ tests/test_pair_audio_fit.py
294
317
  tests/test_phase_events.py
295
318
  tests/test_pipeline_caching.py
296
319
  tests/test_pipeline_components.py
@@ -303,6 +326,8 @@ tests/test_prompt_weighting.py
303
326
  tests/test_prompts.py
304
327
  tests/test_realize.py
305
328
  tests/test_recenter_crop.py
329
+ tests/test_reference_limits.py
330
+ tests/test_reference_names.py
306
331
  tests/test_repl_commands.py
307
332
  tests/test_repl_ergonomics.py
308
333
  tests/test_repl_hierarchical.py
@@ -334,6 +359,8 @@ tests/test_strip_exif_and_watermark.py
334
359
  tests/test_subfolders.py
335
360
  tests/test_task.py
336
361
  tests/test_task_discovery.py
362
+ tests/test_task_domains.py
363
+ tests/test_task_signature_errors.py
337
364
  tests/test_teacache.py
338
365
  tests/test_template_subfolders.py
339
366
  tests/test_tensor_image.py
@@ -342,6 +369,7 @@ tests/test_text_sections.py
342
369
  tests/test_type_helpers.py
343
370
  tests/test_updater.py
344
371
  tests/test_validate_arguments.py
372
+ tests/test_variable_constraints.py
345
373
  tests/test_variables.py
346
374
  tests/test_video_utils.py
347
375
  tests/test_worker.py
@@ -1,7 +1,7 @@
1
1
  torch>=2.13.0
2
2
  torchvision>=0.28.0
3
3
  diffusers>=0.40.0
4
- transformers>=5.16.1
4
+ transformers!=5.17.0,>=5.16.1
5
5
  accelerate>=1.14.0
6
6
  peft>=0.20.0
7
7
  safetensors>=0.8.0
@@ -17,6 +17,7 @@ gguf>=0.19.0
17
17
  controlnet-aux>=0.0.10
18
18
  opencv-python-headless>=5.0.0.93
19
19
  kornia>=0.8.3
20
+ kernels>=0.17.0
20
21
  spandrel>=0.4.2
21
22
  facexlib>=0.3.0
22
23
  numpy>=2.5.2
@@ -47,7 +48,7 @@ pytest-timeout>=2.4.0
47
48
  pytest-mock>=3.15.1
48
49
  pytest-asyncio>=1.4.0
49
50
  httpx>=0.28.1
50
- black>=26.5.1
51
+ ruff>=0.15.0
51
52
  build
52
53
  mcp>=2.1.1
53
54
 
@@ -0,0 +1,226 @@
1
+ """The LoRA a step loads has to be trained for the path that step runs.
2
+
3
+ MiniMax-H3 ships one repository holding two checkpoint partitions -
4
+ `transformer/` for the `t2va` and `fl2va` workflows, `transformer_ref/` for
5
+ `ref2va` - and a separate turbo adapter trained against each. Handing the
6
+ FL2VA adapter to a `ref2va` step is the one H3 misconfiguration that never
7
+ shows up as a failure: a `ref2va` step holds `transformer_ref` alone, so
8
+ diffusers loads whatever it is given straight onto it, the run succeeds, and
9
+ the only symptom is identity retention that quietly is not as good as it
10
+ should be. Four templates carried exactly that mistake and nothing ever
11
+ complained (#149, #155).
12
+
13
+ Everything a pipeline itself would refuse is refused by the pipeline. This
14
+ is the other kind: a request the pipeline accepts and answers wrongly, which
15
+ costs a whole render to discover and cannot be seen in the output. So it is
16
+ checked where it is free - `validation_errors`, so `POST /api/validate` and
17
+ the pre-queue check both refuse it, at the JSON path the value sits at.
18
+
19
+ What is *not* written here: the adapter file names. `lora_weight_name` is a
20
+ free string and a future reference-trained checkpoint cannot be predicted, so
21
+ an unrecognised name is a warning naming the rule rather than a refusal - the
22
+ default inverts from "anything passes" to "the one documented mistake is
23
+ caught", and someone testing `my-new-ref-lora.safetensors` still gets
24
+ through. What *is* written here is a vendor naming convention (`ref2v` /
25
+ `fl2v` in the file name) that no diffusers symbol declares; the workflow
26
+ names and the partition each one denoises against are diffusers' own, and
27
+ `tests/test_h3_adapters.py` pins them to it.
28
+ """
29
+
30
+ import logging
31
+
32
+ from .for_each import MEMBER_SEPARATOR, render_path
33
+
34
+ logger = logging.getLogger("dw")
35
+
36
+ # The `workflow=` values MiniMaxH3Blocks._workflow_map declares, split by the
37
+ # transformer partition each one denoises against - a `ref2va` step loads
38
+ # `transformer_ref` and nothing else, every other H3 workflow loads
39
+ # `transformer`. A workflow name not listed here is not checked
40
+ REFERENCE_WORKFLOWS = frozenset({"ref2va"})
41
+ KEYFRAME_WORKFLOWS = frozenset({"t2va", "fl2va"})
42
+ H3_WORKFLOWS = REFERENCE_WORKFLOWS | KEYFRAME_WORKFLOWS
43
+
44
+ # The token MiniMax puts in an adapter's file name to say which partition it
45
+ # was trained against. `ref2v` first: it is the longer match and a name
46
+ # carrying both is ambiguous rather than a keyframe adapter
47
+ REFERENCE_TOKEN = "ref2v"
48
+ KEYFRAME_TOKEN = "fl2v"
49
+
50
+ LORAS_KEY = "loras"
51
+ WEIGHT_NAME_KEY = "weight_name"
52
+ WORKFLOW_KEY = "workflow"
53
+ FROM_PRETRAINED_KEY = "from_pretrained_arguments"
54
+ VARIABLE_PREFIX = "variable:"
55
+ # Values another pass resolves; one still spelled out here is not this
56
+ # pass's complaint
57
+ _UNRESOLVED_PREFIXES = ("variable:", "item:", "previous_result:", "gather:")
58
+
59
+
60
+ def _trained_for(weight_name):
61
+ """Which partition an adapter's file name says it was trained against -
62
+ 'reference', 'keyframe', or None when the name says neither."""
63
+ lowered = weight_name.lower()
64
+ if REFERENCE_TOKEN in lowered:
65
+ return "reference"
66
+ if KEYFRAME_TOKEN in lowered:
67
+ return "keyframe"
68
+ return None
69
+
70
+
71
+ def _problem(workflow, weight_name):
72
+ """(severity, message) for one adapter on one step, or None when the
73
+ pairing is right."""
74
+ trained = _trained_for(weight_name)
75
+ wants = "reference" if workflow in REFERENCE_WORKFLOWS else "keyframe"
76
+ if trained == wants:
77
+ return None
78
+ if trained is None:
79
+ return (
80
+ "warning",
81
+ f"'{weight_name}' names neither '{REFERENCE_TOKEN}' nor "
82
+ f"'{KEYFRAME_TOKEN}', so it cannot be checked against this "
83
+ f"step's '{workflow}' workflow. A '{workflow}' step denoises "
84
+ f"against the "
85
+ f"'{'transformer_ref' if wants == 'reference' else 'transformer'}' "
86
+ f"partition, and an adapter trained against the other one loads "
87
+ f"onto it without error and only degrades the result",
88
+ )
89
+ return (
90
+ "error",
91
+ f"'{weight_name}' is trained against the "
92
+ f"'{'transformer_ref' if trained == 'reference' else 'transformer'}' "
93
+ f"partition and this step runs the '{workflow}' workflow, which "
94
+ f"denoises against "
95
+ f"'{'transformer_ref' if wants == 'reference' else 'transformer'}'. "
96
+ f"MiniMax-H3 loads it anyway and the run succeeds - the only symptom "
97
+ f"is a worse result - so it is refused here. Use an adapter trained "
98
+ f"for this workflow (its name carries "
99
+ f"'{REFERENCE_TOKEN if wants == 'reference' else KEYFRAME_TOKEN}')",
100
+ )
101
+
102
+
103
+ def _lora_problems(steps, source_indices, written=None, supplied=()):
104
+ """Every adapter/workflow mismatch in an expanded step list, as
105
+ (severity, path, message).
106
+
107
+ `written` is the definition as the author wrote it and `supplied` the
108
+ argument names the caller passed: when the value arrived through a
109
+ variable the caller set, the path reported is `arguments.<name>`, where
110
+ they wrote it, rather than the step it landed in.
111
+ """
112
+ written_steps = (written or {}).get("steps")
113
+ found = []
114
+ for index, step in enumerate(steps):
115
+ if not isinstance(step, dict):
116
+ continue
117
+ pipeline = step.get("pipeline")
118
+ if not isinstance(pipeline, dict):
119
+ continue
120
+ source = (
121
+ source_indices[index]
122
+ if source_indices is not None and index < len(source_indices)
123
+ else index
124
+ )
125
+ from_pretrained = pipeline.get(FROM_PRETRAINED_KEY)
126
+ workflow = (
127
+ from_pretrained.get(WORKFLOW_KEY)
128
+ if isinstance(from_pretrained, dict)
129
+ else None
130
+ )
131
+ if workflow not in H3_WORKFLOWS:
132
+ continue
133
+ loras = pipeline.get(LORAS_KEY)
134
+ if not isinstance(loras, list):
135
+ continue
136
+ name = step.get("name")
137
+ where = (
138
+ f" in member '{name}'"
139
+ if isinstance(name, str) and MEMBER_SEPARATOR in name
140
+ else ""
141
+ )
142
+ for position, lora in enumerate(loras):
143
+ if not isinstance(lora, dict):
144
+ continue
145
+ weight_name = lora.get(WEIGHT_NAME_KEY)
146
+ if not isinstance(weight_name, str) or weight_name.startswith(
147
+ _UNRESOLVED_PREFIXES
148
+ ):
149
+ continue
150
+ problem = _problem(workflow, weight_name)
151
+ if problem is None:
152
+ continue
153
+ severity, message = problem
154
+ found.append(
155
+ (
156
+ severity,
157
+ _path_for(written_steps, source, position, supplied)
158
+ or render_path(
159
+ (
160
+ "steps",
161
+ source,
162
+ "pipeline",
163
+ LORAS_KEY,
164
+ position,
165
+ WEIGHT_NAME_KEY,
166
+ )
167
+ ),
168
+ message + where,
169
+ )
170
+ )
171
+ return found
172
+
173
+
174
+ def _path_for(written_steps, source, position, supplied):
175
+ """`arguments.<name>` when the adapter came from a variable the caller
176
+ set, else None - the value is reported where it was written."""
177
+ if not isinstance(written_steps, list) or source >= len(written_steps):
178
+ return None
179
+ step = written_steps[source]
180
+ pipeline = step.get("pipeline") if isinstance(step, dict) else None
181
+ loras = pipeline.get(LORAS_KEY) if isinstance(pipeline, dict) else None
182
+ if not isinstance(loras, list) or position >= len(loras):
183
+ return None
184
+ entry = loras[position]
185
+ reference = entry.get(WEIGHT_NAME_KEY) if isinstance(entry, dict) else None
186
+ if not isinstance(reference, str) or not reference.startswith(VARIABLE_PREFIX):
187
+ return None
188
+ variable = reference.removeprefix(VARIABLE_PREFIX)
189
+ return f"arguments.{variable}" if variable in (supplied or ()) else None
190
+
191
+
192
+ def adapter_errors(workflow_definition, source_indices=None, written=None, supplied=()):
193
+ """Every adapter loaded onto the wrong checkpoint partition, as
194
+ [{path, message}]. The definition is the expanded, substituted one, so a
195
+ `for_each` member's own adapter is checked as it will run."""
196
+ return [
197
+ {"path": path, "message": message}
198
+ for severity, path, message in _lora_problems(
199
+ workflow_definition.get("steps") or [], source_indices, written, supplied
200
+ )
201
+ if severity == "error"
202
+ ]
203
+
204
+
205
+ def adapter_warnings(
206
+ workflow_definition, source_indices=None, written=None, supplied=()
207
+ ):
208
+ """Every adapter whose name says nothing about what it was trained for,
209
+ as messages - valid, and said out loud because nothing at run time will."""
210
+ return [
211
+ f"{path}: {message}"
212
+ for severity, path, message in _lora_problems(
213
+ workflow_definition.get("steps") or [], source_indices, written, supplied
214
+ )
215
+ if severity == "warning"
216
+ ]
217
+
218
+
219
+ def warn_adapters(workflow_definition):
220
+ """Say the unrecognised-adapter warning where whoever asked for the run
221
+ can read it - a run started from the CLI or a rerun never passed through
222
+ the validate route."""
223
+ from .events import emit_warning
224
+
225
+ for message in adapter_warnings(workflow_definition):
226
+ emit_warning(message, kind="adapter_unrecognized")
@@ -17,6 +17,7 @@ from .security import (
17
17
  ALLOWED_VIDEO_EXTENSIONS,
18
18
  ALLOWED_AUDIO_EXTENSIONS,
19
19
  )
20
+ from .locations import validate_media_path, validate_media_url
20
21
 
21
22
  logger = logging.getLogger("dw")
22
23
 
@@ -905,7 +906,7 @@ def fetch_image(img_spec, base_dir=None):
905
906
 
906
907
  # If already a PIL Image, return as-is (allows multiple realize_args calls)
907
908
  if hasattr(img_spec, "mode") and hasattr(img_spec, "size"):
908
- logger.debug(f"Image already loaded, returning as-is")
909
+ logger.debug("Image already loaded, returning as-is")
909
910
  return img_spec
910
911
 
911
912
  # Handle dict format: {"location": "url_or_path"}
@@ -931,12 +932,13 @@ def fetch_image(img_spec, base_dir=None):
931
932
  if isinstance(img_spec, str) and (
932
933
  img_spec.startswith("http://") or img_spec.startswith("https://")
933
934
  ):
934
- validated_url = validate_url(img_spec)
935
+ validated_url = validate_media_url(img_spec, "an image argument")
935
936
  return load_image(validated_url)
936
937
  else:
937
- # Treat as file path, relative to the workflow file
938
- validated_path = validate_path(
939
- resolve_relative_path(str(img_spec), base_dir), allow_create=False
938
+ # Treat as file path, relative to the workflow file, and confined
939
+ # to the directories this workflow may read (dw/locations.py)
940
+ validated_path = validate_media_path(
941
+ str(img_spec), base_dir, "an image argument"
940
942
  )
941
943
  # Validate file extension
942
944
  ext = os.path.splitext(validated_path)[1].lower()
@@ -995,12 +997,12 @@ def fetch_video(video_spec, base_dir=None):
995
997
  return [fetch_video(vid, base_dir) for vid in video_spec]
996
998
  # Otherwise assume it's already loaded video frames
997
999
  else:
998
- logger.debug(f"Video frames already loaded, returning as-is")
1000
+ logger.debug("Video frames already loaded, returning as-is")
999
1001
  return video_spec
1000
1002
 
1001
1003
  # If already loaded video frames (tuple), return as-is
1002
1004
  if isinstance(video_spec, tuple):
1003
- logger.debug(f"Video frames already loaded, returning as-is")
1005
+ logger.debug("Video frames already loaded, returning as-is")
1004
1006
  return video_spec
1005
1007
 
1006
1008
  # Handle dict format: {"location": "url_or_path"}
@@ -1028,12 +1030,13 @@ def fetch_video(video_spec, base_dir=None):
1028
1030
  if isinstance(video_spec, str) and (
1029
1031
  video_spec.startswith("http://") or video_spec.startswith("https://")
1030
1032
  ):
1031
- validated_url = validate_url(video_spec)
1033
+ validated_url = validate_media_url(video_spec, "a video argument")
1032
1034
  return _with_frame_rate(load_video(validated_url), validated_url)
1033
1035
  else:
1034
- # Treat as file path, relative to the workflow file
1035
- validated_path = validate_path(
1036
- resolve_relative_path(str(video_spec), base_dir), allow_create=False
1036
+ # Treat as file path, relative to the workflow file, and confined
1037
+ # to the directories this workflow may read (dw/locations.py)
1038
+ validated_path = validate_media_path(
1039
+ str(video_spec), base_dir, "a video argument"
1037
1040
  )
1038
1041
  # Validate file extension
1039
1042
  ext = os.path.splitext(validated_path)[1].lower()