CI | status |
---|---|
conda.recipe | |
pip builds |
An example project built with pybind11 and scikit-build-core. Python 3.9+ (see older commits for 3.7+, or even older versions of Python using scikit-build (classic)).
- Clone this repository
pip install ./scikit_build_example
import scikit_build_example
scikit_build_example.add(1, 2)
This example has several files that are a good idea, but aren't strictly necessary. The necessary files are:
pyproject.toml
: The Python project fileCMakeLists.txt
: The CMake configuration filesrc/main.cpp
: The source file for the C++ buildsrc/scikit_build_example/__init__.py
: The Python portion of the module. The root of the module needs to be<package_name>
,src/<package_name>
, orpython/<package_name>
to be auto-discovered.
These files are also expected and highly recommended:
.gitignore
: Git's ignore list, also used byscikit-build-core
to select files for the SDistREADME.md
: The source for the PyPI descriptionLICENSE
: The license file
There are also several completely optional directories:
.github
: configuration for Dependabot and GitHub Actionsconda.recipe
: Example recipe. Normally you should submit projects to conda-forge instead of building them yourself, but this is useful for testing the example.docs/
: Documentationtests/
: Tests go here
And some optional files:
.pre-commit-config.yaml
: Configuration for the fantastic static-check runner pre-commit.noxfile.py
: Configuration for the nox task runner, which helps make setup easier for contributors.
This is a simplified version of the recommendations in the Scientific-Python Development Guide, which is a highly recommended read for anyone interested in Python package development (Scientific or not). The guide also has a cookiecutter that includes scikit-build-core and pybind11 as a backend choice.
There are examples for CI in .github/workflows
. A simple way to produces
binary "wheels" for all platforms is illustrated in the "wheels.yml" file,
using cibuildwheel.
pybind11 is provided under a BSD-style license that can be found in the LICENSE file. By using, distributing, or contributing to this project, you agree to the terms and conditions of this license.