From ca1ef05d56e6dff9bd6b5aad964db368ca0ae271 Mon Sep 17 00:00:00 2001 From: David Smadja <david.smadja@assemblee-nationale.fr> Date: Thu, 20 Mar 2025 14:59:09 +0100 Subject: [PATCH] update generate yaml script and readme --- README.md | 9 ++++++--- src/scripts/generate_openfisca_tests_yaml.ts | 15 ++++++++------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 8a26e674b..4734c0fe5 100644 --- a/README.md +++ b/README.md @@ -233,11 +233,12 @@ $: console.log(parameterSmicMensuel, smicValue) ### Générer les YAML de test OpenFisca à partir des cas-type LexImpact ```bash -npx tsx src/scripts/generate_openfisca_tests_yaml.ts -y 2025 ../../openfisca-france/tests/leximpact/ +npx tsx src/scripts/generate_openfisca_tests_yaml.ts -y 2025 --openfisca_venv /home/cafe/apps/openfisca-france/.venv ../../openfisca-france/tests/leximpact/ ``` -- Le paramètre `year` générera les variables d'output pour l'année `year` -- L'argument par défaut `outdir` est le chemin où l'on veut exporter les YAML générés. Ceux-ci ont vocation à être pushés dans openfisca_france/tests/leximpact +- Le paramètre `year` (-y) générera les variables d'output pour l'année `year` +- Le paramètre `openfisca_venv` (-e) doit correspondre au chemin d'un venv dans lequel openfisca-france est installé. Il doit être possible d'y exécuter `openfisca test`. +- L'argument par défaut `outdir` est le chemin où l'on veut exporter les YAML générés. Les YAML générés contiennent, pour chaque cas-type, toutes les variables d'entrées du cas-type dans le fichier `test_cases.json`. Les valeurs sont mensualisées pour toutes les variables mensuelles. @@ -245,3 +246,5 @@ Les valeurs sont mensualisées pour toutes les variables mensuelles. La section `output:` du YAML contient toutes les variables calculées, présentes à la fois dans les décompositions LexImpact **et** dans les variables du country-package Openfisca-France. Les valeurs des variables de type Enum, sont remplacées par leur index dans les valeurs possibles de l'Enum. + +Les valeurs générées en sortie sont celles que retourne l'API d'openFisca-France **corrigées par les valeurs que retournent `openfisca test`** dans le cas où elles diffèrent. diff --git a/src/scripts/generate_openfisca_tests_yaml.ts b/src/scripts/generate_openfisca_tests_yaml.ts index 4e7da3087..b0e6adedd 100644 --- a/src/scripts/generate_openfisca_tests_yaml.ts +++ b/src/scripts/generate_openfisca_tests_yaml.ts @@ -35,6 +35,12 @@ const optionsDefinitions = [ name: "year", type: Number, }, + { + alias: "e", + help: "Path to a venv with openfisca-france installed. You must be able to launch `openfisca test` within it.", + name: "openfisca_venv", + type: String, + }, { alias: "t", help: "Single Test-Case to run", @@ -495,13 +501,10 @@ async function runOpenFiscaTest( async function main() { console.info("Initializing...") - const personsEntityKey = Object.entries(entityByKey) - .filter(([, entity]) => entity.is_person) - .map(([key]) => key)[0] - const year = options.year const outdir = options.outdir const singleTestCase = options.testcase + const openFiscaVenvPath = options.openfisca_venv const variablesFromDecompositions = [ ...summaryCalculatedVariablesName, @@ -686,11 +689,9 @@ async function main() { await fs.writeFile(path.join(outdir, testCase.id + ".yml"), cleanedYaml) - const venvPath = "/home/cafe/apps/openfisca-france/.venv" - try { const openFiscaTestResult = await runOpenFiscaTest( - venvPath, + openFiscaVenvPath, path.join(outdir, testCase.id + ".yml"), ) if (!openFiscaTestResult.passed) { -- GitLab