Skip to content

1919 daps python web support linkml schema - #1921

Merged
JoshuaSBrown merged 7 commits into
develfrom
1919-DAPS-python-web-support-linkml-schema
Mar 31, 2026
Merged

JoshuaSBrown merged 7 commits into
develfrom
1919-DAPS-python-web-support-linkml-schema

Conversation

@JoshuaSBrown

@JoshuaSBrown JoshuaSBrown commented Mar 31, 2026 •

Copy link
Copy Markdown
Collaborator

Summary by Sourcery

Add end-to-end support for LinkML-based metadata schemas across the core server, Python client/CLI, and web UI, including configuration of an external LinkML schema engine and improved metadata validation handling.

New Features:

  • Introduce LinkML schema engine support configurable via environment variables and core server options for an external schema API service.
  • Extend schema creation, update, and revision APIs in the Python client and CLI to handle schema type/format and LinkML YAML definitions.
  • Add web UI support for selecting schema type, editing LinkML YAML definitions with appropriate editor mode, and using type-specific default templates.
  • Support LinkML metadata validation and error normalization in the core schema validation pipeline.

Enhancements:

  • Expand end-to-end tests to cover LinkML schema lifecycle operations, search, file-based definitions, and metadata validation scenarios.
  • Improve handling of metadata validation error messages from the external schema API, normalizing LinkML errors for consistency with JSON schema output.
  • Refine schema selection in the data edit dialog to use schema base ID and version separately from any existing revision suffix.

Build:

  • Expose configuration for the external LinkML schema API URL and token in generation scripts for DataFed and core server configs.

Tests:

  • Add comprehensive LinkML-focused end-to-end tests covering create, view, update, revise, search, validate, and delete flows for schemas and metadata.

@sourcery-ai

sourcery-ai Bot commented Mar 31, 2026 •

Copy link
Copy Markdown
Contributor

Reviewer's Guide

Adds first-class LinkML schema support across the stack (core server, Python API, CLI, web UI) and comprehensive end-to-end tests, including configuration of an external LinkML schema API, schema type/format handling, and improved metadata validation error reporting.

Class diagram for updated Python schema APIs (CommandLib and CLI)

classDiagram
    class CommandLib {
        +schemaCreate(schema_id, definition, definition_file, description, public, system, schema_type, schema_format) SchemaDataReply
        +schemaRevise(schema_id, definition, definition_file, description, public, system, schema_type) SchemaDataReply
        +schemaUpdate(schema_id, new_id, definition, definition_file, description, public, system, schema_type) SchemaDataReply
        -_load_schema_file(path) string
        -_validate_json(json_text, context) void
    }

    class CLI {
        +_schemaCreate(schema_id, definition, definition_file, description, public, system, schema_type, schema_format) void
        +_schemaRevise(schema_id, definition, definition_file, description, public, system, schema_type) void
        +_schemaUpdate(schema_id, new_id, definition, definition_file, description, public, system, schema_type) void
    }

    class SchemaCreateRequest {
        +id string
        +def string
        +desc string
        +public bool
        +system bool
        +type string
        +format string
    }

    class SchemaReviseRequest {
        +id string
        +def string
        +desc string
        +public bool
        +system bool
        +type string
        +format string
    }

    class SchemaUpdateRequest {
        +id string
        +id_new string
        +def string
        +desc string
        +public bool
        +system bool
        +type string
        +format string
    }

    CommandLib --> SchemaCreateRequest : uses
    CommandLib --> SchemaReviseRequest : uses
    CommandLib --> SchemaUpdateRequest : uses
    CLI --> CommandLib : calls
Loading

File-Level Changes

Change Details Files
Add comprehensive LinkML schema lifecycle and validation tests to the Python end-to-end test suite.
  • Introduce reusable base and updated LinkML schema YAML definitions for tests.
  • Add tests that cover LinkML schema create/view/delete, invalid YAML rejection, in-place updates, revisions, search, and file-based creation.
  • Add metadata validation tests for LinkML schemas, including passing, missing required fields, and wrong types.
  • Add a full LinkML lifecycle test that chains create, validate, update, revise, and delete behaviors.
  • Extend the manual unittest suite construction to include new JSON-schema edge-case tests and all LinkML tests.
tests/end-to-end/test_api_schema.py
Extend web schema dialog to support both JSON Schema and LinkML schemas with type selection, appropriate editor modes, and templates.
  • Add utility functions to map schema type to Ace editor mode, definition label, schema format, and default template content.
  • Add a schema type selector to the dialog, defaulting to JSON Schema and wired to update editor mode, label, and default template on change.
  • When editing existing schemas, detect schema type from the schema object and render the definition as YAML for LinkML or pretty-printed JSON for JSON Schema.
  • Include schema type and format when creating schemas from the dialog, and prevent changing type after creation.
  • Relax editor syntax error gating to only block save on JSON schemas, not YAML-based LinkML schemas.
web/static/dlg_schema.js
Adjust data entry dialog to correctly populate schema IDs when selecting schemas with embedded version suffixes.
  • Normalize selected schema IDs by stripping any embedded version suffix before appending the chosen version.
  • Ensure the resulting schema reference uses the base name plus the selected version, avoiding double-colon versioning.
web/static/dlg_data_new_edit.js
Enhance Python CommandLib schema APIs to support schema type and format, including LinkML, while maintaining JSON validation behavior for JSON schemas.
  • Update schemaCreate to accept schema_type and schema_format parameters, validate definitions only for json-schema, and populate corresponding fields on the request message.
  • Update schemaRevise and schemaUpdate to accept an optional schema_type flag that controls whether JSON validation is applied.
  • Relax comments and parameter docs to describe generic schema definitions instead of JSON-only.
  • Ensure schema*, when creating or revising, send definition via the reserved-field workaround using setattr on the protobuf field ‘def’.
  • Update CLI commands for schema create/revise/update to accept and forward schema type and format options to the Python API.
python/datafed_pkg/datafed/CommandLib.py
python/datafed_pkg/datafed/CLI.py
Improve core server metadata validation behavior and wire in LinkML schema engine configuration.
  • Enhance SchemaAPIClient::validateMetadata to parse and normalize detailed error messages from the external schema API, including splitting LinkML semicolon-separated errors into newline-separated messages.
  • Treat 404 from the schema API as a BAD_REQUEST indicating the schema was not found, and keep existing error handling paths for other HTTP codes.
  • Update SchemaHandler::validateMetadataContent to distinguish schema_format from metadata_format and pass metadata_format to the validator (keeping JSON as the metadata format).
  • Add SchemaAPIConfig-based configuration for an external LinkML schema API in core/server main, registering a 'linkml' schema engine when configured and logging its status.
core/server/SchemaAPIClient.cpp
core/server/client_handlers/SchemaHandler.cpp
core/server/main.cpp
Add configuration plumbing and environment variables for the external LinkML Schema API service in deployment scripts.
  • Read DATAFED_LINKML_SCHEMA_API_URL and DATAFED_LINKML_SCHEMA_API_TOKEN from the environment in generate_datafed.sh and export them for downstream use.
  • Extend generate_core_config.sh to read the same environment variables and emit linkml-schema-api-url and linkml-schema-api-token entries in the core server config file.
  • Document that leaving the URL empty disables the LinkML schema engine and that the token is optional.
scripts/generate_datafed.sh
scripts/generate_core_config.sh

Possibly linked issues

  • #: PR implements and tests LinkML schema support in the Python client API, directly addressing the testing-focused issue.

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Hey - I've found 3 issues, and left some high level feedback:

  • In CommandLib.schemaUpdate/schemaRevise, JSON validation is still applied whenever schema_type is None, which means updating/revising an existing LinkML schema without explicitly passing schema_type="linkml" will incorrectly force JSON validation; consider deriving the type from the existing schema when schema_type is omitted so that engine type is truly "carried forward".
  • The new schema_type argument on schemaUpdate/schemaRevise is only used to gate JSON validation and is not propagated into the protobuf request (unlike schemaCreate which sets msg.type/msg.format); if callers are allowed to change engine type/format on revise/update, you likely want to set these fields on the message as well or remove the CLI options to avoid a misleading interface.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- In `CommandLib.schemaUpdate`/`schemaRevise`, JSON validation is still applied whenever `schema_type` is `None`, which means updating/revising an existing LinkML schema without explicitly passing `schema_type="linkml"` will incorrectly force JSON validation; consider deriving the type from the existing schema when `schema_type` is omitted so that engine type is truly "carried forward".
- The new `schema_type` argument on `schemaUpdate`/`schemaRevise` is only used to gate JSON validation and is not propagated into the protobuf request (unlike `schemaCreate` which sets `msg.type`/`msg.format`); if callers are allowed to change engine type/format on revise/update, you likely want to set these fields on the message as well or remove the CLI options to avoid a misleading interface.

## Individual Comments

### Comment 1
<location path="python/datafed_pkg/datafed/CommandLib.py" line_range="339-340" />
<code_context>
     # eliminate the need for this workaround.
     # =========================================================================
-
     def schemaCreate(self, schema_id, definition=None, definition_file=None,
-                     description=None, public=False, system=False):
+                     description=None, public=False, system=False,
+                     schema_type="json-schema", schema_format="json"):
         """
</code_context>
<issue_to_address>
**issue (bug_risk):** Guard against incompatible schema_type/schema_format combinations in schemaCreate.

Because `schema_type` and `schema_format` are independent, callers can pass incompatible pairs (e.g., `schema_type="json-schema"` with `schema_format="yaml"`). Since validation is only keyed on `schema_type == "json-schema"`, this would try to validate YAML as JSON. Please either restrict allowed type/format pairs and fail fast on invalid combinations, or make validation depend on `schema_format`, aligned with what the backend expects.
</issue_to_address>

### Comment 2
<location path="python/datafed_pkg/datafed/CLI.py" line_range="2064" />
<code_context>
 def _schemaCreate(schema_id, definition, definition_file, description, public, system, schema_type, schema_format):
</code_context>
<issue_to_address>
**nitpick:** CLI help text still describes JSON-only schemas despite new LinkML support.

The `_schemaCreate` docstring still states "A JSON schema definition is required" even though the command now supports multiple schema types via `--type` and `--format` (including LinkML/YAML). Please update the text to describe a generic schema definition and briefly reference how it relates to `--type`/`--format` to avoid misleading users about supported formats.
</issue_to_address>

### Comment 3
<location path="tests/end-to-end/test_api_schema.py" line_range="893-902" />
<code_context>
+    # LinkML Schema tests
</code_context>
<issue_to_address>
**suggestion (testing):** Consider adding tests for CLI and CommandLib `schema_type` / `schema_format` options to complement the LinkML end-to-end API tests.

The Python API paths are well covered, but the new CLI flags (`--type`, `--format`) and corresponding `CommandLib` parameters for schema type/format aren’t tested. Please add tests that:
* Call `schema create/update/revise` with `--type linkml --format yaml` and assert end-to-end success.
* Verify that `--type linkml` skips JSON validation for YAML input on `schemaUpdate`/`schemaRevise` (YAML that fails JSON parsing should still be accepted).
These can live in a CLI/integration test module separate from the current end-to-end tests to close the coverage gap around the new flags.

Suggested implementation:

```python
    # LinkML Schema tests (Python API and CLI/CommandLib coverage)
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_schema_create_view_delete"))
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_schema_create_invalid_yaml"))
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_schema_update_description"))
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_schema_update_definition"))
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_schema_revise"))
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_schema_search"))
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_metadata_validate_pass"))
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_metadata_validate_missing_required"))
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_metadata_validate_wrong_type"))
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_schema_create_from_file"))
    # LinkML CLI / CommandLib schema_type & schema_format tests
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_cli_schema_lifecycle_with_type_and_format"))
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_cli_schema_update_revise_yaml_without_json_validation"))

```

To fully implement the new tests you requested, you will also need to:

1. Add the following methods to `TestDataFedPythonAPISchemaCRUD` (or, preferably, to a dedicated CLI/integration test class if that’s how your suite is organised):
   - `test_linkml_cli_schema_lifecycle_with_type_and_format`
     - Use the CLI (or `CommandLib`) to:
       - `schema create` with `--type linkml --format yaml` using a valid LinkML YAML schema.
       - `schema view` (or equivalent) to confirm the schema exists and is correctly stored as LinkML.
       - `schema delete` (or equivalent) to clean up.
     - Assert:
       - CLI exit codes are zero for each step.
       - The created schema is of type `linkml` and format `yaml` in the returned metadata.
   - `test_linkml_cli_schema_update_revise_yaml_without_json_validation`
     - Use the CLI (or `CommandLib`) to:
       - Create a LinkML schema as above.
       - Call `schema update` (and optionally `schema revise`) with:
         - `--type linkml --format yaml`
         - A YAML schema payload that is valid YAML but invalid JSON (e.g., uses YAML-only features or trailing commas that JSON rejects).
       - Ensure the operation succeeds (exit code zero) and the schema is updated/revised.
     - Assert:
       - The CLI/CommandLib does not attempt JSON validation when `--type linkml` is used.
       - The updated schema definition is stored and retrievable.
2. If you choose to place the actual implementations into a separate CLI-focused module (e.g. `tests/cli/test_schema_cli_linkml.py`), either:
   - Move these `suite.addTest(...)` entries into that module’s `load_tests`, or
   - Import the CLI test class into this file and change `TestDataFedPythonAPISchemaCRUD` to that class name for the new tests.
3. Ensure any required helpers/fixtures used for invoking the CLI or `CommandLib` (e.g. a `CommandLib` instance, temporary workspaces, test schemas on disk) are available to these new test methods and are wired consistently with the rest of your test suite.
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Comment on lines 339 to +340
def schemaCreate(self, schema_id, definition=None, definition_file=None,
description=None, public=False, system=False):
description=None, public=False, system=False,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

issue (bug_risk): Guard against incompatible schema_type/schema_format combinations in schemaCreate.

Because schema_type and schema_format are independent, callers can pass incompatible pairs (e.g., schema_type="json-schema" with schema_format="yaml"). Since validation is only keyed on schema_type == "json-schema", this would try to validate YAML as JSON. Please either restrict allowed type/format pairs and fail fast on invalid combinations, or make validation depend on schema_format, aligned with what the backend expects.

def _schemaCreate(schema_id, definition, definition_file, description, public, system):
def _schemaCreate(schema_id, definition, definition_file, description,
public, system, schema_type, schema_format):
"""

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

nitpick: CLI help text still describes JSON-only schemas despite new LinkML support.

The _schemaCreate docstring still states "A JSON schema definition is required" even though the command now supports multiple schema types via --type and --format (including LinkML/YAML). Please update the text to describe a generic schema definition and briefly reference how it relates to --type/--format to avoid misleading users about supported formats.

Comment thread tests/end-to-end/test_api_schema.py Outdated
Comment on lines +893 to +902
# LinkML Schema tests
suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_schema_create_view_delete"))
suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_schema_create_invalid_yaml"))
suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_schema_update_description"))
suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_schema_update_definition"))
suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_schema_revise"))
suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_schema_search"))
suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_metadata_validate_pass"))
suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_metadata_validate_missing_required"))
suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_metadata_validate_wrong_type"))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

suggestion (testing): Consider adding tests for CLI and CommandLib schema_type / schema_format options to complement the LinkML end-to-end API tests.

The Python API paths are well covered, but the new CLI flags (--type, --format) and corresponding CommandLib parameters for schema type/format aren’t tested. Please add tests that:

  • Call schema create/update/revise with --type linkml --format yaml and assert end-to-end success.
  • Verify that --type linkml skips JSON validation for YAML input on schemaUpdate/schemaRevise (YAML that fails JSON parsing should still be accepted).
    These can live in a CLI/integration test module separate from the current end-to-end tests to close the coverage gap around the new flags.

Suggested implementation:

    # LinkML Schema tests (Python API and CLI/CommandLib coverage)
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_schema_create_view_delete"))
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_schema_create_invalid_yaml"))
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_schema_update_description"))
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_schema_update_definition"))
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_schema_revise"))
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_schema_search"))
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_metadata_validate_pass"))
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_metadata_validate_missing_required"))
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_metadata_validate_wrong_type"))
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_schema_create_from_file"))
    # LinkML CLI / CommandLib schema_type & schema_format tests
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_cli_schema_lifecycle_with_type_and_format"))
    suite.addTest(TestDataFedPythonAPISchemaCRUD("test_linkml_cli_schema_update_revise_yaml_without_json_validation"))

To fully implement the new tests you requested, you will also need to:

  1. Add the following methods to TestDataFedPythonAPISchemaCRUD (or, preferably, to a dedicated CLI/integration test class if that’s how your suite is organised):
    • test_linkml_cli_schema_lifecycle_with_type_and_format
      • Use the CLI (or CommandLib) to:
        • schema create with --type linkml --format yaml using a valid LinkML YAML schema.
        • schema view (or equivalent) to confirm the schema exists and is correctly stored as LinkML.
        • schema delete (or equivalent) to clean up.
      • Assert:
        • CLI exit codes are zero for each step.
        • The created schema is of type linkml and format yaml in the returned metadata.
    • test_linkml_cli_schema_update_revise_yaml_without_json_validation
      • Use the CLI (or CommandLib) to:
        • Create a LinkML schema as above.
        • Call schema update (and optionally schema revise) with:
          • --type linkml --format yaml
          • A YAML schema payload that is valid YAML but invalid JSON (e.g., uses YAML-only features or trailing commas that JSON rejects).
        • Ensure the operation succeeds (exit code zero) and the schema is updated/revised.
      • Assert:
        • The CLI/CommandLib does not attempt JSON validation when --type linkml is used.
        • The updated schema definition is stored and retrievable.
  2. If you choose to place the actual implementations into a separate CLI-focused module (e.g. tests/cli/test_schema_cli_linkml.py), either:
    • Move these suite.addTest(...) entries into that module’s load_tests, or
    • Import the CLI test class into this file and change TestDataFedPythonAPISchemaCRUD to that class name for the new tests.
  3. Ensure any required helpers/fixtures used for invoking the CLI or CommandLib (e.g. a CommandLib instance, temporary workspaces, test schemas on disk) are available to these new test methods and are wired consistently with the rest of your test suite.

@JoshuaSBrown
JoshuaSBrown force-pushed the 1919-DAPS-python-web-support-linkml-schema branch from ce220a6 to 0366887 Compare March 31, 2026 18:34
@JoshuaSBrown
JoshuaSBrown merged commit 06fb561 into devel Mar 31, 2026
11 checks passed
@JoshuaSBrown
JoshuaSBrown deleted the 1919-DAPS-python-web-support-linkml-schema branch March 31, 2026 19:36
JoshuaSBrown added a commit that referenced this pull request Mar 31, 2026
* [DAPS-1912] - refactor: register linkml storage engine with schema handler (#1912)

* [DAPS-1919] - python, web support linkml schema (#1921)

* [DAPS-1923] - update: version numbers bumped. (#1923)

---------

Co-authored-by: Austin Hampton <44103380+megatnt1122@users.noreply.github.com>
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
JoshuaSBrown added a commit that referenced this pull request Apr 1, 2026
* [DAPS-1663]   - feature: core, LogContext to dbGetRaw, Correlation_ID to dbMaintenance, metricThread and task_worker (#1885)
* [DAPS-1890]   - fix: test, mock_core server build (#1890)
* [DAPS-1887]   - refactor: facility fuse, remove dead code. (#1888)
* [DAPS-1857]   - feature: python client, tests, support schema functions, to hit feature parity with web ser… (#1859)
* [DAPS-1855]   - feature, core, add schema factory to decouple schema logic (#1891)
* [DAPS-1896]   - feature: foxx, schema format and type added to schema create API (#1897)
* [DAPS-1893]   - feature: common, proto3 add fields for schema type, format, and metadata format (#1894)
* [DAPS-1830-1] - refactor: core foxx refactored json schema integration 1 (#1892)
* [DAPS-1857-2] - feature: python client schema support (#1895)
* [DAPS-1830-2] - refactor: core foxx refactored json schema integration (#1899)
* [DAPS-1902]   - feature: core, common, get schema api client into compliance with API spec file. (#1903)
* [DAPS-1906-1] - feature: add core unit testing to CI (#1907)
* [DAPS-1830-3] - refactor: core foxx refactored json schema integration 3 1827 (#1898)
* [DAPS-1910]   - upgrade: playwright 1.51.1 version. (#1911)
* [DAPS-1914]   - fix: web, bug in schema id name version mismatch (#1915)
* [DAPS-1913]   - refactor: foxx ci test scripts consolidate database name and default to different database for tests (#1917)
* [DAPS-1916]   - tests: add integration test for schema client handler to cmake (#1918)
* [DAPS-1912]   - refactor: register linkml storage engine with schema handler (#1912)
* [DAPS-1919]   - feature: python, web support linkml schema (#1921)
* [DAPS-1923]   - update: version numbers bumped. (#1923)

Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
Co-authored-by: Austin Hampton <amh107@latech.edu>
Co-authored-by: Blake Nedved <blakeanedved@gmail.com>
Co-authored-by: Polina Shpilker <infinite.loopholes@gmail.com>
Co-authored-by: JoshuaSBrown <brownjs@ornl.gov>
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.

2 participants