from __future__ import annotations

from pytorch_scheduler.base import (
    BaseScheduler,
    NegativeLRError,
    NegativeStepError,
    WarmupScheduler,
)
from pytorch_scheduler.presets import (
    PRESETS,
    create_from_preset,
    get_preset_info,
    list_presets,
)
from pytorch_scheduler.scheduler import (
    SCHEDULER_LIST,
    SCHEDULERS,
    ChebyshevScheduler,
    CosineAnnealingWarmupRestarts,
    CosineWithWarmupScheduler,
    ExpHyperbolicLRScheduler,
    FlatCosineScheduler,
    HyperbolicLRScheduler,
    InverseSqrtScheduler,
    KDecayScheduler,
    LinearDecayScheduler,
    PolynomialScheduler,
    PowerDecayScheduler,
    RexScheduler,
    SlantedTriangularScheduler,
    TanhDecayScheduler,
    TrapezoidalScheduler,
    WarmupHoldCosineScheduler,
    WSDScheduler,
    create_scheduler,
    create_scheduler_from_plan,
    get_supported_schedulers,
    load_scheduler,
)

__all__ = [
    "PRESETS",
    "SCHEDULERS",
    "SCHEDULER_LIST",
    "BaseScheduler",
    "ChebyshevScheduler",
    "CosineAnnealingWarmupRestarts",
    "CosineWithWarmupScheduler",
    "ExpHyperbolicLRScheduler",
    "FlatCosineScheduler",
    "HyperbolicLRScheduler",
    "InverseSqrtScheduler",
    "KDecayScheduler",
    "LinearDecayScheduler",
    "NegativeLRError",
    "NegativeStepError",
    "PolynomialScheduler",
    "PowerDecayScheduler",
    "RexScheduler",
    "SlantedTriangularScheduler",
    "TanhDecayScheduler",
    "TrapezoidalScheduler",
    "WSDScheduler",
    "WarmupHoldCosineScheduler",
    "WarmupScheduler",
    "create_from_preset",
    "create_scheduler",
    "create_scheduler_from_plan",
    "get_preset_info",
    "get_supported_schedulers",
    "list_presets",
    "load_scheduler",
]
