PyOZ
Zig's power meets Python's simplicity. Build blazing-fast Python extensions with zero boilerplate and zero Python C API headaches.
Documentation | Getting Started | Examples | GitHub
Quick Example
Write normal Zig code -- PyOZ handles all the Python integration automatically:
const pyoz = @import("PyOZ");
const Point = struct {
x: f64,
y: f64,
pub fn magnitude(self: *const Point) f64 {
return @sqrt(self.x * self.x + self.y * self.y);
}
};
fn add(a: i64, b: i64) i64 {
return a + b;
}
pub const Module = pyoz.module(.{
.name = "mymodule",
.funcs = &.{
pyoz.func("add", add, "Add two numbers"),
},
.classes = &.{
pyoz.class("Point", Point),
},
});
import mymodule
print(mymodule.add(2, 3)) # 5
p = mymodule.Point(3.0, 4.0)
print(p.magnitude()) # 5.0
print(p.x, p.y) # 3.0 4.0
Features
- Declarative API -- Define modules, functions, and classes with simple struct literals
- Automatic type conversion -- Zig
i64,f64,[]const u8, structs, optionals, error unions all map to Python types automatically - Full class support --
__init__,__repr__,__add__,__iter__,__getitem__, properties, static/class methods, inheritance - NumPy integration -- Zero-copy array access via buffer protocol
- Error handling -- Zig errors become Python exceptions; custom exception types supported
- Type stubs -- Automatic
.pyigeneration for IDE autocomplete and type checking - GIL management -- Release the GIL for CPU-bound Zig code with
pyoz.releaseGIL() - Async --
awaitZig functions and methods from asyncio (built on Zig'sstd.Io), with cancellation that reaches the Zig task - Free-threading -- Runs without the GIL on free-threaded CPython (3.14t); class instances get per-object locking automatically
- Cross-class references -- Methods can accept/return instances of other classes in the same module
- Simple tooling --
pyoz init,pyoz build,pyoz develop,pyoz publish
Installation
pip install pyoz
Requires Zig 0.16.0+ and Python 3.10--3.14.
Getting Started
# Create a new project
pyoz init myproject
cd myproject
# Build and install for development
pyoz develop
# Test it
python -c "import myproject; print(myproject.add(1, 2))"
Documentation
Full documentation at pyoz.dev:
- Installation -- Setup and requirements
- Quickstart -- Your first PyOZ module in 5 minutes
- Functions -- Module-level functions, keyword arguments
- Classes -- Full class support with magic methods
- Types -- Type conversion reference
- Properties -- Computed properties and getters/setters
- Error Handling -- Zig errors to Python exceptions
- NumPy -- Zero-copy buffer protocol
- GIL -- Releasing the GIL for parallelism
- CLI Reference -- Build, develop, publish commands
- Complete Example -- Full-featured module walkthrough
License
MIT
Metadata
Release files for pyoz 0.13.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| pyoz-0.13.9-cp310-abi3-win_arm64.whl | CPython 3.10 | abi3 | Windows ARM64 | Details |
| pyoz-0.13.9-cp310-abi3-win_amd64.whl | CPython 3.10 | abi3 | Windows x86-64 | Details |
| pyoz-0.13.9-cp310-abi3-manylinux2014_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| pyoz-0.13.9-cp310-abi3-manylinux2014_aarch64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ ARM64 | Details |
| pyoz-0.13.9-cp310-abi3-macosx_13_0_x86_64.whl | CPython 3.10 | abi3 | macOS 13.0+ x86-64 | Details |
| pyoz-0.13.9-cp310-abi3-macosx_13_0_arm64.whl | CPython 3.10 | abi3 | macOS 13.0+ ARM64 | Details |
Total release size: 8.3 MB
Release files / pyoz-0.13.9-cp310-abi3-win_arm64.whl
| Download URL | pyoz-0.13.9-cp310-abi3-win_arm64.whl |
|---|---|
| Size | 723.7 kB |
| Tags | CPython 3.10 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
be55c076d987c2240872c27f7abb94d306f948b5da8234109cf6ecd0cb02b922
|
|
BLAKE2b-256 checksum How to use checksums |
ce6e3b6926e74f9f149fa2af9d592ab275fb6a75aa4eea38a7abfef6bf4ca9ec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pyoz-0.13.9-cp310-abi3-win_amd64.whl
| Download URL | pyoz-0.13.9-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 757.7 kB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
f933dcf1ba4e92557b9e9d657eecdc54fc27ec1a9eabd3e0be6c5bd3265908b3
|
|
BLAKE2b-256 checksum How to use checksums |
3907e79a5ae93e1cc95768da94258774b24d5865f0bdde698e0ec89d85f334fb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pyoz-0.13.9-cp310-abi3-manylinux2014_x86_64.whl
| Download URL | pyoz-0.13.9-cp310-abi3-manylinux2014_x86_64.whl |
|---|---|
| Size | 2.8 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
4f1930d2854ccd4fa1c7a2016fc7f46f015b4e777f11c6e8870c1f1ae4015deb
|
|
BLAKE2b-256 checksum How to use checksums |
a87ef0b506c2636e6e66c809d27e5b72cbfbb18a733e4624b2c7590779fe2164
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pyoz-0.13.9-cp310-abi3-manylinux2014_aarch64.whl
| Download URL | pyoz-0.13.9-cp310-abi3-manylinux2014_aarch64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
ffa71b19082aca703d6ae66c1f24090dac7e9ed06951470babc510349bd42871
|
|
BLAKE2b-256 checksum How to use checksums |
8fa3035c38a1725111703d5abd2aa4d640ca58a9a0b3387f5339fe2425a9b526
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pyoz-0.13.9-cp310-abi3-macosx_13_0_x86_64.whl
| Download URL | pyoz-0.13.9-cp310-abi3-macosx_13_0_x86_64.whl |
|---|---|
| Size | 680.5 kB |
| Tags | CPython 3.10 abi3 macOS 13.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
68f2b52f5fce648e87795c9f9eb5ed59c5bff38261434b3b77894d9da16cfad3
|
|
BLAKE2b-256 checksum How to use checksums |
d3cc2cdcef6e659f57f338eb1485b1f4a2e23d37d285b72c2c0e98e3076c7910
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pyoz-0.13.9-cp310-abi3-macosx_13_0_arm64.whl
| Download URL | pyoz-0.13.9-cp310-abi3-macosx_13_0_arm64.whl |
|---|---|
| Size | 644.3 kB |
| Tags | CPython 3.10 abi3 macOS 13.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
15421f819e600c99bc14d5dd36e601d6efe89f8e44dcb05727c95df3a86f127b
|
|
BLAKE2b-256 checksum How to use checksums |
dc0b3cf32633cc2c87f0b33abcbe707d1112adaa34d67b95c44a6e6f6c58d592
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|