Skip to content

PyOZ v0.11.1

Choose a tag to compare

@github-actions github-actions released this 10 Feb 13:56
· 33 commits to main since this release
8939791

What's New in v0.11.1

Added

  • Multi-phase module initialization (PEP 489) - PyOZ now uses PyModuleDef_Init + Py_mod_exec slot instead of the legacy PyModule_Create single-phase init. This is required for sub-interpreter support (PEP 554) and is the modern standard for Python extension modules. Simple modules (return Module.init()) work unchanged. Modules that need post-init work (e.g., adding submodules) should use the new .module_init callback in the module config instead of doing work after init() in PyInit_*.

Fixed

  • get_X/set_X computed properties no longer exposed as methods - When a class defines get_user_data() and set_user_data(), PyOZ correctly creates a user_data property but previously also exposed get_user_data() and set_user_data() as callable methods, cluttering the API. Now computed property accessors are filtered from the method table (methods.zig) and stub generation (stubs.zig), so only the X property appears in Python. The filter correctly handles: get_X as computed property getter, set_X with matching get_X as computed property setter, and set_X as field setter override. Standalone set_X without a matching getter or field is still exposed as a method.

Installation

Download the binary for your platform and add it to your PATH:

Platform Binary
Linux x86_64 pyoz-x86_64-linux
Linux ARM64 pyoz-aarch64-linux
macOS x86_64 pyoz-x86_64-macos
macOS ARM64 (Apple Silicon) pyoz-aarch64-macos
Windows x86_64 pyoz-x86_64-windows.exe
Windows ARM64 pyoz-aarch64-windows.exe

Source

Download PyOZ-0.11.1.tar.gz for the source code.

Quick Start

pyoz init mymodule
cd mymodule
pyoz build
pip install dist/*.whl