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.py
compiling 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