Skip to content

Migration uv ci#88

Open
raederan wants to merge 15 commits into
mainfrom
migration-uv-ci
Open

Migration uv ci#88
raederan wants to merge 15 commits into
mainfrom
migration-uv-ci

Conversation

@raederan

Copy link
Copy Markdown

UV migration as baseline for further OO-LD development in general

Additional Project Management References
Affecting enhancement tasks: #23 | #49 | #52 | #60 | #78 | #82

raederan added 5 commits June 13, 2026 09:48
Replace the pyscaffold/setuptools build with hatchling + hatch-vcs
(git-tag versioning preserved) and overhaul dev tooling, CI, and docs.
No public API or runtime behavior changes.

Build:
- Rewrite pyproject.toml to [project] + hatchling + hatch-vcs; migrate
  runtime deps, UI extras, and dev/test tooling
- Remove setup.py, setup.cfg, .isort.cfg, .coveragerc

Tooling:
- Add Makefile (with benchmark target), ruff pre-commit config,
  uv-based tox.ini (with benchmark env), .devcontainer/, Dockerfile,
  comprehensive .gitignore

CI:
- Add setup-python-env action; main.yml with 3.10-3.14 matrix,
  ported benchmark job, codecov, and zensical docs check
- on-release-main.yml uses uv build/publish + Pages; drop sed version
  step (hatch-vcs derives version)
- Add validate-codecov-config.yml + codecov.yaml; remove ci.yml/docs.yml

Docs:
- Migrate mkdocs -> zensical (zensical.toml); rewrite dev.md for uv/make

Meta:
- Update README badges (build/codecov, OO-LD org); add CONTRIBUTING.md

Code fixes to pass gates:
- Remove unused imports; simplify 8 collapsible-if/ternary cases
- Fix missing-assert test bug; resolve B018 unused-expression
- Modernize Optional -> | None; drop redundant logging.exception arg
- ValueError -> TypeError; pin specific type: ignore codes

Lint/type config (justified inline):
- Relax RUF012 (pydantic), TRY003/C901 (avoid destructive refactors),
  A001/A002 (keep property/id/input per rollback), test/example
  security rules; deptry ignores for runtime-only UI extras
- Downgrade ty dynamic-pattern rules (unresolved-attribute,
  not-subscriptable, etc.): 440 -> 0 errors; unresolved-import stays
  active for core code

Verified: make check (exit 0), make test (95 passed, 3 skipped),
uv build (wheel + sdist), zensical build -s (no issues).

Note: ty check emits 11 non-fatal warnings (unsupported-base in tests,
possibly-missing-submodule); left unsuppressed (exit 0 unaffected).
pretty-format-json reindented some .json/.ipynb on first run; tests pass.
…ings

deptry emitted advisory warnings (not errors — it already exited
Success) for optional UI extras not installed in the lint/type env
(jupyter_bokeh, anywidget, ipykernel, traitlets, nicegui). When a
declared dependency isn't installed, deptry can't introspect its real
import-module name and falls back to guessing, producing the notices.

Add explicit [tool.deptry.package_module_name_map] entries in
pyproject.toml so deptry uses the stated module names instead of
guessing (also maps ipython -> IPython).
When working_dir_path is set, the generator writes JSON schemas back to the source directory. It used indent=4 while the pretty-format-json pre-commit hook expects 2-space indentation, and json.dumps omits a trailing newline that end-of-file-fixer requires. Both caused make test to dirty tracked files, breaking make check on every run. Change indent to 2 and append \n when writing schema files.
Rebuild the entire docs site using Zensical with a structured nav,
richer content, and consistent make/without-make command coverage.

New pages: get-started, how-to (codegen, object-graph-mapping, backends,
rdf-export, controller), architecture (Mermaid diagrams), contributing,
api (replaces oold.md stub).

CONTRIBUTING.md and docs/contributing.md now stay in sync — same sections
and commands, docs version adds Zensical tabs for make vs. bare uv.

Add CITATION.cff and citation sections to README and docs/index.md,
attributed to OO-LD Contributors with Zenodo DOI 10.5281/zenodo.8374237
@raederan raederan requested a review from simontaurus June 13, 2026 09:12
@raederan raederan self-assigned this Jun 13, 2026
@raederan raederan added the enhancement New feature or request label Jun 13, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📊 Benchmark Results

Click to see benchmark comparison
📊 Benchmark Comparison (threshold: 1.3x)
============================================================

➖ Unchanged (within threshold):
  ➖ test_simple_dict_document_store: 0.0016s → 0.0016s (+0.3%)
  ➖ test_sqlite_document_store: 0.0017s → 0.0017s (-0.4%)
  ➖ test_local_sparql_store: 0.0366s → 0.0396s (+8.2%)
  ➖ test_oneof_subschema: 0.0501s → 0.0598s (+19.3%)
  ➖ test_enum_docstrings: 0.0414s → 0.0522s (+26.1%)
  ➖ test_subclass_inheritance: 0.0448s → 0.0520s (+16.0%)
  ➖ test_class_hierarchy: 0.0424s → 0.0488s (+15.0%)
  ➖ test_core[v1]: 0.0339s → 0.0370s (+9.2%)
  ➖ test_core[v2]: 0.0390s → 0.0417s (+7.0%)
  ➖ test_schema_generation[v1]: 0.0015s → 0.0015s (+1.1%)
  ➖ test_schema_generation[v2]: 0.0027s → 0.0027s (+0.7%)
  ➖ test_simple_json: 0.0006s → 0.0006s (+0.5%)
  ➖ test_complex_graph: 0.0014s → 0.0016s (+7.6%)

============================================================
Summary: 0 regressions, 0 improvements, 13 unchanged
============================================================

✅ No significant performance regressions

Threshold: 1.3x (30% slower triggers a regression warning)

Note: Benchmarks are informational only and won't fail the build.

💡 Tip: Download the benchmark-results artifact for detailed JSON data

@github-actions

Copy link
Copy Markdown
Contributor

📊 Benchmark Results

Click to see benchmark comparison
📊 Benchmark Comparison (threshold: 1.3x)
============================================================

➖ Unchanged (within threshold):
  ➖ test_simple_dict_document_store: 0.0018s → 0.0017s (-7.6%)
  ➖ test_sqlite_document_store: 0.0020s → 0.0018s (-8.0%)
  ➖ test_local_sparql_store: 0.0414s → 0.0382s (-7.7%)
  ➖ test_oneof_subschema: 0.0555s → 0.0605s (+9.1%)
  ➖ test_enum_docstrings: 0.0445s → 0.0498s (+12.0%)
  ➖ test_subclass_inheritance: 0.0497s → 0.0563s (+13.3%)
  ➖ test_class_hierarchy: 0.0458s → 0.0493s (+7.6%)
  ➖ test_core[v1]: 0.0360s → 0.0384s (+6.7%)
  ➖ test_core[v2]: 0.0422s → 0.0500s (+18.5%)
  ➖ test_schema_generation[v1]: 0.0018s → 0.0018s (+0.4%)
  ➖ test_schema_generation[v2]: 0.0029s → 0.0028s (-5.2%)
  ➖ test_simple_json: 0.0007s → 0.0007s (-0.8%)
  ➖ test_complex_graph: 0.0016s → 0.0016s (+1.0%)

============================================================
Summary: 0 regressions, 0 improvements, 13 unchanged
============================================================

✅ No significant performance regressions

Threshold: 1.3x (30% slower triggers a regression warning)

Note: Benchmarks are informational only and won't fail the build.

💡 Tip: Download the benchmark-results artifact for detailed JSON data

The benchmark job switches branches mid-run to collect baseline metrics
(git checkout main → run → git checkout back), which mutates uv.lock on
disk. The setup-uv post-step then tries to save cache against a changed
workspace state and fails, marking the whole job as failed even though
all benchmark steps succeeded.

Add an `enable-cache` passthrough input to the setup-python-env composite
action (default: true, no change to other jobs) and pass false for the
benchmark job where branch-switching makes uv caching unreliable.
@github-actions

Copy link
Copy Markdown
Contributor

📊 Benchmark Results

Click to see benchmark comparison
📊 Benchmark Comparison (threshold: 1.3x)
============================================================

➖ Unchanged (within threshold):
  ➖ test_simple_dict_document_store: 0.0016s → 0.0016s (+0.5%)
  ➖ test_sqlite_document_store: 0.0017s → 0.0017s (-2.8%)
  ➖ test_local_sparql_store: 0.0364s → 0.0368s (+1.0%)
  ➖ test_oneof_subschema: 0.0500s → 0.0577s (+15.5%)
  ➖ test_enum_docstrings: 0.0417s → 0.0466s (+11.7%)
  ➖ test_subclass_inheritance: 0.0448s → 0.0516s (+15.2%)
  ➖ test_class_hierarchy: 0.0422s → 0.0476s (+12.8%)
  ➖ test_core[v1]: 0.0332s → 0.0355s (+6.9%)
  ➖ test_core[v2]: 0.0388s → 0.0409s (+5.6%)
  ➖ test_schema_generation[v1]: 0.0015s → 0.0015s (-1.0%)
  ➖ test_schema_generation[v2]: 0.0027s → 0.0026s (-1.0%)
  ➖ test_simple_json: 0.0006s → 0.0006s (+0.0%)
  ➖ test_complex_graph: 0.0014s → 0.0015s (+0.4%)

============================================================
Summary: 0 regressions, 0 improvements, 13 unchanged
============================================================

✅ No significant performance regressions

Threshold: 1.3x (30% slower triggers a regression warning)

Note: Benchmarks are informational only and won't fail the build.

💡 Tip: Download the benchmark-results artifact for detailed JSON data

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant