diffusers 0.33.1__py3-none-any.whl → 0.35.0__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 (551) hide show
  1. diffusers/__init__.py +145 -1
  2. diffusers/callbacks.py +35 -0
  3. diffusers/commands/__init__.py +1 -1
  4. diffusers/commands/custom_blocks.py +134 -0
  5. diffusers/commands/diffusers_cli.py +3 -1
  6. diffusers/commands/env.py +1 -1
  7. diffusers/commands/fp16_safetensors.py +2 -2
  8. diffusers/configuration_utils.py +11 -2
  9. diffusers/dependency_versions_check.py +1 -1
  10. diffusers/dependency_versions_table.py +3 -3
  11. diffusers/experimental/rl/value_guided_sampling.py +1 -1
  12. diffusers/guiders/__init__.py +41 -0
  13. diffusers/guiders/adaptive_projected_guidance.py +188 -0
  14. diffusers/guiders/auto_guidance.py +190 -0
  15. diffusers/guiders/classifier_free_guidance.py +141 -0
  16. diffusers/guiders/classifier_free_zero_star_guidance.py +152 -0
  17. diffusers/guiders/frequency_decoupled_guidance.py +327 -0
  18. diffusers/guiders/guider_utils.py +309 -0
  19. diffusers/guiders/perturbed_attention_guidance.py +271 -0
  20. diffusers/guiders/skip_layer_guidance.py +262 -0
  21. diffusers/guiders/smoothed_energy_guidance.py +251 -0
  22. diffusers/guiders/tangential_classifier_free_guidance.py +143 -0
  23. diffusers/hooks/__init__.py +17 -0
  24. diffusers/hooks/_common.py +56 -0
  25. diffusers/hooks/_helpers.py +293 -0
  26. diffusers/hooks/faster_cache.py +9 -8
  27. diffusers/hooks/first_block_cache.py +259 -0
  28. diffusers/hooks/group_offloading.py +332 -227
  29. diffusers/hooks/hooks.py +58 -3
  30. diffusers/hooks/layer_skip.py +263 -0
  31. diffusers/hooks/layerwise_casting.py +5 -10
  32. diffusers/hooks/pyramid_attention_broadcast.py +15 -12
  33. diffusers/hooks/smoothed_energy_guidance_utils.py +167 -0
  34. diffusers/hooks/utils.py +43 -0
  35. diffusers/image_processor.py +7 -2
  36. diffusers/loaders/__init__.py +10 -0
  37. diffusers/loaders/ip_adapter.py +260 -18
  38. diffusers/loaders/lora_base.py +261 -127
  39. diffusers/loaders/lora_conversion_utils.py +657 -35
  40. diffusers/loaders/lora_pipeline.py +2778 -1246
  41. diffusers/loaders/peft.py +78 -112
  42. diffusers/loaders/single_file.py +2 -2
  43. diffusers/loaders/single_file_model.py +64 -15
  44. diffusers/loaders/single_file_utils.py +395 -7
  45. diffusers/loaders/textual_inversion.py +3 -2
  46. diffusers/loaders/transformer_flux.py +10 -11
  47. diffusers/loaders/transformer_sd3.py +8 -3
  48. diffusers/loaders/unet.py +24 -21
  49. diffusers/loaders/unet_loader_utils.py +6 -3
  50. diffusers/loaders/utils.py +1 -1
  51. diffusers/models/__init__.py +23 -1
  52. diffusers/models/activations.py +5 -5
  53. diffusers/models/adapter.py +2 -3
  54. diffusers/models/attention.py +488 -7
  55. diffusers/models/attention_dispatch.py +1218 -0
  56. diffusers/models/attention_flax.py +10 -10
  57. diffusers/models/attention_processor.py +113 -667
  58. diffusers/models/auto_model.py +49 -12
  59. diffusers/models/autoencoders/__init__.py +2 -0
  60. diffusers/models/autoencoders/autoencoder_asym_kl.py +4 -4
  61. diffusers/models/autoencoders/autoencoder_dc.py +17 -4
  62. diffusers/models/autoencoders/autoencoder_kl.py +5 -5
  63. diffusers/models/autoencoders/autoencoder_kl_allegro.py +4 -4
  64. diffusers/models/autoencoders/autoencoder_kl_cogvideox.py +6 -6
  65. diffusers/models/autoencoders/autoencoder_kl_cosmos.py +1110 -0
  66. diffusers/models/autoencoders/autoencoder_kl_hunyuan_video.py +2 -2
  67. diffusers/models/autoencoders/autoencoder_kl_ltx.py +3 -3
  68. diffusers/models/autoencoders/autoencoder_kl_magvit.py +4 -4
  69. diffusers/models/autoencoders/autoencoder_kl_mochi.py +3 -3
  70. diffusers/models/autoencoders/autoencoder_kl_qwenimage.py +1070 -0
  71. diffusers/models/autoencoders/autoencoder_kl_temporal_decoder.py +4 -4
  72. diffusers/models/autoencoders/autoencoder_kl_wan.py +626 -62
  73. diffusers/models/autoencoders/autoencoder_oobleck.py +1 -1
  74. diffusers/models/autoencoders/autoencoder_tiny.py +3 -3
  75. diffusers/models/autoencoders/consistency_decoder_vae.py +1 -1
  76. diffusers/models/autoencoders/vae.py +13 -2
  77. diffusers/models/autoencoders/vq_model.py +2 -2
  78. diffusers/models/cache_utils.py +32 -10
  79. diffusers/models/controlnet.py +1 -1
  80. diffusers/models/controlnet_flux.py +1 -1
  81. diffusers/models/controlnet_sd3.py +1 -1
  82. diffusers/models/controlnet_sparsectrl.py +1 -1
  83. diffusers/models/controlnets/__init__.py +1 -0
  84. diffusers/models/controlnets/controlnet.py +3 -3
  85. diffusers/models/controlnets/controlnet_flax.py +1 -1
  86. diffusers/models/controlnets/controlnet_flux.py +21 -20
  87. diffusers/models/controlnets/controlnet_hunyuan.py +2 -2
  88. diffusers/models/controlnets/controlnet_sana.py +290 -0
  89. diffusers/models/controlnets/controlnet_sd3.py +1 -1
  90. diffusers/models/controlnets/controlnet_sparsectrl.py +2 -2
  91. diffusers/models/controlnets/controlnet_union.py +5 -5
  92. diffusers/models/controlnets/controlnet_xs.py +7 -7
  93. diffusers/models/controlnets/multicontrolnet.py +4 -5
  94. diffusers/models/controlnets/multicontrolnet_union.py +5 -6
  95. diffusers/models/downsampling.py +2 -2
  96. diffusers/models/embeddings.py +36 -46
  97. diffusers/models/embeddings_flax.py +2 -2
  98. diffusers/models/lora.py +3 -3
  99. diffusers/models/model_loading_utils.py +233 -1
  100. diffusers/models/modeling_flax_utils.py +1 -2
  101. diffusers/models/modeling_utils.py +203 -108
  102. diffusers/models/normalization.py +4 -4
  103. diffusers/models/resnet.py +2 -2
  104. diffusers/models/resnet_flax.py +1 -1
  105. diffusers/models/transformers/__init__.py +7 -0
  106. diffusers/models/transformers/auraflow_transformer_2d.py +70 -24
  107. diffusers/models/transformers/cogvideox_transformer_3d.py +1 -1
  108. diffusers/models/transformers/consisid_transformer_3d.py +1 -1
  109. diffusers/models/transformers/dit_transformer_2d.py +2 -2
  110. diffusers/models/transformers/dual_transformer_2d.py +1 -1
  111. diffusers/models/transformers/hunyuan_transformer_2d.py +2 -2
  112. diffusers/models/transformers/latte_transformer_3d.py +4 -5
  113. diffusers/models/transformers/lumina_nextdit2d.py +2 -2
  114. diffusers/models/transformers/pixart_transformer_2d.py +3 -3
  115. diffusers/models/transformers/prior_transformer.py +1 -1
  116. diffusers/models/transformers/sana_transformer.py +8 -3
  117. diffusers/models/transformers/stable_audio_transformer.py +5 -9
  118. diffusers/models/transformers/t5_film_transformer.py +3 -3
  119. diffusers/models/transformers/transformer_2d.py +1 -1
  120. diffusers/models/transformers/transformer_allegro.py +1 -1
  121. diffusers/models/transformers/transformer_chroma.py +641 -0
  122. diffusers/models/transformers/transformer_cogview3plus.py +5 -10
  123. diffusers/models/transformers/transformer_cogview4.py +353 -27
  124. diffusers/models/transformers/transformer_cosmos.py +586 -0
  125. diffusers/models/transformers/transformer_flux.py +376 -138
  126. diffusers/models/transformers/transformer_hidream_image.py +942 -0
  127. diffusers/models/transformers/transformer_hunyuan_video.py +12 -8
  128. diffusers/models/transformers/transformer_hunyuan_video_framepack.py +416 -0
  129. diffusers/models/transformers/transformer_ltx.py +105 -24
  130. diffusers/models/transformers/transformer_lumina2.py +1 -1
  131. diffusers/models/transformers/transformer_mochi.py +1 -1
  132. diffusers/models/transformers/transformer_omnigen.py +2 -2
  133. diffusers/models/transformers/transformer_qwenimage.py +645 -0
  134. diffusers/models/transformers/transformer_sd3.py +7 -7
  135. diffusers/models/transformers/transformer_skyreels_v2.py +607 -0
  136. diffusers/models/transformers/transformer_temporal.py +1 -1
  137. diffusers/models/transformers/transformer_wan.py +316 -87
  138. diffusers/models/transformers/transformer_wan_vace.py +387 -0
  139. diffusers/models/unets/unet_1d.py +1 -1
  140. diffusers/models/unets/unet_1d_blocks.py +1 -1
  141. diffusers/models/unets/unet_2d.py +1 -1
  142. diffusers/models/unets/unet_2d_blocks.py +1 -1
  143. diffusers/models/unets/unet_2d_blocks_flax.py +8 -7
  144. diffusers/models/unets/unet_2d_condition.py +4 -3
  145. diffusers/models/unets/unet_2d_condition_flax.py +2 -2
  146. diffusers/models/unets/unet_3d_blocks.py +1 -1
  147. diffusers/models/unets/unet_3d_condition.py +3 -3
  148. diffusers/models/unets/unet_i2vgen_xl.py +3 -3
  149. diffusers/models/unets/unet_kandinsky3.py +1 -1
  150. diffusers/models/unets/unet_motion_model.py +2 -2
  151. diffusers/models/unets/unet_stable_cascade.py +1 -1
  152. diffusers/models/upsampling.py +2 -2
  153. diffusers/models/vae_flax.py +2 -2
  154. diffusers/models/vq_model.py +1 -1
  155. diffusers/modular_pipelines/__init__.py +83 -0
  156. diffusers/modular_pipelines/components_manager.py +1068 -0
  157. diffusers/modular_pipelines/flux/__init__.py +66 -0
  158. diffusers/modular_pipelines/flux/before_denoise.py +689 -0
  159. diffusers/modular_pipelines/flux/decoders.py +109 -0
  160. diffusers/modular_pipelines/flux/denoise.py +227 -0
  161. diffusers/modular_pipelines/flux/encoders.py +412 -0
  162. diffusers/modular_pipelines/flux/modular_blocks.py +181 -0
  163. diffusers/modular_pipelines/flux/modular_pipeline.py +59 -0
  164. diffusers/modular_pipelines/modular_pipeline.py +2446 -0
  165. diffusers/modular_pipelines/modular_pipeline_utils.py +672 -0
  166. diffusers/modular_pipelines/node_utils.py +665 -0
  167. diffusers/modular_pipelines/stable_diffusion_xl/__init__.py +77 -0
  168. diffusers/modular_pipelines/stable_diffusion_xl/before_denoise.py +1874 -0
  169. diffusers/modular_pipelines/stable_diffusion_xl/decoders.py +208 -0
  170. diffusers/modular_pipelines/stable_diffusion_xl/denoise.py +771 -0
  171. diffusers/modular_pipelines/stable_diffusion_xl/encoders.py +887 -0
  172. diffusers/modular_pipelines/stable_diffusion_xl/modular_blocks.py +380 -0
  173. diffusers/modular_pipelines/stable_diffusion_xl/modular_pipeline.py +365 -0
  174. diffusers/modular_pipelines/wan/__init__.py +66 -0
  175. diffusers/modular_pipelines/wan/before_denoise.py +365 -0
  176. diffusers/modular_pipelines/wan/decoders.py +105 -0
  177. diffusers/modular_pipelines/wan/denoise.py +261 -0
  178. diffusers/modular_pipelines/wan/encoders.py +242 -0
  179. diffusers/modular_pipelines/wan/modular_blocks.py +144 -0
  180. diffusers/modular_pipelines/wan/modular_pipeline.py +90 -0
  181. diffusers/pipelines/__init__.py +68 -6
  182. diffusers/pipelines/allegro/pipeline_allegro.py +11 -11
  183. diffusers/pipelines/amused/pipeline_amused.py +7 -6
  184. diffusers/pipelines/amused/pipeline_amused_img2img.py +6 -5
  185. diffusers/pipelines/amused/pipeline_amused_inpaint.py +6 -5
  186. diffusers/pipelines/animatediff/pipeline_animatediff.py +6 -6
  187. diffusers/pipelines/animatediff/pipeline_animatediff_controlnet.py +6 -6
  188. diffusers/pipelines/animatediff/pipeline_animatediff_sdxl.py +16 -15
  189. diffusers/pipelines/animatediff/pipeline_animatediff_sparsectrl.py +6 -6
  190. diffusers/pipelines/animatediff/pipeline_animatediff_video2video.py +5 -5
  191. diffusers/pipelines/animatediff/pipeline_animatediff_video2video_controlnet.py +5 -5
  192. diffusers/pipelines/audioldm/pipeline_audioldm.py +8 -7
  193. diffusers/pipelines/audioldm2/modeling_audioldm2.py +1 -1
  194. diffusers/pipelines/audioldm2/pipeline_audioldm2.py +22 -13
  195. diffusers/pipelines/aura_flow/pipeline_aura_flow.py +48 -11
  196. diffusers/pipelines/auto_pipeline.py +23 -20
  197. diffusers/pipelines/blip_diffusion/modeling_blip2.py +1 -1
  198. diffusers/pipelines/blip_diffusion/modeling_ctx_clip.py +2 -2
  199. diffusers/pipelines/blip_diffusion/pipeline_blip_diffusion.py +11 -10
  200. diffusers/pipelines/chroma/__init__.py +49 -0
  201. diffusers/pipelines/chroma/pipeline_chroma.py +949 -0
  202. diffusers/pipelines/chroma/pipeline_chroma_img2img.py +1034 -0
  203. diffusers/pipelines/chroma/pipeline_output.py +21 -0
  204. diffusers/pipelines/cogvideo/pipeline_cogvideox.py +17 -16
  205. diffusers/pipelines/cogvideo/pipeline_cogvideox_fun_control.py +17 -16
  206. diffusers/pipelines/cogvideo/pipeline_cogvideox_image2video.py +18 -17
  207. diffusers/pipelines/cogvideo/pipeline_cogvideox_video2video.py +17 -16
  208. diffusers/pipelines/cogview3/pipeline_cogview3plus.py +9 -9
  209. diffusers/pipelines/cogview4/pipeline_cogview4.py +23 -22
  210. diffusers/pipelines/cogview4/pipeline_cogview4_control.py +7 -7
  211. diffusers/pipelines/consisid/consisid_utils.py +2 -2
  212. diffusers/pipelines/consisid/pipeline_consisid.py +8 -8
  213. diffusers/pipelines/consistency_models/pipeline_consistency_models.py +1 -1
  214. diffusers/pipelines/controlnet/pipeline_controlnet.py +7 -7
  215. diffusers/pipelines/controlnet/pipeline_controlnet_blip_diffusion.py +11 -10
  216. diffusers/pipelines/controlnet/pipeline_controlnet_img2img.py +7 -7
  217. diffusers/pipelines/controlnet/pipeline_controlnet_inpaint.py +7 -7
  218. diffusers/pipelines/controlnet/pipeline_controlnet_inpaint_sd_xl.py +14 -14
  219. diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl.py +10 -6
  220. diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl_img2img.py +13 -13
  221. diffusers/pipelines/controlnet/pipeline_controlnet_union_inpaint_sd_xl.py +226 -107
  222. diffusers/pipelines/controlnet/pipeline_controlnet_union_sd_xl.py +12 -8
  223. diffusers/pipelines/controlnet/pipeline_controlnet_union_sd_xl_img2img.py +207 -105
  224. diffusers/pipelines/controlnet/pipeline_flax_controlnet.py +1 -1
  225. diffusers/pipelines/controlnet_hunyuandit/pipeline_hunyuandit_controlnet.py +8 -8
  226. diffusers/pipelines/controlnet_sd3/pipeline_stable_diffusion_3_controlnet.py +7 -7
  227. diffusers/pipelines/controlnet_sd3/pipeline_stable_diffusion_3_controlnet_inpainting.py +7 -7
  228. diffusers/pipelines/controlnet_xs/pipeline_controlnet_xs.py +12 -10
  229. diffusers/pipelines/controlnet_xs/pipeline_controlnet_xs_sd_xl.py +9 -7
  230. diffusers/pipelines/cosmos/__init__.py +54 -0
  231. diffusers/pipelines/cosmos/pipeline_cosmos2_text2image.py +673 -0
  232. diffusers/pipelines/cosmos/pipeline_cosmos2_video2world.py +792 -0
  233. diffusers/pipelines/cosmos/pipeline_cosmos_text2world.py +664 -0
  234. diffusers/pipelines/cosmos/pipeline_cosmos_video2world.py +826 -0
  235. diffusers/pipelines/cosmos/pipeline_output.py +40 -0
  236. diffusers/pipelines/dance_diffusion/pipeline_dance_diffusion.py +5 -4
  237. diffusers/pipelines/ddim/pipeline_ddim.py +4 -4
  238. diffusers/pipelines/ddpm/pipeline_ddpm.py +1 -1
  239. diffusers/pipelines/deepfloyd_if/pipeline_if.py +10 -10
  240. diffusers/pipelines/deepfloyd_if/pipeline_if_img2img.py +10 -10
  241. diffusers/pipelines/deepfloyd_if/pipeline_if_img2img_superresolution.py +10 -10
  242. diffusers/pipelines/deepfloyd_if/pipeline_if_inpainting.py +10 -10
  243. diffusers/pipelines/deepfloyd_if/pipeline_if_inpainting_superresolution.py +10 -10
  244. diffusers/pipelines/deepfloyd_if/pipeline_if_superresolution.py +10 -10
  245. diffusers/pipelines/deprecated/alt_diffusion/pipeline_alt_diffusion.py +8 -8
  246. diffusers/pipelines/deprecated/alt_diffusion/pipeline_alt_diffusion_img2img.py +5 -5
  247. diffusers/pipelines/deprecated/audio_diffusion/mel.py +1 -1
  248. diffusers/pipelines/deprecated/audio_diffusion/pipeline_audio_diffusion.py +3 -3
  249. diffusers/pipelines/deprecated/latent_diffusion_uncond/pipeline_latent_diffusion_uncond.py +1 -1
  250. diffusers/pipelines/deprecated/pndm/pipeline_pndm.py +2 -2
  251. diffusers/pipelines/deprecated/repaint/pipeline_repaint.py +4 -3
  252. diffusers/pipelines/deprecated/score_sde_ve/pipeline_score_sde_ve.py +1 -1
  253. diffusers/pipelines/deprecated/spectrogram_diffusion/continuous_encoder.py +1 -1
  254. diffusers/pipelines/deprecated/spectrogram_diffusion/midi_utils.py +1 -1
  255. diffusers/pipelines/deprecated/spectrogram_diffusion/notes_encoder.py +1 -1
  256. diffusers/pipelines/deprecated/spectrogram_diffusion/pipeline_spectrogram_diffusion.py +1 -1
  257. diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_cycle_diffusion.py +8 -8
  258. diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_onnx_stable_diffusion_inpaint_legacy.py +9 -9
  259. diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_stable_diffusion_inpaint_legacy.py +10 -10
  260. diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_stable_diffusion_model_editing.py +10 -8
  261. diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_stable_diffusion_paradigms.py +5 -5
  262. diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_stable_diffusion_pix2pix_zero.py +18 -18
  263. diffusers/pipelines/deprecated/stochastic_karras_ve/pipeline_stochastic_karras_ve.py +1 -1
  264. diffusers/pipelines/deprecated/versatile_diffusion/modeling_text_unet.py +2 -2
  265. diffusers/pipelines/deprecated/versatile_diffusion/pipeline_versatile_diffusion.py +6 -6
  266. diffusers/pipelines/deprecated/versatile_diffusion/pipeline_versatile_diffusion_dual_guided.py +5 -5
  267. diffusers/pipelines/deprecated/versatile_diffusion/pipeline_versatile_diffusion_image_variation.py +5 -5
  268. diffusers/pipelines/deprecated/versatile_diffusion/pipeline_versatile_diffusion_text_to_image.py +5 -5
  269. diffusers/pipelines/deprecated/vq_diffusion/pipeline_vq_diffusion.py +1 -1
  270. diffusers/pipelines/dit/pipeline_dit.py +4 -2
  271. diffusers/pipelines/easyanimate/pipeline_easyanimate.py +4 -4
  272. diffusers/pipelines/easyanimate/pipeline_easyanimate_control.py +4 -4
  273. diffusers/pipelines/easyanimate/pipeline_easyanimate_inpaint.py +7 -6
  274. diffusers/pipelines/flux/__init__.py +4 -0
  275. diffusers/pipelines/flux/modeling_flux.py +1 -1
  276. diffusers/pipelines/flux/pipeline_flux.py +37 -36
  277. diffusers/pipelines/flux/pipeline_flux_control.py +9 -9
  278. diffusers/pipelines/flux/pipeline_flux_control_img2img.py +7 -7
  279. diffusers/pipelines/flux/pipeline_flux_control_inpaint.py +7 -7
  280. diffusers/pipelines/flux/pipeline_flux_controlnet.py +7 -7
  281. diffusers/pipelines/flux/pipeline_flux_controlnet_image_to_image.py +31 -23
  282. diffusers/pipelines/flux/pipeline_flux_controlnet_inpainting.py +3 -2
  283. diffusers/pipelines/flux/pipeline_flux_fill.py +7 -7
  284. diffusers/pipelines/flux/pipeline_flux_img2img.py +40 -7
  285. diffusers/pipelines/flux/pipeline_flux_inpaint.py +12 -7
  286. diffusers/pipelines/flux/pipeline_flux_kontext.py +1134 -0
  287. diffusers/pipelines/flux/pipeline_flux_kontext_inpaint.py +1460 -0
  288. diffusers/pipelines/flux/pipeline_flux_prior_redux.py +2 -2
  289. diffusers/pipelines/flux/pipeline_output.py +6 -4
  290. diffusers/pipelines/free_init_utils.py +2 -2
  291. diffusers/pipelines/free_noise_utils.py +3 -3
  292. diffusers/pipelines/hidream_image/__init__.py +47 -0
  293. diffusers/pipelines/hidream_image/pipeline_hidream_image.py +1026 -0
  294. diffusers/pipelines/hidream_image/pipeline_output.py +35 -0
  295. diffusers/pipelines/hunyuan_video/__init__.py +2 -0
  296. diffusers/pipelines/hunyuan_video/pipeline_hunyuan_skyreels_image2video.py +8 -8
  297. diffusers/pipelines/hunyuan_video/pipeline_hunyuan_video.py +26 -25
  298. diffusers/pipelines/hunyuan_video/pipeline_hunyuan_video_framepack.py +1114 -0
  299. diffusers/pipelines/hunyuan_video/pipeline_hunyuan_video_image2video.py +71 -15
  300. diffusers/pipelines/hunyuan_video/pipeline_output.py +19 -0
  301. diffusers/pipelines/hunyuandit/pipeline_hunyuandit.py +8 -8
  302. diffusers/pipelines/i2vgen_xl/pipeline_i2vgen_xl.py +10 -8
  303. diffusers/pipelines/kandinsky/pipeline_kandinsky.py +6 -6
  304. diffusers/pipelines/kandinsky/pipeline_kandinsky_combined.py +34 -34
  305. diffusers/pipelines/kandinsky/pipeline_kandinsky_img2img.py +19 -26
  306. diffusers/pipelines/kandinsky/pipeline_kandinsky_inpaint.py +7 -7
  307. diffusers/pipelines/kandinsky/pipeline_kandinsky_prior.py +11 -11
  308. diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2.py +6 -6
  309. diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_combined.py +35 -35
  310. diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_controlnet.py +6 -6
  311. diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_controlnet_img2img.py +17 -39
  312. diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_img2img.py +17 -45
  313. diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_inpainting.py +7 -7
  314. diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_prior.py +10 -10
  315. diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_prior_emb2emb.py +10 -10
  316. diffusers/pipelines/kandinsky3/pipeline_kandinsky3.py +7 -7
  317. diffusers/pipelines/kandinsky3/pipeline_kandinsky3_img2img.py +17 -38
  318. diffusers/pipelines/kolors/pipeline_kolors.py +10 -10
  319. diffusers/pipelines/kolors/pipeline_kolors_img2img.py +12 -12
  320. diffusers/pipelines/kolors/text_encoder.py +3 -3
  321. diffusers/pipelines/kolors/tokenizer.py +1 -1
  322. diffusers/pipelines/latent_consistency_models/pipeline_latent_consistency_img2img.py +2 -2
  323. diffusers/pipelines/latent_consistency_models/pipeline_latent_consistency_text2img.py +2 -2
  324. diffusers/pipelines/latent_diffusion/pipeline_latent_diffusion.py +1 -1
  325. diffusers/pipelines/latent_diffusion/pipeline_latent_diffusion_superresolution.py +3 -3
  326. diffusers/pipelines/latte/pipeline_latte.py +12 -12
  327. diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion.py +13 -13
  328. diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion_xl.py +17 -16
  329. diffusers/pipelines/ltx/__init__.py +4 -0
  330. diffusers/pipelines/ltx/modeling_latent_upsampler.py +188 -0
  331. diffusers/pipelines/ltx/pipeline_ltx.py +64 -18
  332. diffusers/pipelines/ltx/pipeline_ltx_condition.py +117 -38
  333. diffusers/pipelines/ltx/pipeline_ltx_image2video.py +63 -18
  334. diffusers/pipelines/ltx/pipeline_ltx_latent_upsample.py +277 -0
  335. diffusers/pipelines/lumina/pipeline_lumina.py +13 -13
  336. diffusers/pipelines/lumina2/pipeline_lumina2.py +10 -10
  337. diffusers/pipelines/marigold/marigold_image_processing.py +2 -2
  338. diffusers/pipelines/mochi/pipeline_mochi.py +15 -14
  339. diffusers/pipelines/musicldm/pipeline_musicldm.py +16 -13
  340. diffusers/pipelines/omnigen/pipeline_omnigen.py +13 -11
  341. diffusers/pipelines/omnigen/processor_omnigen.py +8 -3
  342. diffusers/pipelines/onnx_utils.py +15 -2
  343. diffusers/pipelines/pag/pag_utils.py +2 -2
  344. diffusers/pipelines/pag/pipeline_pag_controlnet_sd.py +12 -8
  345. diffusers/pipelines/pag/pipeline_pag_controlnet_sd_inpaint.py +7 -7
  346. diffusers/pipelines/pag/pipeline_pag_controlnet_sd_xl.py +10 -6
  347. diffusers/pipelines/pag/pipeline_pag_controlnet_sd_xl_img2img.py +14 -14
  348. diffusers/pipelines/pag/pipeline_pag_hunyuandit.py +8 -8
  349. diffusers/pipelines/pag/pipeline_pag_kolors.py +10 -10
  350. diffusers/pipelines/pag/pipeline_pag_pixart_sigma.py +11 -11
  351. diffusers/pipelines/pag/pipeline_pag_sana.py +18 -12
  352. diffusers/pipelines/pag/pipeline_pag_sd.py +8 -8
  353. diffusers/pipelines/pag/pipeline_pag_sd_3.py +7 -7
  354. diffusers/pipelines/pag/pipeline_pag_sd_3_img2img.py +7 -7
  355. diffusers/pipelines/pag/pipeline_pag_sd_animatediff.py +6 -6
  356. diffusers/pipelines/pag/pipeline_pag_sd_img2img.py +5 -5
  357. diffusers/pipelines/pag/pipeline_pag_sd_inpaint.py +8 -8
  358. diffusers/pipelines/pag/pipeline_pag_sd_xl.py +16 -15
  359. diffusers/pipelines/pag/pipeline_pag_sd_xl_img2img.py +18 -17
  360. diffusers/pipelines/pag/pipeline_pag_sd_xl_inpaint.py +12 -12
  361. diffusers/pipelines/paint_by_example/image_encoder.py +1 -1
  362. diffusers/pipelines/paint_by_example/pipeline_paint_by_example.py +8 -7
  363. diffusers/pipelines/pia/pipeline_pia.py +8 -6
  364. diffusers/pipelines/pipeline_flax_utils.py +5 -6
  365. diffusers/pipelines/pipeline_loading_utils.py +113 -15
  366. diffusers/pipelines/pipeline_utils.py +127 -48
  367. diffusers/pipelines/pixart_alpha/pipeline_pixart_alpha.py +14 -12
  368. diffusers/pipelines/pixart_alpha/pipeline_pixart_sigma.py +31 -11
  369. diffusers/pipelines/qwenimage/__init__.py +55 -0
  370. diffusers/pipelines/qwenimage/pipeline_output.py +21 -0
  371. diffusers/pipelines/qwenimage/pipeline_qwenimage.py +726 -0
  372. diffusers/pipelines/qwenimage/pipeline_qwenimage_edit.py +882 -0
  373. diffusers/pipelines/qwenimage/pipeline_qwenimage_img2img.py +829 -0
  374. diffusers/pipelines/qwenimage/pipeline_qwenimage_inpaint.py +1015 -0
  375. diffusers/pipelines/sana/__init__.py +4 -0
  376. diffusers/pipelines/sana/pipeline_sana.py +23 -21
  377. diffusers/pipelines/sana/pipeline_sana_controlnet.py +1106 -0
  378. diffusers/pipelines/sana/pipeline_sana_sprint.py +23 -19
  379. diffusers/pipelines/sana/pipeline_sana_sprint_img2img.py +981 -0
  380. diffusers/pipelines/semantic_stable_diffusion/pipeline_semantic_stable_diffusion.py +7 -6
  381. diffusers/pipelines/shap_e/camera.py +1 -1
  382. diffusers/pipelines/shap_e/pipeline_shap_e.py +1 -1
  383. diffusers/pipelines/shap_e/pipeline_shap_e_img2img.py +1 -1
  384. diffusers/pipelines/shap_e/renderer.py +3 -3
  385. diffusers/pipelines/skyreels_v2/__init__.py +59 -0
  386. diffusers/pipelines/skyreels_v2/pipeline_output.py +20 -0
  387. diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2.py +610 -0
  388. diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_diffusion_forcing.py +978 -0
  389. diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_diffusion_forcing_i2v.py +1059 -0
  390. diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_diffusion_forcing_v2v.py +1063 -0
  391. diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_i2v.py +745 -0
  392. diffusers/pipelines/stable_audio/modeling_stable_audio.py +1 -1
  393. diffusers/pipelines/stable_audio/pipeline_stable_audio.py +5 -5
  394. diffusers/pipelines/stable_cascade/pipeline_stable_cascade.py +8 -8
  395. diffusers/pipelines/stable_cascade/pipeline_stable_cascade_combined.py +13 -13
  396. diffusers/pipelines/stable_cascade/pipeline_stable_cascade_prior.py +9 -9
  397. diffusers/pipelines/stable_diffusion/__init__.py +0 -7
  398. diffusers/pipelines/stable_diffusion/clip_image_project_model.py +1 -1
  399. diffusers/pipelines/stable_diffusion/convert_from_ckpt.py +11 -4
  400. diffusers/pipelines/stable_diffusion/pipeline_flax_stable_diffusion.py +1 -1
  401. diffusers/pipelines/stable_diffusion/pipeline_flax_stable_diffusion_img2img.py +1 -1
  402. diffusers/pipelines/stable_diffusion/pipeline_flax_stable_diffusion_inpaint.py +1 -1
  403. diffusers/pipelines/stable_diffusion/pipeline_onnx_stable_diffusion.py +12 -11
  404. diffusers/pipelines/stable_diffusion/pipeline_onnx_stable_diffusion_img2img.py +10 -10
  405. diffusers/pipelines/stable_diffusion/pipeline_onnx_stable_diffusion_inpaint.py +11 -11
  406. diffusers/pipelines/stable_diffusion/pipeline_onnx_stable_diffusion_upscale.py +10 -10
  407. diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion.py +10 -9
  408. diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_depth2img.py +5 -5
  409. diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_image_variation.py +5 -5
  410. diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_img2img.py +5 -5
  411. diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_inpaint.py +5 -5
  412. diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_instruct_pix2pix.py +5 -5
  413. diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_latent_upscale.py +4 -4
  414. diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_upscale.py +5 -5
  415. diffusers/pipelines/stable_diffusion/pipeline_stable_unclip.py +7 -7
  416. diffusers/pipelines/stable_diffusion/pipeline_stable_unclip_img2img.py +5 -5
  417. diffusers/pipelines/stable_diffusion/safety_checker.py +1 -1
  418. diffusers/pipelines/stable_diffusion/safety_checker_flax.py +1 -1
  419. diffusers/pipelines/stable_diffusion/stable_unclip_image_normalizer.py +1 -1
  420. diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3.py +13 -12
  421. diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3_img2img.py +7 -7
  422. diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3_inpaint.py +7 -7
  423. diffusers/pipelines/stable_diffusion_attend_and_excite/pipeline_stable_diffusion_attend_and_excite.py +12 -8
  424. diffusers/pipelines/stable_diffusion_diffedit/pipeline_stable_diffusion_diffedit.py +15 -9
  425. diffusers/pipelines/stable_diffusion_gligen/pipeline_stable_diffusion_gligen.py +11 -9
  426. diffusers/pipelines/stable_diffusion_gligen/pipeline_stable_diffusion_gligen_text_image.py +11 -9
  427. diffusers/pipelines/stable_diffusion_k_diffusion/pipeline_stable_diffusion_k_diffusion.py +18 -12
  428. diffusers/pipelines/stable_diffusion_k_diffusion/pipeline_stable_diffusion_xl_k_diffusion.py +11 -8
  429. diffusers/pipelines/stable_diffusion_ldm3d/pipeline_stable_diffusion_ldm3d.py +11 -8
  430. diffusers/pipelines/stable_diffusion_panorama/pipeline_stable_diffusion_panorama.py +15 -12
  431. diffusers/pipelines/stable_diffusion_safe/pipeline_stable_diffusion_safe.py +8 -6
  432. diffusers/pipelines/stable_diffusion_safe/safety_checker.py +1 -1
  433. diffusers/pipelines/stable_diffusion_sag/pipeline_stable_diffusion_sag.py +15 -11
  434. diffusers/pipelines/stable_diffusion_xl/pipeline_flax_stable_diffusion_xl.py +1 -1
  435. diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl.py +16 -15
  436. diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_img2img.py +18 -17
  437. diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_inpaint.py +12 -12
  438. diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_instruct_pix2pix.py +16 -15
  439. diffusers/pipelines/stable_video_diffusion/pipeline_stable_video_diffusion.py +3 -3
  440. diffusers/pipelines/t2i_adapter/pipeline_stable_diffusion_adapter.py +12 -12
  441. diffusers/pipelines/t2i_adapter/pipeline_stable_diffusion_xl_adapter.py +18 -17
  442. diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_synth.py +12 -7
  443. diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_synth_img2img.py +12 -7
  444. diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_zero.py +15 -13
  445. diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_zero_sdxl.py +24 -21
  446. diffusers/pipelines/unclip/pipeline_unclip.py +4 -3
  447. diffusers/pipelines/unclip/pipeline_unclip_image_variation.py +4 -3
  448. diffusers/pipelines/unclip/text_proj.py +2 -2
  449. diffusers/pipelines/unidiffuser/modeling_text_decoder.py +2 -2
  450. diffusers/pipelines/unidiffuser/modeling_uvit.py +1 -1
  451. diffusers/pipelines/unidiffuser/pipeline_unidiffuser.py +8 -7
  452. diffusers/pipelines/visualcloze/__init__.py +52 -0
  453. diffusers/pipelines/visualcloze/pipeline_visualcloze_combined.py +444 -0
  454. diffusers/pipelines/visualcloze/pipeline_visualcloze_generation.py +952 -0
  455. diffusers/pipelines/visualcloze/visualcloze_utils.py +251 -0
  456. diffusers/pipelines/wan/__init__.py +2 -0
  457. diffusers/pipelines/wan/pipeline_wan.py +91 -30
  458. diffusers/pipelines/wan/pipeline_wan_i2v.py +145 -45
  459. diffusers/pipelines/wan/pipeline_wan_vace.py +975 -0
  460. diffusers/pipelines/wan/pipeline_wan_video2video.py +14 -16
  461. diffusers/pipelines/wuerstchen/modeling_paella_vq_model.py +1 -1
  462. diffusers/pipelines/wuerstchen/modeling_wuerstchen_diffnext.py +1 -1
  463. diffusers/pipelines/wuerstchen/modeling_wuerstchen_prior.py +1 -1
  464. diffusers/pipelines/wuerstchen/pipeline_wuerstchen.py +8 -8
  465. diffusers/pipelines/wuerstchen/pipeline_wuerstchen_combined.py +16 -15
  466. diffusers/pipelines/wuerstchen/pipeline_wuerstchen_prior.py +6 -6
  467. diffusers/quantizers/__init__.py +3 -1
  468. diffusers/quantizers/base.py +17 -1
  469. diffusers/quantizers/bitsandbytes/bnb_quantizer.py +4 -0
  470. diffusers/quantizers/bitsandbytes/utils.py +10 -7
  471. diffusers/quantizers/gguf/gguf_quantizer.py +13 -4
  472. diffusers/quantizers/gguf/utils.py +108 -16
  473. diffusers/quantizers/pipe_quant_config.py +202 -0
  474. diffusers/quantizers/quantization_config.py +18 -16
  475. diffusers/quantizers/quanto/quanto_quantizer.py +4 -0
  476. diffusers/quantizers/torchao/torchao_quantizer.py +31 -1
  477. diffusers/schedulers/__init__.py +3 -1
  478. diffusers/schedulers/deprecated/scheduling_karras_ve.py +4 -3
  479. diffusers/schedulers/deprecated/scheduling_sde_vp.py +1 -1
  480. diffusers/schedulers/scheduling_consistency_models.py +1 -1
  481. diffusers/schedulers/scheduling_cosine_dpmsolver_multistep.py +10 -5
  482. diffusers/schedulers/scheduling_ddim.py +8 -8
  483. diffusers/schedulers/scheduling_ddim_cogvideox.py +5 -5
  484. diffusers/schedulers/scheduling_ddim_flax.py +6 -6
  485. diffusers/schedulers/scheduling_ddim_inverse.py +6 -6
  486. diffusers/schedulers/scheduling_ddim_parallel.py +22 -22
  487. diffusers/schedulers/scheduling_ddpm.py +9 -9
  488. diffusers/schedulers/scheduling_ddpm_flax.py +7 -7
  489. diffusers/schedulers/scheduling_ddpm_parallel.py +18 -18
  490. diffusers/schedulers/scheduling_ddpm_wuerstchen.py +2 -2
  491. diffusers/schedulers/scheduling_deis_multistep.py +16 -9
  492. diffusers/schedulers/scheduling_dpm_cogvideox.py +5 -5
  493. diffusers/schedulers/scheduling_dpmsolver_multistep.py +18 -12
  494. diffusers/schedulers/scheduling_dpmsolver_multistep_flax.py +22 -20
  495. diffusers/schedulers/scheduling_dpmsolver_multistep_inverse.py +11 -11
  496. diffusers/schedulers/scheduling_dpmsolver_sde.py +2 -2
  497. diffusers/schedulers/scheduling_dpmsolver_singlestep.py +19 -13
  498. diffusers/schedulers/scheduling_edm_dpmsolver_multistep.py +13 -8
  499. diffusers/schedulers/scheduling_edm_euler.py +20 -11
  500. diffusers/schedulers/scheduling_euler_ancestral_discrete.py +3 -3
  501. diffusers/schedulers/scheduling_euler_discrete.py +3 -3
  502. diffusers/schedulers/scheduling_euler_discrete_flax.py +3 -3
  503. diffusers/schedulers/scheduling_flow_match_euler_discrete.py +20 -5
  504. diffusers/schedulers/scheduling_flow_match_heun_discrete.py +1 -1
  505. diffusers/schedulers/scheduling_flow_match_lcm.py +561 -0
  506. diffusers/schedulers/scheduling_heun_discrete.py +2 -2
  507. diffusers/schedulers/scheduling_ipndm.py +2 -2
  508. diffusers/schedulers/scheduling_k_dpm_2_ancestral_discrete.py +2 -2
  509. diffusers/schedulers/scheduling_k_dpm_2_discrete.py +2 -2
  510. diffusers/schedulers/scheduling_karras_ve_flax.py +5 -5
  511. diffusers/schedulers/scheduling_lcm.py +3 -3
  512. diffusers/schedulers/scheduling_lms_discrete.py +2 -2
  513. diffusers/schedulers/scheduling_lms_discrete_flax.py +1 -1
  514. diffusers/schedulers/scheduling_pndm.py +4 -4
  515. diffusers/schedulers/scheduling_pndm_flax.py +4 -4
  516. diffusers/schedulers/scheduling_repaint.py +9 -9
  517. diffusers/schedulers/scheduling_sasolver.py +15 -15
  518. diffusers/schedulers/scheduling_scm.py +1 -2
  519. diffusers/schedulers/scheduling_sde_ve.py +1 -1
  520. diffusers/schedulers/scheduling_sde_ve_flax.py +2 -2
  521. diffusers/schedulers/scheduling_tcd.py +3 -3
  522. diffusers/schedulers/scheduling_unclip.py +5 -5
  523. diffusers/schedulers/scheduling_unipc_multistep.py +21 -12
  524. diffusers/schedulers/scheduling_utils.py +3 -3
  525. diffusers/schedulers/scheduling_utils_flax.py +2 -2
  526. diffusers/schedulers/scheduling_vq_diffusion.py +1 -1
  527. diffusers/training_utils.py +91 -5
  528. diffusers/utils/__init__.py +15 -0
  529. diffusers/utils/accelerate_utils.py +1 -1
  530. diffusers/utils/constants.py +4 -0
  531. diffusers/utils/doc_utils.py +1 -1
  532. diffusers/utils/dummy_pt_objects.py +432 -0
  533. diffusers/utils/dummy_torch_and_transformers_objects.py +480 -0
  534. diffusers/utils/dynamic_modules_utils.py +85 -8
  535. diffusers/utils/export_utils.py +1 -1
  536. diffusers/utils/hub_utils.py +33 -17
  537. diffusers/utils/import_utils.py +151 -18
  538. diffusers/utils/logging.py +1 -1
  539. diffusers/utils/outputs.py +2 -1
  540. diffusers/utils/peft_utils.py +96 -10
  541. diffusers/utils/state_dict_utils.py +20 -3
  542. diffusers/utils/testing_utils.py +195 -17
  543. diffusers/utils/torch_utils.py +43 -5
  544. diffusers/video_processor.py +2 -2
  545. {diffusers-0.33.1.dist-info → diffusers-0.35.0.dist-info}/METADATA +72 -57
  546. diffusers-0.35.0.dist-info/RECORD +703 -0
  547. {diffusers-0.33.1.dist-info → diffusers-0.35.0.dist-info}/WHEEL +1 -1
  548. diffusers-0.33.1.dist-info/RECORD +0 -608
  549. {diffusers-0.33.1.dist-info → diffusers-0.35.0.dist-info}/LICENSE +0 -0
  550. {diffusers-0.33.1.dist-info → diffusers-0.35.0.dist-info}/entry_points.txt +0 -0
  551. {diffusers-0.33.1.dist-info → diffusers-0.35.0.dist-info}/top_level.txt +0 -0
@@ -2,6 +2,96 @@
2
2
  from ..utils import DummyObject, requires_backends
3
3
 
4
4
 
5
+ class FluxAutoBlocks(metaclass=DummyObject):
6
+ _backends = ["torch", "transformers"]
7
+
8
+ def __init__(self, *args, **kwargs):
9
+ requires_backends(self, ["torch", "transformers"])
10
+
11
+ @classmethod
12
+ def from_config(cls, *args, **kwargs):
13
+ requires_backends(cls, ["torch", "transformers"])
14
+
15
+ @classmethod
16
+ def from_pretrained(cls, *args, **kwargs):
17
+ requires_backends(cls, ["torch", "transformers"])
18
+
19
+
20
+ class FluxModularPipeline(metaclass=DummyObject):
21
+ _backends = ["torch", "transformers"]
22
+
23
+ def __init__(self, *args, **kwargs):
24
+ requires_backends(self, ["torch", "transformers"])
25
+
26
+ @classmethod
27
+ def from_config(cls, *args, **kwargs):
28
+ requires_backends(cls, ["torch", "transformers"])
29
+
30
+ @classmethod
31
+ def from_pretrained(cls, *args, **kwargs):
32
+ requires_backends(cls, ["torch", "transformers"])
33
+
34
+
35
+ class StableDiffusionXLAutoBlocks(metaclass=DummyObject):
36
+ _backends = ["torch", "transformers"]
37
+
38
+ def __init__(self, *args, **kwargs):
39
+ requires_backends(self, ["torch", "transformers"])
40
+
41
+ @classmethod
42
+ def from_config(cls, *args, **kwargs):
43
+ requires_backends(cls, ["torch", "transformers"])
44
+
45
+ @classmethod
46
+ def from_pretrained(cls, *args, **kwargs):
47
+ requires_backends(cls, ["torch", "transformers"])
48
+
49
+
50
+ class StableDiffusionXLModularPipeline(metaclass=DummyObject):
51
+ _backends = ["torch", "transformers"]
52
+
53
+ def __init__(self, *args, **kwargs):
54
+ requires_backends(self, ["torch", "transformers"])
55
+
56
+ @classmethod
57
+ def from_config(cls, *args, **kwargs):
58
+ requires_backends(cls, ["torch", "transformers"])
59
+
60
+ @classmethod
61
+ def from_pretrained(cls, *args, **kwargs):
62
+ requires_backends(cls, ["torch", "transformers"])
63
+
64
+
65
+ class WanAutoBlocks(metaclass=DummyObject):
66
+ _backends = ["torch", "transformers"]
67
+
68
+ def __init__(self, *args, **kwargs):
69
+ requires_backends(self, ["torch", "transformers"])
70
+
71
+ @classmethod
72
+ def from_config(cls, *args, **kwargs):
73
+ requires_backends(cls, ["torch", "transformers"])
74
+
75
+ @classmethod
76
+ def from_pretrained(cls, *args, **kwargs):
77
+ requires_backends(cls, ["torch", "transformers"])
78
+
79
+
80
+ class WanModularPipeline(metaclass=DummyObject):
81
+ _backends = ["torch", "transformers"]
82
+
83
+ def __init__(self, *args, **kwargs):
84
+ requires_backends(self, ["torch", "transformers"])
85
+
86
+ @classmethod
87
+ def from_config(cls, *args, **kwargs):
88
+ requires_backends(cls, ["torch", "transformers"])
89
+
90
+ @classmethod
91
+ def from_pretrained(cls, *args, **kwargs):
92
+ requires_backends(cls, ["torch", "transformers"])
93
+
94
+
5
95
  class AllegroPipeline(metaclass=DummyObject):
6
96
  _backends = ["torch", "transformers"]
7
97
 
@@ -272,6 +362,36 @@ class AuraFlowPipeline(metaclass=DummyObject):
272
362
  requires_backends(cls, ["torch", "transformers"])
273
363
 
274
364
 
365
+ class ChromaImg2ImgPipeline(metaclass=DummyObject):
366
+ _backends = ["torch", "transformers"]
367
+
368
+ def __init__(self, *args, **kwargs):
369
+ requires_backends(self, ["torch", "transformers"])
370
+
371
+ @classmethod
372
+ def from_config(cls, *args, **kwargs):
373
+ requires_backends(cls, ["torch", "transformers"])
374
+
375
+ @classmethod
376
+ def from_pretrained(cls, *args, **kwargs):
377
+ requires_backends(cls, ["torch", "transformers"])
378
+
379
+
380
+ class ChromaPipeline(metaclass=DummyObject):
381
+ _backends = ["torch", "transformers"]
382
+
383
+ def __init__(self, *args, **kwargs):
384
+ requires_backends(self, ["torch", "transformers"])
385
+
386
+ @classmethod
387
+ def from_config(cls, *args, **kwargs):
388
+ requires_backends(cls, ["torch", "transformers"])
389
+
390
+ @classmethod
391
+ def from_pretrained(cls, *args, **kwargs):
392
+ requires_backends(cls, ["torch", "transformers"])
393
+
394
+
275
395
  class CLIPImageProjection(metaclass=DummyObject):
276
396
  _backends = ["torch", "transformers"]
277
397
 
@@ -392,6 +512,81 @@ class CogView4Pipeline(metaclass=DummyObject):
392
512
  requires_backends(cls, ["torch", "transformers"])
393
513
 
394
514
 
515
+ class ConsisIDPipeline(metaclass=DummyObject):
516
+ _backends = ["torch", "transformers"]
517
+
518
+ def __init__(self, *args, **kwargs):
519
+ requires_backends(self, ["torch", "transformers"])
520
+
521
+ @classmethod
522
+ def from_config(cls, *args, **kwargs):
523
+ requires_backends(cls, ["torch", "transformers"])
524
+
525
+ @classmethod
526
+ def from_pretrained(cls, *args, **kwargs):
527
+ requires_backends(cls, ["torch", "transformers"])
528
+
529
+
530
+ class Cosmos2TextToImagePipeline(metaclass=DummyObject):
531
+ _backends = ["torch", "transformers"]
532
+
533
+ def __init__(self, *args, **kwargs):
534
+ requires_backends(self, ["torch", "transformers"])
535
+
536
+ @classmethod
537
+ def from_config(cls, *args, **kwargs):
538
+ requires_backends(cls, ["torch", "transformers"])
539
+
540
+ @classmethod
541
+ def from_pretrained(cls, *args, **kwargs):
542
+ requires_backends(cls, ["torch", "transformers"])
543
+
544
+
545
+ class Cosmos2VideoToWorldPipeline(metaclass=DummyObject):
546
+ _backends = ["torch", "transformers"]
547
+
548
+ def __init__(self, *args, **kwargs):
549
+ requires_backends(self, ["torch", "transformers"])
550
+
551
+ @classmethod
552
+ def from_config(cls, *args, **kwargs):
553
+ requires_backends(cls, ["torch", "transformers"])
554
+
555
+ @classmethod
556
+ def from_pretrained(cls, *args, **kwargs):
557
+ requires_backends(cls, ["torch", "transformers"])
558
+
559
+
560
+ class CosmosTextToWorldPipeline(metaclass=DummyObject):
561
+ _backends = ["torch", "transformers"]
562
+
563
+ def __init__(self, *args, **kwargs):
564
+ requires_backends(self, ["torch", "transformers"])
565
+
566
+ @classmethod
567
+ def from_config(cls, *args, **kwargs):
568
+ requires_backends(cls, ["torch", "transformers"])
569
+
570
+ @classmethod
571
+ def from_pretrained(cls, *args, **kwargs):
572
+ requires_backends(cls, ["torch", "transformers"])
573
+
574
+
575
+ class CosmosVideoToWorldPipeline(metaclass=DummyObject):
576
+ _backends = ["torch", "transformers"]
577
+
578
+ def __init__(self, *args, **kwargs):
579
+ requires_backends(self, ["torch", "transformers"])
580
+
581
+ @classmethod
582
+ def from_config(cls, *args, **kwargs):
583
+ requires_backends(cls, ["torch", "transformers"])
584
+
585
+ @classmethod
586
+ def from_pretrained(cls, *args, **kwargs):
587
+ requires_backends(cls, ["torch", "transformers"])
588
+
589
+
395
590
  class CycleDiffusionPipeline(metaclass=DummyObject):
396
591
  _backends = ["torch", "transformers"]
397
592
 
@@ -587,6 +782,36 @@ class FluxInpaintPipeline(metaclass=DummyObject):
587
782
  requires_backends(cls, ["torch", "transformers"])
588
783
 
589
784
 
785
+ class FluxKontextInpaintPipeline(metaclass=DummyObject):
786
+ _backends = ["torch", "transformers"]
787
+
788
+ def __init__(self, *args, **kwargs):
789
+ requires_backends(self, ["torch", "transformers"])
790
+
791
+ @classmethod
792
+ def from_config(cls, *args, **kwargs):
793
+ requires_backends(cls, ["torch", "transformers"])
794
+
795
+ @classmethod
796
+ def from_pretrained(cls, *args, **kwargs):
797
+ requires_backends(cls, ["torch", "transformers"])
798
+
799
+
800
+ class FluxKontextPipeline(metaclass=DummyObject):
801
+ _backends = ["torch", "transformers"]
802
+
803
+ def __init__(self, *args, **kwargs):
804
+ requires_backends(self, ["torch", "transformers"])
805
+
806
+ @classmethod
807
+ def from_config(cls, *args, **kwargs):
808
+ requires_backends(cls, ["torch", "transformers"])
809
+
810
+ @classmethod
811
+ def from_pretrained(cls, *args, **kwargs):
812
+ requires_backends(cls, ["torch", "transformers"])
813
+
814
+
590
815
  class FluxPipeline(metaclass=DummyObject):
591
816
  _backends = ["torch", "transformers"]
592
817
 
@@ -617,6 +842,21 @@ class FluxPriorReduxPipeline(metaclass=DummyObject):
617
842
  requires_backends(cls, ["torch", "transformers"])
618
843
 
619
844
 
845
+ class HiDreamImagePipeline(metaclass=DummyObject):
846
+ _backends = ["torch", "transformers"]
847
+
848
+ def __init__(self, *args, **kwargs):
849
+ requires_backends(self, ["torch", "transformers"])
850
+
851
+ @classmethod
852
+ def from_config(cls, *args, **kwargs):
853
+ requires_backends(cls, ["torch", "transformers"])
854
+
855
+ @classmethod
856
+ def from_pretrained(cls, *args, **kwargs):
857
+ requires_backends(cls, ["torch", "transformers"])
858
+
859
+
620
860
  class HunyuanDiTControlNetPipeline(metaclass=DummyObject):
621
861
  _backends = ["torch", "transformers"]
622
862
 
@@ -677,6 +917,21 @@ class HunyuanSkyreelsImageToVideoPipeline(metaclass=DummyObject):
677
917
  requires_backends(cls, ["torch", "transformers"])
678
918
 
679
919
 
920
+ class HunyuanVideoFramepackPipeline(metaclass=DummyObject):
921
+ _backends = ["torch", "transformers"]
922
+
923
+ def __init__(self, *args, **kwargs):
924
+ requires_backends(self, ["torch", "transformers"])
925
+
926
+ @classmethod
927
+ def from_config(cls, *args, **kwargs):
928
+ requires_backends(cls, ["torch", "transformers"])
929
+
930
+ @classmethod
931
+ def from_pretrained(cls, *args, **kwargs):
932
+ requires_backends(cls, ["torch", "transformers"])
933
+
934
+
680
935
  class HunyuanVideoImageToVideoPipeline(metaclass=DummyObject):
681
936
  _backends = ["torch", "transformers"]
682
937
 
@@ -1232,6 +1487,21 @@ class LTXImageToVideoPipeline(metaclass=DummyObject):
1232
1487
  requires_backends(cls, ["torch", "transformers"])
1233
1488
 
1234
1489
 
1490
+ class LTXLatentUpsamplePipeline(metaclass=DummyObject):
1491
+ _backends = ["torch", "transformers"]
1492
+
1493
+ def __init__(self, *args, **kwargs):
1494
+ requires_backends(self, ["torch", "transformers"])
1495
+
1496
+ @classmethod
1497
+ def from_config(cls, *args, **kwargs):
1498
+ requires_backends(cls, ["torch", "transformers"])
1499
+
1500
+ @classmethod
1501
+ def from_pretrained(cls, *args, **kwargs):
1502
+ requires_backends(cls, ["torch", "transformers"])
1503
+
1504
+
1235
1505
  class LTXPipeline(metaclass=DummyObject):
1236
1506
  _backends = ["torch", "transformers"]
1237
1507
 
@@ -1472,6 +1742,66 @@ class PixArtSigmaPipeline(metaclass=DummyObject):
1472
1742
  requires_backends(cls, ["torch", "transformers"])
1473
1743
 
1474
1744
 
1745
+ class QwenImageEditPipeline(metaclass=DummyObject):
1746
+ _backends = ["torch", "transformers"]
1747
+
1748
+ def __init__(self, *args, **kwargs):
1749
+ requires_backends(self, ["torch", "transformers"])
1750
+
1751
+ @classmethod
1752
+ def from_config(cls, *args, **kwargs):
1753
+ requires_backends(cls, ["torch", "transformers"])
1754
+
1755
+ @classmethod
1756
+ def from_pretrained(cls, *args, **kwargs):
1757
+ requires_backends(cls, ["torch", "transformers"])
1758
+
1759
+
1760
+ class QwenImageImg2ImgPipeline(metaclass=DummyObject):
1761
+ _backends = ["torch", "transformers"]
1762
+
1763
+ def __init__(self, *args, **kwargs):
1764
+ requires_backends(self, ["torch", "transformers"])
1765
+
1766
+ @classmethod
1767
+ def from_config(cls, *args, **kwargs):
1768
+ requires_backends(cls, ["torch", "transformers"])
1769
+
1770
+ @classmethod
1771
+ def from_pretrained(cls, *args, **kwargs):
1772
+ requires_backends(cls, ["torch", "transformers"])
1773
+
1774
+
1775
+ class QwenImageInpaintPipeline(metaclass=DummyObject):
1776
+ _backends = ["torch", "transformers"]
1777
+
1778
+ def __init__(self, *args, **kwargs):
1779
+ requires_backends(self, ["torch", "transformers"])
1780
+
1781
+ @classmethod
1782
+ def from_config(cls, *args, **kwargs):
1783
+ requires_backends(cls, ["torch", "transformers"])
1784
+
1785
+ @classmethod
1786
+ def from_pretrained(cls, *args, **kwargs):
1787
+ requires_backends(cls, ["torch", "transformers"])
1788
+
1789
+
1790
+ class QwenImagePipeline(metaclass=DummyObject):
1791
+ _backends = ["torch", "transformers"]
1792
+
1793
+ def __init__(self, *args, **kwargs):
1794
+ requires_backends(self, ["torch", "transformers"])
1795
+
1796
+ @classmethod
1797
+ def from_config(cls, *args, **kwargs):
1798
+ requires_backends(cls, ["torch", "transformers"])
1799
+
1800
+ @classmethod
1801
+ def from_pretrained(cls, *args, **kwargs):
1802
+ requires_backends(cls, ["torch", "transformers"])
1803
+
1804
+
1475
1805
  class ReduxImageEncoder(metaclass=DummyObject):
1476
1806
  _backends = ["torch", "transformers"]
1477
1807
 
@@ -1487,6 +1817,21 @@ class ReduxImageEncoder(metaclass=DummyObject):
1487
1817
  requires_backends(cls, ["torch", "transformers"])
1488
1818
 
1489
1819
 
1820
+ class SanaControlNetPipeline(metaclass=DummyObject):
1821
+ _backends = ["torch", "transformers"]
1822
+
1823
+ def __init__(self, *args, **kwargs):
1824
+ requires_backends(self, ["torch", "transformers"])
1825
+
1826
+ @classmethod
1827
+ def from_config(cls, *args, **kwargs):
1828
+ requires_backends(cls, ["torch", "transformers"])
1829
+
1830
+ @classmethod
1831
+ def from_pretrained(cls, *args, **kwargs):
1832
+ requires_backends(cls, ["torch", "transformers"])
1833
+
1834
+
1490
1835
  class SanaPAGPipeline(metaclass=DummyObject):
1491
1836
  _backends = ["torch", "transformers"]
1492
1837
 
@@ -1517,6 +1862,21 @@ class SanaPipeline(metaclass=DummyObject):
1517
1862
  requires_backends(cls, ["torch", "transformers"])
1518
1863
 
1519
1864
 
1865
+ class SanaSprintImg2ImgPipeline(metaclass=DummyObject):
1866
+ _backends = ["torch", "transformers"]
1867
+
1868
+ def __init__(self, *args, **kwargs):
1869
+ requires_backends(self, ["torch", "transformers"])
1870
+
1871
+ @classmethod
1872
+ def from_config(cls, *args, **kwargs):
1873
+ requires_backends(cls, ["torch", "transformers"])
1874
+
1875
+ @classmethod
1876
+ def from_pretrained(cls, *args, **kwargs):
1877
+ requires_backends(cls, ["torch", "transformers"])
1878
+
1879
+
1520
1880
  class SanaSprintPipeline(metaclass=DummyObject):
1521
1881
  _backends = ["torch", "transformers"]
1522
1882
 
@@ -1577,6 +1937,81 @@ class ShapEPipeline(metaclass=DummyObject):
1577
1937
  requires_backends(cls, ["torch", "transformers"])
1578
1938
 
1579
1939
 
1940
+ class SkyReelsV2DiffusionForcingImageToVideoPipeline(metaclass=DummyObject):
1941
+ _backends = ["torch", "transformers"]
1942
+
1943
+ def __init__(self, *args, **kwargs):
1944
+ requires_backends(self, ["torch", "transformers"])
1945
+
1946
+ @classmethod
1947
+ def from_config(cls, *args, **kwargs):
1948
+ requires_backends(cls, ["torch", "transformers"])
1949
+
1950
+ @classmethod
1951
+ def from_pretrained(cls, *args, **kwargs):
1952
+ requires_backends(cls, ["torch", "transformers"])
1953
+
1954
+
1955
+ class SkyReelsV2DiffusionForcingPipeline(metaclass=DummyObject):
1956
+ _backends = ["torch", "transformers"]
1957
+
1958
+ def __init__(self, *args, **kwargs):
1959
+ requires_backends(self, ["torch", "transformers"])
1960
+
1961
+ @classmethod
1962
+ def from_config(cls, *args, **kwargs):
1963
+ requires_backends(cls, ["torch", "transformers"])
1964
+
1965
+ @classmethod
1966
+ def from_pretrained(cls, *args, **kwargs):
1967
+ requires_backends(cls, ["torch", "transformers"])
1968
+
1969
+
1970
+ class SkyReelsV2DiffusionForcingVideoToVideoPipeline(metaclass=DummyObject):
1971
+ _backends = ["torch", "transformers"]
1972
+
1973
+ def __init__(self, *args, **kwargs):
1974
+ requires_backends(self, ["torch", "transformers"])
1975
+
1976
+ @classmethod
1977
+ def from_config(cls, *args, **kwargs):
1978
+ requires_backends(cls, ["torch", "transformers"])
1979
+
1980
+ @classmethod
1981
+ def from_pretrained(cls, *args, **kwargs):
1982
+ requires_backends(cls, ["torch", "transformers"])
1983
+
1984
+
1985
+ class SkyReelsV2ImageToVideoPipeline(metaclass=DummyObject):
1986
+ _backends = ["torch", "transformers"]
1987
+
1988
+ def __init__(self, *args, **kwargs):
1989
+ requires_backends(self, ["torch", "transformers"])
1990
+
1991
+ @classmethod
1992
+ def from_config(cls, *args, **kwargs):
1993
+ requires_backends(cls, ["torch", "transformers"])
1994
+
1995
+ @classmethod
1996
+ def from_pretrained(cls, *args, **kwargs):
1997
+ requires_backends(cls, ["torch", "transformers"])
1998
+
1999
+
2000
+ class SkyReelsV2Pipeline(metaclass=DummyObject):
2001
+ _backends = ["torch", "transformers"]
2002
+
2003
+ def __init__(self, *args, **kwargs):
2004
+ requires_backends(self, ["torch", "transformers"])
2005
+
2006
+ @classmethod
2007
+ def from_config(cls, *args, **kwargs):
2008
+ requires_backends(cls, ["torch", "transformers"])
2009
+
2010
+ @classmethod
2011
+ def from_pretrained(cls, *args, **kwargs):
2012
+ requires_backends(cls, ["torch", "transformers"])
2013
+
2014
+
1580
2015
  class StableAudioPipeline(metaclass=DummyObject):
1581
2016
  _backends = ["torch", "transformers"]
1582
2017
 
@@ -2702,6 +3137,36 @@ class VideoToVideoSDPipeline(metaclass=DummyObject):
2702
3137
  requires_backends(cls, ["torch", "transformers"])
2703
3138
 
2704
3139
 
3140
+ class VisualClozeGenerationPipeline(metaclass=DummyObject):
3141
+ _backends = ["torch", "transformers"]
3142
+
3143
+ def __init__(self, *args, **kwargs):
3144
+ requires_backends(self, ["torch", "transformers"])
3145
+
3146
+ @classmethod
3147
+ def from_config(cls, *args, **kwargs):
3148
+ requires_backends(cls, ["torch", "transformers"])
3149
+
3150
+ @classmethod
3151
+ def from_pretrained(cls, *args, **kwargs):
3152
+ requires_backends(cls, ["torch", "transformers"])
3153
+
3154
+
3155
+ class VisualClozePipeline(metaclass=DummyObject):
3156
+ _backends = ["torch", "transformers"]
3157
+
3158
+ def __init__(self, *args, **kwargs):
3159
+ requires_backends(self, ["torch", "transformers"])
3160
+
3161
+ @classmethod
3162
+ def from_config(cls, *args, **kwargs):
3163
+ requires_backends(cls, ["torch", "transformers"])
3164
+
3165
+ @classmethod
3166
+ def from_pretrained(cls, *args, **kwargs):
3167
+ requires_backends(cls, ["torch", "transformers"])
3168
+
3169
+
2705
3170
  class VQDiffusionPipeline(metaclass=DummyObject):
2706
3171
  _backends = ["torch", "transformers"]
2707
3172
 
@@ -2747,6 +3212,21 @@ class WanPipeline(metaclass=DummyObject):
2747
3212
  requires_backends(cls, ["torch", "transformers"])
2748
3213
 
2749
3214
 
3215
+ class WanVACEPipeline(metaclass=DummyObject):
3216
+ _backends = ["torch", "transformers"]
3217
+
3218
+ def __init__(self, *args, **kwargs):
3219
+ requires_backends(self, ["torch", "transformers"])
3220
+
3221
+ @classmethod
3222
+ def from_config(cls, *args, **kwargs):
3223
+ requires_backends(cls, ["torch", "transformers"])
3224
+
3225
+ @classmethod
3226
+ def from_pretrained(cls, *args, **kwargs):
3227
+ requires_backends(cls, ["torch", "transformers"])
3228
+
3229
+
2750
3230
  class WanVideoToVideoPipeline(metaclass=DummyObject):
2751
3231
  _backends = ["torch", "transformers"]
2752
3232
 
@@ -20,8 +20,11 @@ import json
20
20
  import os
21
21
  import re
22
22
  import shutil
23
+ import signal
23
24
  import sys
25
+ import threading
24
26
  from pathlib import Path
27
+ from types import ModuleType
25
28
  from typing import Dict, Optional, Union
26
29
  from urllib import request
27
30
 
@@ -37,6 +40,8 @@ logger = logging.get_logger(__name__) # pylint: disable=invalid-name
37
40
 
38
41
  # See https://huggingface.co/datasets/diffusers/community-pipelines-mirror
39
42
  COMMUNITY_PIPELINES_MIRROR_ID = "diffusers/community-pipelines-mirror"
43
+ TIME_OUT_REMOTE_CODE = int(os.getenv("DIFFUSERS_TIMEOUT_REMOTE_CODE", 15))
44
+ _HF_REMOTE_CODE_LOCK = threading.Lock()
40
45
 
41
46
 
42
47
  def get_diffusers_versions():
@@ -154,15 +159,87 @@ def check_imports(filename):
154
159
  return get_relative_imports(filename)
155
160
 
156
161
 
157
- def get_class_in_module(class_name, module_path):
162
+ def _raise_timeout_error(signum, frame):
163
+ raise ValueError(
164
+ "Loading this model requires you to execute custom code contained in the model repository on your local "
165
+ "machine. Please set the option `trust_remote_code=True` to permit loading of this model."
166
+ )
167
+
168
+
169
+ def resolve_trust_remote_code(trust_remote_code, model_name, has_remote_code):
170
+ if trust_remote_code is None:
171
+ if has_remote_code and TIME_OUT_REMOTE_CODE > 0:
172
+ prev_sig_handler = None
173
+ try:
174
+ prev_sig_handler = signal.signal(signal.SIGALRM, _raise_timeout_error)
175
+ signal.alarm(TIME_OUT_REMOTE_CODE)
176
+ while trust_remote_code is None:
177
+ answer = input(
178
+ f"The repository for {model_name} contains custom code which must be executed to correctly "
179
+ f"load the model. You can inspect the repository content at https://hf.co/{model_name}.\n"
180
+ f"You can avoid this prompt in future by passing the argument `trust_remote_code=True`.\n\n"
181
+ f"Do you wish to run the custom code? [y/N] "
182
+ )
183
+ if answer.lower() in ["yes", "y", "1"]:
184
+ trust_remote_code = True
185
+ elif answer.lower() in ["no", "n", "0", ""]:
186
+ trust_remote_code = False
187
+ signal.alarm(0)
188
+ except Exception:
189
+ # OS which does not support signal.SIGALRM
190
+ raise ValueError(
191
+ f"The repository for {model_name} contains custom code which must be executed to correctly "
192
+ f"load the model. You can inspect the repository content at https://hf.co/{model_name}.\n"
193
+ f"Please pass the argument `trust_remote_code=True` to allow custom code to be run."
194
+ )
195
+ finally:
196
+ if prev_sig_handler is not None:
197
+ signal.signal(signal.SIGALRM, prev_sig_handler)
198
+ signal.alarm(0)
199
+ elif has_remote_code:
200
+ # For the CI which puts the timeout at 0
201
+ _raise_timeout_error(None, None)
202
+
203
+ if has_remote_code and not trust_remote_code:
204
+ raise ValueError(
205
+ f"Loading {model_name} requires you to execute the configuration file in that"
206
+ " repo on your local machine. Make sure you have read the code there to avoid malicious use, then"
207
+ " set the option `trust_remote_code=True` to remove this error."
208
+ )
209
+
210
+ return trust_remote_code
211
+
212
+
213
+ def get_class_in_module(class_name, module_path, force_reload=False):
158
214
  """
159
215
  Import a module on the cache directory for modules and extract a class from it.
160
216
  """
161
- module_path = module_path.replace(os.path.sep, ".")
162
- module = importlib.import_module(module_path)
217
+ name = os.path.normpath(module_path)
218
+ if name.endswith(".py"):
219
+ name = name[:-3]
220
+ name = name.replace(os.path.sep, ".")
221
+ module_file: Path = Path(HF_MODULES_CACHE) / module_path
222
+
223
+ with _HF_REMOTE_CODE_LOCK:
224
+ if force_reload:
225
+ sys.modules.pop(name, None)
226
+ importlib.invalidate_caches()
227
+ cached_module: Optional[ModuleType] = sys.modules.get(name)
228
+ module_spec = importlib.util.spec_from_file_location(name, location=module_file)
229
+
230
+ module: ModuleType
231
+ if cached_module is None:
232
+ module = importlib.util.module_from_spec(module_spec)
233
+ # insert it into sys.modules before any loading begins
234
+ sys.modules[name] = module
235
+ else:
236
+ module = cached_module
237
+
238
+ module_spec.loader.exec_module(module)
163
239
 
164
240
  if class_name is None:
165
241
  return find_pipeline_class(module)
242
+
166
243
  return getattr(module, class_name)
167
244
 
168
245
 
@@ -241,8 +318,8 @@ def get_cached_module_file(
241
318
 
242
319
  <Tip>
243
320
 
244
- You may pass a token in `token` if you are not logged in (`huggingface-cli login`) and want to use private or
245
- [gated models](https://huggingface.co/docs/hub/models-gated#gated-models).
321
+ You may pass a token in `token` if you are not logged in (`hf auth login`) and want to use private or [gated
322
+ models](https://huggingface.co/docs/hub/models-gated#gated-models).
246
323
 
247
324
  </Tip>
248
325
 
@@ -428,8 +505,8 @@ def get_class_from_dynamic_module(
428
505
 
429
506
  <Tip>
430
507
 
431
- You may pass a token in `token` if you are not logged in (`huggingface-cli login`) and want to use private or
432
- [gated models](https://huggingface.co/docs/hub/models-gated#gated-models).
508
+ You may pass a token in `token` if you are not logged in (`hf auth login`) and want to use private or [gated
509
+ models](https://huggingface.co/docs/hub/models-gated#gated-models).
433
510
 
434
511
  </Tip>
435
512
 
@@ -454,4 +531,4 @@ def get_class_from_dynamic_module(
454
531
  revision=revision,
455
532
  local_files_only=local_files_only,
456
533
  )
457
- return get_class_in_module(class_name, final_module.replace(".py", ""))
534
+ return get_class_in_module(class_name, final_module)