Skip to content
/ scikit_build_example Public template

An example combining scikit-build and pybind11

License

Notifications You must be signed in to change notification settings

pybind/scikit_build_example

Repository files navigation

scikit_build_example

Gitter

CI status
conda.recipe Conda Actions Status
pip builds Pip Actions Status

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

import scikit_build_example

scikit_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.

About

An example combining scikit-build and pybind11

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published