213 lines
No EOL
6.7 KiB
Python
213 lines
No EOL
6.7 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
Démonstration des fonctions de licence Atmo France
|
||
=================================================
|
||
|
||
Ce script montre comment utiliser les fonctions utilitaires pour afficher
|
||
la mention légale requise par Atmo France selon leur licence d'utilisation
|
||
des données en open data sous licence ODbL.
|
||
|
||
Conformément aux exigences d'Atmo France:
|
||
"Chacun peut donc bénéficier gratuitement de ces données mises en open data
|
||
sous licence ODbL, en indiquant la source "Atmo France et les Associations
|
||
agréées de surveillance de la qualité de l'air" ou "Atmo France / AASQA"
|
||
dans sa version courte."
|
||
"""
|
||
|
||
import sys
|
||
import os
|
||
|
||
# Ajouter le répertoire parent au PYTHONPATH pour importer le package local
|
||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||
|
||
from atmo_data_wrapper import (
|
||
get_atmo_licence,
|
||
print_atmo_licence,
|
||
ATMO_LICENCE_COURTE,
|
||
ATMO_LICENCE_LONGUE,
|
||
ATMO_LICENCE_COMPLETE
|
||
)
|
||
|
||
|
||
def demo_licence_formats():
|
||
"""Démonstration des différents formats de licence"""
|
||
print("📋 FORMATS DE LICENCE ATMO FRANCE")
|
||
print("=" * 50)
|
||
print()
|
||
|
||
print("1️⃣ Version courte (recommandée pour citations):")
|
||
print(f" → {get_atmo_licence('courte')}")
|
||
print()
|
||
|
||
print("2️⃣ Version longue (nom officiel complet):")
|
||
print(f" → {get_atmo_licence('longue')}")
|
||
print()
|
||
|
||
print("3️⃣ Version complète (avec détails de licence):")
|
||
print(get_atmo_licence('complete'))
|
||
print()
|
||
|
||
|
||
def demo_usage_examples():
|
||
"""Exemples d'utilisation pratique"""
|
||
print("💡 EXEMPLES D'UTILISATION PRATIQUE")
|
||
print("=" * 50)
|
||
print()
|
||
|
||
print("1️⃣ Dans un script de données:")
|
||
print("```python")
|
||
print("from atmo_data_wrapper import get_atmo_licence")
|
||
print()
|
||
print("# Récupérer des données")
|
||
print("indices = client.get_indices_atmo()")
|
||
print()
|
||
print("# Afficher la source")
|
||
print('print(f"Source: {get_atmo_licence(\'courte\')}")')
|
||
print("```")
|
||
print()
|
||
print("Résultat:")
|
||
print(f"Source: {get_atmo_licence('courte')}")
|
||
print()
|
||
|
||
print("2️⃣ Dans un rapport ou documentation:")
|
||
print("```python")
|
||
print("print_atmo_licence('complete')")
|
||
print("```")
|
||
print()
|
||
print("Résultat:")
|
||
print_atmo_licence('complete')
|
||
print()
|
||
|
||
print("3️⃣ Accès direct aux constantes:")
|
||
print("```python")
|
||
print("from atmo_data_wrapper import ATMO_LICENCE_COURTE")
|
||
print("print(ATMO_LICENCE_COURTE)")
|
||
print("```")
|
||
print()
|
||
print("Résultat:")
|
||
print(ATMO_LICENCE_COURTE)
|
||
print()
|
||
|
||
|
||
def demo_integration_examples():
|
||
"""Exemples d'intégration dans différents contextes"""
|
||
print("🔧 EXEMPLES D'INTÉGRATION")
|
||
print("=" * 50)
|
||
print()
|
||
|
||
print("1️⃣ Dans un fichier CSV:")
|
||
print("# Commentaire en en-tête de fichier CSV")
|
||
print(f"# Source: {get_atmo_licence('longue')}")
|
||
print("# Licence: ODbL")
|
||
print("commune,indice_atmo,date")
|
||
print("Nancy,2,2024-01-15")
|
||
print("...")
|
||
print()
|
||
|
||
print("2️⃣ Dans un graphique matplotlib:")
|
||
print("```python")
|
||
print("import matplotlib.pyplot as plt")
|
||
print("from atmo_data_wrapper import get_atmo_licence")
|
||
print()
|
||
print("# Créer le graphique")
|
||
print("plt.plot(dates, indices)")
|
||
print("plt.title('Évolution de la qualité de l\\'air')")
|
||
print()
|
||
print("# Ajouter la source")
|
||
print("plt.figtext(0.02, 0.02, f'Source: {get_atmo_licence(\'courte\')}', fontsize=8)")
|
||
print("plt.show()")
|
||
print("```")
|
||
print()
|
||
|
||
print("3️⃣ Dans une API REST:")
|
||
print("```python")
|
||
print("from flask import Flask, jsonify")
|
||
print("from atmo_data_wrapper import get_atmo_licence")
|
||
print()
|
||
print("@app.route('/api/air-quality')")
|
||
print("def get_air_quality():")
|
||
print(" data = get_air_quality_data()")
|
||
print(" return jsonify({")
|
||
print(" 'data': data,")
|
||
print(" 'source': get_atmo_licence('courte'),")
|
||
print(" 'licence': 'ODbL'")
|
||
print(" })")
|
||
print("```")
|
||
print()
|
||
|
||
print("4️⃣ Dans un footer HTML:")
|
||
print("```html")
|
||
print("<footer>")
|
||
print(f" <p>Source des données: {get_atmo_licence('longue')}</p>")
|
||
print(" <p>Licence: <a href='https://opendatacommons.org/licenses/odbl/'>ODbL</a></p>")
|
||
print("</footer>")
|
||
print("```")
|
||
print()
|
||
|
||
|
||
def demo_licence_compliance():
|
||
"""Vérification de conformité avec les exigences"""
|
||
print("✅ CONFORMITÉ AVEC LES EXIGENCES ATMO FRANCE")
|
||
print("=" * 55)
|
||
print()
|
||
|
||
print("📋 Exigences officielles:")
|
||
print('• Indiquer la source "Atmo France et les Associations agréées"')
|
||
print('• Ou version courte "Atmo France / AASQA"')
|
||
print('• Respecter la licence ODbL')
|
||
print()
|
||
|
||
print("✅ Notre implémentation:")
|
||
print(f"• Version courte: '{get_atmo_licence('courte')}'")
|
||
print(f"• Version longue: '{get_atmo_licence('longue')}'")
|
||
print("• Mention de la licence ODbL incluse")
|
||
print("• URLs officielles fournies")
|
||
print()
|
||
|
||
print("🎯 Recommandations d'usage:")
|
||
print("• Utiliser la version courte pour les citations courtes")
|
||
print("• Utiliser la version longue pour les documents officiels")
|
||
print("• Utiliser la version complète pour les mentions légales détaillées")
|
||
print("• Toujours mentionner la licence ODbL")
|
||
print()
|
||
|
||
|
||
def main():
|
||
"""Fonction principale"""
|
||
print("DÉMONSTRATION DES FONCTIONS DE LICENCE ATMO FRANCE")
|
||
print("=" * 60)
|
||
print("Conformité avec les exigences de licence ODbL d'Atmo France")
|
||
print()
|
||
|
||
try:
|
||
demo_licence_formats()
|
||
demo_usage_examples()
|
||
demo_integration_examples()
|
||
demo_licence_compliance()
|
||
|
||
print("=" * 60)
|
||
print("✅ DÉMONSTRATION TERMINÉE AVEC SUCCÈS")
|
||
print()
|
||
print("🔑 Fonctions disponibles:")
|
||
print(" • get_atmo_licence(format): Retourne la licence selon le format")
|
||
print(" • print_atmo_licence(format): Affiche la licence")
|
||
print()
|
||
print("📋 Formats supportés:")
|
||
print(" • 'courte': Version abrégée")
|
||
print(" • 'longue': Version officielle complète")
|
||
print(" • 'complete': Avec détails de licence")
|
||
print()
|
||
print("📁 Constantes disponibles:")
|
||
print(" • ATMO_LICENCE_COURTE")
|
||
print(" • ATMO_LICENCE_LONGUE")
|
||
print(" • ATMO_LICENCE_COMPLETE")
|
||
|
||
except Exception as e:
|
||
print(f"❌ Erreur lors de l'exécution: {e}")
|
||
import traceback
|
||
print("\nDétails de l'erreur:")
|
||
print(traceback.format_exc())
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main() |