
    biG                         d dl mZmZmZmZ d dlZd dlZd dlZddl	m
Z
 ddlmZ ddlmZ ddlmZ dd	lmZmZ dd
lmZmZmZ  ej0                  e      Zd Z G d de      Zy)    )AnyListTupleUnionN   )
FrozenDict)AutoencoderKL)logging)VaeImageProcessor   )ModularPipelineBlocksPipelineState)ComponentSpec
InputParamOutputParamc                    | j                   \  }}}dt        |      |dz  z  z  }dt        |      |dz  z  z  }| j                  ||dz  |dz  |dz  dd      } | j                  dddddd      } | j	                  ||dz  ||      } | S )Nr      r   r         )shapeintviewpermutereshape)latentsheightwidthvae_scale_factor
batch_sizenum_patcheschannelss          d/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/diffusers/modular_pipelines/flux/decoders.py_unpack_latentsr#       s    (/%JX #f+"2Q"678FU 01 456Ell:v{EQJAqRSTGooaAq!Q/Gooj(u*=vuMGN    c                       e Zd ZdZedee   fd       Zedefd       Z	edee
eef      fd       Zedee   fd       Z ej                         dedefd       Zy	)
FluxDecodeStepfluxreturnc           	      ^    t        dt              t        dt        t        ddi      d      gS )Nvaeimage_processorr      from_config)configdefault_creation_method)r   r	   r   r   selfs    r"   expected_componentsz"FluxDecodeStep.expected_components3   s7     %/!!!#5r":;(5	
 	
r$   c                      y)Nz2Step that decodes the denoised latents into images r0   s    r"   descriptionzFluxDecodeStep.description?   s    Cr$   c           	          t        dd      t        dd      t        dd      t        ddt        j                  d	
      gS )Noutput_typepil)defaultr   i   r   r   Tz,The denoised latents from the denoising step)required	type_hintr5   )r   torchTensorr0   s    r"   inputszFluxDecodeStep.inputsC   sD     }e4x.w-,,J		

 
	
r$   c                     t        dt        t        t        j                  j                     t
        j                  t        j                  f   d      gS )NimageszUThe generated images, can be a list of PIL.Image.Image, torch.Tensor or a numpy array)r;   r5   )	r   r   r   PILImager<   r=   npndarrayr0   s    r"   intermediate_outputsz#FluxDecodeStep.intermediate_outputsQ   s@     SYY__ 5u||RZZ OPs
 	
r$   statec                    | j                  |      }|j                  }|j                  dk(  s|j                  }t	        ||j
                  |j                  |j                        }||j                  j                  z  |j                  j                  z   }|j                  |d      d   |_        |j                  j                  |j                  |j                        |_        n|j                  |_        | j                  ||       ||fS )NlatentF)return_dictr   )r7   )get_block_stater*   r7   r   r#   r   r   r   r.   scaling_factorshift_factordecoder@   r+   postprocessset_block_state)r1   
componentsrF   block_stater*   r   s         r"   __call__zFluxDecodeStep.__call__[   s    **51nn&&(2!))G%g{/A/A;CTCTV`VqVqrG!:!::cjj>U>UUG!$G!G!JK!+!;!;!G!G""0G0G "H "K "-!4!4KUK05  r$   N)__name__
__module____qualname__
model_namepropertyr   r   r2   strr5   r   r   r>   rE   r<   no_gradr   rR   r4   r$   r"   r&   r&   0   s    J	
T-%8 	
 	
 DS D D 
U38_- 
 
 
d3i 
 
 U]]_!- !M ! !r$   r&   )typingr   r   r   r   numpyrC   rA   r<   configuration_utilsr   modelsr	   utilsr
   video_processorr   modular_pipeliner   r   modular_pipeline_utilsr   r   r   
get_loggerrS   loggerr#   r&   r4   r$   r"   <module>rd      sQ    + *  
  - #  0 C K K 
		H	% =!* =!r$   