Skip to content

Feat/validator pipeline

Vincent Viers requested to merge feat/validator_pipeline into main

Grosse PR 🐘

tentative de résolution de https://datahub.incubateur.tech/infrastructure/meta/-/issues/240


Afin de permettre à insitu d'executer plusieurs validateurs à la suite (par exemple, d'abord splitter une liste de départements puis déterminer leur code insee, ce qui était un besoin dans la première version des données de reporting de l'incubateur), voilà une proposition de refacto des validateurs (et donc, marginalement, de l'importeur).

J'ai créé une classe ValidatorsPipeline qui est toujours définie au niveau de la colonne et applique une suite de transformations ou de vérifications à chaque valeur de la colonne.

Ca m'a permit de simplifier pas mal de choses et de faire un peu de ménage dans l'import dont le comportement est maintenant complètement défini par l'objet ValidatorsPipeline.

En creusant le code, je me suis un peu replongé dans les histoires de nullable et de null_on_error, et même si je pense ne rien avoir cassé (c'est vraiment tellement confortable de dev avec des tests 💯) je crois que je ne comprends toujours pas complètement notre logique autour de ça (notamment est-ce que les empty strings "" sont des nulls ? les tests disent que oui mais ça n'est pas forcément intuitif pour moi). Bref, à discuter ensemble peut-être.

Preneur de retour sur cette PR avant de mettre plus d'énergie dedans de toute façon :)


TODO:

  • ajouter des tests end-to-end pour illustrer le nouveau comportement
  • vérifier l'ordre d'execution de la pipeline (ordereddict?) une pipeline prend une liste (qui est ordonnée)
  • clarifier le nullable vs. null_on_error
Edited by Vincent Viers

Merge request reports