feat(esm_catalog): PR-B3 — experiment hierarchy routes + paleo presets#1492
Open
siligam wants to merge 1 commit into
Open
feat(esm_catalog): PR-B3 — experiment hierarchy routes + paleo presets#1492siligam wants to merge 1 commit into
siligam wants to merge 1 commit into
Conversation
siligam
force-pushed
the
esm-catalog/pr-b2-queryables
branch
from
June 17, 2026 12:13
e061a3b to
4a672c8
Compare
siligam
force-pushed
the
esm-catalog/pr-b3-science-routes
branch
from
June 17, 2026 12:13
ef49a03 to
95043cd
Compare
siligam
force-pushed
the
esm-catalog/pr-b2-queryables
branch
from
June 17, 2026 15:59
4a672c8 to
57699a2
Compare
siligam
force-pushed
the
esm-catalog/pr-b3-science-routes
branch
from
June 17, 2026 16:00
95043cd to
67fee03
Compare
siligam
force-pushed
the
esm-catalog/pr-b2-queryables
branch
from
June 17, 2026 16:34
57699a2 to
ad0c766
Compare
siligam
force-pushed
the
esm-catalog/pr-b3-science-routes
branch
from
June 17, 2026 16:34
67fee03 to
76f4e7a
Compare
Adds science-domain API routes:
- api/experiment_routes.py: GET /experiments (list with CQL2 filter),
GET /experiments/{id} (STAC Catalog), GET /collections/{id}/experiment (shortcut)
- api/paleo_presets.py: in-memory DuckDB table of paleo time periods;
adapted to drop paleodatetime dep (not in project requirements); DuckDB
rowcount=-1 workaround (check existence before DELETE)
- api/app.py: wires experiment routers + GET/POST/DELETE /paleo-presets endpoints
- 12 new tests (113 total); no new dependencies
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
siligam
force-pushed
the
esm-catalog/pr-b2-queryables
branch
from
June 17, 2026 17:03
ad0c766 to
aa0bcc5
Compare
siligam
force-pushed
the
esm-catalog/pr-b3-science-routes
branch
from
June 17, 2026 17:03
76f4e7a to
61e2fab
Compare
Contributor
Author
|
Rebased onto the corrected PR-0 base (#1483) — test relocation to |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
api/experiment_routes.py:GET /experiments(list with CQL2 filter support),GET /experiments/{id}(STAC Catalog object),GET /collections/{id}/experiment(shortcut from collection to parent experiment)api/paleo_presets.py: in-memory DuckDB table of 9 built-in paleo periods (LGM, Mid-Holocene, Eemian, etc.);POST /paleo-presetsto add custom presets,DELETE /paleo-presets/{id}for user-added presets onlypaleodatetimedependency (not in project requirements); fixed DuckDB rowcount bug (always returns -1 on DELETE — now checks existence before delete)Test plan
GET /experiments→ list withnumberMatchedGET /experiments/{id}→{"type": "Catalog", ...}GET /collections/{id}/experiment→ parent experiment catalogGET /paleo-presets→ list includinglgm🤖 Generated with Claude Code