Repository navigation
Relax dependency pins to version ranges after 3.22 - #109
Conversation
Replace the exact pins from the 3.22 release with version ranges of the
form `>=<pinned>,<next major>`. Dev builds of the meta package published
from main then resolve to the latest development versions of all Dissect
modules when installed with `--pre`, for example:
uv run --pre --with dissect target-shell
Pins are restored in the release commit for the next version.
There was a problem hiding this comment.
🟡 Changes recommended
The chosen upper bounds (e.g. <5, <4) still allow next-major prereleases like 5.0.devN/4.0.devN under PEP 440 when --pre is used, which can defeat the “exclude breaking next-major dev versions” intent.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
This PR updates the dissect meta-package dependency specifiers so that, after the 3.22 release, development installs (e.g. uv run --pre --with dissect ...) can resolve to newer prerelease builds of the component modules instead of being locked to the last stable pins.
Changes:
- Replace exact
==pins for Dissect modules with version ranges (>= last_release, < next_major) inpyproject.toml. - Keep lower bounds anchored to the 3.22 release versions to prevent the resolver from selecting older module releases.
File summaries
| File | Description |
|---|---|
| pyproject.toml | Switch Dissect module dependencies from exact pins to bounded ranges to enable prerelease resolution on main. |
Review details
Suppressed comments (1)
pyproject.toml:52
- Similarly,
<4will still allow4.0.devNwhen--preis used, which undermines the intent of preventing next-major breaking changes from being pulled in during prerelease installs. Consider using<4.0a0if you want to exclude all 4.x prereleases while still allowing 3.x dev builds.
"dissect.target[full]>=3.25.1,<4",
- Files reviewed: 1/1 changed files
- Comments generated: 1
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
twiggler
left a comment
There was a problem hiding this comment.
Hi,
I think a downside of this approach is that it adds commit noise.
Moreover, with the monorepo approach, there are no more dev packages because the workspace has the live source code for all internal dependencies.
Instead you can clone and do uv run or use uv tool install git+https: (should work but untested)
I agree that after a monorepo approach this will definitely add commit noise after each release. But currently (before monorepo era) this should be minimal as we don't release often. Also, I think using My goal is mainly to make it easy as possible to run the latest development version for users (and developers) without installing too many dependencies (some require pre-built wheels for example). Wen monorepo? :) |
|
I think
We won't publish dev packages to PyPI anymore? I didn't realize that, that's a regression in my eyes. The dev packages are on the one hand for our own development purposes, but also serve as user-facing access to pre-release packages. |
|
Monorepo discussions aside, do we see any issues merging this? It will be a big quality of life improvement for people who just want to run the latest development version |
|
I don't see any issue with this. |
Can you approve review? |
When you currently use a
--prepackage of thedissectmeta package it will still use the pinned version of the latest stable release. We should relax the dependency pins after the release so a new dev package is created for thedissectmeta package.This allows users to use the
dissectmeta package when testing without referencingdissect.targetall the time (which is where main development takes place, but not always).After this is merged we can then just call:
Also, i've chosen version ranges for now, but this means that
dissect.cstructis pinned to <5, whiledissect.cstructis preparing for a5.0release. This means it will not install the latest development version ofdissect.cstruct, but still stay at the development versions of 4.x.Feedback is appreciated if we should drop the version ranges of the dependencies all together.
Closes #110