Compiling with hatchling#

Hatchling is a Python build backend. It does not natively build extension modules, however it supports plugins, and the hatch-cython plugin does provide Cython support.

All of the details are contained within the pyproject.toml file:

[build-system]
requires = ["hatchling", "hatch-cython", "Cython", "setuptools"]
build-backend = "hatchling.build"

[tool.hatch.build.targets.wheel.hooks.cython]
dependencies = ["hatch-cython"]

[project]
name = "example"
version = "1.0.0"

No source files are specified in this case because it automatically searches under the “example” directory (or whatever your project name is) to find suitable *.pyx files to compile with Cython. If you want to customize this behaviour then use [build.targets.wheel.hooks.cython.options.files].

:mod:hatch-cython also allows control of things like Cython compiler directives and C compiler macros. Additionally it can invoke the Tempita templating language for you if you want to programmatically generate your Cython source code.