CSV to Polars

Le module CSVToPolars convertit des fichiers CSV (locaux ou depuis une URL) en DataFrames Polars, en détectant automatiquement le séparateur.

Fonctionnalités

  • Chargement depuis une URL ou un fichier local, avec gestion des erreurs réseau.

  • Détection automatique du séparateur (csv.Sniffer), avec fallback sur le point-virgule.

  • Optimisations : troncature des lignes malformées et suppression des lignes vides.

Usage

La classe CSVToPolars est utilisée dans :

  • la fonction _update_horaires_lieux_depuis_gl du module database_processor, pour charger les CSV désignés par les variables CSV_URL_PISCINES, CSV_URL_MAIRIES et CSV_URL_MEDIATHEQUES.

  • la fonction setup_execution du module setup_processor, pour charger le csv désigné par la varialbe CSV_URL_HORAIRES

Modules

class src.smart_watch.utils.CSVToPolars.CSVToPolars(source: str, separator: str = 'auto', has_header: bool = True)[source]

Bases : object

__init__(source: str, separator: str = 'auto', has_header: bool = True)[source]

Initialise une instance de la classe pour charger et traiter un fichier CSV avec Polars.

Paramètres:
  • source (str, obligatoire) – Chemin vers le fichier CSV à charger.

  • separator (str, optionnel) – Séparateur utilisé dans le fichier CSV. Par défaut « auto » pour une détection automatique.

  • has_header (bool, optionnel) – Indique si le fichier CSV contient une ligne d’en-tête. True par défaut.

source

Chemin du fichier source CSV.

Type:

str

separator

Séparateur utilisé pour lire le CSV.

Type:

str

df

DataFrame Polars résultant du chargement du CSV.

Type:

pl.DataFrame | None

has_header

Indique la présence d’une ligne d’en-tête dans le CSV.

Type:

bool

_is_url(source: str) bool[source]

Vérifie si la source fournie est une URL.

Paramètres:

source (str) – La chaîne de caractères à vérifier.

Renvoie:

True si la source commence par “http://” ou “https://”, sinon False.

Type renvoyé:

bool

_detect_separator(sample: str) str[source]

Détecte le séparateur de colonnes dans un échantillon de texte CSV.

Utilise la classe csv.Sniffer pour analyser l’échantillon et déterminer le séparateur utilisé. Si la détection échoue, le séparateur par défaut “;” est utilisé.

Paramètres:

sample (str) – Un échantillon de texte représentant le contenu d’un fichier CSV.

Renvoie:

Le séparateur détecté ou “;” si la détection échoue.

Type renvoyé:

str

_download_to_temp_file(url: str) Path[source]

Télécharge un fichier CSV depuis une URL et le sauvegarde dans un fichier temporaire.

Cette méthode effectue une requête HTTP GET vers l’URL spécifiée, vérifie le succès de la réponse, puis écrit le contenu du fichier CSV dans un fichier temporaire sur le disque. Le chemin vers ce fichier temporaire est ensuite retourné.

Paramètres:

url (str) – L’URL du fichier CSV à télécharger.

Renvoie:

Le chemin vers le fichier temporaire contenant le CSV téléchargé.

Type renvoyé:

Path

Lève:

Exception – Si une erreur survient lors du téléchargement ou de la sauvegarde du fichier.

_process_local_file(file_path: Path, cleanup_temp: bool = False) DataFrame[source]

Traite un fichier CSV local et le convertit en DataFrame Polars. Est appelé par _load_from_url et _load_from_path.

Cette méthode détecte automatiquement le séparateur si nécessaire, lit le fichier CSV en utilisant Polars, et effectue si nécessaire un nettoyage du fichier temporaire après traitement.

Paramètres:
  • file_path (Path) – Chemin vers le fichier CSV à traiter.

  • cleanup_temp (bool, optionnel) – Indique si le fichier temporaire doit être supprimé après traitement. Défaut à False.

Renvoie:

DataFrame Polars contenant les données du fichier CSV.

Type renvoyé:

pl.DataFrame

Note

  • Le séparateur est détecté automatiquement si self.separator vaut « auto ».

  • Les lignes entièrement vides sont filtrées du DataFrame résultant.

_load_from_url() DataFrame[source]

Charge un fichier CSV depuis une URL et le convertit en DataFrame Polars.

Cette méthode télécharge le fichier CSV depuis l’URL spécifiée dans self.source, le sauvegarde dans un fichier temporaire, puis le traite pour le convertir en un DataFrame Polars. Le fichier temporaire est supprimé après le traitement.

Renvoie:

Le DataFrame Polars résultant du fichier CSV téléchargé.

Type renvoyé:

pl.DataFrame

_load_from_path() DataFrame[source]

Charge un fichier CSV local et le convertit en DataFrame Polars.

Cette méthode vérifie l’existence du fichier CSV à partir du chemin spécifié dans self.source. Si le fichier existe, il est traité et converti en DataFrame Polars via la méthode _process_local_file. Si le fichier n’est pas trouvé, une exception FileNotFoundError est levée.

Renvoie:

Le contenu du fichier CSV sous forme de DataFrame Polars.

Type renvoyé:

pl.DataFrame

Lève:

FileNotFoundError – Si le fichier CSV local n’est pas trouvé au chemin spécifié.

load_csv() DataFrame[source]

Charge un fichier CSV en tant que DataFrame Polars.

Cette méthode vérifie si la source du fichier CSV est une URL ou un chemin local, puis charge le fichier en conséquence. Elle lève une exception si aucune source n’est spécifiée. Un message d’information est enregistré après le chargement du fichier.

Renvoie:

Le DataFrame Polars contenant les données du fichier CSV.

Type renvoyé:

pl.DataFrame

Lève:

ValueError – Si aucune source de fichier CSV n’a été spécifiée.