"""Obliteratus — Master Ablation Suite for HuggingFace transformers."""

__version__ = "0.1.3"

# Lazy imports for the main pipeline classes
__all__ = [
    "AbliterationPipeline",
    "InformedAbliterationPipeline",
    "set_seed",
    "run_sweep",
    "SweepConfig",
    "SweepResult",
    "save_contribution",
    "load_contributions",
    "aggregate_results",
    "TourneyRunner",
    "TourneyResult",
    "get_adaptive_recommendation",
    "AdaptiveRecommendation",
    "RemoteRunner",
    "RemoteConfig",
    "Watchtower",
    "get_watchtower",
    "AutoObliterator",
    "RunArchive",
]


def __getattr__(name):
    if name == "AbliterationPipeline":
        from obliteratus.abliterate import AbliterationPipeline
        return AbliterationPipeline
    if name == "InformedAbliterationPipeline":
        from obliteratus.informed_pipeline import InformedAbliterationPipeline
        return InformedAbliterationPipeline
    if name == "set_seed":
        from obliteratus.reproducibility import set_seed
        return set_seed
    if name == "run_sweep":
        from obliteratus.sweep import run_sweep
        return run_sweep
    if name == "SweepConfig":
        from obliteratus.sweep import SweepConfig
        return SweepConfig
    if name == "SweepResult":
        from obliteratus.sweep import SweepResult
        return SweepResult
    if name == "save_contribution":
        from obliteratus.community import save_contribution
        return save_contribution
    if name == "load_contributions":
        from obliteratus.community import load_contributions
        return load_contributions
    if name == "aggregate_results":
        from obliteratus.community import aggregate_results
        return aggregate_results
    if name == "TourneyRunner":
        from obliteratus.tourney import TourneyRunner
        return TourneyRunner
    if name == "TourneyResult":
        from obliteratus.tourney import TourneyResult
        return TourneyResult
    if name == "get_adaptive_recommendation":
        from obliteratus.adaptive_defaults import get_adaptive_recommendation
        return get_adaptive_recommendation
    if name == "AdaptiveRecommendation":
        from obliteratus.adaptive_defaults import AdaptiveRecommendation
        return AdaptiveRecommendation
    if name == "RemoteRunner":
        from obliteratus.remote import RemoteRunner
        return RemoteRunner
    if name == "RemoteConfig":
        from obliteratus.remote import RemoteConfig
        return RemoteConfig
    if name == "Watchtower":
        from obliteratus.watchtower import Watchtower
        return Watchtower
    if name == "get_watchtower":
        from obliteratus.watchtower import get_watchtower
        return get_watchtower
    if name == "AutoObliterator":
        from obliteratus.auto_obliterate import AutoObliterator
        return AutoObliterator
    if name == "RunArchive":
        from obliteratus.run_archive import RunArchive
        return RunArchive
    raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
