Skip to main content

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

uv tool install tires

pip

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 back ends (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

Metadata

Release files for tires 0.1.12

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tires 0.1.12
File Size Uploaded Provenance
tires-0.1.12.tar.gz 4.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for tires 0.1.12
File Interpreter ABI Platform
tires-0.1.12-py3-none-any.whl Python 3 none any Details

Total release size: 10.0 kB

Release files / tires-0.1.12.tar.gz

Download URL tires-0.1.12.tar.gz
Size 4.7 kB
Tags Source
SHA-256 checksum
How to use checksums
1a0007ad6cd5fc2d0055e5e8058a4d611a0712e1a3af84ad9061191e07a57bf7
BLAKE2b-256 checksum
How to use checksums
5a17222d01e38dc1d4d3bd96fc1d1a92bd7e1aac5dc0b293b49bc2c174f57d1e
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release files / tires-0.1.12-py3-none-any.whl

Download URL tires-0.1.12-py3-none-any.whl
Size 5.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5e5b109c6d45862568693a0e23272b8c1972ec687783e2f3f6d3c14bf2d50b7d
BLAKE2b-256 checksum
How to use checksums
23c9b176920f203cd9fe1999c95deeb50e2a97acfac4f215e347de79497aadb0
Upload date
Uploaded using Trusted Publishing?
What is 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}

Security for tires 0.1.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page