Skip to content

Release 0.1.20: SDI metadata extraction, %sdi and %metadata magics (ref #306883) - #73

Merged
oskaresparza merged 7 commits into
mainfrom
staging
Oct 1, 2026
Merged

oskaresparza merged 7 commits into
mainfrom
staging

Conversation

@oskaresparza

Copy link
Copy Markdown
Collaborator

Promotes staging to main for the 0.1.20 release. Ref #306883.

What's in it

  • SDI metadata extraction to DDS (SDI metadata extraction to DDS, %sdi and %metadata magics (ref #306883) #70, Release to staging: SDI metadata extraction, %sdi and %metadata magics (ref #306883) #71)
    • eea_datalakehouse.sdi:
      • SdiController.get_xml(uuid) downloads and checks a record's ISO 19115-3 XML.
      • push_to_dds() uploads it to {dds_path}/metadata/{uuid}.xml after comparing it with the DDS copy.
      • resolve_series() returns a series' current release.
    • eea_datalakehouse.dds_documents: DocumentsClient, which uploads documents and never ingests.
    • Notebook magics: %sdi reads SDI (get_xml, resolve_series) and %metadata pushes to DDS (push_to_dds, dds_base_url; DDS_BASE_URL comes from the nearest .env).
    • Test notebook debugger/sdi_session_example.ipynb, README "SDI metadata" section, complete debugger/.env.example, and the plan in docs/sdi-integration-plan.md.
  • Test cell added to the catalog magic notebook (ref #308939).
  • Version bump to 0.1.20, with the README install examples updated.

Before the first real upload

  • DDS endpoints are assumptions. The document endpoints in dds_documents/client.py still need confirming with the DDS team.
  • No upload has been tried. The upload is only tested against mocks; extraction from SDI is verified against the live catalogue.

Tests

444 passed, 1 skipped (the live SDI test).

🤖 Generated with Claude Code

oskaresparza and others added 7 commits September 28, 2026 15:17
- sdi: SdiController.get_xml(uuid) downloads a record's ISO 19115-3 XML
  from the SDI (GeoNetwork) REST API and checks it; push_to_dds() uploads
  it to {dds_path}/metadata/{uuid}.xml as a document (not an ingest),
  comparing with the DDS copy first; resolve_series() finds a series'
  current release.
- dds_documents: DocumentsClient (put/get/exists/list) for plain files in
  DDS folders. The endpoints are assumptions to confirm with the DDS team.
- %sdi magic over SdiSession, built like %catalog/%ingest from the kernel
  environment; DDS_BASE_URL is read from the nearest .env.
- Test notebook debugger/sdi_session_example.ipynb, run_sdi_extract() in
  debug_run.py, README section, complete .env.example, and the
  development plan in docs/sdi-integration-plan.md (publication to SDI
  deferred).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Redmine-Hook: v1
- %sdi (SdiSession) now only reads SDI: get_xml, resolve_series.
- %metadata (MetadataSession) pushes metadata files to DDS: push_to_dds
  (defaults to the record %sdi get_xml fetched last) and dds_base_url.
  DDS_BASE_URL is read from the nearest .env when the session is built.
- Tests, test notebook, README and plan updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Redmine-Hook: v1
SDI metadata extraction to DDS, %sdi and %metadata magics (ref #306883)
Release to staging: SDI metadata extraction, %sdi and %metadata magics (ref #306883)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant