Skip to main content

wox

pipeline status coverage report

Wox is a lightweight Python task automation tool designed to simplify development workflows. It allows you to run tasks in isolated Python environments, manage dependencies, and execute commands exactly as you would in your terminal.

With wox, you can:

  • Run tests across multiple Python versions effortlessly.
  • Automate common tasks like linting, formatting, or documentation generation.
  • Execute any shell command or entry point from Python or other languages (Java, C, JavaScript, …) in a controlled environment.
  • Keep your workspace clean with .wox, where virtual environments and logs are automatically managed.

Wox gives you full transparency and control over your automation: no hidden behaviors, no surprises. You declare your tasks in a wox.toml or pyproject.toml file, and wox handles the rest.

Example

As an example, here is how wox ensures its own compatibility across Python versions:

[wox_configuration]
recreate_envs = false

[testing]
envlist = ['py310', 'py311', 'py312', 'py313', 'py314']
deps = ['-r requirements.txt', '-e .']
commands = ['python -B -m pytest']

Check more examples on the Quickstart section of the documentation.

Quickstart

Install with pip:

pip install wox

Or use pipx to run wox without Python virtual environments:

pipx install wox

If you’re a uv enthusiast, you can run it directly thanks to uvx, the alias for uv tool run:

uvx wox

Then, create a task in your wox.toml and run it with:

wox

Documentation

Check the documentation for detailed guides and examples.

Why wox?

At some point, I needed to validate a framework against Python 3.6. While the code itself was still compatible, the tooling ecosystem had already started to move on. In particular, virtualenv had dropped support for creating environments targeting Python versions older than 3.7.

This raised a broader concern: if tooling stops supporting older interpreters today, what guarantees do we have that it will not move further tomorrow?

In many critical environments, Python versions do not evolve at the same pace as the ecosystem. Long-term support constraints, certification processes, or operational risks often require running stable - and sometimes old - Python interpreters for years.

Rather than working around this limitation, wox emerged from a simple requirement: executing tasks against explicitly selected Python interpreters, in a fully isolated and reproducible way, without relying on assumptions made by the surrounding tooling.

As development progressed, something became apparent: wox was sufficiently abstract and robust to support use cases far beyond my original problem.

Testing across Python versions, comparing custom builds, benchmarking interpreters, onboarding new developers, running non-Python tooling — none of these required special handling. They naturally fell out of the same execution model.

Wox did not grow by accumulating features, but by revealing the consequences of its design. New use cases emerged not because they were planned, but because the underlying abstraction held.

Contribution

Have an idea to improve wox and don't know how to give it a go? Check the CONTRIBUTION.md and propose your feature with a merge request.

Metadata

Release files for wox 0.1.0

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

Source distribution (sdist)

Source distribution for wox 0.1.0
File Size Uploaded Provenance Actions
wox-0.1.0.tar.gz 136.4 kB Without provenance Details for wox-0.1.0.tar.gz

Built distribution (wheel)

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

Total release size: 169.1 kB

Release files / wox-0.1.0.tar.gz

Download URL wox-0.1.0.tar.gz
Size 136.4 kB
Tags Source
SHA-256 checksum
How to use checksums
17b0025be7ba633a05cbbd7b9d5e135247d8435336e9cf550e0e2069fd72c18f
BLAKE2b-256 checksum
How to use checksums
873871fc1af8b8a87227852caad1b13d0e197af813d5be3b7aed7395ebc56345
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.2.0 CPython/3.11.13

Release files / wox-0.1.0-py3-none-any.whl

Download URL wox-0.1.0-py3-none-any.whl
Size 32.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9ad42898a0219f6901d11a27c5fde940258414294128b92483aca4c9a979dd7a
BLAKE2b-256 checksum
How to use checksums
3b25570d7d2aa8af50dea0038083fef38a81794fa27a6729ef8335014ea4e79b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.2.0 CPython/3.11.13

Security for wox 0.1.0

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