def list_models(case: str = "snake") -> set[str]:
    """List available anomaly detection models.

    Returns a set of model names in the specified format that are available in the
    anomalib library. This includes both image and video anomaly detection models.

    Args:
        case (str): The format to return model names in. Options are:
            - "snake_case": Returns names in snake_case format (e.g. "efficient_ad")
            - "original": Returns the original PascalCase class names (e.g. "EfficientAd")
            Defaults to "snake_case".

    Returns:
        set[str]: Set of available model names in the specified format.

    Example:
        Get all available models in different formats:

        >>> from anomalib.models import list_models
        >>> # Get models in snake_case format
        >>> models = list_models(case="snake")
        >>> print(sorted(list(models)))  # doctest: +NORMALIZE_WHITESPACE
        ['ai_vad', 'cfa', 'cflow', 'csflow', 'dfkde', 'dfm', 'draem',
         'efficient_ad', 'fastflow', 'fre', 'ganomaly', 'padim', 'patchcore',
         'reverse_distillation', 'stfpm', 'uflow', 'vlm_ad', 'winclip']

        >>> # Get models in original PascalCase format
        >>> models = list_models(case="pascal")
        >>> print(sorted(list(models)))  # doctest: +NORMALIZE_WHITESPACE
        ['AiVad', 'Cfa', 'Cflow', 'Csflow', 'Dfkde', 'Dfm', 'Draem',
         'EfficientAd', 'Fastflow', 'Fre', 'Ganomaly', 'Padim', 'Patchcore',
         'ReverseDistillation', 'Stfpm', 'Uflow', 'VlmAd', 'WinClip']

        >>> # Get models in title case format
        >>> models = list_models(case="title")
        >>> print(sorted(list(models)))  # doctest: +NORMALIZE_WHITESPACE
        ['Ai Vad', 'Cfa', 'Cflow', 'Csflow', 'Dfkde', 'Dfm', 'Draem',
         'Efficient Ad', 'Fastflow', 'Fre', 'Ganomaly', 'Padim', 'Patchcore',
         'Reverse Distillation', 'Stfpm', 'Uflow', 'Vlm Ad', 'Win Clip']

    Note:
        The returned model names can be used with :func:`get_model` to instantiate
        the corresponding model class.
    """
    if case not in {"snake", "pascal", "title"}:
        msg = f"Unsupported format: {case}. Must be one of: snake, pascal, title"
        raise ValueError(msg)

    models = {cls.__name__ for cls in AnomalibModule.__subclasses__() if cls.__name__ != "AnomalyModule"}

    if case == "snake":
        return {convert_to_snake_case(name) for name in models}

    if case == "title":
        return {convert_to_title_case(name) for name in models}

    return models
List available anomaly detection models.

    Returns a set of model names in the specified format that are available in the
    anomalib library. This includes both image and video anomaly detection models.

    Args:
        case (str): The format to return model names in. Options are:
            - "snake_case": Returns names in snake_case format (e.g. "efficient_ad")
            - "original": Returns the original PascalCase class names (e.g. "EfficientAd")
            Defaults to "snake_case".

    Returns:
        set[str]: Set of available model names in the specified format.

    Example:
        Get all available models in different formats:

        >>> from anomalib.models import list_models
        >>> # Get models in snake_case format
        >>> models = list_models(case="snake")
        >>> print(sorted(list(models)))  # doctest: +NORMALIZE_WHITESPACE
        ['ai_vad', 'cfa', 'cflow', 'csflow', 'dfkde', 'dfm', 'draem',
         'efficient_ad', 'fastflow', 'fre', 'ganomaly', 'padim', 'patchcore',
         'reverse_distillation', 'stfpm', 'uflow', 'vlm_ad', 'winclip']

        >>> # Get models in original PascalCase format
        >>> models = list_models(case="pascal")
        >>> print(sorted(list(models)))  # doctest: +NORMALIZE_WHITESPACE
        ['AiVad', 'Cfa', 'Cflow', 'Csflow', 'Dfkde', 'Dfm', 'Draem',
         'EfficientAd', 'Fastflow', 'Fre', 'Ganomaly', 'Padim', 'Patchcore',
         'ReverseDistillation', 'Stfpm', 'Uflow', 'VlmAd', 'WinClip']

        >>> # Get models in title case format
        >>> models = list_models(case="title")
        >>> print(sorted(list(models)))  # doctest: +NORMALIZE_WHITESPACE
        ['Ai Vad', 'Cfa', 'Cflow', 'Csflow', 'Dfkde', 'Dfm', 'Draem',
         'Efficient Ad', 'Fastflow', 'Fre', 'Ganomaly', 'Padim', 'Patchcore',
         'Reverse Distillation', 'Stfpm', 'Uflow', 'Vlm Ad', 'Win Clip']

    Note:
        The returned model names can be used with :func:`get_model` to instantiate
        the corresponding model class.
    
src/anomalib/models/__init__.py