Skip to content

Modernize: Drop py39, add py313 compatibility, switch to uv#237

Merged
matentzn merged 13 commits intolinkml:mainfrom
dalito:drop-py39-support
Feb 20, 2026
Merged

Modernize: Drop py39, add py313 compatibility, switch to uv#237
matentzn merged 13 commits intolinkml:mainfrom
dalito:drop-py39-support

Conversation

@dalito
Copy link
Member

@dalito dalito commented Feb 17, 2026

py313 is not a typo. This repo was never "renovated" in term of devops like linkml and linkml-runtime.

With the changes tests can also be run locally with tox again.

Core Changes (Poetry → uv)

  • pyproject.toml — Rewritten from [tool.poetry] to PEP 621 [project] with hatchling backend,
    uv-dynamic-versioning, [dependency-groups], and inline [tool.tox] config
  • tox.ini — Deleted (config moved into pyproject.toml)
  • poetry.lock — Deleted (replaced by uv.lock)
  • uv.lock — Generated via uv lock
  • Makefile — All poetry references replaced with uv equivalents
  • README.md — Updated installation instructions from poetry to uv

New Files

  • .pre-commit-config.yaml — Standard hooks (end-of-file-fixer, check-yaml, check-toml,
    trailing-whitespace) + codespell

GitHub Actions Workflows

  • main.yaml — Restructured with quality-checks job (uv lock --check, pre-commit) + test job
    (matrix: py3.10+3.13 × ubuntu+windows)
  • build-publish-documentation.yaml — Replaced poetry with uv throughout
  • release.yaml — Split into build + pypi-publish (new: trusted publishing) + deploy-docs jobs
    ⚠️@sierra-moxon or someone with permissions on pypi needs to change the config (Sierra did it for linkml repo)
  • validate-yaml-syntax.yaml — Added setup-uv, installs yamllint via uv pip install --system

Pre-commit Whitespace Fixes

~100 files auto-fixed by the new pre-commit hooks (trailing whitespace, missing final newlines).
These are existing issues in the repo, not introduced by the migration.

@matentzn
Copy link
Contributor

Awesome, thanks! Maybe combine with #235?

@dalito
Copy link
Member Author

dalito commented Feb 18, 2026

Yes that would make sense. I wanted to ask you on that one. So we close #235 and do all "renovation" here if you agree.

@matentzn - Have you seen the current action error before (e.g. on #235)?

ValueError: The ifabsent value default_range of the range slot could not be processed

This was referenced Feb 18, 2026
@matentzn
Copy link
Contributor

matentzn commented Feb 19, 2026

@dalito I closed #235 in favour of this one here. Do you want me to migrate uv or do you want to do the honors? I am fine either way, but since it is your PR I thought I'd leave you the say :)

Renamed TestEntry → RewriteEntry and TestLists → RewriteRuleSets.
Pytest was trying to collect these as test classes because of the Test
prefix — they're just helper data structures.
Note: gh-actions are not yet switched in this commit
Also adds depandabot config as in linkml/linkml
for monthly updates as a single group PR.
@dalito dalito changed the title Drop py39 support and add py313 compatibility Modernize: Drop py39, add py313 compatibility, switch to uv Feb 20, 2026
@dalito dalito marked this pull request as ready for review February 20, 2026 01:41
@dalito dalito requested a review from matentzn February 20, 2026 01:41
@dalito dalito self-assigned this Feb 20, 2026
also changes version of actions/checkout to full version specifier
Copy link
Contributor

@matentzn matentzn left a comment

Choose a reason for hiding this comment

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

I might reach out to you regarding trusted publishing @dalito but I think I remember how to set it up

@matentzn matentzn merged commit 4f24ac7 into linkml:main Feb 20, 2026
8 checks passed
@dalito dalito deleted the drop-py39-support branch February 20, 2026 16:53
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