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:
        ...