GitHub - pybind/scikit_build_example: An example combining scikit-build and pybind11

GitHub

CIstatusconda.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)

).

Installation

Clone this repository

pip install ./scikit_build_example

Test call

importscikit_build_examplescikit_build_example.add(1, 2)Files

This example has several files that are a good idea, but aren't strictly necessary. The necessary files are:

pyproject.toml: The Python project file

CMakeLists.txt: The CMake configuration file

src/main.cpp: The source file for the C++ build

src/scikit_build_example/__init__.py: The Python portion of the module. The root of the module needs to be <package_name>, src/<package_name>, or python/<package_name> to be auto-discovered.

These files are also expected and highly recommended:

.gitignore: Git's ignore list, also used by scikit-build-core to select files for the SDist

README.md: The source for the PyPI description

LICENSE: The license file

There are also several completely optional directories:

.github: configuration for

Dependabot

and

GitHub Actions

conda.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/: Documentation

tests/: 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.

CI Examples

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

.

License

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.