https://github.com/twsl/python-project-template
A generic python project template based on copier for my data science focused projects.
https://github.com/twsl/python-project-template
copier copier-template data-science python template
Last synced: 3 months ago
JSON representation
A generic python project template based on copier for my data science focused projects.
- Host: GitHub
- URL: https://github.com/twsl/python-project-template
- Owner: twsl
- License: mit
- Created: 2024-04-18T09:07:31.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-09-05T19:56:18.000Z (10 months ago)
- Last Synced: 2025-09-05T21:30:01.038Z (10 months ago)
- Topics: copier, copier-template, data-science, python, template
- Language: Jinja
- Homepage:
- Size: 556 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Python Project Template
[](https://github.com/copier-org/copier)
[](https://squidfunk.github.io/mkdocs-material/)
[](https://github.com/astral-sh/ruff)
[](https://github.com/PyCQA/bandit)
[](https://github.com/twsl/python-project-template/releases)
[](LICENSE)
A generic python project template based on [`copier`](https://copier.readthedocs.io/en/stable/) for my data science focused projects.
- Package Manager: [](https://github.com/astral-sh/uv) or [](https://python-poetry.org/)
- pre-commit: [](https://github.com/j178/prek) or [](https://github.com/pre-commit/pre-commit)
- Type checker: [](https://github.com/astral-sh/ty) or [](https://microsoft.github.io/pyright/)
## TL;DR
```bash
pip install copier
```
```bash
copier copy --trust --vcs-ref=HEAD git+https://github.com/twsl/python-project-template /path/to/destination
```
## Features
### Development features
- Supports `Python 3.10` and [higher](https://devguide.python.org/versions/).
- [`uv`](https://github.com/astral-sh/uv) or [`Poetry`](https://python-poetry.org/) as a dependencies manager. See configuration in `pyproject.toml`.
- Automatic codestyle with [`ruff`](https://github.com/astral-sh/ruff).
- Ready-to-use [`pre-commit`](https://pre-commit.com/) hooks with code-formatting. Execute with [`prek`](https://github.com/j178/prek) or [`pre-commit`](https://github.com/pre-commit/pre-commit)
- Type checks with [`ty`](https://github.com/astral-sh/ty) or [`pyright`](https://github.com/microsoft/pyright).
- Security checks with [`bandit`](https://github.com/PyCQA/bandit).
- Testing with [`pytest`](https://docs.pytest.org/en/latest/).
- Ready-to-use `.editorconfig` and `.gitignore`.
- Ready-to-use [`Devcontainer`](https://containers.dev/).
- Find dead code with [`vulture`](https://github.com/jendrikseipp/vulture).
- Avoid credential leaks with [`gitleaks`](https://github.com/gitleaks/gitleaks).
### Deployment features
- `GitHub` integration: Ready-to-use **Pull Requests templates** and several **Issue templates**
- `Github Actions` with predefined workflows.
- Everything is already set up for security checks, codestyle checks, code formatting, testing, linting, docker builds
- Always up-to-date dependencies with [`@dependabot`](https://dependabot.com/).
- Automatic release notes with [`Release Drafter`](https://github.com/marketplace/actions/release-drafter).
- Documentation with [`MkDocs`](https://www.mkdocs.org/).
### Open source community features
- Files such as: `LICENSE`, `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`, and `SECURITY.md` are generated automatically.
- [Semantic Versions](https://semver.org/) specification with [`Release Drafter`](https://github.com/marketplace/actions/release-drafter).
## How to use it
### Installation
To begin using the template consider updating [`copier`](https://copier.readthedocs.io/en/stable/):
```bash
pip install --upgrade copier
```
Then, you can copy the template to your destination folder:
```bash
copier copy --trust git+https://github.com/twsl/python-project-template path/to/destination --vcs-ref=HEAD
```
### Update
You can update the template in your destination folder with:
```bash
copier update --trust -A --vcs-ref=HEAD
```
### Development
The devcontainer is already set up for you, just open the project in VSCode and you will be prompted to open the project in the devcontainer.
To test the project you can run:
```bash
copier copy ./ ./dist --data-file "./.github/assets/.copier-answers-uv.yml" -f --vcs-ref=HEAD
```
```bash
copier copy ./ ./dist --data-file "./.github/assets/.copier-answers-poetry.yml" -f --vcs-ref=HEAD
```
### Variables
The template uses the following variables to customize the project:
| **Parameter** | **Default value** |
| ---------------------------------- | ------------------------------------------------ |
| `custom_install` | `customized` |
| `project_name` | `example_project` |
| `project_description` | `` |
| `repository_provider` | `github.com` |
| `ghec` | `false` |
| `ghes` | `false` |
| `primary_branch` | `main` |
| `author_username` | `` |
| `author_email` | `{{ author_username }}@users.noreply.github.com` |
| `repository_provider` | `github.com` |
| `repository_namespace` | `{{ author_username }}` |
| `repository_name` | `{{ project_name }}` |
| `copyright_holder` | `{{ author_username }}` |
| `copyright_holder_email` | `{{ author_email }}` |
| `copyright_year` | `2026` |
| `copyright_license` | `MIT` |
| `python_version` | `3.12` |
| `python_package_distribution_name` | `{{ project_name }}` |
| `python_package_import_name` | `{{ project_name }}` |
| `python_package_command_line_name` | `{{ project_name }}` |
| `line_ending` | `lf` |
| `package_manager` | `uv` |
| `type_checker` | `ty` |
| `use_precommit` | `true` |
| `precommit_tool` | `prek` |
| `include_docs` | `true` |
| `include_notebooks` | `true` |
| `include_databricks` | `false` |
| `github_runner_python_version` | `[3.12]` |
| `github_runner` | `ubuntu-latest` |
| `github_runner_ghec` | `ubuntu-2core-amd64` |
| `github_runner_clean` | `true` |
| `github_rate_limit` | `false` |
| `include_sample_code` | `false` |
| `self_signed` | `false` |
| `copier_auto_update` | `false` |
All input values will be saved in the `.copier-answers.yml`