Skip to main content

An extremely fast Python package installer and resolver, written in Rust.

Project description

uv

uv image image image Actions status Discord

An extremely fast Python package installer and resolver, written in Rust. Designed as a drop-in replacement for pip and pip-compile.

uv is backed by Astral, the creators of Ruff.

Highlights

  • ⚖️ Drop-in replacement for common pip, pip-tools, and virtualenv commands.
  • ⚡️ 10-100x faster than pip and pip-tools (pip-compile and pip-sync).
  • 💾 Disk-space efficient, with a global cache for dependency deduplication.
  • 🐍 Installable via curl, pip, pipx, etc. uv is a static binary that can be installed without Rust or Python.
  • 🧪 Tested at-scale against the top 10,000 PyPI packages.
  • 🖥️ Support for macOS, Linux, and Windows.
  • 🧰 Novel features such as dependency version overrides and alternative resolution strategies.
  • ⁉️ Best-in-class error messages with a conflict-tracking resolver.
  • 🤝 Support for a wide range of advanced pip features, including: editable installs, Git dependencies, direct URL dependencies, local dependencies, constraints, source distributions, HTML and JSON indexes, and more.

Getting Started

Install uv with our standalone installers, or from PyPI:

# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh

# On Windows.
irm https://astral.sh/uv/install.ps1 | iex

# With pip.
pip install uv

# With pipx.
pipx install uv

To create a virtual environment:

uv venv  # Create a virtual environment at .venv.

To install a package into the virtual environment:

uv pip install flask                # Install Flask.
uv pip install -r requirements.txt  # Install from a requirements.txt file.
uv pip install -e .                 # Install the current project in editable mode.

To generate a set of locked dependencies from an input file:

uv pip compile pyproject.toml -o requirements.txt   # Read a pyproject.toml file.
uv pip compile requirements.in -o requirements.txt  # Read a requirements.in file.

To sync a set of locked dependencies with the virtual environment:

uv pip sync requirements.txt  # Install from a requirements.txt file.

uv's pip-install and pip-compile commands supports many of the same command-line arguments as existing tools, including -r requirements.txt, -c constraints.txt, -e . (for editable installs), --index-url, and more.

Limitations

uv does not support the entire pip feature set. Namely, uv does not (and does not plan to) support the following pip features:

  • .egg dependencies
  • Editable installs for Git and direct URL dependencies (editable installs are supported for local dependencies)

On the other hand, uv plans to (but does not currently) support:

Like pip-compile, uv generates a platform-specific requirements.txt file (unlike, e.g., poetry and pdm, which generate platform-agnostic poetry.lock and pdm.lock files). As such, uv's requirements.txt files may not be portable across platforms and Python versions.

Roadmap

uv is an extremely fast Python package resolver and installer, designed as a drop-in replacement for pip, pip-tools (pip-compile and pip-sync), and virtualenv.

uv represents an intermediary goal in our pursuit of a "Cargo for Python": a comprehensive project and package manager that is extremely fast, reliable, and easy to use.

Think: a single binary that bootstraps your Python installation and gives you everything you need to be productive with Python, bundling not only pip, pip-tools, and virtualenv, but also pipx, tox, poetry, pyenv, ruff, and more.

Our goal is to evolve uv into such a tool.

In the meantime, though, the narrower pip-tools scope allows us to solve the low-level problems involved in building such a tool (like package installation) while shipping something immediately useful with minimal barrier to adoption.

Advanced Usage

Python discovery

uv itself does not depend on Python, but it does need to locate a Python environment to (1) install dependencies into the environment and (2) build source distributions.

When running pip sync or pip install, uv will search for a virtual environment in the following order:

  • An activated virtual environment based on the VIRTUAL_ENV environment variable.
  • An activated Conda environment based on the CONDA_PREFIX environment variable.
  • A virtual environment at .venv in the current directory, or in the nearest parent directory.

If no virtual environment is found, uv will prompt the user to create one in the current directory via uv venv.

When running pip compile, uv does not require a virtual environment and will search for a Python interpreter in the following order:

  • An activated virtual environment based on the VIRTUAL_ENV environment variable.
  • An activated Conda environment based on the CONDA_PREFIX environment variable.
  • A virtual environment at .venv in the current directory, or in the nearest parent directory.
  • The Python interpreter available as python3 on macOS and Linux, or python.exe on Windows.

If a --python-version is provided to pip compile (e.g., --python-version=3.7), uv will search for a Python interpreter matching that version in the following order:

  • An activated virtual environment based on the VIRTUAL_ENV environment variable.
  • An activated Conda environment based on the CONDA_PREFIX environment variable.
  • A virtual environment at .venv in the current directory, or in the nearest parent directory.
  • The Python interpreter available as, e.g., python3.7 on macOS and Linux. On Windows, uv will use the same mechanism as py --list-paths to discover all available Python interpreters, and will select the first interpreter matching the requested version.
  • The Python interpreter available as python3 on macOS and Linux, or python.exe on Windows.

Since uv has no dependency on Python, it can even install into virtual environments other than its own. For example, setting VIRTUAL_ENV=/path/to/venv will cause uv to install into /path/to/venv, no matter where uv is installed.

Dependency caching

uv uses aggressive caching to avoid re-downloading (and re-building dependencies) that have already been accessed in prior runs.

The specifics of uv's caching semantics vary based on the nature of the dependency:

  • For registry dependencies (like those downloaded from PyPI), uv respects HTTP caching headers.
  • For direct URL dependencies, uv respects HTTP caching headers, and also caches based on the URL itself.
  • For Git dependencies, uv caches based on the fully-resolved Git commit hash. As such, uv pip compile will pin Git dependencies to a specific commit hash when writing the resolved dependency set.
  • For local dependencies, uv caches based on the last-modified time of the setup.py or pyproject.toml file.

If you're running into caching issues, uv includes a few escape hatches:

  • To force uv to revalidate cached data for all dependencies, run uv pip install --refresh ....
  • To force uv to revalidate cached data for a specific dependency, run, e.g., uv pip install --refresh-package flask ....
  • To force uv to ignore existing installed versions, run uv pip install --reinstall ....
  • To clear the global cache entirely, run uv clean.

Resolution strategy

By default, uv follows the standard Python dependency resolution strategy of preferring the latest compatible version of each package. For example, uv pip install flask>=2.0.0 will install the latest version of Flask (at time of writing: 3.0.0).

However, uv's resolution strategy be configured to prefer the lowest compatible version of each package (--resolution=lowest), or even the lowest compatible version of any direct dependencies (--resolution=lowest-direct), both of which can be useful for library authors looking to test their packages against the oldest supported versions of their dependencies.

For example, given the following requirements.in file:

flask>=2.0.0

Running uv pip compile requirements.in would produce the following requirements.txt file:

# This file was autogenerated by uv v0.0.1 via the following command:
#    uv pip compile requirements.in
blinker==1.7.0
    # via flask
click==8.1.7
    # via flask
flask==3.0.0
itsdangerous==2.1.2
    # via flask
jinja2==3.1.2
    # via flask
markupsafe==2.1.3
    # via
    #   jinja2
    #   werkzeug
werkzeug==3.0.1
    # via flask

However, uv pip compile --resolution=lowest requirements.in would instead produce:

# This file was autogenerated by uv v0.0.1 via the following command:
#    uv pip compile requirements.in --resolution=lowest
click==7.1.2
    # via flask
flask==2.0.0
itsdangerous==2.0.0
    # via flask
jinja2==3.0.0
    # via flask
markupsafe==2.0.0
    # via jinja2
werkzeug==2.0.0
    # via flask

Pre-release handling

By default, uv will accept pre-release versions during dependency resolution in two cases:

  1. If the package is a direct dependency, and its version markers include a pre-release specifier (e.g., flask>=2.0.0rc1).
  2. If all published versions of a package are pre-releases.

If dependency resolution fails due to a transitive pre-release, uv will prompt the user to re-run with --prerelease=allow, to allow pre-releases for all dependencies.

Alternatively, you can add the transitive dependency to your requirements.in file with pre-release specifier (e.g., flask>=2.0.0rc1) to opt in to pre-release support for that specific dependency.

Pre-releases are notoriously difficult to model, and are a frequent source of bugs in other packaging tools. uv's pre-release handling is intentionally limited and intentionally requires user intervention to opt in to pre-releases to ensure correctness, though pre-release handling will be revisited in future releases.

Dependency overrides

Historically, pip has supported "constraints" (-c constraints.txt), which allows users to narrow the set of acceptable versions for a given package.

uv supports constraints, but also takes this concept further by allowing users to override the acceptable versions of a package across the dependency tree via overrides (-o overrides.txt).

In short, overrides allow the user to lie to the resolver by overriding the declared dependencies of a package. Overrides are a useful last resort for cases in which the user knows that a dependency is compatible with a newer version of a package than the package declares, but the package has not yet been updated to declare that compatibility.

For example, if a transitive dependency declares pydantic>=1.0,<2.0, but the user knows that the package is compatible with pydantic>=2.0, the user can override the declared dependency with pydantic>=2.0,<3 to allow the resolver to continue.

While constraints are purely additive, and thus cannot expand the set of acceptable versions for a package, overrides can expand the set of acceptable versions for a package, providing an escape hatch for erroneous upper version bounds.

Multi-version resolution

uv's pip-compile command produces a resolution that's known to be compatible with the current platform and Python version. Unlike Poetry, PDM, and other package managers, uv does not yet produce a machine-agnostic lockfile.

However, uv does support resolving for alternate Python versions via the --python-version command line argument. For example, if you're running uv on Python 3.9, but want to resolve for Python 3.8, you can run uv pip compile --python-version=3.8 requirements.in to produce a Python 3.8-compatible resolution.

Platform support

uv has Tier 1 support for the following platforms:

  • macOS (Apple Silicon)
  • macOS (x86_64)
  • Linux (x86_64)
  • Windows (x86_64)

uv is continuously built, tested, and developed against its Tier 1 platforms. Inspired by the Rust project, Tier 1 can be thought of as "guaranteed to work".

uv has Tier 2 support ("guaranteed to build") for the following platforms:

  • Linux (PPC64)
  • Linux (PPC64LE)
  • Linux (aarch64)
  • Linux (armv7)
  • Linux (i686)
  • Linux (s390x)

uv ships pre-built wheels to PyPI for its Tier 1 and Tier 2 platforms. However, while Tier 2 platforms are continuously built, they are not continuously tested or developed against, and so stability may vary in practice.

Beyond the Tier 1 and Tier 2 platforms, uv is known to build on i686 Windows, and known not to build on aarch64 Windows, but does not consider either platform to be supported at this time.

uv supports and is tested against Python 3.8, 3.9, 3.10, 3.11, and 3.12.

Acknowledgements

uv's dependency resolver uses PubGrub under the hood. We're grateful to the PubGrub maintainers, especially Jacob Finkelman, for their support.

uv's Git implementation is based on Cargo.

Some of uv's optimizations are inspired by the great work we've seen in pnpm, Orogene, and Bun. We've also learned a lot from Nathaniel J. Smith's Posy and adapted its trampoline for Windows support.

License

uv is licensed under either of

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in uv by you, as defined in the Apache-2.0 license, shall be dually licensed as above, without any additional terms or conditions.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uv-0.1.0.tar.gz (1.5 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

uv-0.1.0-py3-none-win_amd64.whl (8.0 MB view details)

Uploaded Python 3Windows x86-64

uv-0.1.0-py3-none-win32.whl (7.1 MB view details)

Uploaded Python 3Windows x86

uv-0.1.0-py3-none-musllinux_1_2_x86_64.whl (10.2 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

uv-0.1.0-py3-none-musllinux_1_2_i686.whl (9.7 MB view details)

Uploaded Python 3musllinux: musl 1.2+ i686

uv-0.1.0-py3-none-musllinux_1_2_armv7l.whl (8.6 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

uv-0.1.0-py3-none-musllinux_1_2_aarch64.whl (9.8 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

uv-0.1.0-py3-none-manylinux_2_28_armv7l.whl (8.6 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARMv7l

uv-0.1.0-py3-none-manylinux_2_28_aarch64.whl (9.9 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

uv-0.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

uv-0.1.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (10.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

uv-0.1.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (10.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

uv-0.1.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (11.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64

uv-0.1.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (10.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

uv-0.1.0-py3-none-macosx_10_12_x86_64.whl (9.3 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

uv-0.1.0-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (18.6 MB view details)

Uploaded Python 3macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

File details

Details for the file uv-0.1.0.tar.gz.

File metadata

  • Download URL: uv-0.1.0.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for uv-0.1.0.tar.gz
Algorithm Hash digest
SHA256 93015f29d11855fa38b607703f244a0c5d59606d3401a6be63e1230c67292844
MD5 64325146c389d2012556f9eb9323f6cc
BLAKE2b-256 394314eac6b83b91f63045c3e3ea63a8ad2120149928e7ea266d0297664943cf

See more details on using hashes here.

File details

Details for the file uv-0.1.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: uv-0.1.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 8.0 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for uv-0.1.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 2ddf5a4870c690bbd279dfc4472af6d780c3b2daf05d03097f54e4c9a827123a
MD5 0068c9360f767cc20aace1030d4ca1c0
BLAKE2b-256 8e81198492aa77532fba2c1fa8c3654e197e67e7dffcf1059b097bcb4b9df800

See more details on using hashes here.

File details

Details for the file uv-0.1.0-py3-none-win32.whl.

File metadata

  • Download URL: uv-0.1.0-py3-none-win32.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for uv-0.1.0-py3-none-win32.whl
Algorithm Hash digest
SHA256 9ec89bd44b3d305aa0de9ec6c219e4ab35d71febf4b473fa5d9ea516262ad77d
MD5 36c397967e77fd9f91a0e61207e4f686
BLAKE2b-256 0bc8bb23f5fab43e435a2a0d647ee8222c9b6b5165a161847bd655e8b63f53d6

See more details on using hashes here.

File details

Details for the file uv-0.1.0-py3-none-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: uv-0.1.0-py3-none-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 10.2 MB
  • Tags: Python 3, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for uv-0.1.0-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bde6a79f37e29b7ab0d7b0535c47bb00d2b25605f695aa55e5e6e7396f908d33
MD5 dc7d231da96e603aa9fc088cea9b7b28
BLAKE2b-256 809d43647d273f5e7544ca3ef7467db427c937d90e19b1e058990fef0502d070

See more details on using hashes here.

File details

Details for the file uv-0.1.0-py3-none-musllinux_1_2_i686.whl.

File metadata

  • Download URL: uv-0.1.0-py3-none-musllinux_1_2_i686.whl
  • Upload date:
  • Size: 9.7 MB
  • Tags: Python 3, musllinux: musl 1.2+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for uv-0.1.0-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 f81f63e82baccb528448c57faea9cc92d34e3550005375d5c801a1f273883fda
MD5 b29b935e12c67eda9453247719575239
BLAKE2b-256 37bc38d69248a3cadc358548a462ccee71faaffc9fd30756fddbb59b5d2e7202

See more details on using hashes here.

File details

Details for the file uv-0.1.0-py3-none-musllinux_1_2_armv7l.whl.

File metadata

  • Download URL: uv-0.1.0-py3-none-musllinux_1_2_armv7l.whl
  • Upload date:
  • Size: 8.6 MB
  • Tags: Python 3, musllinux: musl 1.2+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for uv-0.1.0-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 5a66c55a2ad4614f333ea250c9c07989be8ab8a829beb4190c295a00b821db9e
MD5 8e60828064f7e325a4346b34334c042f
BLAKE2b-256 76dfeb5de3d90f0f03bc869d9b12456b7cfa0483940e158c0bd56a6e1188f304

See more details on using hashes here.

File details

Details for the file uv-0.1.0-py3-none-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: uv-0.1.0-py3-none-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 9.8 MB
  • Tags: Python 3, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for uv-0.1.0-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1a9441d235c6f3bb47ef0247da25640ec956493aeeb2b2a104843aab30c81725
MD5 7791b35d8bdccfea69338c63f5501885
BLAKE2b-256 e7735367cc3b560d0f2f7348c6ad4fe917accf9f589bb800c928fb98139561f7

See more details on using hashes here.

File details

Details for the file uv-0.1.0-py3-none-manylinux_2_28_armv7l.whl.

File metadata

  • Download URL: uv-0.1.0-py3-none-manylinux_2_28_armv7l.whl
  • Upload date:
  • Size: 8.6 MB
  • Tags: Python 3, manylinux: glibc 2.28+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for uv-0.1.0-py3-none-manylinux_2_28_armv7l.whl
Algorithm Hash digest
SHA256 999621267d01b25f249435e32bd75efcf89c5e59ffc035b1c28accc99824c02c
MD5 dee6f2a55e29052d176d8b516fe529f5
BLAKE2b-256 3c1e3d3e580b3445d80c2840f69123fd9c4158ba9f4842d8fb157b2c94bc019e

See more details on using hashes here.

File details

Details for the file uv-0.1.0-py3-none-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: uv-0.1.0-py3-none-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 9.9 MB
  • Tags: Python 3, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for uv-0.1.0-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7b8289914256e7926ba1e89a99c7ef40c7d73f67e7ba7f08ff9efb7dd60189c5
MD5 fce8026f985c1bd7bad8ad2832161ed3
BLAKE2b-256 50690cef44dc60a7bd034a75eaa395f182fb4191d791b781665b94cbbd045979

See more details on using hashes here.

File details

Details for the file uv-0.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for uv-0.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 aa5b37239c1011450b4b21e5e2cff727e8fb13d25ca4cd818137b0291e14fb6f
MD5 a860eb7ff0da68fb5e380bf43d425d76
BLAKE2b-256 bc1ac974db539c542ef25af8d072497bae9a685edda91399391f0ba14dcd3177

See more details on using hashes here.

File details

Details for the file uv-0.1.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for uv-0.1.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 3130fcc09c93e6f6b96e74f307b4010cf6d3a3db44b66b8f81ba7ed95d45c839
MD5 040f6c181b01974fb1738e312fcb1535
BLAKE2b-256 2fd32b1b3aeb8e9268e677e7eb174ccbf3c4eb85bccad57eececdf10f7b18407

See more details on using hashes here.

File details

Details for the file uv-0.1.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for uv-0.1.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 44ff0a511c97633ce2d999f25816cccb1f89e95c911fe319136ea9e9582db6dc
MD5 32346f7c9f28914da2c240050f54a768
BLAKE2b-256 8075f778c04dc2c9dd53cda6c264eef72d3c4971b8397aecb71b2a2713f285c6

See more details on using hashes here.

File details

Details for the file uv-0.1.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl.

File metadata

File hashes

Hashes for uv-0.1.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 a58bccee207dfa24f8c9cae3ad5bed08e85ef3e643fc8a5fde1a26e00671ec76
MD5 dd65caac219faccfd10dfc19763d444f
BLAKE2b-256 697dac10635eda340fd3c74bdda2e903bb1f31a02c08d8c9c96c168a6b072cd1

See more details on using hashes here.

File details

Details for the file uv-0.1.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for uv-0.1.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 acaeeeda2622ca6c3eb9071fefd2820b498aef14ce82814b680ced6dee718760
MD5 76791c8216f8e735cdb86c4bef0e13ef
BLAKE2b-256 796ab14e0e7e9fcff64a42f5e7fb1b63ad44ba2a35db22f74f170b9c5f57c5e6

See more details on using hashes here.

File details

Details for the file uv-0.1.0-py3-none-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: uv-0.1.0-py3-none-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 9.3 MB
  • Tags: Python 3, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for uv-0.1.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 093049b60277afbc2bfcc1905cd6848b3677e9f0f1c96971ff69c7451acb4c3c
MD5 03332880fd4568e5627aad168374eb66
BLAKE2b-256 a5b6a84735682ce516f1c8890eaff243f9ad825081a484f7bde943625c797877

See more details on using hashes here.

File details

Details for the file uv-0.1.0-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for uv-0.1.0-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 71291b3b3222da25a6af5ab9dfaec3bdd97fd4f0d21cf38a04cbd63000fa9da5
MD5 1b2bdf4f82219f3131e4833ccba91c96
BLAKE2b-256 0ce3415f40a86918316951b69b42661731bf6c5e5007f4063bc564773aec4815

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page