Skip to content

feat(esm_catalog): PR-A1b — core STAC infrastructure (flat layout)#1504

Merged
mandresm merged 16 commits into
releasefrom
esm-catalog/pr-a1b-core-infrastructure
Jul 2, 2026
Merged

feat(esm_catalog): PR-A1b — core STAC infrastructure (flat layout)#1504
mandresm merged 16 commits into
releasefrom
esm-catalog/pr-a1b-core-infrastructure

Conversation

@mandresm

@mandresm mandresm commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Hi @siligam and @pgierz,

I thought I'll give it a try to breaking down even more #1484 into smaller units that I could review. While on the process of doing that using claude-code, I also added my suggestions. This might be more time-efficient than just writing what I think and @siligam implementing it. I have included you both as co-authors. Since the code is rewritten by claude-code and myself this is the only way I found to keep you as contributors. Let me know if you are okay with this.

It would be great if one of you could review it.

This PR's scope is to keep add minimal core functionality to build the dictionary for STAC. These includes the following changes:

  • ESMItem(dict) and ESMCollection(dict) — STAC Item and Collection as plain-dict subclasses; JSON-serialisable with no extra dependencies
  • context.py — CollectionContext dataclass (breaks scan<->stac cycle)
  • uri.py — parse_uri / to_uri helpers for local and remote paths
  • registry.py — EXTENSION_URLS dict; custom schemas use esm-tools.github.io placeholder URLs until schemas land in configs/stac-extensions/
  • Flat layout: no stac/ or extensions/ subdirectories
  • Core item properties only: variable, datetime, format, output_frequency, variables list (fields 1, 3, 5, 8, 10 from the metadata reference)
  • 12 tests, all passing

TODO

  • Cleanup
  • Docstrings
  • Black & isort

- ESMItem(dict) and ESMCollection(dict) — STAC Item and Collection as
  plain-dict subclasses; JSON-serialisable with no extra dependencies
- context.py — CollectionContext dataclass (breaks scan<->stac cycle)
- uri.py — parse_uri / to_uri helpers for local and remote paths
- registry.py — EXTENSION_URLS dict; custom schemas use esm-tools.github.io
  placeholder URLs until schemas land in configs/stac-extensions/
- Flat layout: no stac/ or extensions/ subdirectories
- Core item properties only: variable, datetime, format, output_frequency,
  variables list (fields 1, 3, 5, 8, 10 from the metadata reference)
- 12 tests, all passing

Co-Authored-By: PavanSiligam <pavan.siligam@gmail.com>
Co-Authored-By: Paul Gierz <pgierz@awi.de>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@mandresm
mandresm requested review from pgierz and siligam June 29, 2026 13:23
@mandresm mandresm changed the title feat(esm_catalog): PR-A1b — core STAC infrastructure (flat layout) feat(esm_catalog): PR-A1a — core STAC infrastructure (flat layout) Jun 29, 2026
@mandresm mandresm changed the title feat(esm_catalog): PR-A1a — core STAC infrastructure (flat layout) feat(esm_catalog): PR-A1b — core STAC infrastructure (flat layout) Jun 29, 2026
@mandresm mandresm self-assigned this Jun 29, 2026
Comment thread src/esm_catalog/item.py Outdated
Comment thread src/esm_catalog/uri.py Outdated
Comment thread src/esm_catalog/collection.py Outdated
mandresm and others added 4 commits June 30, 2026 11:36
…ck the functions

Co-Authored-By: PavanSiligam <pavan.siligam@gmail.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
…suggestions

Co-Authored-By: PavanSiligam <pavan.siligam@gmail.com>
Comment thread src/esm_catalog/collection.py Outdated
Co-Authored-By: PavanSiligam <pavan.siligam@gmail.com>Co-Authored-By: Paul Gierz <pgierz@awi.de>Co-Authored-By: Claude <noreply@anthropic.com>

@mandresm mandresm left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a self review with some changes needed for the code.

Comment thread src/esm_catalog/collection.py Outdated
Comment thread src/esm_catalog/context.py
Co-Authored-By: Claude <noreply@anthropic.com>
@mandresm

mandresm commented Jul 2, 2026

Copy link
Copy Markdown
Contributor Author

#bump #patch

@mandresm
mandresm merged commit 9ddc30f into release Jul 2, 2026
11 of 13 checks passed
@mandresm
mandresm deleted the esm-catalog/pr-a1b-core-infrastructure branch July 2, 2026 15:25
mandresm added a commit that referenced this pull request Jul 13, 2026
test(esm_catalog): additional coverage for the #1504 core
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants