Skip to content

Commit f0f56e1

Browse files
committed
Make sure we are using synchronized versions of LinkML packages.
Some of the Python dependencies we need to run workflows are themselves dependent on LinkML, which means they cause the installation of both `linkml` and its dependency `linkml-runtime`. It seems that these two packages must always be kept "in sync", but there are no explicit constraints in either of them to enforce that. So, we can end up `linkml` version 1.9.5 coupled with `linkml-runtime` version 1.10.0. That combination is perfectly valid according to the various version constraints (there is _no_ formal constraint that `linkml` 1.9.5 must use `linkml-runtime` < 1.10.0 -- and unless I missed something there is also no warning in the documentation that users should take care of always using the same version of these two packages), but it is broken in practice, because of some breaking changes that happened in `linkml-runtime` 1.10.0 (removal of a `Format.JSON` enumeration value). Sigh. Not only did the LinkML developers remove a public symbol in a minor release, they did so without so much as a warning in the release notes. LinkML, I obscenity in the milk of thy callous disregard for semantic versioning. So in this commit, we explicitly declare that we require version 1.10.0 at least of _both_ `linkml` and `linkml-runtime`.
1 parent 898d9dd commit f0f56e1

1 file changed

Lines changed: 9 additions & 1 deletion

File tree

pyproject.toml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ classifiers = [
1414
"Intended Audience :: Science/Research",
1515
"Topic :: Scientific/Engineering",
1616
]
17-
requires-python = ">=3.9"
17+
requires-python = ">=3.10"
1818
dependencies = [
1919
"click",
2020
"dacite",
@@ -68,6 +68,14 @@ workflows = [
6868
"babelon",
6969
"dosdp",
7070
"lightrdf",
71+
# We do not actually need LinkML directly, but we need to make sure
72+
# our dependencies use version 1.10.0 for BOTH `linkml` and
73+
# `linkml-runtime`; otherwise we could end up with linkml <= 1.9.6
74+
# coupled with linkml-runtime >= 1.10.0, and that combination is
75+
# broken because linkml-runtime introduced a breaking change
76+
# ("semantic versioning? what is that?").
77+
"linkml>=1.10.0",
78+
"linkml-runtime>=1.10.0",
7179
"mkdocs",
7280
"mkdocs-material",
7381
"mkdocs-mermaid2-plugin",

0 commit comments

Comments
 (0)