.. _changelog:
Changelog
=========
Toutes les modifications notables sont documentées ici.
Le format suit `Keep a Changelog `_
et le versionnage suit `PEP 440 `_ /
`Semantic Versioning `_.
.. note::
Les versions ``0.x.yb0`` sont des versions bêta : l'API publique peut
évoluer entre versions mineures. La version **1.0.0** marquera la
stabilisation de l'API.
Unreleased
----------
*(rien pour l'instant)*
0.2b0 (2026-06-28)
-------------------
**Corrections**
* Correction du backend setuptools : remplacement de
``setuptools.backends.legacy:build`` (non disponible dans les environnements
avec setuptools < 69) par ``setuptools.build_meta`` (stable depuis
setuptools 40).
* Correction des erreurs mypy :
* Ajout de ``[[tool.mypy.overrides]]`` pour ``cfgrib`` et
``ecmwf-opendata`` (packages sans stubs).
* ``DownloadResult.to_netcdf()`` : ``**kwargs: Any`` (ANN401 ignoré),
passage de ``str(out)`` pour sélectionner la bonne surcharge xarray.
* ``_cli.py`` : ``cast(Source, args.source)`` remplace le
``type: ignore[arg-type]``.
* Correction des caractères EN DASH (U+2013) détectés par ruff RUF001 :
remplacés par des traits d'union ASCII.
* Correction des fixtures de test : utilisation de ``np.datetime64`` pour
les coordonnées temporelles (``datetime`` timezone-aware non sérialisable
par le backend NetCDF4 xarray).
* Correction de ``test_cli.py`` : variable ``MockCls`` renommée ``mock_cls``
(règle ruff N806).
**CI/CD**
* Ajout de ``release: types: [published]`` et ``workflow_dispatch`` dans
``publish.yml`` pour que la création d'une release via l'IHM GitHub
déclenche bien la publication sur PyPI.
* Ajout de ``[tool.ruff.lint.per-file-ignores]`` pour exempter les tests
des règles ANN.
0.1b0 (2026-06-28)
-------------------
**Ajouts**
* Première version bêta publique.
* ``IFSSurfaceDownloader`` : téléchargement des champs de surface IFS
(``2t``, ``2d``, ``10u``, ``10v``) via ``ecmwf-opendata`` (HTTP
Byte-Range), échéances 0 à 72 h par pas de 6 h.
* ``DownloadResult`` : dataclass encapsulant GRIB2, ``xr.Dataset`` et
métadonnées du run. Méthode ``to_netcdf()`` pour l'export NetCDF.
* Gestion du problème de groupes GRIB multiples (hauteurs 2 m et 10 m)
via ``cfgrib.open_datasets()`` et fusion ``xr.merge()``.
* Point d'entrée CLI ``meteopendata2netcdf`` avec options ``--source``,
``--time``, ``--netcdf``, ``--no-dataset``, ``--log-level``.
* Suite de tests complète (46 tests, couverture > 80 %), zéro dépendance
réseau (mocking complet de ``ecmwf-opendata`` et ``cfgrib``).
* CI multi-OS (Linux, Windows, macOS) × Python (3.12, 3.13) via GitHub
Actions.
* Publication PyPI via Trusted Publishing OIDC (sans token API stocké).
* Documentation Sphinx hébergée sur Read the Docs.