Skip to content

Feature request: Support git URLs as package source for self-update #19

Description

@hasansezertasan

Use case

I'd like to distribute a package that isn't published to PyPI as a standalone binary with uvbox's built-in auto-update. The package source is a git repository.

Real-world example

I currently use pycrucible to build standalone executables for a microservice called croupier. The runner app declares the package as a git dependency:

[tool.uv.sources]
croupier = { git = "https://github.com/PaketMutfak/croupier" }

To achieve auto-updates, I use pycrucible's delete_after_run = true option as a workaround — it forces fresh dependency resolution on every run:

[tool.pycrucible.options]
delete_after_run = true  # Forces latest dependencies each run

I'd love to migrate to uvbox for its built-in auto-update and cross-compilation support, but the lack of git URL support for self update is a blocker.

Current behavior

  • uvbox pypi only accepts PyPI package names
  • uvbox wheel packages local wheels but self update can't fetch new versions from a remote source
  • There's no way to specify a git URL as the package source

Desired behavior

Support git URLs (e.g., git+https://github.com/org/repo) as a package source, so that:

  1. The initial install resolves from the git repository
  2. <app> self update fetches the latest version from the same git repository
  3. The auto-update = true version check works with git-hosted packages

Technical context

uv tool install already supports git URLs natively via the --from flag:

uv tool install --from git+https://github.com/org/repo app-name

This works with branches, tags, and commits:

uv tool install --from git+https://github.com/org/repo@main app-name
uv tool install --from git+https://github.com/org/repo@v1.0.0 app-name

So this feature request is essentially about exposing that existing uv capability through uvbox's configuration — for example, a new [package.source] field or a uvbox git subcommand:

[package]
name = "my-app"
source = "git+https://github.com/org/repo"

[package.version]
dynamic = "https://raw.githubusercontent.com/org/repo/main/VERSION"
auto-update = true

This would make uvbox viable for teams that distribute internal tools from private/public git repositories without needing to publish to PyPI.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions