"""TabularExecutor — runs compiled pandas/polars chain on a Parquet file. Picks engine by file size: ≤ 100 MB → eager pandas 100 MB-1 GB → pyarrow with predicate pushdown > 1 GB → polars lazy scan Initial scope ships eager pandas only; the others are added when a real file is too big. """ from ...catalog.models import Catalog from ..compiler.pandas import PandasCompiler from ..ir.models import QueryIR from .base import BaseExecutor, QueryResult class TabularExecutor(BaseExecutor): def __init__(self, catalog: Catalog) -> None: self._catalog = catalog self._compiler = PandasCompiler(catalog) async def run(self, ir: QueryIR) -> QueryResult: raise NotImplementedError