Adopt a proper cross-package dependency strategy for the monorepo (evaluate `uv` workspaces)
Maintainers usually reply within 2 days
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 32/100
- Issue type
- Refactor
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- docker, python
- Domain
- build-system, devops, release
Research direction
Start by comparing sdk/pyproject.toml, compliance_tool/pyproject.toml, server/pyproject.toml, the server Dockerfiles, and the release workflows. Evaluate the setuptools convention against uv workspaces, including the compatible lockstep constraint and issue #605. Done means local installs use ./sdk while published packages resolve the compatible PyPI dependency, with all three packages and release workflows aligned.
Written by the indexing model from the issue text.
Description
Currently, the three packages in this monorepo (sdk, compliance_tool, server) each handle their inter-package dependency on basyx-python-sdk differently, and none of them enforce the compatibility the monorepo is supposed to guarantee:
compliance_tool/pyproject.tomldeclares a plain version constraint (basyx-python-sdk>=1.0.0). This publishes cleanly to PyPI, but the pin is deliberately loose. For local development it relies on the convention that./sdkis installed first (so the already-installed sibling satisfies the constraint), and nothing actually ties it to the compatible SDK state.server/pyproject.tomldoes not declarebasyx-python-sdkas a dependency at all; its Dockerfiles install it manually (RUN pip install ../../sdkthenRUN pip install ..), so the DockerHub publish works but the package itself is not self-describing. Already tracked as #459.
I've encountered this underlying tension quite often now. The whole point of the monorepo is that the three packages have mutually compatible states, so a local install should use the sibling ./sdk tree, while a published install should pull the compatible version from PyPI. There are two ways to resolve this:
- Stay on setuptools, keep a normal version constraint, and formalize the install-ordering convention (install
./sdkeditable first so it satisfies the constraint). This is low-churn and already roughly how things work, but nothing enforces the ordering, and expressing a correct lockstep pin is awkward withsetuptools_scm-derived versions. - Migrate to
uvworkspaces.[project.dependencies]keeps a normal constraint (basyx-python-sdk), and[tool.uv.sources]with{ workspace = true }points at the local sibling for development. That source is dev-only metadata thatuvstrips from the published wheel, so local resolves to./sdkand the published artifact carries only the PyPI constraint — the behavior we keep reaching for, enforced by the tool rather than by convention.
We should decide between these and, if we go with uv, migrate the packaging/dependency management for all three packages and their release workflows, settling on the correct lockstep version constraint between them. This would subsume the server-specific fix in #459.
When touching this, also fix #605 in the same pass.
- Dominant language
- Python
- Stars
- 102
- Forks
- 53
- PR merge metrics
- No merged PRs in 30d
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from eclipse-basyx/basyx-python-sdk
-
CI: Schema files are written to a path the tests don't read, so the schema tests always skipPossibly taken @LGUIUX claimed this 8 days ago. Openbug high priority
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
eclipse-basyx/basyx-python-sdk#637 ·
Maintainers usually reply within 2 days
-
adapter.json: `Entity` serializes an empty `specificAssetIds` array, which the schema rejectsPossibly taken @LGUIUX claimed this 8 days ago. Openbug high priority
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
eclipse-basyx/basyx-python-sdk#636 ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
eclipse-basyx/basyx-python-sdk#634 · 2 comments ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
eclipse-basyx/basyx-python-sdk#632 ·
Maintainers usually reply within 2 days
-
bug high priority
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
eclipse-basyx/basyx-python-sdk#631 ·
Maintainers usually reply within 2 days
All issues in eclipse-basyx/basyx-python-sdk
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
spec-kitty/spec-kitty#5319 ·
Maintainers usually reply within 1 day
-
backend::vllm diffusion multimodal
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
openai/openai-agents-python#5229 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Maintainers usually reply within 1 day