
    +hG                         S SK JrJrJrJr  S SKrS SKrS SKrSSK	J
r
  SSKJr  SSKJr  SSKJr  SS	KJrJr  SS
KJrJrJr  \R0                  " \5      rS r " S S\5      rg)    )AnyListTupleUnionN   )
FrozenDict)AutoencoderKL)logging)VaeImageProcessor   )ModularPipelineBlocksPipelineState)ComponentSpec
InputParamOutputParamc                    U R                   u  pEnS[        U5      US-  -  -  nS[        U5      US-  -  -  nU R                  XAS-  US-  US-  SS5      n U R                  SSSSSS5      n U R	                  XFS-  X5      n U $ )Nr      r   r         )shapeintviewpermutereshape)latentsheightwidthvae_scale_factor
batch_sizenum_patcheschannelss          c/home/james-whalen/.local/lib/python3.13/site-packages/diffusers/modular_pipelines/flux/decoders.py_unpack_latentsr#       s    (/%JX #f+"2Q"678FU 01 456Ell:{EQJAqRSTGooaAq!Q/Gooju*=vMGN    c                       \ rS rSrSr\S\\   4S j5       r\S\	4S j5       r
\S\\\	\4      4S j5       r\S\\	   4S j5       r\R                   " 5       S\S\4S	 j5       rS
rg)FluxDecodeStep0   fluxreturnc           	      X    [        S[        5      [        S[        [        SS05      SS9/$ )Nvaeimage_processorr      from_config)configdefault_creation_method)r   r	   r   r   selfs    r"   expected_components"FluxDecodeStep.expected_components3   s7     %/!!!#5r":;(5	
 	
r$   c                     g)Nz2Step that decodes the denoised latents into images r1   s    r"   descriptionFluxDecodeStep.description?   s    Cr$   c           
      n    [        SSS9[        SSS9[        SSS9[        SS[        R                  S	S
9/$ )Noutput_typepil)defaultr   i   r   r   Tz,The denoised latents from the denoising step)required	type_hintr7   )r   torchTensorr1   s    r"   inputsFluxDecodeStep.inputsC   sD     }e4x.w-,,J		

 
	
r$   c                     [        S[        [        [        R                  R                     [
        R                  [        R                  4   SS9/$ )NimageszUThe generated images, can be a list of PIL.Image.Image, torch.Tensor or a numpy array)r>   r7   )	r   r   r   PILImager?   r@   npndarrayr1   s    r"   intermediate_outputs#FluxDecodeStep.intermediate_outputsQ   s@     SYY__ 5u||RZZ OPs
 	
r$   statec                 
   U R                  U5      nUR                  nUR                  S:X  d  UR                  n[	        XSR
                  UR                  UR                  5      nXTR                  R                  -  UR                  R                  -   nUR                  USS9S   Ul        UR                  R                  UR                  UR                  S9Ul        OUR                  Ul        U R                  X#5        X4$ )NlatentF)return_dictr   )r:   )get_block_stater+   r:   r   r#   r   r   r   r/   scaling_factorshift_factordecoderD   r,   postprocessset_block_state)r2   
componentsrK   block_stater+   r   s         r"   __call__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U0  r$   r6   N)__name__
__module____qualname____firstlineno__
model_namepropertyr   r   r3   strr7   r   r   rA   rI   r?   no_gradr   rW   __static_attributes__r6   r$   r"   r&   r&   0   s    J	
T-%8 	
 	
 DS D D 
U38_- 
 
 
d3i 
 
 ]]_!- !M ! !r$   r&   )typingr   r   r   r   numpyrG   rE   r?   configuration_utilsr   modelsr	   utilsr
   video_processorr   modular_pipeliner   r   modular_pipeline_utilsr   r   r   
get_loggerrY   loggerr#   r&   r6   r$   r"   <module>rl      sO    + *  
  - #  0 C K K 
		H	% =!* =!r$   