diffusers-workflow 0.4.0a3__py3-none-any.whl

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 (171) hide show
  1. diffusers_workflow-0.4.0a3.dist-info/METADATA +310 -0
  2. diffusers_workflow-0.4.0a3.dist-info/RECORD +171 -0
  3. diffusers_workflow-0.4.0a3.dist-info/WHEEL +5 -0
  4. diffusers_workflow-0.4.0a3.dist-info/entry_points.txt +6 -0
  5. diffusers_workflow-0.4.0a3.dist-info/licenses/LICENSE +201 -0
  6. diffusers_workflow-0.4.0a3.dist-info/top_level.txt +1 -0
  7. dw/__init__.py +353 -0
  8. dw/arguments.py +906 -0
  9. dw/cache_blocks.json +16 -0
  10. dw/cache_blocks.py +145 -0
  11. dw/community_pipelines/pipeline_flux_rf_inversion.py +1184 -0
  12. dw/events.py +78 -0
  13. dw/hub_cache.py +289 -0
  14. dw/introspection.py +458 -0
  15. dw/log_setup.py +45 -0
  16. dw/pipeline_processors/chain.py +750 -0
  17. dw/pipeline_processors/config_objects.py +235 -0
  18. dw/pipeline_processors/pipeline.py +1687 -0
  19. dw/pipeline_processors/remote.py +18 -0
  20. dw/previous_results.py +259 -0
  21. dw/prompt_weighting.py +378 -0
  22. dw/repl.py +298 -0
  23. dw/repl_commands.py +808 -0
  24. dw/repl_worker.py +129 -0
  25. dw/result.py +850 -0
  26. dw/run.py +92 -0
  27. dw/schema.py +24 -0
  28. dw/security.py +379 -0
  29. dw/serve.py +70 -0
  30. dw/server/__init__.py +2 -0
  31. dw/server/app.py +588 -0
  32. dw/server/jobs.py +547 -0
  33. dw/server/ui/assets/abap-08VXUWAP.js +1 -0
  34. dw/server/ui/assets/apex-BWPQTe0t.js +1 -0
  35. dw/server/ui/assets/azcli-Bc_sGQ0U.js +1 -0
  36. dw/server/ui/assets/bat-i0X4ZdIN.js +1 -0
  37. dw/server/ui/assets/bicep-B5-_aFwp.js +2 -0
  38. dw/server/ui/assets/cameligo-DMUM7wLl.js +1 -0
  39. dw/server/ui/assets/clojure-Cm7r79vr.js +1 -0
  40. dw/server/ui/assets/codicon-Brq4_Ui5.ttf +0 -0
  41. dw/server/ui/assets/coffee-Ba7i2nA0.js +1 -0
  42. dw/server/ui/assets/cpp-C7h46wYY.js +1 -0
  43. dw/server/ui/assets/csharp-BKxtCVv1.js +1 -0
  44. dw/server/ui/assets/csp-bTuwJoIa.js +1 -0
  45. dw/server/ui/assets/css-DIMkf-bt.js +3 -0
  46. dw/server/ui/assets/css.worker-B3ciXF_0.js +93 -0
  47. dw/server/ui/assets/cssMode-CEh6hWi2.js +1 -0
  48. dw/server/ui/assets/cypher-CVaqCwHa.js +1 -0
  49. dw/server/ui/assets/dart-onAF5SnQ.js +1 -0
  50. dw/server/ui/assets/dockerfile-DZFCIeNp.js +1 -0
  51. dw/server/ui/assets/ecl-D05T4iGw.js +1 -0
  52. dw/server/ui/assets/editor-jjEx9u7D.css +1 -0
  53. dw/server/ui/assets/editor.api-CExg3_mM.js +847 -0
  54. dw/server/ui/assets/editor.worker-q-txB4vs.js +30 -0
  55. dw/server/ui/assets/elixir-6RTg0lbw.js +1 -0
  56. dw/server/ui/assets/flow9-C5_-GSwl.js +1 -0
  57. dw/server/ui/assets/freemarker2-DH6orYh2.js +3 -0
  58. dw/server/ui/assets/fsharp-C8Ef5oNN.js +1 -0
  59. dw/server/ui/assets/go-C-y9NEjX.js +1 -0
  60. dw/server/ui/assets/graphql-fmXr3nnJ.js +1 -0
  61. dw/server/ui/assets/handlebars-CbrMVW4Q.js +1 -0
  62. dw/server/ui/assets/hcl-CpzslTdj.js +1 -0
  63. dw/server/ui/assets/html-YDNPZw2M.js +1 -0
  64. dw/server/ui/assets/html.worker-C93Ht9o9.js +506 -0
  65. dw/server/ui/assets/htmlMode-B_zSGWO2.js +1 -0
  66. dw/server/ui/assets/index-B7-VcYS-.css +1 -0
  67. dw/server/ui/assets/index-D_EiPU3b.js +13 -0
  68. dw/server/ui/assets/ini-sBoK_t0W.js +1 -0
  69. dw/server/ui/assets/java-BEtHBSE6.js +1 -0
  70. dw/server/ui/assets/javascript-dYuBvioq.js +1 -0
  71. dw/server/ui/assets/json.worker-B2V3pomh.js +62 -0
  72. dw/server/ui/assets/jsonMode-CUqLM39V.js +7 -0
  73. dw/server/ui/assets/julia-Bri6UV-V.js +1 -0
  74. dw/server/ui/assets/kotlin-BOotOW0E.js +1 -0
  75. dw/server/ui/assets/less-B9JPFI3C.js +2 -0
  76. dw/server/ui/assets/lexon-CfSJPG6W.js +1 -0
  77. dw/server/ui/assets/liquid-D6vxBzMv.js +1 -0
  78. dw/server/ui/assets/lspLanguageFeatures-1WJ2palX.js +4 -0
  79. dw/server/ui/assets/lua-CsQS60Ue.js +1 -0
  80. dw/server/ui/assets/m3-D-oSqn_W.js +1 -0
  81. dw/server/ui/assets/markdown-Cimd5fb3.js +1 -0
  82. dw/server/ui/assets/mdx-SHQb6vmD.js +1 -0
  83. dw/server/ui/assets/mips-CIPQ_RoX.js +1 -0
  84. dw/server/ui/assets/monaco--ixms01u.css +1 -0
  85. dw/server/ui/assets/monaco-CP-s5rcP.js +56 -0
  86. dw/server/ui/assets/msdax-DauUninz.js +1 -0
  87. dw/server/ui/assets/mysql-SOo6toE5.js +1 -0
  88. dw/server/ui/assets/objective-c-FvmIjYaQ.js +1 -0
  89. dw/server/ui/assets/pascal-DrH0SRf2.js +1 -0
  90. dw/server/ui/assets/pascaligo-D-ptJ9y-.js +1 -0
  91. dw/server/ui/assets/perl-oz_6vUea.js +1 -0
  92. dw/server/ui/assets/pgsql-DTj74zXo.js +1 -0
  93. dw/server/ui/assets/php-nr791fC2.js +1 -0
  94. dw/server/ui/assets/pla-CopQ2nXW.js +1 -0
  95. dw/server/ui/assets/postiats-43DmfD33.js +1 -0
  96. dw/server/ui/assets/powerquery-D3hlyOfw.js +1 -0
  97. dw/server/ui/assets/powershell-DmHpPYUd.js +1 -0
  98. dw/server/ui/assets/protobuf-C531GsRP.js +2 -0
  99. dw/server/ui/assets/pug-Z5eAx3Zn.js +1 -0
  100. dw/server/ui/assets/python-x0_EGHq9.js +1 -0
  101. dw/server/ui/assets/qsharp-DkqhCAOL.js +1 -0
  102. dw/server/ui/assets/r-BwWrilGY.js +1 -0
  103. dw/server/ui/assets/razor-BZC4LQDP.js +1 -0
  104. dw/server/ui/assets/redis-ClamHrr6.js +1 -0
  105. dw/server/ui/assets/redshift-DT7zqm-g.js +1 -0
  106. dw/server/ui/assets/restructuredtext-BYgofb2h.js +1 -0
  107. dw/server/ui/assets/ruby-DezsRK8O.js +1 -0
  108. dw/server/ui/assets/rust-DdL9SqIa.js +1 -0
  109. dw/server/ui/assets/sb-CcwsVR0C.js +1 -0
  110. dw/server/ui/assets/scala-DHpiXF5c.js +1 -0
  111. dw/server/ui/assets/scheme-BeGwcela.js +1 -0
  112. dw/server/ui/assets/scss-gp-XZpBa.js +3 -0
  113. dw/server/ui/assets/shell-CC2rA5mh.js +1 -0
  114. dw/server/ui/assets/solidity-BEEn4gHE.js +1 -0
  115. dw/server/ui/assets/sophia-CRfGWb83.js +1 -0
  116. dw/server/ui/assets/sparql-D_Lu-MrJ.js +1 -0
  117. dw/server/ui/assets/sql-NEE52Syq.js +1 -0
  118. dw/server/ui/assets/st-DbInun42.js +1 -0
  119. dw/server/ui/assets/swift-Bxkupp3x.js +1 -0
  120. dw/server/ui/assets/systemverilog-Bz4Y3fRF.js +1 -0
  121. dw/server/ui/assets/tcl-DISqw1ZD.js +1 -0
  122. dw/server/ui/assets/ts.worker-D7T1-Ig5.js +67738 -0
  123. dw/server/ui/assets/tsMode-BTfA6SbD.js +11 -0
  124. dw/server/ui/assets/twig-De2hgUGE.js +1 -0
  125. dw/server/ui/assets/typescript-CWA4MsNk.js +1 -0
  126. dw/server/ui/assets/typespec-B8J7ngcE.js +1 -0
  127. dw/server/ui/assets/vb-DV3o63ZY.js +1 -0
  128. dw/server/ui/assets/wgsl-DpFanUEy.js +298 -0
  129. dw/server/ui/assets/workers-CWU0uvj5.js +1 -0
  130. dw/server/ui/assets/xml-KmfTm3rg.js +1 -0
  131. dw/server/ui/assets/yaml-nFO_dDS6.js +1 -0
  132. dw/server/ui/index.html +17 -0
  133. dw/settings.py +77 -0
  134. dw/step.py +132 -0
  135. dw/tasks/audio_utils.py +266 -0
  136. dw/tasks/background_remover.py +43 -0
  137. dw/tasks/borders.py +113 -0
  138. dw/tasks/concat_videos.py +80 -0
  139. dw/tasks/depth_estimator.py +54 -0
  140. dw/tasks/diffusion_upscale.py +109 -0
  141. dw/tasks/format_messages.py +24 -0
  142. dw/tasks/gather.py +139 -0
  143. dw/tasks/image_to_text.py +43 -0
  144. dw/tasks/image_utils.py +661 -0
  145. dw/tasks/interpolate_frames.py +227 -0
  146. dw/tasks/model_cache.py +39 -0
  147. dw/tasks/pair_audio.py +58 -0
  148. dw/tasks/qr_code.py +19 -0
  149. dw/tasks/restore_faces.py +175 -0
  150. dw/tasks/rife_model.py +192 -0
  151. dw/tasks/segment.py +121 -0
  152. dw/tasks/task.py +474 -0
  153. dw/tasks/tensor_image.py +57 -0
  154. dw/tasks/text_generation.py +168 -0
  155. dw/tasks/text_sections.py +80 -0
  156. dw/tasks/upscale.py +203 -0
  157. dw/tasks/video_utils.py +154 -0
  158. dw/tasks/zoe_depth.py +71 -0
  159. dw/teacache.py +376 -0
  160. dw/teacache_models.json +99 -0
  161. dw/test.py +29 -0
  162. dw/type_helpers.py +68 -0
  163. dw/validate.py +43 -0
  164. dw/variables.py +153 -0
  165. dw/worker.py +517 -0
  166. dw/workflow.py +553 -0
  167. dw/workflow_schema.json +1157 -0
  168. dw/workflows/augment_prompt.json +65 -0
  169. dw/workflows/describe_image.json +58 -0
  170. dw/workflows/h3_context_ir.json +57 -0
  171. dw/workflows/test.json +31 -0
dw/tasks/gather.py ADDED
@@ -0,0 +1,139 @@
1
+ import glob as glob_lib
2
+ import logging
3
+ from diffusers.utils import load_image, load_video
4
+ from ..arguments import fetch_image, fetch_video
5
+ from ..security import validate_url, SecurityError
6
+
7
+ logger = logging.getLogger("dw")
8
+
9
+
10
+ def gather_images(glob=None, urls=None):
11
+ """
12
+ Gather images from local files and/or URLs.
13
+
14
+ Args:
15
+ glob: Pattern for matching local image files (e.g., "images/*.png")
16
+ urls: List of URLs to download images from
17
+
18
+ Returns:
19
+ List of loaded images
20
+
21
+ Raises:
22
+ ValueError: If no images are found
23
+ SecurityError: If validation fails
24
+ """
25
+ if urls is None:
26
+ urls = []
27
+ images = []
28
+
29
+ # Load local images matching glob pattern
30
+ if glob is not None:
31
+ logger.debug(f"Searching for images matching pattern: {glob}")
32
+ image_paths = glob_lib.glob(glob)
33
+ logger.info(f"Found {len(image_paths)} local images")
34
+
35
+ for path in image_paths:
36
+ try:
37
+ logger.debug(f"Loading image from: {path}")
38
+ images.append(fetch_image(path))
39
+ except SecurityError:
40
+ raise
41
+ except Exception as e:
42
+ logger.error(
43
+ f"Failed to load image from {path}: {str(e)}", exc_info=True
44
+ )
45
+ raise
46
+
47
+ # Load images from URLs
48
+ for url in urls:
49
+ try:
50
+ logger.debug(f"Loading image from URL: {url}")
51
+ validated_url = validate_url(url)
52
+ images.append(load_image(validated_url))
53
+ except SecurityError:
54
+ raise
55
+ except Exception as e:
56
+ logger.error(
57
+ f"Failed to load image from URL {url}: {str(e)}", exc_info=True
58
+ )
59
+ raise
60
+
61
+ # Validate that we found at least one image
62
+ if len(images) == 0:
63
+ error_msg = "No images found"
64
+ logger.error(error_msg)
65
+ raise ValueError(error_msg)
66
+
67
+ logger.debug(f"Successfully gathered {len(images)} images")
68
+ return images
69
+
70
+
71
+ def gather_videos(glob=None, urls=None):
72
+ """
73
+ Gather videos from local files and/or URLs.
74
+
75
+ Args:
76
+ glob: Pattern for matching local video files (e.g., "videos/*.mp4")
77
+ urls: List of URLs to download videos from
78
+
79
+ Returns:
80
+ List of loaded videos
81
+ """
82
+ if urls is None:
83
+ urls = []
84
+ videos = []
85
+
86
+ # Load local videos matching glob pattern
87
+ if glob is not None:
88
+ logger.debug(f"Searching for videos matching pattern: {glob}")
89
+ video_paths = glob_lib.glob(glob)
90
+ logger.info(f"Found {len(video_paths)} local videos")
91
+
92
+ for path in video_paths:
93
+ try:
94
+ logger.debug(f"Loading video from: {path}")
95
+ videos.append(fetch_video(path))
96
+ except SecurityError:
97
+ raise
98
+ except Exception as e:
99
+ logger.error(
100
+ f"Failed to load video from {path}: {str(e)}", exc_info=True
101
+ )
102
+ raise
103
+
104
+ # Load videos from URLs
105
+ for url in urls:
106
+ try:
107
+ logger.debug(f"Loading video from URL: {url}")
108
+ validated_url = validate_url(url)
109
+ videos.append(load_video(validated_url))
110
+ except SecurityError:
111
+ raise
112
+ except Exception as e:
113
+ logger.error(
114
+ f"Failed to load video from URL {url}: {str(e)}", exc_info=True
115
+ )
116
+ raise
117
+
118
+ # Validate that we found at least one video
119
+ if len(videos) == 0:
120
+ error_msg = "No videos found"
121
+ logger.error(error_msg)
122
+ raise ValueError(error_msg)
123
+
124
+ logger.debug(f"Successfully gathered {len(videos)} videos")
125
+ return videos
126
+
127
+
128
+ def gather_inputs(kwargs):
129
+ """
130
+ Gather input arguments for passing to next task.
131
+
132
+ Args:
133
+ kwargs: Dictionary of input arguments
134
+
135
+ Returns:
136
+ Input arguments unchanged
137
+ """
138
+ logger.debug(f"Gathering input arguments: {kwargs}")
139
+ return kwargs
@@ -0,0 +1,43 @@
1
+ """
2
+ Image captioning via HuggingFace transformers.
3
+
4
+ Captioning is text generation that happens to be given a picture, so this
5
+ delegates to the text_generation task rather than keeping a second copy of
6
+ the pipeline handling. Transformers 5 removed the dedicated "image-to-text"
7
+ task this used to build, and with it the BLIP-style captioning models; the
8
+ work is done by vision-language models now.
9
+ """
10
+
11
+ import logging
12
+ from .text_generation import generate_text, _DEFAULT_VISION_MODEL
13
+
14
+ logger = logging.getLogger("dw")
15
+
16
+ _DEFAULT_MODEL = _DEFAULT_VISION_MODEL
17
+ _DEFAULT_PROMPT = "Describe this image."
18
+
19
+
20
+ def image_to_text(image, device="cpu", **kwargs):
21
+ """Generate a text caption for an image.
22
+
23
+ Args:
24
+ image: PIL Image (or URL/path) to caption.
25
+ device: Target device ("cuda", "mps", "cpu").
26
+ **kwargs:
27
+ model_name: HuggingFace model ID of a vision-language model
28
+ (default: HuggingFaceTB/SmolVLM-256M-Instruct).
29
+ prompt: What to ask about the image (default: "Describe this
30
+ image."). Ask a narrower question for a narrower caption.
31
+ system_prompt: Optional system instruction for the model.
32
+ max_new_tokens: Max tokens to generate (default: 50).
33
+
34
+ Returns:
35
+ Caption string.
36
+ """
37
+ prompt = kwargs.pop("prompt", _DEFAULT_PROMPT)
38
+ kwargs.setdefault("model_name", _DEFAULT_MODEL)
39
+ kwargs.setdefault("max_new_tokens", 50)
40
+
41
+ caption = generate_text(prompt, device=device, image=image, **kwargs)
42
+ logger.info(f"Caption: {caption[:100]}{'...' if len(caption) > 100 else ''}")
43
+ return caption