Skip to content

Update from copier (2025-07-29T22:55:28) #24

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 29, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .copier-answers.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Changes here will be overwritten by Copier
_commit: c53b04c
_commit: e29838a
_src_path: https://github.com/python-project-templates/base.git
add_docs: true
add_wiki: true
add_extension: cpp
add_wiki: true
email: 3105306+timkpaine@users.noreply.github.com
github: python-project-templates
project_description: A C++-Python project template
Expand Down
27 changes: 27 additions & 0 deletions .github/workflows/wiki.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Publish Docs

on:
push:
branches:
- main
paths:
- "docs/**"
- "README.md"
workflow_dispatch:

concurrency:
group: docs
cancel-in-progress: true

permissions:
contents: write

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: cp README.md docs/wiki/Home.md
- uses: Andrew-Chen-Wang/github-wiki-action@v4
with:
path: docs/wiki
12 changes: 10 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,18 @@ install: ## install python library
#########
# LINTS #
#########
.PHONY: lint-py lint-cpp lint lints
.PHONY: lint-py lint-cpp lint-docs lint lints
lint-py: ## run python linter with ruff
python -m ruff check python_template_cpp
python -m ruff format --check python_template_cpp

lint-cpp: ## run cpp linter
clang-format --dry-run -Werror -i -style=file `find ./cpp -name "*.*pp"`

lint-docs: ## lint docs with mdformat and codespell
python -m mdformat --check README.md docs/wiki/
python -m codespell_lib README.md docs/wiki/

lint: lint-cpp lint-py ## run project linters

# alias
Expand All @@ -45,7 +49,11 @@ fix-py: ## fix python formatting with ruff
fix-cpp: ## fix cpp formatting
clang-format -i -style=file `find ./cpp -name "*.*pp"`

fix: fix-cpp fix-py ## run project autoformatters
fix-docs: ## autoformat docs with mdformat and codespell
python -m mdformat README.md docs/wiki/
python -m codespell_lib --write README.md docs/wiki/

fix: fix-cpp fix-py fix-docs ## run project autoformatters

# alias
format: fix
Expand Down
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,5 @@ A C++-Python project template

## Overview


> [!NOTE]
> This library was generated using [copier](https://copier.readthedocs.io/en/stable/) from the [Base Python Project Template repository](https://github.com/python-project-templates/base).
1 change: 1 addition & 0 deletions docs/wiki/_Footer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
_This wiki is autogenerated. To made updates, open a PR against the original source file in [`docs/wiki`](https://github.com/python-project-templates/python-template-cpp/tree/main/docs/wiki)._
16 changes: 16 additions & 0 deletions docs/wiki/_Sidebar.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<!--
This sidebar is displayed on the GitHub Wiki section instead of the default sidebar.
Notes for editors:
- Ensure links don't have the file extensions (i.e., `.md`)
- Do not use colons (':') in page titles, they don't render properly as links in the sidebar
- Use only the filenames in this page (without the filepath and file extension)
-->

**[Home](Home)**

**Get Started**

- [Installation](Installation)
- [Contributing](Contribute)
- [Development Setup](Local-Development-Setup)
- [Build from Source](Build-from-Source)
103 changes: 103 additions & 0 deletions docs/wiki/contribute/Build-from-Source.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
`python-template-cpp` is written in Python. While prebuilt wheels are provided for end users, it is also straightforward to build `python-template-cpp` from either the Python [source distribution](https://packaging.python.org/en/latest/specifications/source-distribution-format/) or the GitHub repository.

- [Make commands](#make-commands)
- [Prerequisites](#prerequisites)
- [Clone](#clone)
- [Install Python dependencies](#install-python-dependencies)
- [Build](#build)
- [Lint and Autoformat](#lint-and-autoformat)
- [Testing](#testing)

## Make commands

As a convenience, `python-template-cpp` uses a `Makefile` for commonly used commands. You can print the main available commands by running `make` with no arguments

```bash
> make

build build the library
clean clean the repository
fix run autofixers
install install library
lint run lints
test run the tests
```

## Prerequisites

`python-template-cpp` has a few system-level dependencies which you can install from your machine package manager. Other package managers like `conda`, `nix`, etc, should also work fine.

## Clone

Clone the repo with:

```bash
git clone https://github.com/python-project-templates/python-template-cpp.git
cd python-template-cpp
```

## Install Python dependencies

Python build and develop dependencies are specified in the `pyproject.toml`, but you can manually install them:

```bash
make requirements
```

Note that these dependencies would otherwise be installed normally as part of [PEP517](https://peps.python.org/pep-0517/) / [PEP518](https://peps.python.org/pep-0518/).

## Build

Build the python project in the usual manner:

```bash
make build
```

## Lint and Autoformat

`python-template-cpp` has linting and auto formatting.

| Language | Linter | Autoformatter | Description |
| :------- | :---------- | :------------ | :---------- |
| Python | `ruff` | `ruff` | Style |
| Markdown | `mdformat` | `mdformat` | Style |
| Markdown | `codespell` | | Spelling |

**Python Linting**

```bash
make lint-py
```

**Python Autoformatting**

```bash
make fix-py
```

**Documentation Linting**

```bash
make lint-docs
```

**Documentation Autoformatting**

```bash
make fix-docs
```

## Testing

`python-template-cpp` has extensive Python tests. The tests can be run via `pytest`. First, install the Python development dependencies with

```bash
make develop
```

**Python**

```bash
make test
```
15 changes: 15 additions & 0 deletions docs/wiki/contribute/Contribute.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
Contributions are welcome on this project. We distribute under the terms of the [Apache 2.0 license](https://github.com/python-project-templates/python-template-cpp/blob/main/LICENSE).

> [!NOTE]
>
> `python-template-cpp` requires [Developer Certificate of Origin](https://en.wikipedia.org/wiki/Developer_Certificate_of_Origin) for all contributions.
> This is enforced by a [Probot GitHub App](https://probot.github.io/apps/dco/), which checks that commits are "signed".
> Read [instructions to configure commit signing](Local-Development-Setup#configure-commit-signing).

For **bug reports** or **small feature requests**, please open an issue on our [issues page](https://github.com/python-project-templates/python-template-cpp/issues).

For **questions** or to discuss **larger changes or features**, please use our [discussions page](https://github.com/python-project-templates/python-template-cpp/discussions).

For **contributions**, please see our [developer documentation](Local-Development-Setup). We have `help wanted` and `good first issue` tags on our issues page, so these are a great place to start.

For **documentation updates**, make PRs that update the pages in `/docs/wiki`. The documentation is pushed to the GitHub wiki automatically through a GitHub workflow. Note that direct updates to this wiki will be overwritten.
55 changes: 55 additions & 0 deletions docs/wiki/contribute/Local-Development-Setup.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
## Table of Contents

- [Table of Contents](#table-of-contents)
- [Step 1: Build from Source](#step-1-build-from-source)
- [Step 2: Configuring Git and GitHub for Development](#step-2-configuring-git-and-github-for-development)
- [Create your fork](#create-your-fork)
- [Configure remotes](#configure-remotes)
- [Authenticating with GitHub](#authenticating-with-github)
- [Guidelines](#guidelines)

## Step 1: Build from Source

To work on `python-template-cpp`, you are going to need to build it from source. See
[Build from Source](Build-from-Source) for
detailed build instructions.

Once you've built `python-template-cpp` from a `git` clone, you will also need to
configure `git` and your GitHub account for `python-template-cpp` development.

## Step 2: Configuring Git and GitHub for Development

### Create your fork

The first step is to create a personal fork of `python-template-cpp`. To do so, click
the "fork" button at https://github.com/python-project-templates/python-template-cpp, or just navigate
[here](https://github.com/python-project-templates/python-template-cpp/fork) in your browser. Set the
owner of the repository to your personal GitHub account if it is not
already set that way and click "Create fork".

### Configure remotes

Next, you should set some names for the `git` remotes corresponding to
main python-project-templates repository and your fork. See the [GitHub Docs](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/configuring-a-remote-repository-for-a-fork) for more information.

### Authenticating with GitHub

If you have not already configured `ssh` access to GitHub, you can find
instructions to do so
[here](https://docs.github.com/en/authentication/connecting-to-github-with-ssh),
including instructions to create an SSH key if you have not done
so. Authenticating with SSH is usually the easiest route. If you are working in
an environment that does not allow SSH connections to GitHub, you can look into
[configuring a hardware
passkey](https://docs.github.com/en/authentication/authenticating-with-a-passkey/about-passkeys)
or adding a [personal access
token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)
to avoid the need to type in your password every time you push to your fork.

## Guidelines

After developing a change locally, ensure that both [lints](Build-from-Source#lint-and-autoformat) and [tests](Build-from-Source#testing) pass. Commits should be squashed into logical units, and all commits must be signed (e.g. with the `-s` git flag). We require [Developer Certificate of Origin](https://en.wikipedia.org/wiki/Developer_Certificate_of_Origin) for all contributions.

If your work is still in-progress, open a [draft pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests#draft-pull-requests). Otherwise, open a normal pull request. It might take a few days for a maintainer to review and provide feedback, so please be patient. If a maintainer asks for changes, please make said changes and squash your commits if necessary. If everything looks good to go, a maintainer will approve and merge your changes for inclusion in the next release.

Please note that non substantive changes, large changes without prior discussion, etc, are not accepted and pull requests may be closed.
4 changes: 4 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,11 @@ develop = [
"bump-my-version",
"check-manifest",
"cibuildwheel",
"codespell>=2.4,<2.5",
"hatch-cpp",
"hatchling",
"mdformat>=0.7.22,<0.8",
"mdformat-tables>=1",
"pytest",
"pytest-cov",
"ruff",
Expand All @@ -56,6 +59,7 @@ Homepage = "https://github.com/python-project-templates/python-template-cpp"
current_version = "0.1.0"
commit = true
tag = true
commit_args = "-s"

[[tool.bumpversion.files]]
filename = "python_template_cpp/__init__.py"
Expand Down
Loading