For those who want the full story, read the docs. For everyone else, here's the gist.
What is this? 🤔
It's a computer vision library. You write Python, because you're not a masochist. But when your code inevitably becomes a bottleneck, you need speed. That's where this library can help.
The philosophy is simple:
Write Python. When it's slow, make it fast with C++.
Does it actually work? 🚀
Yes. Here's a Non-Maximum Suppression (NMS) benchmark. We pitted our C++ implementation against a standard NumPy version.
import time
import numpy as np
from nextcv.postprocessing import nms_cpp, nms_np
# A respectable amount of data
N = 10000
rng = np.random.default_rng(42)
bboxes = rng.uniform(0, 100, (N, 4)).astype(np.float32)
scores = rng.uniform(0.1, 1, N).astype(np.float32)
# Time the C++ version
start_time = time.perf_counter()
result_cpp = nms_cpp(bboxes, scores, 0.5)
cpp_time = time.perf_counter() - start_time
# Time the NumPy version
start_time = time.perf_counter()
result_np = nms_np(bboxes, scores, 0.5)
np_time = time.perf_counter() - start_time
print("NMS Timing Comparison:")
print(f" Dataset: {len(bboxes)} bounding boxes")
print(f" nms_cpp(): {len(result_cpp)} boxes kept in {cpp_time * 1000:.2f}ms")
print(f" nms_np(): {len(result_np)} boxes kept in {np_time * 1000:.2f}ms")
Fingers' crossed, the C++ version is significantly faster. 🎯
How do I use it? 🛠️
Prerequisites
# Ubuntu/Debian
sudo apt-get install libeigen3-dev cmake
# MacOS
brew install eigen cmake
Installation 📦
pip install nextcv
# or from git
pip install git+https://github.com/kevinconka/nextcv.git
# uv
uv add nextcv
Check it's working ✅
uv run python -c "import nextcv; print(nextcv.__version__)"
Building from source 🔨
This project uses a dual-configuration approach to support both modern development and legacy compatibility:
- Modern builds (Python 3.9+): Uses
scikit-build-corewithpyproject.toml - Legacy builds (Python 3.6...3.8): Uses
scikit-buildwithpyproject.legacy.toml+setup.py
For development:
# create a virtual environment
python -m venv .venv
source .venv/bin/activate
pip install -e .
# or let uv handle it for you
uv sync
For legacy builds (Python 3.6...3.8):
# Copy legacy config and build
cp pyproject.legacy.toml pyproject.toml
pip install -e .
Contributing 🤝
If you think you can make this better, feel free. Just don't break anything.
-
Fork it.
-
Create a branch. (
git checkout -b my-brilliant-idea) -
Install UV (if you don't have it yet).
curl -LsSf https://astral.sh/uv/install.sh | sh
-
Install C++ tools.
# macOS brew install clang-format llvm # Add LLVM to PATH (add to ~/.zshrc or ~/.bash_profile) echo 'export PATH="/usr/local/opt/llvm/bin:$PATH"' >> ~/.zshrc # Ubuntu/Debian sudo apt-get install clang-format clang-tidy
-
Set up the environment.
uv sync uvx pre-commit install
-
Write code. And tests. Don't forget the tests.
-
Run the checks.
uv run pytest uvx pre-commit run --all-files
-
Open a pull request. Make it a good one.
That's it. Now you know. 🎉
Metadata
Release files for nextcv 1.0.3
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 |
|---|---|---|---|---|
| nextcv-1.0.3.tar.gz | 212.8 kB | Without provenance | Details for nextcv-1.0.3.tar.gz |
Built distributions (wheels)
Total release size: 2.8 MB
Release files / nextcv-1.0.3.tar.gz
| Download URL | nextcv-1.0.3.tar.gz |
|---|---|
| Size | 212.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7f5001008660725a49f70fae7fd3c25ce1cf6768006984aec2749bab663674a7
|
|
BLAKE2b-256 checksum How to use checksums |
b396a3db7ee049124b9879ff487127400bb6acfb542883d3641769d7aaa555d8
|
| 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 / nextcv-1.0.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | nextcv-1.0.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 187.2 kB |
| Tags | CPython 3.13 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
a88b6824a813b2c8b7d75c044347ff5a9f55583c29a106677415a3754daaae88
|
|
BLAKE2b-256 checksum How to use checksums |
a62d0debbdf509bd83f08f04c51742f5269cedaa7b0c467fc674e9f5822efec9
|
| 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 / nextcv-1.0.3-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
| Download URL | nextcv-1.0.3-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 173.1 kB |
| Tags | CPython 3.13 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
b945851ed34eb18818183b7bc15c9b161b87969ca88e38c286a3424e5839a0da
|
|
BLAKE2b-256 checksum How to use checksums |
8b945916a69618e2e8b799acf8c4d539e8f01ebacee7c5d22217fabc318c6263
|
| 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 / nextcv-1.0.3-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | nextcv-1.0.3-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 161.5 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
40e7c61e0534663e8c14d3fcf1e0028848fe02e87a96d906b4f0b9e4cdbb8370
|
|
BLAKE2b-256 checksum How to use checksums |
4fd4cd763c78a0d24ea8796216ef8b541a66bba659c6279ce9e0f0203b39f4f0
|
| 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 / nextcv-1.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | nextcv-1.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 187.2 kB |
| Tags | CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
d4a914475bcfa34739c6fc70b88ab6214224a887a7c46e64e1c367d094bc6663
|
|
BLAKE2b-256 checksum How to use checksums |
a0a073afba5c17ebab883c1986bb175cfde28fb45b2506acaec4c20e0e369e76
|
| 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 / nextcv-1.0.3-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
| Download URL | nextcv-1.0.3-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 173.1 kB |
| Tags | CPython 3.12 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
4d528c8addb9faaf2601955122c64c9a7db4fc1cb25bce8a5f1c557de697ee48
|
|
BLAKE2b-256 checksum How to use checksums |
83fb22e073efaa234d278b8858291b909853c01a2dd9f1b217442cc63661d99c
|
| 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 / nextcv-1.0.3-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | nextcv-1.0.3-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 161.5 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
5c6d8da55c6f8fcb3872d0f1be3cb0a2dc747071842da96aac8878ce620a7907
|
|
BLAKE2b-256 checksum How to use checksums |
60f1f6050c9143a359ca1ebd7736e16adae6cbce3adc270488d5147023a6c88c
|
| 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 / nextcv-1.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | nextcv-1.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 185.7 kB |
| Tags | CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
fc19c65d0d68312b269f54c0636588ebc1aa75e063eb26be45e05c01455bb2b5
|
|
BLAKE2b-256 checksum How to use checksums |
f67b6cc6e6966f7b2a9d1ce60738cd723e985865415b958bf137b46ecb89df00
|
| 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 / nextcv-1.0.3-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
| Download URL | nextcv-1.0.3-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 171.5 kB |
| Tags | CPython 3.11 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
12779d87933d59b20057cac9a4b4c42c55af82bf7f4d22c8f340c84438fea0cf
|
|
BLAKE2b-256 checksum How to use checksums |
5225272359ffae3354361f8b6406c9b7737192eff24e610e1636673f1e3aeca4
|
| 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 / nextcv-1.0.3-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | nextcv-1.0.3-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 159.7 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
54c422a4c4c2ff4e2158feabf22006e72020ee3abfa7827a001d65426db44c2a
|
|
BLAKE2b-256 checksum How to use checksums |
448c006fc7329396f3404c3a094d7debb664269c3b5db6e80e3ff6a62a75a976
|
| 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 / nextcv-1.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | nextcv-1.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 184.5 kB |
| Tags | CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
ea8e400481b42832c9d5b42a7475cccc430138866035edfe1f7eff098a62152e
|
|
BLAKE2b-256 checksum How to use checksums |
2e66c06a29e9638757a9c214480c852218d1f137cc0dd608fcaf26fcb8c84a6f
|
| 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 / nextcv-1.0.3-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
| Download URL | nextcv-1.0.3-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 170.4 kB |
| Tags | CPython 3.10 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
cd734d32e3813b3411e9f83be1f06a0feef8a980ef81884b27ee42f856ca1446
|
|
BLAKE2b-256 checksum How to use checksums |
319af0d2e78d60d2a08ffe9366898cbf03405767500917c41d6a225afc06531a
|
| 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 / nextcv-1.0.3-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | nextcv-1.0.3-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 158.6 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
0a64f20434a4dc6198de160dd3fedeb706a9e8960db9484077cac5c9294f8bed
|
|
BLAKE2b-256 checksum How to use checksums |
f118aaca79a4b125f365a2a5a93b9c22a7b23c8dc4bc57ed692ddf91d65db024
|
| 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 / nextcv-1.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | nextcv-1.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 184.7 kB |
| Tags | CPython 3.9 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
9d4e51c825ad206d4dbd77922209aea6be2293fe0dedf7c883afddd0dfa1cc7d
|
|
BLAKE2b-256 checksum How to use checksums |
58bc66b4bc8fcbd600d6cf7c5b24cb860e8dd2936410b55b605756d4658b5e02
|
| 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 / nextcv-1.0.3-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
| Download URL | nextcv-1.0.3-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 170.7 kB |
| Tags | CPython 3.9 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
30c2227df4530ed502e270086c2205ff148c504e5b7b6d7577ccff36414bbf3a
|
|
BLAKE2b-256 checksum How to use checksums |
c7c1e429b827ec9322170e5437ee3a1ef7a07d633d9e735233929c19e628d212
|
| 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 / nextcv-1.0.3-cp39-cp39-macosx_11_0_arm64.whl
| Download URL | nextcv-1.0.3-cp39-cp39-macosx_11_0_arm64.whl |
|---|---|
| Size | 158.7 kB |
| Tags | CPython 3.9 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
986c1f8c4e6db900a590b77eb53c8e531ca1b834b566acad9ee5248386882c0f
|
|
BLAKE2b-256 checksum How to use checksums |
fd63d523eb0194c4f80ece1bc6b0a8e58b3ae89fde3ff993dc31304c0d207349
|
| 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 nextcv 1.0.3
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.