/** * SMI-4293: Python query-based extraction * * Uses tree-sitter queries to extract imports, exports, and functions from * a parsed Python AST, producing the same ParseResult shape as the regex * fallback. Regression guard (finding H3): the query extractor must produce * a superset-or-equal result set compared to the regex baseline on every * fixture. Tests enforce that invariant. * * @see docs/internal/implementation/github-wave-5c-tree-sitter-incremental.md * @module analysis/tree-sitter/pythonExtractor */ import type { ParseResult } from '../types.js'; import type { TreeSitterLanguage, TreeSitterNode, TreeSitterTree } from './manager.js'; /** Minimal subset of the web-tree-sitter Query API we rely on. */ export interface TreeSitterQuery { captures(node: TreeSitterNode): Array<{ name: string; node: TreeSitterNode; }>; } /** Constructor signature for the Query class (imported from web-tree-sitter). */ export type QueryCtor = new (lang: TreeSitterLanguage, src: string) => TreeSitterQuery; /** * Lazily compile and cache all Python queries for a given Language module. * Queries are expensive to construct (parse the DSL); compiled once per * Language and reused across parses. */ export declare class PythonQuerySet { readonly imports: TreeSitterQuery; readonly fromImports: TreeSitterQuery; readonly functions: TreeSitterQuery; readonly classes: TreeSitterQuery; readonly allExports: TreeSitterQuery; constructor(Query: QueryCtor, lang: TreeSitterLanguage); } /** * Extract a ParseResult from a Python parse tree using tree-sitter queries. * * This replaces the regex fallback in the query-based code path. It MUST * produce results that are a superset or equal set of the regex extraction * for every fixture (finding H3). */ export declare function extractPythonParseResult(tree: TreeSitterTree, queries: PythonQuerySet, filePath: string): ParseResult; //# sourceMappingURL=pythonExtractor.d.ts.map