{"id":30788591,"url":"https://github.com/healthypear/cpp_project_with_python_bindings","last_synced_at":"2025-09-05T13:18:06.896Z","repository":{"id":222163754,"uuid":"756366678","full_name":"HealthyPear/cpp_project_with_python_bindings","owner":"HealthyPear","description":"A template repository for a C++ project with Python bindings using nanobind and scikit-build-core","archived":false,"fork":false,"pushed_at":"2024-02-13T11:30:06.000Z","size":1592,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-02-13T18:34:12.065Z","etag":null,"topics":["cpp","doxygen","nanobind","sphinx"],"latest_commit_sha":null,"homepage":"https://healthypear.github.io/cpp_project_with_python_bindings/","language":"CMake","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HealthyPear.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-02-12T14:28:06.000Z","updated_at":"2024-02-13T11:26:18.000Z","dependencies_parsed_at":"2024-02-12T18:43:50.836Z","dependency_job_id":null,"html_url":"https://github.com/HealthyPear/cpp_project_with_python_bindings","commit_stats":null,"previous_names":["healthypear/cpp_project_with_python_bindings"],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/HealthyPear/cpp_project_with_python_bindings","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HealthyPear%2Fcpp_project_with_python_bindings","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HealthyPear%2Fcpp_project_with_python_bindings/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HealthyPear%2Fcpp_project_with_python_bindings/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HealthyPear%2Fcpp_project_with_python_bindings/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HealthyPear","download_url":"https://codeload.github.com/HealthyPear/cpp_project_with_python_bindings/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HealthyPear%2Fcpp_project_with_python_bindings/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273761870,"owners_count":25163361,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-05T02:00:09.113Z","response_time":402,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","doxygen","nanobind","sphinx"],"created_at":"2025-09-05T13:18:05.643Z","updated_at":"2025-09-05T13:18:06.873Z","avatar_url":"https://github.com/HealthyPear.png","language":"CMake","funding_links":[],"categories":[],"sub_categories":[],"readme":"# my-package\n\n[![CI](https://github.com/HealthyPear/cpp_project_with_python_bindings/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/HealthyPear/cpp_project_with_python_bindings/actions/workflows/ci.yml)\n\nThis project template is designed for C++ projects providing Python3 bindings.\n\nThis project is built from C++ using\n`scikit-build-core \u003chttps://scikit-build-core.readthedocs.io/en/latest/index.html\u003e`_\nto make a bridge between [CMake](https://cmake.org/) and the Python build system and make Python modules with CMake.\n\nThe Python bindings are built with `nanobind \u003chttps://nanobind.readthedocs.io/en/latest/index.html\u003e`_.\n\nThe template builds over `nanobind_example \u003chttps://github.com/wjakob/nanobind_example\u003e`_\nplus a set of personal preferences that can be easily disabled or re-configured.\n\n# Installation\n\nSince there is no release yet, the only installation\navailable is the development version.\n\n\u003e [!TIP]\n\u003e The use of a virtual environment is recommended;\n  a [conda](https://docs.conda.io/projects/conda/en/stable/user-guide/index.html) environment\n  file is provided (if you start from scratch is recommended to\n  install the [Miniforge3](https://github.com/conda-forge/miniforge) distribution which comes with [mamba](https://mamba.readthedocs.io/) as a faster alternative to `conda`).\n  In the following instructions this is the assumed setup.\n\n1. [create a new repository from this template](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-repository-from-a-template)\n2. [clone your newly created repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository)\n2. `cd your_repo_name`\n3. search and replace globally `my-package` and `my_package` with the equivalent of your project name identifiers\n2. `conda env create -f environment.yml` (`mamba` is recommended over `conda` if available)\n3. `pip install .[dev]`\n4. `pre-commit install`\n\n# Update\n\n1. Switch to the default branch and update it (`git switch main \u0026\u0026 git pull`)\n2. activate the development virtual environment (`conda activate your-env-name`)\n3. update it (`conda env update --file environment.yml --prune`)\n4. re-install the package (`pip install .[dev]`)\n\n# Documentation\n\nThe documentation is based on [](https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html)\nand build using,\n\n- [pydata-sphinx-theme]() as the theme,\n- [rstcheck](https://rstcheck.readthedocs.io/en/latest/) as a linter\n- [towncrier](https://towncrier.readthedocs.io/)\n   and [sphinxcontrib-towncrier](https://sphinxcontrib-towncrier.readthedocs.io/en/latest/)\n   for the build of the changelog,\n- [nanobind-stubgen](https://github.com/cansik/nanobind-stubgen) and [sphinx-autoapi](https://sphinx-autoapi.readthedocs.io/)\n   to generate the Python bindings API documentation automatically\n- [Doxygen](https://www.doxygen.nl/), [breathe](https://breathe.readthedocs.io/)\n  and [exhale](https://exhale.readthedocs.io/en/latest/index.html)\n  to generate automatically the C++ API\n\nDocumentation can be compiled locally with `make -C docs html` (a `clean` target is also available).\n\n# Development\n\nThe development process is based on a\n[pre-commit](https://pre-commit.com/) configuration.\n\nLinting and formatting are performed using\n[ruff](https://docs.astral.sh/ruff/).\n\nTesting for the Python interface is performed with [pytest](https://docs.pytest.org/en/latest/)\nwhile that for the C++ interface needs to be added.\n\n# GitHub Actions\n\n- Continuous integration pipeline to test ``pip`` installation and Python testing suite\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhealthypear%2Fcpp_project_with_python_bindings","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhealthypear%2Fcpp_project_with_python_bindings","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhealthypear%2Fcpp_project_with_python_bindings/lists"}