-
Notifications
You must be signed in to change notification settings - Fork 101
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conserver les paramètres modifiés à l'import des barèmes IPP #778
Conversation
Je n'ai pas fait le merge avec les paramètres de l'IPP parce que ce n'est pas le sujet de l'issue, et que ça laisse l'occasion aux reviewers de constater à quoi ressemble le diff dans des conditions réelles. Un modification récente (12/06/2017) des XLSX de l'IPP a cassé le script de transformation. @benjello est au courant, cf la discussion sur le channel #of-france et https://framagit.org/french-tax-and-benefit-tables/ipp-tax-and-benefit-tables-xlsx/issues/93. J'ai ajouté la possibilité de choisir la version des XLSX à importer, et j'ai testé sur une version antérieure. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Impossible à tester de mon côté car j'ai l'erreur connue sous macOS.
```sh | ||
./openfisca_france/scripts/parameters/baremes_ipp/convert_ipp_xlsx_to_openfisca_xml.py --xml-dir openfisca_france/parameters | ||
``` | ||
Plus précisément, il réécrit les fichiers de paramètres d'OpenFisca-France en conservant leur structure, tout en remplaçant les valeurs par celles provenant de l'IPP. Le contributeur voit apparaître un *diff* dans *git*, et peut choisit manuellement d'ajouter ou non les lignes modifiées dans un *commit*. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
choisit → choisir
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok
@@ -29,7 +29,8 @@ | |||
|
|||
|
|||
app_name = os.path.splitext(os.path.basename(__file__))[0] | |||
default_zip_url = u'https://framagit.org/french-tax-and-benefit-tables/ipp-tax-and-benefit-tables-xlsx/repository/archive.zip?ref=master' # noqa | |||
ref = '2c6936d6' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Le fait de fixer la référence plutôt que d'utiliser master
signifie que ce script ne mettra pas à jour les données à la dernière version. Il faut a minima prendre cette référence en paramètre et le documenter, et probablement également la mettre comme valeur par défaut à master
(quitte à indiquer dans le README que la dernière version compatible connue est 2c6936d6
et que master
ne fonctionne actuellement pas).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok
J'ai créé #779 suite à mes tests. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pour que cet script soit vraiment utilisé, il faut à mon avis un script à copier-coller qui fait tout le boulot de A à Z. Pour le moment, on a encore deux étapes.
|
||
```sh | ||
pip install xlrd | ||
# Ou bien utilisez l'extra-require comme ceci : pip install --editable ".[baremes_ipp]" | ||
pip install .[baremes_ipp] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Attention, sans le -e
, on n'installe pas en editable. pip
va donc copier ces sources vers ses dossiers d'installation, sans garder de lien.
Or le script de merge est fait pour écrire dans le dossier où est installé OpenFisca France. Si on le fait tourner, les paramètres sont mis à jours dans les dossiers secrets de pip, et il n'y a donc pas de diff.
@@ -45,15 +44,13 @@ INFO:convert_ipp_xlsx_to_openfisca_xml:XML files written to '/tmp/baremes-ipp-v3 | |||
|
|||
> Ce processus de conversion de données a été internalisé dans OpenFisca-France à partir de celui de l'IPP disponible [ici](https://framagit.org/french-tax-and-benefit-tables/ipp-tax-and-benefit-tables-converters#in-the-ipp-world). | |||
|
|||
### Intégration avec OpenFisca | |||
> La dernière version du repository `ipp-tax-and-benefit-tables-xlsx` testée est `2c6936d6`. Utiliser l'argument `--ref-ipp` pour spécifier une référence à utiliser autre que `master`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, mais il faut s'attendre à ce que toute personne ingénue qui arrive sur ce README (dont moi il y a 30 minutes):
- copie colle la première ligne (
./openfisca_france/.../convert_ipp_xlsx_to_openfisca_xml.py
) - constate que ça ne fonctionne pas en recevant une erreur incompréhensible (
TypeError: unhashable type: 'OrderedDict'
) - Parte en râlant que de-toute-façon-ça-marche-pas
Je préfère qu'on est une ligne copie-collable, avec un commentaire à côté qui explique pourquoi on a une option supplémentaire.
|
||
Pour cela, utiliser l'option `--xml-dir` du script : | ||
Le script [`merge_ipp_xml_files_with_openfisca_parameters.py`](./merge_ipp_xml_files_with_openfisca_parameters.py) fusionne les fichiers XML produits depuis les fichiers XLSX de l'IPP avec les fichiers XML existants d'OpenFisca-France. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
En tant qu'utilisateur, je suis plus interressé par une commande copie-collable plus que par un lien vers la source du script.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Par ailleurs, il faudrait documenter les paramètres attendus de ce script (en l'occurence, le dossier temporaire qui contient les xml
).
87a5b22
to
8cbeb19
Compare
I unified the scripts, and documented a way to use the server for those of us who use macOS.
You will need access to the openfisca france server. If you don't have access yet, let me know, and we'll fix that 🙂 . |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Instructions globalement claires. Cela n'a pas généré d'erreur sur serveur et j'ai obtenu le même résultat en local, sous macOS. 😶
@@ -10,51 +10,88 @@ L'IPP produit des fichiers au format XLSX appelés « Barèmes IPP » : | |||
|
|||
Ces barèmes IPP sont très complets et il est intéressant pour OpenFisca de profiter de leur contenu. | |||
|
|||
## Conversion XLSX vers XML | |||
Les scripts décrits ici permettent d'importer les barèmes IPP (fournis sous forme de tableurs au format XLSX) dans [les fichiers de paramètres](https://doc.openfisca.fr/coding-the-legislation/legislation_parameters.html) XML d'OpenFisca France. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Distinguer le lien vers la doc et le lien vers les fichiers xml auxquels on pourrait s'attendre avec ce tag ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
|
||
```sh | ||
pip install xlrd | ||
# Ou bien utilisez l'extra-require comme ceci : pip install --editable ".[baremes_ipp]" | ||
pip install --editable .[baremes_ipp] | ||
``` | ||
|
||
Il faut également installer `gnumeric` : |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Indiquer une version de gnumeric ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👌
``` | ||
|
||
Le script génère un nouveau répertoire dans `/tmp` à chaque exécution, dont une partie du nom est aléatoire. Ce répertoire n'est pas effacé par le script. Par exemple : | ||
> L'argument `--ref-ipp` permet de spécifier une version spécifique des [fichiers `XLSX` publiés par l'IPP](https://framagit.org/french-tax-and-benefit-tables/ipp-tax-and-benefit-tables-xlsx/repository/archive.zip) à utiliser. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Préciser qu'il s'agit de version git ? En particulier parce qu'on désigne des fichiers Excel.
Et, dans cette phrase générique, mettre plutôt un lien vers le dépôt IPP ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👌
./openfisca_france/scripts/parameters/baremes_ipp/convert_ipp_xlsx_to_openfisca_xml.py --ref-ipp 2c6936d6 --merge | ||
git commit --all -m "Update baremes IPP" | ||
git push origin $BRANCH_NAME | ||
git checkout baremes-ipp-merge2 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
|
||
OpenFisca définit ses paramètres dans un format XML décrit [ici](https://doc.openfisca.fr/coding-the-legislation/legislation_parameters.html). | ||
## Imports des barèmes IPP dans OpenFisca | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ajouter une phrase d'introduction désignant le nom du script de conversion ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
En tant qu'utilisateur du scrit, je ne pense pas que le nom me soit très utile. Je veux juste pouvoir effectuer l'import.
Mais j'ai changé "Ce script" en "L'import nécessite" pour qu'on oublie encore plus le script 🙂
|
||
```sh | ||
pip install xlrd | ||
# Ou bien utilisez l'extra-require comme ceci : pip install --editable ".[baremes_ipp]" | ||
pip install --editable .[baremes_ipp] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Il faudrait mettre des guillements autour de
.[baremes_ipp]
Au cas où l'utilisateur ait un terminal type zsh qui donne un sens aux éléments entre crochets.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
``` | ||
|
||
Il faut également installer `gnumeric` : | ||
- sous Debian : `sudo apt install gnumeric` | ||
- sous macOS : `brew install gnumeric` | ||
|
||
#### Utilisation | ||
|
||
Se placer dans le répertoire racine d'OpenFisca-France, là où se trouve le fichier `setup.py` : |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je pense qu'ajouter "et executer : " ou donner une instruction peut clarifier la procédure.
> L'argument `--ref-ipp` permet de spécifier une version spécifique des [fichiers `XLSX` publiés par l'IPP](https://framagit.org/french-tax-and-benefit-tables/ipp-tax-and-benefit-tables-xlsx/repository/archive.zip) à utiliser. | ||
> La dernière version de ces fichiers compatible avec le script d'import est `2c6936d6`. Pour utiliser les fichiers les plus récents, retirer le paramètre `--ref-ipp`. | ||
|
||
Une fois le script exécuté, une branche `update-baremes-ipp-YYYY-MM-DD-HH-MM` (par exemple `update-baremes-ipp-2017-06-14-15-30` si le script est exécuté le 14 juin 2017 à 15h30) est publiée sur ce dépôt. Le contributeur peut alors éditer le code sur cette branche, et ouvrir une pull request. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je propose :
Une fois le script exécuté, une branche update-baremes-ipp-YYYY-MM-DD-HH-MM
est publiée sur ce dépôt.
Exemple :
update-baremes-ipp-2017-06-14-15-30
si le script est exécuté le 14 juin 2017 à 15h30
Le contributeur peut alors éditer le code sur cette branche, et ouvrir une pull request.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👌
|
||
```sh | ||
./openfisca_france/scripts/parameters/baremes_ipp/convert_ipp_xlsx_to_openfisca_xml.py --xml-dir openfisca_france/parameters | ||
./openfisca_france/scripts/parameters/baremes_ipp/merge_ipp_xml_files_with_openfisca_parameters.py /tmp/baremes-ipp-v3SAEz/xml # Par exemple. Remplacer par le dossier temporaire mentionné précedemment qui contient les XML. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je propose de mettre "par exemple" avant, pour qu'on comprenne le lien avec le paragraphe au dessus.
Serait-il possible de reformuler l'exemple, j'ai du mal à le comprendre :/
``` | ||
|
||
Plus précisément, il réécrit les fichiers de paramètres d'OpenFisca-France en conservant leur structure, tout en remplaçant les valeurs par celles provenant de l'IPP. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
|
||
Le script [`convert_ipp_xlsx_to_openfisca_xml.py`](./convert_ipp_xlsx_to_openfisca_xml.py) prend en charge la conversion de XLSX vers XML. | ||
|
||
Ce script génère un nouveau répertoire dans `/tmp` à chaque exécution, dont une partie du nom est aléatoire. Ce répertoire n'est pas effacé par le script. Par exemple : | ||
|
||
``` | ||
INFO:convert_ipp_xlsx_to_openfisca_xml:XML files written to '/tmp/baremes-ipp-v3SAEz/xml' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je propose de rendre l'objectif de l'exemple plus explicite :
- donner un exemple de nom aléatoire ?
- repérer dans le processus le nom généré pour facilement le retrouver.
Est-ce que je peux supprimer le ficher temporaire où faut-il que je le garde ?
Je n'aurai pas le temps de traiter une nouvelle revue, et d'autres personnes en ont fait.
|
||
```sh | ||
./openfisca_france/scripts/parameters/baremes_ipp/convert_ipp_xlsx_to_openfisca_xml.py | ||
ssh baremes-ipp@openfisca.fr -A |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
J'ai essayé de lancer la commande et je n'ai pas les accès --> Je propose d'indiquer aux lecteurs que cette partie n'est accessible qu'aux personnes ayant les accès
> L'argument `--ref-ipp` permet de spécifier une version spécifique des [fichiers `XLSX` publiés par l'IPP](https://framagit.org/french-tax-and-benefit-tables/ipp-tax-and-benefit-tables-xlsx/repository/archive.zip) à utiliser. | ||
> La dernière version de ces fichiers compatible avec le script d'import est `2c6936d6`. Pour utiliser les fichiers les plus récents, retirer le paramètre `--ref-ipp`. | ||
|
||
Une fois le script exécuté, une branche `update-baremes-ipp-YYYY-MM-DD-HH-MM` (par exemple `update-baremes-ipp-2017-06-14-15-30` si le script est exécuté le 14 juin 2017 à 15h30) est publiée sur ce dépôt. Le contributeur peut alors éditer le code sur cette branche, et ouvrir une pull request. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je propose :
Une fois le script exécuté, une branche update-baremes-ipp-YYYY-MM-DD-HH-MM
est publiée sur ce dépôt.
Exemple :
update-baremes-ipp-2017-06-14-15-30
si le script est exécuté le 14 juin 2017 à 15h30
Le contributeur peut alors éditer le code sur cette branche, et ouvrir une pull request.
|
||
Le script [`convert_ipp_xlsx_to_openfisca_xml.py`](./convert_ipp_xlsx_to_openfisca_xml.py) prend en charge la conversion de XLSX vers XML. | ||
|
||
Ce script génère un nouveau répertoire dans `/tmp` à chaque exécution, dont une partie du nom est aléatoire. Ce répertoire n'est pas effacé par le script. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"Ce répertoire n'est pas effacé par le script." --> Quel doit être l'action de l'utilisateur face à cette info ? Est-ce que c'est un bug ou une feature ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👌
|
||
Par exemple, si le dossier temporaire qui contient les `XML` produits par le script de conversion précédent est `/tmp/baremes-ipp-v3SAEz/xml`, exécuter : |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je propose :
Exemple : si le dossier temporaire qui contient les
XML
produits par le script de conversion précédent est/tmp/baremes-ipp-v3SAEz/xml
, exécuter :
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👌
def merge_attributes(openfisca_element, ipp_element): | ||
for key, value in ipp_element.attrib.iteritems(): | ||
if key in openfisca_element.attrib: | ||
if openfisca_element.attrib[key] != ipp_element.attrib[key]: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Est ce que ce ne serait pas intéressant de décrire la situation où on ne remplace pas:
(key in openfisca_element.attrib) and (openfisca_element.attrib[key] == ipp_element.attrib[key])
et de dire qu'on remplace pour toutes les autres ?
Deuxième question : Pourquoi itérer sur key/value, si on n'utilise pas value ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tu as sans doute raison, mais je ne préfère pas prendre le risque de modifier le script, qui a été validé par plusieurs personnes, vu les contraintes de temps qui sont les nôtres.
b9e0e2d
to
065b6b9
Compare
Simplify install
065b6b9
to
5c3fe2b
Compare
Connected to #752