Hello-world nanobind extension built against the easybind package (demo / CI smoke test)
Project description
cppdantic
Small demo that builds against the easybind package from PyPI. cppdantic and easybind are independent projects (separate repos, separate PyPI names). This repo may include external/easybind as an optional git submodule only so you can browse both trees in one checkout — it is not wired into pyproject.toml as a path dependency.
PyPI: cppdantic (when published). Versioning and tags: RELEASING.md.
Bumping easybind~=…: easybind-pin-pyproject (from easybind). Default = latest v* tag on GitHub (repo URL from that package’s PyPI metadata). Use --from-pypi for PyPI’s published latest instead — see RELEASING.md.
Build / test
You need easybind installed from PyPI (matching the pin in pyproject.toml), plus CMake ≥ 3.25, Ninja, and a C++20 compiler on PATH:
python -m pip install -U pip
python -m pip install "easybind~=0.2.14" # align with pyproject.toml
python -m pip install -e '.[test]'
python -m pytest tests -q
CMake loads easybind/cmake/easybind_pip.cmake from the installed easybind package. PyPI must ship the cmake/ tree for the version you pin.
Optional submodule: if you use git submodule update --init external/easybind, you can also pip install -e /path/to/easybind from that checkout — it is the same easybind project, not a special cppdantic path override.
uv
From the cppdantic repo root:
uv pip install "easybind~=0.2.14"
uv pip install -e ".[test]"
(pyproject.toml sets [tool.uv] no-build-isolation-package = ["cppdantic"] so editable builds use your venv; the [test] extra pulls in setuptools-scm and scikit-build-core for that mode.)
If uv pip install fails with Metadata mismatch in METADATA (setuptools-scm version differs between build phases), clear stale artifacts and install easybind first, then cppdantic:
rm -rf build dist *.egg-info src/cppdantic/*.egg-info
uv pip install -e external/easybind/
uv pip install -e ".[test]"
Ensure src/cppdantic/_version.py is not tracked by git (it is gitignored). If it was ever committed, run git rm --cached src/cppdantic/_version.py.
Tagging
Create an annotated v* tag on main after your pins commit (see RELEASING.md).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cppdantic-0.0.7.tar.gz.
File metadata
- Download URL: cppdantic-0.0.7.tar.gz
- Upload date:
- Size: 12.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
535cd0b8b22e49ffea6909aa4fe8c5db3d1c7bc00a374e48e1e0d188748f9033
|
|
| MD5 |
3b5ff5f1e9f408d4a3f6f748252845bc
|
|
| BLAKE2b-256 |
3fa1b0d8574d15efbdaa38519fc14962c0ad4e54e6dec31053b11cdc41a098ad
|
File details
Details for the file cppdantic-0.0.7-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: cppdantic-0.0.7-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 248.2 kB
- Tags: CPython 3.14, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5efaf1d69a301603d87f8311a9c400b112159db87bbb76a2baa88089d13daf1c
|
|
| MD5 |
0b95f5b89d974d90de40829dd892bcb3
|
|
| BLAKE2b-256 |
54cfc58d23258e07dd24c81d3c8fd1f43299c2a675cd5f3d515666bc667efe78
|
File details
Details for the file cppdantic-0.0.7-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: cppdantic-0.0.7-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 248.1 kB
- Tags: CPython 3.13, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9df945c5b9e0c2bd79061cf8ab87c18058d95e01e03f007b5427ce88d090bdb6
|
|
| MD5 |
5771c2462b45adb39939acb1020e5451
|
|
| BLAKE2b-256 |
fe28862bba893b310dfd0ccd9925ce97c8218a35fb0f24fb3f614935d82ff834
|
File details
Details for the file cppdantic-0.0.7-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: cppdantic-0.0.7-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 248.1 kB
- Tags: CPython 3.12, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9071d5be270b37dd9f8f930b6065d294edbda7f55e19b64c34437cff6707031
|
|
| MD5 |
ff1be52beafad408516ef25ddd07f488
|
|
| BLAKE2b-256 |
3138b2c5d3394c8fec04cf875172e42de479186103f55b84379076a933039856
|
File details
Details for the file cppdantic-0.0.7-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: cppdantic-0.0.7-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 248.7 kB
- Tags: CPython 3.11, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
12c29def4fa57aaef4950145fda560f83a1c1fbff345d898da85b3e9c6f60702
|
|
| MD5 |
7e930b29659391e982049280b4f12b44
|
|
| BLAKE2b-256 |
3fa731ef496a9bfdf27c8f301f7a7913c683fb563249f6bc86266125397f6d1e
|