helpers/watchdog.py.dox.md
watchdog.py helper module.watchdog.py because this directory is intentionally flat.watchdog.py owns the runtime implementation.watchdog.py.dox.md owns durable notes about responsibilities, contracts, side effects, and verification for that implementation._DispatchHandler (no explicit base class)
dispatch(self, event: Any)_Watch (no explicit base class)_PendingBatch (no explicit base class)_WatchRegistry (no explicit base class)
add(self, id: str, roots: list[str], patterns: list[str] | None, ignore_patterns: list[str] | None, events: WatchEvents, debounce: float, handler: WatchHandler) -> Noneremove(self, id: str) -> boolclear(self) -> Nonestart(self) -> Nonestop(self) -> Nonedispatch(self, scheduled_root: str, event: Any) -> None_normalize_root(root: str) -> str_normalize_roots(roots: list[str]) -> list[str]_normalize_patterns(patterns: list[str] | None, default: list[str] | None=...) -> list[str]_normalize_events(events: WatchEvents) -> frozenset[WatchEvent]_map_event_type(event_type: str) -> WatchEvent | None_normalize_debounce(debounce: float) -> float_covering_roots(roots: Iterable[str]) -> set[str]_is_same_or_nested(path: str, root: str) -> bool_is_under_watch(path: str, watch: _Watch) -> bool_compile_matcher(root: str, patterns: list[str], ignore_patterns: list[str]) -> PatternMatcher_compile_single_matcher(root: str, patterns: list[str]) -> PatternMatcheradd_watchdog(id: str, roots: list[str], patterns: list[str] | None=..., ignore_patterns: list[str] | None=..., events: WatchEvents=..., debounce: float=..., handler: WatchHandler | None=...) -> Noneremove_watchdog(id: str) -> boolclear_watchdogs() -> Nonestart_watchdog_daemon() -> Nonestop_watchdog_daemon() -> None_DEFAULT_PATTERNS, _DEFAULT_IGNORE_PATTERNS, _VALID_EVENTS, _EVENT_ALIASES.__future__, dataclasses, os, pathlib, threading, typing, watchdog.observers.frozenset, dataclass, _WatchRegistry, _registry.start, os.path.abspath, _compile_single_matcher, _registry.add, _registry.remove, _registry.clear, _registry.stop, self.registry.dispatch, threading.RLock, self._ensure_watchdog_available, _normalize_roots, _normalize_patterns, _normalize_events, _normalize_debounce, self._stop_observer, _map_event_type, _covering_roots.tests/test_model_config_api_keys.pytests/test_model_config_project_presets.pytests/test_time_travel.pyNo child DOX files.