Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
0d2fc68
Merge pull request #85 from Kapersyx/fix/inlined-subclasses-with-desi…
kervel Sep 10, 2025
d48834b
feat(runtime): preserve explicit null values for collections and scal…
kervel Sep 10, 2025
eaf609d
chore: rustfmt and clippy fixes; avoid get(0) in tests
kervel Sep 10, 2025
d51ee4b
feat(diff): null/missing semantics; add treat_missing_as_null flag; t…
kervel Sep 10, 2025
a99c1e8
feat(diff): single flag treat_missing_as_null; explicit nulls as upda…
kervel Sep 10, 2025
7381afd
docs: testing guideline to extend existing tests instead of adding re…
kervel Sep 10, 2025
d317729
feat(runtime): add NodeIds to LinkMLValue and return PatchTrace from …
kervel Sep 10, 2025
3744161
refactor(runtime): implement LinkMLValue-native patch with incrementa…
kervel Sep 10, 2025
2c99faf
Refactor LinkMLValue builders and reuse in patch; fix fmt/clippy; res…
kervel Sep 10, 2025
6d9f753
fmt: apply rustfmt after refactor; clippy clean excluding linkml_meta
kervel Sep 10, 2025
be5dacc
diff: inline LinkMLValue builder calls; remove thin wrappers and unus…
kervel Sep 10, 2025
8746af6
diff: make patch panic-safe; return LResult and propagate errors inst…
kervel Sep 10, 2025
8af38c6
Merge pull request #4 from Kapernikov/feat/null-collections
kervel Sep 10, 2025
4e2b77e
Merge origin/main into feat/node-ids-patch-trace-clean: integrate Lin…
kervel Sep 10, 2025
3d99bd4
tests: update for Null variant; use JSON roundtrip instead of constru…
kervel Sep 10, 2025
91ec1de
diff: treat identifier/key changes as object replacement; add tests f…
kervel Sep 11, 2025
e078ce9
docs(runtime): clarify semantics of internal NodeId and PatchTrace fi…
kervel Sep 11, 2025
d9d57a4
Merge remote-tracking branch 'origin/feat/node-ids-patch-trace-clean'
Sep 11, 2025
5c31a7b
runtime: add LinkMLValue::equals per Instances spec; tests: add equal…
Sep 11, 2025
661e9ad
python: expose LinkMLValue.equals(); tests: add python_equals coverage
Sep 11, 2025
7c58d56
runtime: equals(treat_missing_as_null) and patch no-op skipping; patc…
Sep 11, 2025
4b34691
runtime: introduce PatchOptions {ignore_no_ops, treat_missing_as_null…
Sep 11, 2025
d5337fc
dummy commit to reopen PR
kervel Sep 12, 2025
edd36ed
Merge branch 'feat/node-ids-patch-trace-clean'
kervel Sep 12, 2025
7923100
Rename LinkMLValue to LinkMLInstance across runtime, tools, Python bi…
kervel Sep 14, 2025
1091908
Merge branch 'feat/rename-linkmlvalue-to-linkmlinstance'
kervel Sep 14, 2025
0e0862e
Paths: prefer identifier-based list addressing in diff; patch/navigat…
kervel Sep 14, 2025
9504d45
Merge branch 'ci-artifact-storage'
kervel Sep 17, 2025
77b5b1b
Fix slot ranges not computed correctly due to two separate bugs: a cr…
Sep 18, 2025
8756c23
format
Sep 18, 2025
cf0b2d9
Fix slot ranges not computed correctly due to two separate bugs: a cr…
Sep 18, 2025
75bdfe6
Add overwrite_except_none merge strategy for SlotDefinition
Sep 18, 2025
2e3996c
Use schema-local converters for slot usage overrides
Sep 18, 2025
5c6f52b
Merge branch 'nfix-no-global-converter'
Sep 18, 2025
3d41ee4
Return Python patch result object
Sep 22, 2025
aded965
add python type hints stubs
Sep 22, 2025
9bca127
Expose structured Delta objects in Python diff/patch
Sep 22, 2025
71a91e7
Add Python constructor for Delta and test roundtrip
Sep 23, 2025
60f8d07
Add explicit delta operations and expose in Python
Sep 23, 2025
ec75232
Add to_dict helper on PyDelta
Sep 23, 2025
56c0881
Track failed deltas in patch trace and expose in Python
Sep 23, 2025
482f9c4
Add DiffOptions for configurable diff semantics
kervel Sep 24, 2025
846d0bc
Document add_schema_str_with_import_ref usage
kervel Sep 24, 2025
42fcee1
Document add_schema_with_import_ref semantics
kervel Sep 24, 2025
919882a
Expose Delta op literals in Python stubs
kervel Sep 24, 2025
50b2904
Replace curies with internal converter
kervel Sep 24, 2025
dee4982
Gate Turtle support behind ttl feature
kervel Sep 24, 2025
f49fc26
Make resolve feature opt-in
kervel Sep 24, 2025
eccd704
Allow switching to curies converter
kervel Sep 24, 2025
b1cbc06
Add SchemaView iteration helpers
kervel Sep 24, 2025
63cf9dc
Add schema_id accessor for SlotView
kervel Sep 24, 2025
cac1ed2
Fix add_schema_str_with_import_ref docstring quoting
Sep 25, 2025
70e69b6
Remove explicit SchemaView parameter from patch
kervel Sep 26, 2025
dd61e05
Re-generate with latest linkml version
Sep 29, 2025
666aa59
Expose PyLinkMLInstance internals
tijlwillems Sep 29, 2025
afb4db3
Add helper accessors for Py bindings
tijlwillems Sep 29, 2025
a2b7127
Removed unnecessary helper functions and made PyDelta.inner public
tijlwillems Sep 30, 2025
6b5646d
Removed PySchemaView.shared_arc
tijlwillems Sep 30, 2025
2aa9af2
Put back code in generated file
tijlwillems Sep 30, 2025
21c6fc7
Use the py_run macro in the python_diff_patch test
tijlwillems Sep 30, 2025
ec72603
Merge pull request #86 from Kapernikov/feature/expose-pylinkml
kervel Sep 30, 2025
f6740ec
don't panic when getting None as a delta value!
Oct 6, 2025
67e4826
simplify code
Oct 6, 2025
6dcbe98
Make the getter for canonical uri actually correct, and add various h…
Oct 7, 2025
f18b3f8
Refine panic policy and clippy fixes
kervel Oct 8, 2025
756864e
Add SchemaView snapshot serialization
kervel Oct 8, 2025
598b3ab
add "git blame" like functionality for tracking what kind of a linkml…
Oct 9, 2025
97c26bd
Add ClassView::most_specific_common_ancestor
Oct 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
## Project Structure & Module Organization
- `src/metamodel` (`linkml_meta`): Autogenerated metamodel types; optional Serde/PyO3.
- `src/schemaview` (`schemaview`/`linkml_schemaview`): Schema loading/resolution and views (SchemaView, ClassView, SlotView, EnumView).
- `src/runtime` (`linkml_runtime`): Core runtime (LinkMLValue parse/validate, diff/patch, turtle). Pure Rust lib.
- `src/runtime` (`linkml_runtime`): Core runtime (LinkMLInstance parse/validate, diff/patch, turtle). Pure Rust lib.
- `src/tools` (`linkml_tools`): CLI binaries: `linkml-validate`, `linkml-convert`, `linkml-diff`, `linkml-patch`, `linkml-schema-validate`.
- `src/python` (`linkml_runtime_python`): PyO3 bindings and Python package `linkml_runtime_rust._native` plus helpers.
- `src/wasm` (`linkml_wasm`): WASM build target.

## Build, Test, and Development Commands
- Build workspace: `cargo build --workspace`
- Run all tests: `cargo test --workspace`
- Format (check): `cargo fmt --all -- --check` | Fix: `cargo fmt --all`
- Format (check): `cargo +stable fmt --all -- --check` | Fix: `cargo +stable fmt --all`
- Lint: `cargo clippy -p schemaview -p linkml_runtime -p linkml_tools -p linkml_runtime_python -p linkml_wasm --all-targets --all-features -- -D warnings --no-deps` (excludes autogenerated `linkml_meta`)
- Run a CLI (example):
- Validate: `cargo run -p linkml_tools --bin linkml-validate -- src/runtime/tests/data/schema.yaml Person src/runtime/tests/data/person_valid.yaml`
Expand All @@ -25,17 +25,20 @@
- Python (bindings helpers): follow PEP 8; prefer type hints where feasible.

## Testing Guidelines
- When testing locally, always provide network access. never try to run the tests offline
- Add integration tests under `src/runtime/tests/` when changing CLI/runtime behavior.
- Prefer `assert_cmd` for CLI and `predicates` for output checks. Keep fixtures in `src/runtime/tests/data/`.
- Run `cargo test --workspace` locally; ensure tests don’t rely on network input.
- Prefer modifying existing tests over adding new ones for new code paths. Extend current scenarios with extra assertions/fixtures to avoid redundant tests proliferating. For example, if adding null-handling in diff/patch, enhance the existing diff tests rather than introducing separate "basic diff works" tests that become redundant.

## Commit & Pull Request Guidelines
- Commits: short, imperative summary (e.g., “Add __repr__ for LinkMLValue”); group related changes.
- Commits: short, imperative summary (e.g., “Add __repr__ for LinkMLInstance”); group related changes.
- PRs: include clear description, rationale, and usage examples; link issues; update docs/tests; ensure CI passes: fmt, clippy (no warnings), and tests.

### Pre-commit checklist
- Run `cargo fmt --all` to format Rust code.
- Run `cargo clippy -p schemaview -p linkml_runtime -p linkml_tools -p linkml_runtime_python -p linkml_wasm --all-targets --all-features -- -D warnings --no-deps` and address all warnings (the generated `linkml_meta` crate is excluded).
- Run `cargo run -p linkml_runtime_python --bin stub_gen --features stubgen -- --check` to ensure Python stubs are current.

## Notes
- Network resolution is feature-gated; default builds include `resolve`. Only triggers when loading remote schemas.
Loading
Loading