Skip to content

feat(catalog): support catalog schema 3 (technology vocabulary ids, vendor, variant, technology.json) - #72

Merged
timtreis merged 1 commit into
mainfrom
feat/catalog-schema-3
Nov 9, 2026
Merged

timtreis merged 1 commit into
mainfrom
feat/catalog-schema-3

Conversation

@timtreis

@timtreis timtreis commented Nov 9, 2026

Copy link
Copy Markdown
Member

The client now reads catalogs with schema version 3, the format the hub's technology-vocabulary work (T111) will publish.

  • SUPPORTED_CATALOG_SCHEMA goes from 2 to 3. A catalog declaring version 4 or higher in its parquet sddb_release_info is refused with an upgrade hint. A catalog that declares no version still loads as legacy, as before.
  • New optional catalog columns: vendor, the vendor id, which a schema-3 catalog must have; and variant, the technology's variant id or null. In a schema-3 catalog, technology holds the vocabulary id (e.g. 10x_visium), and assay stays as the legacy label. vendor and variant are also facets.
  • New Catalog.technologies(), which loads the release's technology.json from beside catalog.parquet (cached like the other assets). It returns the vendors, technologies with their variants, readouts and legacy_assay labels. A file with a newer schema major is refused.

Tests (tests/test_catalog_metadata.py):

  • A v3 catalog loads, and its technology, vendor, variant and assay resolve in the vocabulary.
  • A v4 catalog is refused.
  • A v3 catalog without vendor is refused.
  • A technology.json declaring schema 4.0.0 is refused.

The fixture tests/data/technology_v3.json is the hub's committed dry-run vocabulary. The full suite passes (451 passed; test_docs_stats needs sphinx and was not run locally).

The hub's client pin gets bumped past this PR before the first schema-3 cut is published.

…endor, variant, technology.json)

SUPPORTED_CATALOG_SCHEMA is 3. A schema-3 catalog's technology is the vocabulary id, with a
required vendor and a nullable variant; assay stays as the legacy label. Catalog.technologies()
loads the release's technology.json beside the catalog and refuses a newer schema major. A
catalog that declares no version still loads as legacy. The test fixture is hub #406's dry-run
vocab/technology.json.
@read-the-docs-community

Copy link
Copy Markdown

Documentation build overview

📚 spatialdata-db | 🛠️ Build #35741618 | 📁 Comparing 97d2200 against latest (dc7a66b)

  🔍 Preview build  

3 files changed
± genindex.html
± reference/catalog-columns.html
± reference/generated/sddb.Catalog.html

@codecov

codecov Bot commented Nov 9, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.84%. Comparing base (dc7a66b) to head (97d2200).

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #72      +/-   ##
==========================================
+ Coverage   94.72%   94.84%   +0.11%     
==========================================
  Files          22       22              
  Lines        2313     2326      +13     
==========================================
+ Hits         2191     2206      +15     
+ Misses        122      120       -2     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@timtreis
timtreis merged commit e852300 into main Nov 9, 2026
7 checks passed
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