witty
A "well-in-time" compiler using cython or
nanobind to compile pyx or
C/C++ modules (respectively) at runtime.
Installation
You can install witty via pip:
# for Cython support
pip install witty[cython]
# for Nanobind support
pip install witty[nanobind]
Cython
from witty import compile_cython
fancy_module_pyx = """
def add(int a, int b):
return a + b
"""
# equivalent to "import fancy_module"
fancy_module = compile_cython(fancy_module_pyx)
result = fancy_module.add(3, 2)
print("fancy_module.add(3, 2) =", result)
Nanobind
from witty import compile_nanobind
fancy_module_cpp = """
#include <nanobind/nanobind.h>
int add(int a, int b) {
return a + b;
}
NB_MODULE(fancy_module, m) {
m.def("add", &add);
}
"""
# equivalent to "import fancy_module"
fancy_module = compile_nanobind(fancy_module_cpp)
result = fancy_module.add(3, 2)
print("fancy_module.add(3, 2) =", result)
This module will no longer be needed if/when https://github.com/cython/cython/pull/555 gets merged into Cython.
Why?
Compilation at runtime is very handy to modify C/C++/PYX sources based on type information or configurations that are not known during build time. This allows combining the optimizations of C++ template libraries with Python's runtime flexibility, like so:
import witty
source_pxy_template = """
cdef extern from '<vector>' namespace 'std':
cdef cppclass vector[T]:
vector()
void push_back(T& item)
size_t size()
def to_vector(values):
vec = vector[{type}]()
for x in values:
vec.push_back(x)
return vec
"""
fancy_module = witty.compile_cython(
source_pxy_template.format(type="float"), language="c++"
)
# create a C++ vector of floats from a list
vec_float = fancy_module.to_vector([0.1, 0.2, 0.3, 1e10])
print(vec_float)
How?
witty invokes cython or nanobind to compile the module given as a
PYX/C/C++ source string (just like it would compile it during build time). The
compiled module ends up in a cache directory, with a hash build from the
content of the source string. Repeated calls to compile_[cython,nanobind]
will only invoke the compiler if the exact source string has not been compiled
before (or if force_rebuild==True). Compilation is protected by a file lock,
i.e., concurrent calls to compile_[cython,nanobind] are safe.
For developers
To push a new release, make sure you've pulled main and are definitely on the commit you want to release, then tag a commit and push to github:
git tag -a vX.Y.Z -m vX.Y.Z
git push upstream --follow-tags
The deploy is handled by workflows/ci.yaml
Metadata
Release files for witty 0.3.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| witty-0.3.4.tar.gz | 13.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| witty-0.3.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 22.5 kB
Release files / witty-0.3.4.tar.gz
| Download URL | witty-0.3.4.tar.gz |
|---|---|
| Size | 13.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
505e15e33a336ef20482481750ca511846cf3f13c9a6858237ff8516c800e0f0
|
|
BLAKE2b-256 checksum How to use checksums |
c999a614e1f75d7b2f7ef4090b6909d7521586ccef5ca2b5bf591a81afdbb527
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / witty-0.3.4-py3-none-any.whl
| Download URL | witty-0.3.4-py3-none-any.whl |
|---|---|
| Size | 9.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
005202a9bf69571b644cd68ffadf02da8db461faf5769181f1e26dabd04e8c98
|
|
BLAKE2b-256 checksum How to use checksums |
6d6440b6717c5b5ed05f731162f1ae074c1f92447f5daf192640a0d77b7704ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency log