File size: 509 Bytes
6bff5d9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | """BaseIntrospector — contract for source-specific schema readers.
Subclasses produce a Source object with raw schema (names, types, sample
values, stats). The planner consumes this directly — descriptions are not
LLM-generated.
"""
from abc import ABC, abstractmethod
from ..models import Source
class BaseIntrospector(ABC):
"""Abstract base. Subclasses: DatabaseIntrospector, TabularIntrospector."""
@abstractmethod
async def introspect(self, location_ref: str) -> Source:
...
|