""" Abstract base class for proxy file extractors. """ from abc import ABC, abstractmethod from pathlib import Path from markitect.proxy.models import ExtractionResult class BaseExtractor(ABC): """Base class that all proxy extractors must implement.""" name: str = "" version: str = "1.0" extensions: tuple = () @abstractmethod def extract(self, source_path: Path) -> ExtractionResult: """Extract markdown content from a source file. Args: source_path: Path to the source file. Returns: ExtractionResult with the extracted markdown content. """ @abstractmethod def check_dependencies(self) -> bool: """Check whether all required dependencies are available. Returns: True if all dependencies are installed, False otherwise. """ def dependency_hint(self) -> str: """Human-readable install instructions for missing dependencies. Returns: A string like ``pip install markitect[proxy-pdf]``. """ return ""