Skip to content
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

Couche fondation pour la consolidation IRVE statique (DataFrame) #4288

Merged
merged 25 commits into from
Dec 10, 2024

Conversation

thbar
Copy link
Contributor

@thbar thbar commented Nov 4, 2024

Dans cette PR, j'introduis un bloc important que j'utilise depuis quelques mois pour itérer sur les IRVE.

Explorer s'appuie sur Polars, une librairie open-source de manipulation données écrite en Rust, pour fournir une structure de type DataFrame.

Elle est bien maintenue, et compte de nombreux contributeurs actuellement, dont José Valim.

Cela me permet de manipuler des données tabulaires à un niveau d'abstraction plus haut, avec du typing, et avec une occupation mémoire qui est réduite par rapport à des listes de maps/structs en Elixir (chose qu'on pourra vérifier avec estimated_size) , sans pour autant avoir à mettre les données systématiquement en base.

Dans cette PR, j'ajoute:

  • le schéma IRVE statique dans sa dernière version (pour pouvoir directement extraire les définitions de champs et les types associés)
  • un module de façade Transport.IRVE.DataFrame qui sait "remapper" les types de données depuis le schéma IRVE statique vers un champ compatible avec Explorer (voir documentation), et charger un body CSV sous forme de binary
  • une "factory" IRVE pour nos tests, avec une row typique
  • des tests associés pour vérifier qu'un round-trip data -> CSV -> DataFrame -> data fonctionne comme on l'attend
  • un peu de comportement edge-cases dans les DocTests également

Les types rencontrés sont: string / entiers / dates / booléens principalement.

Ne sont pas inclus (volontairement) dans cette PR, entre autres:

  • La désérialisation (à ce stade) du champ composite lat/lon, point que je traiterai plus tard
  • La lecture depuis un fichier sur le disque (qui sera également utile plus tard)
  • Un meilleur traitement des integers (un type u16 donnera lieu à des overflows non vérifiés)

J'ai vérifié sur prochainement que la compilation du NIF en Rust se passe bien, j'ai pu lancer le script d'exemple qui est dans la PR.

TODOs

  • Vérifier que l'utilisation Rust/NIF de Explorer ne pose pas de problème en production (test sur prochainement)
  • Regrouper le fichier "schema statique" (ajouté par cette PR) et le fichier "schéma dynamique" (déjà présent via la partie concentrateur IRVE dynamique) au même endroit et homogénéiser le code (sera fait dans une autre PR pour réduire le bruit)
  • Finaliser le test d'intégration DataFrame (qui ne passe pas)
  • Couvrir les différents cas de champs en tests unitaires
  • Couvrir le fonctionnement sur les champs non spécifiés via test unitaire
  • Documenter le code
  • Documenter la PR ici
  • Déployer sur prochainement et aller tester en SSH pour vérifier que le NIF "passe bien"

@thbar thbar added the IRVE Sujets liés aux données d'infrastructures de recharge pour véhicule électrique label Nov 4, 2024
@thbar thbar changed the title [WIP] Couche fondation pour la consolidation IRVE statique (DataFrame) Couche fondation pour la consolidation IRVE statique (DataFrame) Dec 5, 2024
@@ -0,0 +1,495 @@
{
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Le schéma est stocké ici car il est utilisé en introspection pour nourrir la configuration du DataFrame plus bas.

Je ne stocke que la v2.3.0 pour le moment. Le schéma est stable actuellement.

@thbar thbar marked this pull request as ready for review December 5, 2024 18:44
@thbar thbar requested a review from a team as a code owner December 5, 2024 18:44
@thbar
Copy link
Contributor Author

thbar commented Dec 5, 2024

La build ne passe pas, du fait de #4357, mais le reste fonctionne.

@ptitfred ptitfred self-assigned this Dec 9, 2024
@thbar thbar added this pull request to the merge queue Dec 10, 2024
Merged via the queue into master with commit 9ea927e Dec 10, 2024
4 checks passed
@thbar thbar deleted the irve-dataframe branch December 10, 2024 16:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
IRVE Sujets liés aux données d'infrastructures de recharge pour véhicule électrique
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants