Metadata-Version: 1.1
Name: setuptools-rust
Version: 0.7.2
Summary: Setuptools rust extension plugin
Home-page: https://github.com/PyO3/setuptools-rust
Author: Nikolay Kim
Author-email: fafhrd91@gmail.com
License: MIT
Description: Setuptools helpers for rust Python extensions implemented with `PyO3 python binding <https://github.com/PyO3/pyo3>`_.
        
        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 Binding, RustExtension
        
           setup(name='hello-rust',
                 version='1.0',
                 rust_extensions=[RustExtension('hello_rust._helloworld',
                                                'Cargo.toml', binding=Binding.PyO3)],
                 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 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` or `bdist_egg`.
        
        You can build `manylinux1` binary wheels using Docker:
        
        .. code-block:: bash
        
            docker run --rm -v `pwd`:/io quay.io/pypa/manylinux1_x86_64 /io/build-wheels.sh
        
        `build-wheels.sh` example can be found here: 
        https://github.com/PyO3/setuptools-rust/blob/master/example/build-wheels.sh
        
        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. If set to
                              None then build type is auto-detect. Inplace build is debug build
                              otherwise release. Default: None
        
           :param int binding: Controls which python binding is in use.
                               `Binding.PyO3` uses PyO3
                               `Binding.RustCPython` uses rust-cpython
                               `Binding.NoBinding` uses no binding.
        
           :param bool script: Generate console script for executable
                               if `Binding.Exec` is used.
        
           :param bool optional: if it is true, a build failure in the extension will not abort the build process,
                                 but instead simply not install the failing extension.
        
        Commands
        --------
        
        * `build` - Standard `build` command builds all rust extensions.
        
        * `build_rust` - Command builds all rust extensions.
        
        * `clean` - Standard `clean` command executes `cargo clean` for all rust extensions.
        
        * `check` - Standard `check` command executes `cargo check` for all rust extensions.
        
        
        CHANGES
        =======
        
        0.7.2 (2017-09-01)
        ------------------
        
        - Generate console-script for Binding.Exec #22
        
        - Do not run `cargo check` for `sdist` command #18
        
        - Remove extra python3 file extension for executables.
        
        
        0.7.1 (2017-08-18)
        ------------------
        
        - Allow to strip symbols from executable or dynamic library.
        
        - Use PyO3 0.2 for example.
        
        
        0.7.0 (2017-08-11)
        ------------------
        
        - Allow to build executable and pack with python package.
        
        - Use PyO3 0.1 for example.
        
        
        0.6.4 (2017-07-31)
        ------------------
        
        - `check` command respects `optional` option
        - Don't fail when Rust isn't installed while all extensions are optional
        
        0.6.3 (2017-07-31)
        ------------------
        
        - Fix pypi source distribution
        
        0.6.2 (2017-07-31)
        ------------------
        
        - Add `optional` option to `RustExtension` #16
        
        0.6.1 (2017-06-30)
        ------------------
        
        - Support `CARGO_TARGET_DIR` variable #14
        
        
        0.6.0 (2017-06-20)
        ------------------
        
        - Add support for PyO3 project https://github.com/PyO3/PyO3
        
        - Add support for no-binding mode
        
        
        0.5.1 (2017-05-03)
        ------------------
        
        - Added support for "cargo test"
        
        - Fixed unbound method type error #4
        
        
        0.5.0 (2017-03-26)
        ------------------
        
        - Added support for "cargo check"
        
        
        0.4.2 (2017-03-15)
        ------------------
        
        - Added "--qbuild" option for "build_rust" command.
          Set "quiet" mode for all extensions.
        
        - Added "--debug" and "--release" options for "build_rust" command.
        
        
        0.4.1 (2017-03-10)
        ------------------
        
        - Fixed cargo manifest absolute path detection
        
        
        0.4 (2017-03-10)
        ----------------
        
        - Fixed bdist_egg and bdist_wheel support
        
        - setuptool's clean command cleans rust project as well
        
        - Use absolute path to cargo manifest
        
        - Enable debug builds for inplace builds, otherwise build release
        
        - Simplify monkey patches
        
        
        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
        
Keywords: distutils setuptools rust
Platform: UNKNOWN
Classifier: Topic :: Software Development :: Version Control
Classifier: License :: OSI Approved :: MIT License
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Development Status :: 5 - Production/Stable
Classifier: Operating System :: POSIX
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
