UNPKG

@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
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 {};