Setuptools helpers for rust Python extensions.
Compile and distribute Python extensions written in rust as easily as if they were written in C.
Example
-------
setup.py
^^^^^^^^
.. code-block:: python
from setuptools import setup
from setuptools_rust import RustExtension
setup(name='hello-rust',
version='1.0',
rust_extensions=[RustExtension('hello_rust._helloworld', 'extensions/Cargo.toml')],
packages=['hello_rust'],
# rust extensions are not zip safe, just like C-extensions.
zip_safe=False
)
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 python27-sys
Finished debug [unoptimized + debuginfo] target(s) in 0.0 secs
Creating /.../lib/python2.7/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` or `bdist_egg`
RustExtension
-------------
You can define rust extension with `RustExtension` class:
*RustExtension*(name, path, args=None, features=None, rust_version=None, quiet=False, debug=False)
The class for creating rust extensions.
:param str name: the full name of the extension, including any packages -- ie.
*not* a filename or pathname, but Python dotted name
:param str path: path to the Cargo.toml manifest file
:param [str] args: a list of extra argumenents to be passed to cargo.
:param [str] features: a list of features to also build
:param str rust_version: sematic version of rust compiler version -- for example
*>1.14,<1.16*, default is None
:param bool quiet: Does not echo cargo's output. default is False
:param bool debug: Controls whether --debug or --release is passed to cargo.
CHANGES
=======
0.3.1 (2017-03-09)
------------------
- Fix compatibility with some old versions of setuptools
0.3 (2017-03-09)
----------------
- Fixed OSX extension compilation
- Use distutils exceptions for errors
- Add rust version check for extension
- Cleanup example project
0.2 (2017-03-08)
----------------
- Fix bdist_egg and bdist_wheel commands
0.1 (2017-03-08)
----------------
- Initial release
Compile and distribute Python extensions written in rust as easily as if they were written in C.
Example
-------
setup.py
^^^^^^^^
.. code-block:: python
from setuptools import setup
from setuptools_rust import RustExtension
setup(name='hello-rust',
version='1.0',
rust_extensions=[RustExtension('hello_rust._helloworld', 'extensions/Cargo.toml')],
packages=['hello_rust'],
# rust extensions are not zip safe, just like C-extensions.
zip_safe=False
)
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 python27-sys
Finished debug [unoptimized + debuginfo] target(s) in 0.0 secs
Creating /.../lib/python2.7/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` or `bdist_egg`
RustExtension
-------------
You can define rust extension with `RustExtension` class:
*RustExtension*(name, path, args=None, features=None, rust_version=None, quiet=False, debug=False)
The class for creating rust extensions.
:param str name: the full name of the extension, including any packages -- ie.
*not* a filename or pathname, but Python dotted name
:param str path: path to the Cargo.toml manifest file
:param [str] args: a list of extra argumenents to be passed to cargo.
:param [str] features: a list of features to also build
:param str rust_version: sematic version of rust compiler version -- for example
*>1.14,<1.16*, default is None
:param bool quiet: Does not echo cargo's output. default is False
:param bool debug: Controls whether --debug or --release is passed to cargo.
CHANGES
=======
0.3.1 (2017-03-09)
------------------
- Fix compatibility with some old versions of setuptools
0.3 (2017-03-09)
----------------
- Fixed OSX extension compilation
- Use distutils exceptions for errors
- Add rust version check for extension
- Cleanup example project
0.2 (2017-03-08)
----------------
- Fix bdist_egg and bdist_wheel commands
0.1 (2017-03-08)
----------------
- Initial release
Metadata
Release files for setuptools-rust 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| setuptools-rust-0.3.1.tar.gz | 6.3 kB | Details |
Release files / setuptools-rust-0.3.1.tar.gz
| Download URL | setuptools-rust-0.3.1.tar.gz |
|---|---|
| Size | 6.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
68bc7a6ff5b48932bd9d1cd6e42d81091793eba374da01c14d20c1185023c0f7
|
|
BLAKE2b-256 checksum How to use checksums |
2559ed63add641dc2758c28a6b9a5d5d85b02df9442e02116bc9452db8f2317b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |