A cookiecutter template for creating a custom Python extension with xtensor
xtensor-python-cookiecutter helps extension authors create Python extension modules making use of xtensor.
It takes care of the initial work of generating a project skeleton with
-
A complete
setup.pycompiling the extension module -
A few examples included in the resulting project including
- A universal function defined from C++
- A function making use of an algorithm from the STL on a numpy array
- Unit tests
- The generation of the HTML documentation with sphinx
Install cookiecutter:
$ pip install cookiecutter
After installing cookiecutter, use the xtensor-python-cookiecutter:
$ cookiecutter https://github.com/xtensor-stack/xtensor-python-cookiecutter.git
As xtensor-python-cookiecutter runs, you will be asked for basic information about your custom extension project. You will be prompted for the following information:
author_name: your name or the name of your organization,author_email: your project's contact email,github_project_name: name of the GitHub repository for your project,github_organization_name: name of the GithHub organization for your project,python_package_name: name of the Python package created by your extension,cpp_namespace: name for the cpp namespace holding the implementation of your extension,project_short_description: a short description for your project.
This will produce a directory containing all the required content for a minimal extension
project making use of xtensor with all the required boilerplate for package management,
together with a few basic examples. The generated Python extension requires an installation
of xtensor ^0.18.0, xtensor-python ^0.21.0, numpy, and pybind11 ^2.1.0.
Install the module:
$ pip install ./{{ cookiecutter.github_project_name }}/
If you have Jupyter installed, run the Test_Run notebook:
$ cd {{ cookiecutter.github_project_name }}
$ jupyter notebook