@openfisca/json-model
Version:
Library to handle informations extracted in JSON or YAML format from OpenFisca parameters, variables, etc
82 lines (81 loc) • 4.21 kB
TypeScript
import type { DecompositionReference } from "../decompositions";
import type { EntityByKey } from "../entities";
import { type PythonAstAssign, type PythonAstNode, type PythonAstAttribute, type PythonAstAugAssign, type PythonAstCall, type PythonAstDelete, type PythonAstFor, type PythonAstFunctionDef, type PythonAstGeneratorExp, type PythonAstListComp, type PythonAstName, type PythonAstReturn, type PythonAstSetComp, type PythonAstSubscript } from "./nodes";
import { AstVisitor } from "./visitors";
type VariableDescription = VariableDescriptionBoolean | VariableDescriptionDecomposition | VariableDescriptionOpenFiscaParameter | VariableDescriptionOpenFiscaVariable | VariableDescriptionOpenFiscaVariableList | VariableDescriptionString | VariableDescriptionStringListOrTuple;
interface VariableDescriptionBase {
type: VariableType;
}
interface VariableDescriptionBoolean extends VariableDescriptionBase {
type: VariableType.Boolean;
}
interface VariableDescriptionDecomposition extends VariableDescriptionBase {
decomposition: DecompositionReference[];
type: VariableType.Decomposition;
}
interface VariableDescriptionOpenFiscaParameter extends VariableDescriptionBase {
name: string;
type: VariableType.OpenFiscaParameter;
}
interface VariableDescriptionOpenFiscaVariable extends VariableDescriptionBase {
name: string;
type: VariableType.OpenFiscaVariable;
}
interface VariableDescriptionOpenFiscaVariableList extends VariableDescriptionBase {
names: string[];
type: VariableType.OpenFiscaVariableList;
}
interface VariableDescriptionString extends VariableDescriptionBase {
value: string;
type: VariableType.String;
}
interface VariableDescriptionStringListOrTuple extends VariableDescriptionBase {
items: string[];
type: VariableType.StringListOrTuple;
}
declare enum VariableType {
Boolean = "Boolean",
Decomposition = "Decomposition",
OpenFiscaParameter = "OpenFiscaParameter",
OpenFiscaVariable = "OpenFiscaVariable",
OpenFiscaVariableList = "OpenFiscaVariableList",
String = "String",
StringListOrTuple = "StringListOrTuple"
}
declare class FormulaExtractor extends AstVisitor<PythonAstNode> {
readonly entityByKey: EntityByKey;
readonly leafParametersName: Set<string>;
decomposition: DecompositionReference[] | undefined;
openFiscaParametersName: Set<string>;
openFiscaVariablesName: Set<string>;
singlePersonRolesAndSubroles: Set<string>;
variableDescriptionById: {
[id: string]: VariableDescription | null;
};
constructor(entityByKey: EntityByKey, leafParametersName: Set<string>);
extractDecomposition(node: PythonAstNode): DecompositionReference[] | null;
extractOpenFiscaParameterName(node: PythonAstNode): string | null;
extractOpenFiscaParameterNameFromAttribute(node: PythonAstAttribute): string | null;
extractOpenFiscaParameterNameFromCall(node: PythonAstCall): string | null;
extractOpenFiscaParameterNameFromSubscript(node: PythonAstSubscript): string | null;
extractOpenFiscaVariablesName(node: PythonAstNode): string[] | null;
extractOpenFiscaVariablesNameFromCall(node: PythonAstCall): string[] | null;
extractString(node: PythonAstNode): string | null;
extractStringList(node: PythonAstNode): string[] | null;
isBoolean(node: PythonAstNode): boolean;
visit_Assign(node: PythonAstAssign): void;
visit_Attribute(node: PythonAstAttribute): void;
visit_AugAssign(node: PythonAstAugAssign): void;
visit_Call(node: PythonAstCall): void;
visit_Delete(node: PythonAstDelete): void;
visit_For(node: PythonAstFor): void;
visit_GeneratorExp(node: PythonAstGeneratorExp): void;
visit_ListComp(node: PythonAstListComp): void;
visit_Name(node: PythonAstName): void;
visit_Return(node: PythonAstReturn): void;
visit_SetComp(node: PythonAstSetComp): void;
visit_Subscript(node: PythonAstSubscript): void;
visitSequenceGenerator(node: PythonAstGeneratorExp | PythonAstListComp | PythonAstSetComp): void;
}
export declare function extractFromFormulaAst(formula: PythonAstFunctionDef, entityByKey: EntityByKey, leafParametersName: Set<string>): FormulaExtractor;
export {};