DM-55473: Deploy lsst.io site with schemas - #65
Merged
Merged
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #65 +/- ##
===========================================
- Coverage 78.77% 62.98% -15.79%
===========================================
Files 127 132 +5
Lines 16873 17603 +730
===========================================
- Hits 13291 11087 -2204
- Misses 3582 6516 +2934 ☔ View full report in Codecov by Harness. |
timj
force-pushed
the
tickets/DM-55473
branch
3 times, most recently
from
July 13, 2026 13:48
4b69978 to
d1ee085
Compare
timj
commented
Jul 16, 2026
TallJimbo
approved these changes
Jul 16, 2026
TallJimbo
left a comment
Member
There was a problem hiding this comment.
Looks good. I have some quibbles with how things are structured, but we should only act on those now if it's easy to do so.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Freezing exposed two issues in JSON Schema generation, both fixed here: subclasses of concrete schemas (visit_image, difference_image) inherited their parent's $id and title through the merged model_config, and recursive models (sum_field, product_field) emitted a bare $ref root with no top-level identity. Schemas registered from outside lsst.images (test doubles, third-party entry points) are excluded from freezing. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Docstring-derived descriptions carry single-backtick Python references that cannot resolve as py:obj targets on the generated pages; they are rendered as inline literals instead. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ArchiveTree.SCHEMA_URL_BASE is now a per-class override so third-party schemas mint URLs under a documentation site they control instead of images.lsst.io, which will not host schemas it does not own. Schema URL parsing on read consequently validates the URL shape (an http(s) URL whose final directory is 'schemas') rather than pinning the host. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Schema discovery now also consults the lsst.images.schemas entry point group, so an external package's schemas are found without anything importing their modules first. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The page's canonical URL now also comes from the schema's own $id, so an external package can generate pages under its own URL base. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The BaseField docstring referenced nonexistent public evaluate and multiply_constant methods; the real extension points are the _evaluate and _multiply_constant hooks. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Each schema now has a family page at the versionless URL
({SCHEMA_URL_BASE}/{name}) listing its published versions newest-first
with the current one marked, and the site navigation nests version pages
under it, so the top-level schema index only grows when a new schema is
added rather than on every version bump. Version page URLs are
unchanged.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Two-element arrays do not encode which element is x and which is y, so XY and YX now serialize as JSON objects keyed by dimension name, using the same pattern as Interval and Box. Pydantic bypasses custom schema hooks for parameterized named tuples, so model fields that parameterize a pair must use the new SerializableXY/SerializableYX annotations. Validation still accepts the array form in both JSON and Python mode: files written before this change (including the DP2 cell coadds, which cannot be rewritten) store pairs as arrays and must remain readable and schema-valid, so the published 1.0.0 schemas allow both forms and the fixtures keep their extracted array-form pairs as regression coverage. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…havior Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Checklist
doc/changes