o
    áÙ·iy  ã                   @   sL   d Z ddlmZ ddlmZmZ ddlZerddlmZ G dd„ deƒZ	dS )z;Base class for diffusion model quantization configurations.é    )ÚABC)ÚTYPE_CHECKINGÚClassVarN)ÚQuantizationConfigc                   @   sx   e Zd ZU dZdZeed dB  ed< dZded< de	fdd	„Z
dd
d„Zedeej fdd„ƒZedefdd„ƒZdS )ÚDiffusionQuantizationConfiga¸  Base class for diffusion model quantization configurations.

    This provides a thin wrapper over vLLM's quantization configs,
    allowing diffusion-model-specific defaults and future extensibility.

    Subclasses should:
        - Set quant_config_cls to the vLLM QuantizationConfig class
        - Call super().__init__() after creating self._vllm_config
        - Optionally override get_name() and get_min_capability() if needed
    Nr   Úquant_config_clsúQuantizationConfig | NoneÚ_vllm_configÚreturnc                 C   s   | j dur
| j  ¡ S tdƒ‚)zŠReturn the quantization method name (e.g., 'fp8', 'int8').

        By default, delegates to the underlying vLLM config instance.
        Nz=Subclass must initialize _vllm_config or override get_name().)r	   Úget_nameÚNotImplementedError©Úself© r   úY/home/ubuntu/.local/lib/python3.10/site-packages/vllm_omni/diffusion/quantization/base.pyr   "   s   

z$DiffusionQuantizationConfig.get_namec                 C   s   | j S )z@Return the underlying vLLM QuantizationConfig for linear layers.)r	   r   r   r   r   Úget_vllm_quant_config+   s   z1DiffusionQuantizationConfig.get_vllm_quant_configc                 C   s   t jt jgS )z#Return supported activation dtypes.)ÚtorchÚbfloat16Úfloat16©Úclsr   r   r   Úget_supported_act_dtypes/   s   z4DiffusionQuantizationConfig.get_supported_act_dtypesc                 C   s   | j dur
| j  ¡ S dS )zuMinimum GPU compute capability required.

        By default, delegates to the underlying vLLM config class.
        NéP   )r   Úget_min_capabilityr   r   r   r   r   4   s   

z.DiffusionQuantizationConfig.get_min_capability)r
   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   ÚtypeÚ__annotations__r	   Ústrr   r   ÚclassmethodÚlistr   Údtyper   Úintr   r   r   r   r   r      s   
 
	r   )
r   Úabcr   Útypingr   r   r   Ú3vllm.model_executor.layers.quantization.base_configr   r   r   r   r   r   Ú<module>   s   