Needy
A tiny library for writing tests that depend on optional packages, without having everything crash when a package you need is just not there…
Installation
Python 3.11+ is required.
pip install pyneedy # needy was already taken ( ╥_╥)
Quick Start
Define a probe for the optional dependency you want to use, like JAX:
def jax_module() -> None:
import jax as jax
Then just mark the tests that need it with @needs.to_run(...):
from needy import needs
@needs.to_run(jax_module)
def test_that_uses_jax() -> None:
import jax.numpy as jnp
assert jnp.array([1.0, 2.0]).sum() == 3.0
If jax is installed, the test runs. If it isn't, the test is just skipped instead of crashing the whole suite. Yay!
For optional imports at the top of a file (which would normally fail at collection time), use needs.modules(...). See the docs for more.
Documentation
| Getting started | The basics: probes and @needs.to_run(...) |
| Optional imports | Handle missing modules at import time with needs.modules |
| Subtests | Mix required and optional paths in one test |
| API reference | Every type and function in one place |
Development
Prerequisites:
Get set up:
git clone https://gitlab.com/pytooling/needy.git
cd needy
uv sync
uv run pre-commit install
Run all checks (lint, format, type-check, tests):
just check
Or manually:
uv run ruff check --fix && uv run ruff format && uv run pyright && uv run pytest
License
MIT, see LICENSE.
Metadata
Release files for pyneedy 1.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pyneedy-1.4.1.tar.gz | 10.8 kB | Without provenance | Details for pyneedy-1.4.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pyneedy-1.4.1-py3-none-any.whl | Python 3 | none | any | Details for pyneedy-1.4.1-py3-none-any.whl |
Total release size: 24.3 kB
Release files / pyneedy-1.4.1.tar.gz
| Download URL | pyneedy-1.4.1.tar.gz |
|---|---|
| Size | 10.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cafe258d237a34d38b315ee661a48ad5f55b12974591db9ab4360e26256bd319
|
|
BLAKE2b-256 checksum How to use checksums |
f53f5706a2c8d28817c798c26cb8f6975e58c2066c95acc5ea9f3fe034f41a23
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pyneedy-1.4.1-py3-none-any.whl
| Download URL | pyneedy-1.4.1-py3-none-any.whl |
|---|---|
| Size | 13.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ab03539835f51f2293d8ff3e9c7bdc6309183ca30ec63f3828dd0ce8896dbd6e
|
|
BLAKE2b-256 checksum How to use checksums |
fef9f080b44fcfbc9b16a40874fcef494ea6b51cd87dfbdc7bc2208ad91730c6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for pyneedy 1.4.1
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.