o
    ۷i                     @   s0   d Z ddlmZmZ ddlZG dd deZdS )z*Base scheduler class for diffusion models.    )ABCabstractmethodNc                   @   s|   e Zd ZU dZejed< eed< eed< dd Ze	de
dd	fd
dZe	dddZe	ddejded	B dejfddZd	S )BaseSchedulerz
    Abstract base class for schedulers.

    Subclasses must define:
        - timesteps: torch.Tensor
        - order: int
        - num_train_timesteps: int
    	timestepsordernum_train_timestepsc                 C   s:   g d}|D ]}t | |std| jj d| dqd S )N)r   r   r   z	Subclass z must define `z#` before calling super().__init__())hasattrAttributeError	__class____name__)selfrequired_attrsattr r   `/home/ubuntu/vllm_env/lib/python3.10/site-packages/vllm_omni/diffusion/models/schedulers/base.py__init__   s   
zBaseScheduler.__init__shiftreturnNc                 C      t )z*Set the shift parameter for the scheduler.NotImplementedError)r   r   r   r   r   	set_shift#      zBaseScheduler.set_shiftc                 O   r   )z$Set the timesteps for the scheduler.r   )r   argskwargsr   r   r   set_timesteps(   r   zBaseScheduler.set_timestepssampletimestepc                 C   r   )zScale the model input.r   )r   r   r   r   r   r   scale_model_input-   r   zBaseScheduler.scale_model_input)r   N)N)r   
__module____qualname____doc__torchTensor__annotations__intr   r   floatr   r   r   r   r   r   r   r      s   
 
	&r   )r!   abcr   r   r"   r   r   r   r   r   <module>   s   