Skip to main content

Install wheels in parallel

Project description

Tires

CI Status PyPI Version PyPI Downloads

A cli tool to download wheels in parallel.

tires is a solution for mirroring packages. Tools like bandersnatch will download every PyPI version of a package, which can be overkill if you want only a single version of a package. bandersnatch also does not download the dependencies. On the other hand, pip wheel downloads wheels for your package and its dependencies, and nothing more, but the downloads are sequential.

tires seeks to be something in the middle . tires compiles the dependencies listed in a toml file with uv pip compile (fast/parallel due to uv), enumerates the unique packages, then downloads and, if needed, builds the wheels with uvx -p <python-version> pip wheel --no-deps in parallel. Multiple versions of the same package, for different python versions, can be downloaded. Wheels are built only for the current platform.

Installation

uv tool install tires

# Or
pip install tires

Usage

The following will download wheels for packages listed in manifest.toml (can be named anything.toml) to wheels/.

tires get /path/to/manifest.toml /path/to/wheels/

Manifest File Format

The manifest file is a TOML file with a [packages] table. Each package is defined as a key under [packages] with a table of options.

Options

  • versions: A list of version specifiers (strings). Each specifier can be:
    • An exact version (e.g., "1.26.4")
    • A version range (e.g., ">=70,<73")
    • An empty string (meaning "latest")
  • python: A list of Python version strings (e.g., ["3.10", "3.12"]) for which to build wheels.
  • torch-backend: (Optional) A list of torch backends (e.g., ["cu126", "auto"]) as supported by uv.
  • index: (Optional) A custom package index URL.

Examples

See the examples/ directory for sample manifest files.

Basic manifest (examples/manifest.toml)

# Basic usage. Can specify a PyPI package name or github url.
[packages]
scipy = {}  # just a package name from PyPI
'git+https://github.com/lanl/tires.git' = {}  # GitHub URL to python package

# Inline specification of package versions and python versions
# The empty string triggers download of the latest numpy version.
numpy = { versions = ["2.4.1", "1.26.4", ""], python = ["3.10", "3.13"] }

# Table specification of package versions and python versions 
[packages.setuptools]
versions = [">=70,<73", ">79", ">81"] # can specify versions and bounds
python = ["3.12"] # can specify python version

# Can specify torch backend, like in uv
[packages.torch]
torch-backend = ["cu126"]
python = ["3.12"]

Notes

  • If versions is not specified, it defaults to the latest stable release version.

  • If python is not specified, it defaults to the Python versions provided to the tires get command (or the default: "3.10 3.11 3.12 3.13 3.14").

  • An empty string in versions ("") is interpreted as "latest".

  • Version specifiers that do not start with an operator (like "==", ">=", etc.) are treated as exact versions and will be prefixed with "==".

  • Git dependencies can be specified directly as a string (e.g., 'git+https://github.com/lanl/tires.git' = {}) or as a key with options.

  • The toml file must not list the same package more than once. For example, the following is not allowed.

    numpy = { python = ["3.11"] }
    numpy = { python = ["3.10"] }
    

    You must rewrite as

    numpy = { python = ["3.10", "3.11"] }
    

    However, including both scipy and numpy is fine, even though scipy depends on numpy.

LANL Software Release Information

  • O5084

Project details


Download files

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

Source Distribution

tires-0.1.5.tar.gz (4.6 kB view details)

Uploaded Source

Built Distribution

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

tires-0.1.5-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

Details for the file tires-0.1.5.tar.gz.

File metadata

  • Download URL: tires-0.1.5.tar.gz
  • Upload date:
  • Size: 4.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for tires-0.1.5.tar.gz
Algorithm Hash digest
SHA256 2d6804fa1062e10753ba6d546bdd0ac127a245371d6d6e5a9965dca9f89491a2
MD5 489bf56cc509cf5c03a3761f4bba230f
BLAKE2b-256 dd729017fab63efb29d3437306fdf50a822131bc8d50fccfe4dfb647fa62f321

See more details on using hashes here.

File details

Details for the file tires-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: tires-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 5.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for tires-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 5c66033daeb36d06883eedebeefecf4f1f82c325b972bc95ac7700df036187c3
MD5 a3a66ede02bbe5a9c35647ee135a1f6c
BLAKE2b-256 1d2d2d8fdf69edf5b9b5b6c4f63fa3a741a4380e6cd2113c39de8fe89273f6cb

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