Skip to content

Migrate to uv for dependency management#85

Open
liquidz00 wants to merge 1 commit into
macadmins:mainfrom
liquidz00:chore/uv-tooling
Open

Migrate to uv for dependency management#85
liquidz00 wants to merge 1 commit into
macadmins:mainfrom
liquidz00:chore/uv-tooling

Conversation

@liquidz00

Copy link
Copy Markdown
Collaborator

Overview

Migrates the development workflow from pip/venv to uv. This PR only includes changes to tooling, it does not change source code whatsoever.

What Changed

Tooling

  • Added uv.lock for reproducible and pinned installs.
  • Makefile targets now use uv and all targets are declared .PHONY to prevent collisions
  • Build backend is unchanged, uv build produces the same sdist and wheel

CI

  • All workflows now install uv via pinned astral-sh/setup-uv with lockfile based caching and run through existing make targets
  • Test matrix now also covers Python 3.13 and 3.14 with the minimum remaining at 3.9

Docs

  • docs/contributing/index.rst → "Dev environment setup" updated to the uv flow (install uv, make install, no manual venv activation required)
  • User-facing install instructions are intentionally unchanged as end users still pip install jamf-pro-sdk

Why

uv gives reproducible installs from the lockfile that is committed, but my primary desire for migrating to uv is efficiency and ease. It sets up the environment much faster and is a single tool for envs, deps, and builds.

@liquidz00 liquidz00 requested a review from nstrauss as a code owner June 5, 2026 19:41

@nstrauss nstrauss left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Cloned locally and ran through all the new make commands with uv. Succeeded at each step with no issues. Resulting builds look identical as expected. I already see the associated matrix job passing (https://github.com/macadmins/jamf-pro-sdk-python/actions/runs/27036259358) across macOS and Ubuntu.

The only suggestion I have is to document how to update dependencies with uv as I'm sure that'll come up in the future. For those not familiar with the project, how can the lockfile be safely modified, and is it worth (or even a good idea) bumping dependencies automatically with something like Dependabot. Otherwise solid PR and the right direction for dependency management.

matrix:
os: [ubuntu-latest, macos-latest]
python-version:
- "3.9"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

With 3.9 being EOL we should remove from the matrix and drop support. Something we already talked about. Doesn't have to be in this PR.

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