from __future__ import annotations

import sys
import types

# Provide lightweight stubs when optional runtime deps are unavailable in test env.
if "anthropic" not in sys.modules:

    class _DummyMessages:
        def create(self, **_kwargs):
            return types.SimpleNamespace(content=[types.SimpleNamespace(text='{"steps": []}')])

    class _DummyAnthropic:
        def __init__(self, api_key: str | None = None):
            self.api_key = api_key
            self.messages = _DummyMessages()

    sys.modules["anthropic"] = types.SimpleNamespace(Anthropic=_DummyAnthropic)

if "watchdog" not in sys.modules:
    watchdog = types.ModuleType("watchdog")
    observers = types.ModuleType("watchdog.observers")
    events = types.ModuleType("watchdog.events")

    class _Observer:
        def schedule(self, *_args, **_kwargs):
            return None

        def start(self):
            return None

        def stop(self):
            return None

    class _FileSystemEventHandler:
        pass

    observers.Observer = _Observer
    events.FileSystemEventHandler = _FileSystemEventHandler

    sys.modules["watchdog"] = watchdog
    sys.modules["watchdog.observers"] = observers
    sys.modules["watchdog.events"] = events

if "ffmpeg" not in sys.modules:
    ffmpeg = types.ModuleType("ffmpeg")

    class _DummyFFmpegNode:
        def output(self, *_args, **_kwargs):
            return self

        def run(self, *_args, **_kwargs):
            return (b"", b"")

    def _input(*_args, **_kwargs):
        return _DummyFFmpegNode()

    ffmpeg.input = _input
    sys.modules["ffmpeg"] = ffmpeg
