python-setuptools-rust
Port variant py39
Summary Setuptools Rust extension plugin (3.9)
Package version 1.5.2
Homepage https://github.com/PyO3/setuptools-rust
Keywords python
Maintainer Python Automaton
License Not yet specified
Other variants py310
Ravenports Buildsheet | History
Ravensource Port Directory | History
Last modified 20 SEP 2022, 04:00:35 UTC
Port created 10 FEB 2021, 19:26:20 UTC
Subpackage Descriptions
single # Setuptools plugin for Rust extensions [github actions] [pypi package] [readthedocs] [![code style: black]](https://github.com/ambv/black) `setuptools-rust` is a plugin for `setuptools` to build Rust Python extensions implemented with [PyO3] or [rust-cpython]. Compile and distribute Python extensions written in Rust as easily as if they were written in C. ## Setup For a complete example, see [html-py-ever]. First, you need to create a bunch of files: ### setup.py ```python from setuptools import setup from setuptools_rust import Binding, RustExtension setup( name="hello-rust", version="1.0", rust_extensions=[RustExtension("hello_rust.hello_rust", binding=Binding.PyO3)], packages=["hello_rust"], # rust extensions are not zip safe, just like C-extensions. zip_safe=False, ) ``` For a complete reference of the options supported by the `RustExtension` class, see the [API reference]. ### pyproject.toml ```toml [build-system] requires = ["setuptools", "wheel", "setuptools-rust"] ``` ### MANIFEST.in This file is required for building source distributions ```text include Cargo.toml recursive-include src * ``` ## Usage You can use same commands as for c-extensions. For example: ``` >>> python ./setup.py develop running develop running egg_info writing hello-rust.egg-info/PKG-INFO writing top-level names to hello_rust.egg-info/top_level.txt writing dependency_links to hello_rust.egg-info/dependency_links.txt reading manifest file 'hello_rust.egg-info/SOURCES.txt' writing manifest file 'hello_rust.egg-info/SOURCES.txt' running build_ext running build_rust cargo build --manifest-path extensions/Cargo.toml --features python3 Finished debug [unoptimized + debuginfo] target(s) in 0.0 secs Creating /.../lib/python3.6/site-packages/hello_rust.egg-link (link to .) Installed hello_rust Processing dependencies for hello_rust==1.0 Finished processing dependencies for hello_rust==1.0 ``` Or you can use commands like `bdist_wheel` (after installing `wheel`). See also [the notes in the documentation about building wheels]. Cross-compiling is also supported, using one of [`crossenv`], [`cross`] or [`cargo-zigbuild`]. For examples see the `test-crossenv` and `test-cross` and `test-zigbuild` Github actions jobs in [`ci.yml`]. By default, `develop` will create a debug build, while `install` will create a release build. ## Commands - `build` - Standard build command will also build all rust extensions. - `build_rust` - Command builds all rust extensions. - `clean` - Standard clean command executes cargo clean for all rust extensions.
Configuration Switches (platform-specific settings discarded)
PY310 OFF Build using Python 3.10 PY39 ON Build using Python 3.9
Package Dependencies by Type
Build (only) python-pip:single:py39
autoselect-python:single:standard
Build and Runtime python39:single:standard
Runtime (only) python-setuptools:single:py39
python-semantic-version:single:py39
python-typing-extensions:single:py39
Download groups
main mirror://PYPIWHL/ef/da/dca8f90986325abe3027a5e3af5e12ce1d78eeb664a11971b2e7e703b9e3
Distribution File Information
8eb45851e34288f2296cd5ab9e924535ac1757318b730a13fe6836867843f206 23542 setuptools_rust-1.5.2-py3-none-any.whl
Ports that require python-setuptools-rust:py39
python-bcrypt:py39 Modern password hashing based on blowfish (3.9)
python-cryptography:py39 Cryptographic recipes and primitives (3.9)