From acb2c603c020a59f684e4b801fbdba39ce4b83f8 Mon Sep 17 00:00:00 2001 From: rchevrier Date: Tue, 12 May 2026 12:42:49 +0000 Subject: [PATCH 1/5] Add release note --- docs/changelog.rst | 51 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index f94dc6e..ad6fbcb 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,7 +1,56 @@ Release notes ============= -1.0.0 (2025-02-04) +2.0.0 (2026-05-XX) +------------------ + +Important +......... + +The project has been moved to the `CNES `_ +Github repository. + +A new method ``filter_values`` is available for all ``NetcdfFilesDatabase`` +implementations. This method helps extracting the possible values of a query's +filter. It is fast when scanning the folders (layouts must be enabled), but +slower when scanning the files is necessary (a ``PerformanceWarning`` is issued +in that case). + +The following dependencies have new constraints: + - Pandas: ``>=3`` + - Pyinterp: ``>=2026.4.0`` + +Breaking Changes +................ + +The ``IPredicate`` interface has been refactored into the more explicit +``IFilterBuilder`` interface. This interface handles both complex predicates and +filters' converter through the ``build_filter`` and ``build_predicate`` methods. + +Previously, if a file did not match the file name convention, it was ignored. It +now raises a ``LayoutMismatchError``. + +``PeriodMixin`` now expects to work on a single homogeneous subset of data. In +case the filters given to the methods are not sufficient to extract an +homogeneous dataset, an error will be raised. + +Details +....... + +- chore: migration to pyinterp 2026.4.0 `PR#8 `_ +- Half orbit mixin `PR#7 `_ +- perf: subset unmixing prior to listing `PR#6 `_ +- feat!: Add phase filter argument `PR#5 `_ +- feat!: filter values from Layout folders `PR#4 `_ +- refactor: adapt code to work with pandas `PR#1 `_ + +Contributors +............ + +- Robin Chevrier +- Anne-Sophie Tonneau + +1.0.0 (2026-02-04) ------------------ A bit of refactoring has been done in this version to improve the maintainability From 9c8e34e7590df0ab70b873067f86b563c7be7c27 Mon Sep 17 00:00:00 2001 From: rchevrier Date: Wed, 13 May 2026 11:17:59 +0000 Subject: [PATCH 2/5] update release note --- docs/changelog.rst | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index ad6fbcb..773a80f 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -16,16 +16,47 @@ filter. It is fast when scanning the folders (layouts must be enabled), but slower when scanning the files is necessary (a ``PerformanceWarning`` is issued in that case). +.. code:: python + + >> from fcollections.implementations import NetcdfFilesDatabaseGriddedSLA + >> fc = NetcdfFilesDatabaseGriddedSLA(...) + >> fc.filter_values('version') + {'0_3', '1_0', '2_0_1', '3_0'} + The following dependencies have new constraints: - Pandas: ``>=3`` - Pyinterp: ``>=2026.4.0`` +Folder-specific filters can now be given to filter a query. This new behavior +breaks the assumption that all layouts share the same filters, which has the +following consequences: + +- Setting a folder-specific filter that is present in one layout, with an + underconstrained query will raise a ``LayoutMismatchError``. Adding more + filters to constrain the scan to the part of the file system matching the + layout will fix the query. + + .. code:: python + + from fcollections.implementations import NetcdfFilesDatabaseSwotLRL3 + fc = NetcdfFilesDatabaseSwotLRL3(...) + + # Will raise an error, the scan will explore v1 and v2 which have no concept + # of 'temporality' + fc.query(temporality='REPROC') + + # Add constraint to fix the query + fc.query(temporality='REPROC', version='3.0') + +- Folder-specific filters with the layouts disabled will be ignored, and a + ``UserWarning`` will be emitted + Breaking Changes ................ The ``IPredicate`` interface has been refactored into the more explicit ``IFilterBuilder`` interface. This interface handles both complex predicates and -filters' converter through the ``build_filter`` and ``build_predicate`` methods. +filters' converter through the ``build_predicate`` and ``build_filter`` methods. Previously, if a file did not match the file name convention, it was ignored. It now raises a ``LayoutMismatchError``. @@ -37,6 +68,7 @@ homogeneous dataset, an error will be raised. Details ....... +- feat: allow folder-specific filters `PR#9 `_ - chore: migration to pyinterp 2026.4.0 `PR#8 `_ - Half orbit mixin `PR#7 `_ - perf: subset unmixing prior to listing `PR#6 `_ From 2ebcdaee34f4af4bec5c78767467de635851f095 Mon Sep 17 00:00:00 2001 From: rchevrier Date: Fri, 19 Jun 2026 11:07:49 +0000 Subject: [PATCH 3/5] update changelog --- docs/changelog.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 773a80f..f7fa16b 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,7 +1,7 @@ Release notes ============= -2.0.0 (2026-05-XX) +2.0.0 (2026-06-19) ------------------ Important @@ -68,6 +68,7 @@ homogeneous dataset, an error will be raised. Details ....... +- fix: filter_values for version field of L2_LR_SSH `PR#10 `_ - feat: allow folder-specific filters `PR#9 `_ - chore: migration to pyinterp 2026.4.0 `PR#8 `_ - Half orbit mixin `PR#7 `_ From 30aeadeb9702dbfc86061a242a2832de208b5d8a Mon Sep 17 00:00:00 2001 From: rchevrier Date: Fri, 19 Jun 2026 11:32:02 +0000 Subject: [PATCH 4/5] Upgrade to cache v5 action --- .github/workflows/doc.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/doc.yaml b/.github/workflows/doc.yaml index 6787498..b0c44cd 100644 --- a/.github/workflows/doc.yaml +++ b/.github/workflows/doc.yaml @@ -71,7 +71,7 @@ jobs: echo "machine tds-odatis.aviso.altimetry.fr login ${{ secrets.AVISO_USER }} password ${{ secrets.AVISO_PASSWORD }}" > ~/.netrc # Cached retrieval of L2_LR_SSH data - name: Restore cached sample data for L2_LR_SSH - uses: actions/cache@v4 + uses: actions/cache@v5 id: restore_samples_l2_lr_ssh with: path: docs/implementations/data_l2_lr_ssh @@ -83,14 +83,14 @@ jobs: set -e python docs/implementations/scripts/pull_data_l2_lr_ssh.py - name: Cache L2_LR_SSH data - uses: actions/cache/save@v4 + uses: actions/cache/save@v5 if: steps.restore_samples_l2_lr_ssh.outputs['cache-hit'] != 'true' with: path: docs/implementations/data_l2_lr_ssh key: samples-${{ hashFiles('docs/implementations/scripts/pull_data_l2_lr_ssh.py') }} # Cached retrieval of L3_LR_SSH data - name: Restore cached sample data for L3_LR_SSH - uses: actions/cache@v4 + uses: actions/cache@v5 id: restore_samples_l3_lr_ssh with: path: docs/implementations/data_l3_lr_ssh @@ -102,7 +102,7 @@ jobs: set -e python docs/implementations/scripts/pull_data_l3_lr_ssh.py - name: Cache L3_LR_SSH data - uses: actions/cache/save@v4 + uses: actions/cache/save@v5 if: steps.restore_samples_l3_lr_ssh.outputs['cache-hit'] != 'true' with: path: docs/implementations/data_l3_lr_ssh From 84c1e073ca3d92a640f5b29277f97bc18411f077 Mon Sep 17 00:00:00 2001 From: rchevrier Date: Fri, 19 Jun 2026 13:44:18 +0000 Subject: [PATCH 5/5] update changelog --- docs/changelog.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index f7fa16b..ca3c04a 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -68,6 +68,7 @@ homogeneous dataset, an error will be raised. Details ....... +- perf: switch to HTTP request for GSHHG SAD `PR#12 `_ - fix: filter_values for version field of L2_LR_SSH `PR#10 `_ - feat: allow folder-specific filters `PR#9 `_ - chore: migration to pyinterp 2026.4.0 `PR#8 `_