lpoaura/weatherlink2pg

Factorisation du code

Closed this issue · 4 comments

La plupart des lignes de code des 3 scripts python sont communs et redondants. Il serait intéressant, maintenant que les fonctionnalités sont bien présentes, d'envisager de créer une appli en ligne de commande (weatherlink2db ?) avec 2 options:

  • weatherling2db --full > Téléchargement complet des données historiques
  • weatherlink2db --update > Mise à jour des données

@JohanRocheteau, tu peux utiliser click qui est une petite lib python qui permet facilement de créer des applis en ligne de commande.

J'ai gardé que le fichier global.
J'ai transformé ce fichier en fichier click (je n'ai pas supprimé l'autre encore).

@JohanRocheteau, je viens de créer une petite appli python avec click, si tu veux voir la structuration du projet:
https://github.com/lpoaura/faune-france-global-sensitivity-rules-parser

@lpofredc Merci j'ai modifié les dossiers en conséquence et j'ai divisé le script en deux avec click d'un coté et les définitions de l'autre comme toi.

Top, merci. J'ai apporté quelques modifications à la marge sur les scripts:

  • Séparation des options full et update en 2 fonctions distinctes

@cli.command("full")
@click.option(
"--since",
"-s",
help="Date la plus ancienne à laquelle remonter (format AAAA-MM-JJ)",
)
def full(since: Optional[str] = None):
"""Commande de récupération des donnes depuis le début de la sonde
avec une réinitialisation de la table."""
echo_success("Lancement du script de téléchargement complet des données")
first_day_station, if_exists_bdd = start_station(since)
end_api = today_ts()
df_news = one_day_data(first_day_station, end_api)
up_to_bdd(df_news, if_exists_bdd)
echo_success("Le script s'est exécuté avec succès.")
@cli.command("update")
def update():
"""Commande de mise à jour et d'ajout des données à la table."""
echo_success("Lancement du script de mise à jour des données")
last_ts, if_exists_bdd = last_ts_bdd()
end_api = today_ts()
df_news = one_day_data(last_ts, end_api)
up_to_bdd(df_news, if_exists_bdd)
echo_success("Le script s'est exécuté avec succès.")

  • Packagé les scripts pour les rendre installables via un simple pip install weatherlink2pg

packages = [{include = "weatherlink2pg", from = "src"}]

[tool.poetry.scripts]
weatherlink2pg = "weatherlink2pg.main:cli"

  • Ajout d'une option --since pour limiter les téléchargements complets (ça c'était surtout pour me faciliter les tests ;)
  • Ajout d'une doc à compléter

https://github.com/lpoaura/weatherlink2pg/tree/main/docs

  • Ajout d'actions automatiques GitHub pour:
    • Réaliser quelques tests de qualité de code à chaque nouvelles modifs
    • Générer automatiquement des nouvelles releases à la création de nouveaux "tags"
    • Publier automatiquement la nouvelle version de l'appli à chaque nouvelle release
    • Publier automatiquement la "doc officielle" à chaque nouvelle release

https://github.com/lpoaura/weatherlink2pg/tree/main/.github