o
    Û·i
  ã                	   @   sN   d dl Z d dlmZ d dlmZ 	d	dedee dB deeef fdd„ZdS )
é    N)ÚAny)ÚTransformerConfigÚtf_model_configÚmodel_classÚreturnc              	      s|   |   ¡ }dd„ | ¡ D ƒ}|dur<zt |j¡}dd„ |j ¡ D ƒ‰ ‡ fdd„| ¡ D ƒ}W |S  ttfy;   Y |S w |S )aš  
    This function extracts parameters from a TransformerConfig instance and filters out internal
    diffusers metadata keys (those starting with '_') that should not be passed to model initialization.
    Also filters out parameters that are not accepted by the model's __init__ method (e.g., pooled_projection_dim
    for QwenImageTransformer2DModel).

    This uses inspect.signature to dynamically detect accepted parameters, making it general for any model class.
    Similar to how diffusers' @register_to_config decorator works.

    Args:
        tf_model_config: TransformerConfig instance containing model parameters
        model_class: Optional model class to inspect for accepted __init__ parameters.
                   If None, all non-internal parameters are returned (backward compatibility).

    Returns:
        dict: Filtered dictionary of parameters suitable for transformer model initialization
    c                 S   s    i | ]\}}|  d ¡s||“qS )Ú_)Ú
startswith©Ú.0ÚkÚv© r   úX/home/ubuntu/vllm_env/lib/python3.10/site-packages/vllm_omni/diffusion/utils/tf_utils.pyÚ
<dictcomp>!   s     z1get_transformer_config_kwargs.<locals>.<dictcomp>Nc                 S   s*   h | ]\}}|d kr|j tjjkr|’qS )Úself)ÚkindÚinspectÚ	ParameterÚVAR_KEYWORD)r
   ÚnameÚparamr   r   r   Ú	<setcomp>)   s
    þz0get_transformer_config_kwargs.<locals>.<setcomp>c                    s   i | ]\}}|ˆ v r||“qS r   r   r	   ©Úaccepted_paramsr   r   r   0   s    )Úto_dictÚitemsr   Ú	signatureÚ__init__Ú
parametersÚ	TypeErrorÚAttributeError)r   r   Útf_config_paramsÚfiltered_paramsÚsigr   r   r   Úget_transformer_config_kwargs   s   þûûr$   )N)	r   Útypingr   Úvllm_omni.diffusion.datar   ÚtypeÚdictÚstrr$   r   r   r   r   Ú<module>   s    ÿÿ
ÿ
þ