Release prep: generate v1.12.0-rc1 against linkml main - #279
amc-corey-cox wants to merge 2 commits into
Conversation
Pins the generation toolchain to linkml 063d4665f via tool.uv.sources so the rc's artifacts are produced by the commit expected to become the next linkml release, rather than by 1.11.1, which no longer reproduces them. The == pins had to become floors: a main checkout reports 1.11.0.post365.dev0+063d4665, which does not satisfy ==1.11.1. Both the pin and the floors need replacing with the real released versions before the final release. Also excludes java from gen-project. javagen joined its default outputs, which would have added 44 generated Java files to a package that has never shipped them and cannot address them -- Format has no JAVA member and the w3id rewrite rules mirror that list.
Regenerates every artifact against the pinned toolchain, picking up #270 and #271, which changed meta.yaml on Aug 21/25 without a regeneration -- the committed artifacts have been stale against their own source since then. metamodel_version lands unevenly in this pass: meta.py reads 1.12.0 from meta.yaml, but the other modules read 1.11.0 from linkml-runtime's vendored metamodel, which is still model 1.11.1-rc1. That resolves once linkml vendors this rc and the model is regenerated against it.
There was a problem hiding this comment.
🔵 Needs a closer look
The regeneration appears to introduce a semantic/field-mapping change in JSON-LD output (e.g., class_uri not being preserved) that should be validated and/or corrected before approving a release-prep RC artifact set.
Pull request overview
Prepares the linkml-model repository for the v1.12.0-rc1 cycle by regenerating committed model artifacts against linkml main (to match what downstream LinkML will vendor/test), bumping the metamodel version, and adjusting generation/tooling config to avoid unwanted outputs.
Changes:
- Bump
metamodel_versionto 1.12.0 and regenerate generated Python / JSON-LD / GraphQL / RDF / ShEx artifacts accordingly. - Adjust dependency constraints (and add
uvgit sources) to allow generating against a specificlinkmlcommit while keeping published-wheel deps as PEP 508 requirements. - Exclude
java/fromgen-projectoutput to prevent introducing unshippable/unused Java artifacts.
File summaries
| File | Description |
|---|---|
| pyproject.toml | Loosens linkml/linkml-runtime requirements and adds tool.uv.sources pins for dev-time generation. |
| gen_project_config.yaml | Excludes java from gen-project output. |
| linkml_model/model/schema/meta.yaml | Bumps metamodel_version to 1.12.0 in the source metamodel schema. |
| linkml_model/meta.py | Regenerated Python metamodel; reflects version bump and schema propagation (e.g., AnonymousClassExpression.is_a narrowing, updated coercions). |
| linkml_model/validation.py | Regenerated (removes embedded generation timestamp). |
| linkml_model/units.py | Regenerated (removes embedded generation timestamp). |
| linkml_model/types.py | Regenerated (removes embedded generation timestamp). |
| linkml_model/mappings.py | Regenerated (removes embedded generation timestamp). |
| linkml_model/extensions.py | Regenerated (removes embedded generation timestamp). |
| linkml_model/datasets.py | Regenerated (removes embedded generation timestamp). |
| linkml_model/array.py | Regenerated (removes embedded generation timestamp). |
| linkml_model/annotations.py | Regenerated (removes embedded generation timestamp). |
| linkml_model/shex/meta.shex | Updates embedded metamodel_version header to 1.12.0. |
| linkml_model/graphql/meta.graphql | Updates embedded metamodel_version header and narrows AnonymousClassExpression.isA type. |
| linkml_model/jsonld/meta.jsonld | Regenerated JSON-LD representation of the metamodel (includes new slots/usages and ordering/field changes). |
| linkml_model/rdf/types.ttl | Regenerated RDF TTL for types schema (ordering/formatting changes). |
| linkml_model/rdf/types.model.ttl | Regenerated RDF TTL model variant for types schema. |
| linkml_model/rdf/mappings.ttl | Regenerated RDF TTL for mappings schema (ordering/formatting changes). |
| linkml_model/rdf/extensions.ttl | Regenerated RDF TTL for extensions schema (ordering/formatting changes). |
| linkml_model/rdf/extensions.model.ttl | Regenerated RDF TTL model variant for extensions schema. |
| linkml_model/rdf/annotations.ttl | Regenerated RDF TTL for annotations schema (ordering/formatting changes). |
| linkml_model/rdf/annotations.model.ttl | Regenerated RDF TTL model variant for annotations schema. |
Review details
Suppressed comments (2)
linkml_model/jsonld/meta.jsonld:7571
structured_aliasinmeta.yamlsetsclass_uri: skosxl:Label, but this regenerated JSON-LD class definition omitsclass_uriand only keepsskosxl:Labelunderexact_mappings. That changes the meaning from an assigned RDF class URI to an equivalence mapping; if intentional, the source schema should be updated accordingly, otherwise the generator should emitclass_urihere.
"name": "StructuredAlias",
"definition_uri": "https://w3id.org/linkml/StructuredAlias",
"description": "object that contains meta data about a synonym or alias including where it came from (source) and its scope (narrow, broad, etc.)",
"from_schema": "https://w3id.org/linkml/meta",
"exact_mappings": [
"skosxl:Label"
],
"mixins": [
linkml_model/jsonld/meta.jsonld:8841
extensions.yamldefinesAnyValue.class_uri: linkml:Any, but in the regenerated JSON-LD this information is not represented asclass_uri(it only appears underexact_mappings). Ifclass_uriis still part of the model, this is a lossy serialization; if it is being deprecated, consider updating the source schema so the semantics remain unambiguous.
"name": "AnyValue",
"definition_uri": "https://w3id.org/linkml/AnyValue",
"from_schema": "https://w3id.org/linkml/extensions",
"imported_from": "linkml:extensions",
"exact_mappings": [
"linkml:Any"
],
"slot_usage": {},
"@type": "ClassDefinition"
},
- Files reviewed: 30/39 changed files
- Comments generated: 1
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
kevinschaper
left a comment
There was a problem hiding this comment.
no surprises found, looks good!
Release prep for v1.12.0-rc1 so linkml can vendor and test against it. Does not cut the release.
The committed artifacts are stale against
meta.yaml(#270/#271 changed it without a regeneration), and they don't reproduce under the next linkml either — regenerating withmainrather than 1.11.1 changesrdf/*.ttl(linkml#3641), ameta.pytype, and adds ajava/tree. So this generates againstmain.tool.uv.sourcespins linkml + linkml-runtime to063d4665f. Dev-side only; the wheel still carriesproject.dependencies.maincheckout reports1.11.0.post365.dev0+063d4665, which can't satisfy==1.11.1.javaexcluded from gen-project: javagen joined its defaults, and nothing can address the output (Formathas noJAVAmember) — 44 files that would also land in the linkml-runtime wheel viamake update_model.metamodel_version→ 1.12.0, plus full regeneration.Two notes for review:
metamodel_versionlands unevenly —meta.pygets 1.12.0 frommeta.yaml, the other modules get 1.11.0 from linkml-runtime's vendored metamodel (still model 1.11.1-rc1). Resolves once linkml vendors this rc.The ~26k-line diff is almost entirely timestamps and RDF/SQL ordering. Checked by graph comparison: SHACL is semantically identical bar the
is_achange (5,135 property shapes, zero differences); sorted SQL leaves only the real changes. The content is #271 propagating —AnonymousClassExpression.is_anarrowing toClassDefinitionacross every artifact.Before final release: swap the pin and floors for the released versions, regenerate, confirm no change.
Verified:
make gen-project,make test(8 passed, 5 skipped),pre-commit run --all-filesclean.