You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- **Docker:** Production and development containers
43
+
{%- endif%}
44
+
{%- ifwith_conventional_commits%}
45
+
- **Versioning:** Conventional Commits with automated changelog
46
+
{%- endif%}
47
+
{%- ifpublish_to_pypi%}
48
+
- **Publishing:** Automated PyPI publishing via CI/CD
49
+
{%- endif%}
50
+
31
51
## Installation
32
52
33
-
{%ifpublish_to_pypi -%}
34
-
You can install this package in several ways:
53
+
{%- ifpublish_to_pypi%}
35
54
36
55
### From PyPI
37
56
@@ -46,14 +65,20 @@ You can install this package in several ways:
46
65
```bash
47
66
uv add {{ project_name }}
48
67
```
49
-
{%- endif%}
50
68
51
-
{%ifrepository_provider == 'github' -%}
52
-
{%ifpublish_to_pypi -%}
53
69
### From Source
54
-
{%else -%}
55
-
You can install this package in several ways:
56
-
{%endif%}
70
+
71
+
{%- elifrepository_provider == 'github'%}
72
+
73
+
### From Source
74
+
75
+
{%- else%}
76
+
77
+
To install the package, simply run:
78
+
79
+
{%- endif%}
80
+
81
+
{%- ifrepository_provider == 'github'%}
57
82
58
83
- Directly from GitHub:
59
84
@@ -65,55 +90,68 @@ You can install this package in several ways:
65
90
66
91
```bash
67
92
git clone {{ repository }}
68
-
cd my-package
93
+
cd {{ project_name }}
69
94
```
70
95
71
96
Then, install the dependencies using Make:
72
97
73
-
{%elifpublish_to_pypi -%}
74
-
### From Source
75
-
{%else -%}
76
-
To install the package, simply run:
77
-
{%endif%}
98
+
{%- endif%}
78
99
79
-
- For production dependencies:
100
+
- For development setup (includes dev dependencies and Git hooks):
80
101
81
102
```bash
82
-
make setup
103
+
make setup-dev
83
104
```
84
105
85
-
- For development setup (includes dev dependencies and Git hooks):
106
+
- For production dependencies only:
86
107
87
108
```bash
88
-
make setup-dev
109
+
make setup-prod
89
110
```
90
111
91
112
> [!note]
92
113
> This project requires both [`mise`](https://mise.jdx.dev/) and [`uv`](https://docs.astral.sh/uv/) to be installed.
93
114
> `make` tasks proxy through `mise run`, which in turn invokes `uv` and other tools.
94
115
95
-
{%ifwith_typer_cli -%}
116
+
{%- ifwith_typer_cli%}
117
+
96
118
> [!tip]
97
119
> To make the CLI available globally (without needing to activate the virtual environment every time), you can run:
98
120
> ```bash
99
121
> make setup-cli
100
122
> ```
101
123
{%- endif%}
102
124
103
-
> [!tip]
104
-
> This quick guide should get you started, but for a complete overview of the project's features and usage, check out the original [python-template-uv](https://github.com/bassemkaroui/python-template-uv) template used to generate this repository.
105
-
106
-
{%ifnotdocumentation -%}
107
125
## Documentation
108
126
109
-
You can generate the project documentation locally by running:
127
+
{%- ifdocumentation%}
128
+
129
+
Full documentation is available at [{{ documentation }}]({{ documentation }}).
130
+
{%- else%}
131
+
132
+
Generate the docs locally:
110
133
111
134
```bash
112
135
make docs-serve
113
136
```
114
137
115
-
This will build the documentation using MkDocs.
116
-
Once generated, simply open the provided URL in your browser to explore it.
138
+
This will build the documentation using MkDocs. Open the provided URL in your browser.
139
+
{%- endif%}
140
+
141
+
## Contributing
142
+
143
+
{%- ifdocumentation%}
144
+
145
+
Contributions are welcome! Please read the [development setup]({{ documentation }}/development/setup/) and [contributing guidelines]({{ documentation }}/development/contributing/) before submitting a PR.
146
+
{%- else%}
147
+
148
+
Contributions are welcome! Please read the [development setup](docs/development/setup.md) and [contributing guidelines](CONTRIBUTING.md) before submitting a PR.
149
+
{%- endif%}
150
+
151
+
{%- ifrepository_provider == 'github'%}
152
+
153
+
> [!note]
154
+
> This project was scaffolded with [python-template-uv](https://github.com/bassemkaroui/python-template-uv).
CI/CD runs on [GitHub Actions](https://docs.github.com/en/actions) with the workflow defined at `.github/workflows/main.yaml`. A custom composite action at `.github/actions/setup-env/` handles uv, mise, and Python setup across all jobs.
7
+
8
+
Concurrency is managed per workflow + ref — pushing a new commit cancels any in-progress run for the same branch.
9
+
10
+
## Triggers
11
+
12
+
| Event | Jobs |
13
+
|-------|------|
14
+
| Push to `main` | checks, tests |
15
+
| Push tag | checks, tests, release, deploy-docs{%ifpublish_to_pypi%}, publish-package{%endif%} |
| `RENOVATE_TOKEN` | renovate | Personal access token for Renovate |
71
+
{%- endif%}
72
+
73
+
## The Setup Action
74
+
75
+
`.github/actions/setup-env/action.yaml` is a composite action used by every job. It:
76
+
77
+
1. Installs [uv](https://docs.astral.sh/uv/) with caching enabled
78
+
2. Installs [mise](https://mise.jdx.dev/)
79
+
3. Sets up the requested Python version (accepts `python-version` or `python-version-file`)
80
+
{%ifdependency_updater == 'renovate'%}
81
+
82
+
## Dependency Updates (Renovate)
83
+
84
+
[Renovate](https://docs.renovatebot.com/) is configured via `renovate.json5` and runs as a GitHub Actions workflow (`.github/workflows/renovate.yaml`). It runs on weekdays at 20:00 UTC and weekends at 09:00 UTC.
85
+
86
+
A Dependency Dashboard issue is created in the repository for visibility and manual control.
87
+
{%- elifdependency_updater == 'dependabot'%}
88
+
89
+
## Dependency Updates (Dependabot)
90
+
91
+
[Dependabot](https://docs.github.com/en/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically) is configured via `.github/dependabot.yml`. It checks for GitHub Actions updates on a weekly schedule.
92
+
{%- endif%}
93
+
94
+
## Other Workflows
95
+
96
+
- **`pr-thank-you.yaml`** — Posts a Giphy reaction comment on newly opened pull requests.
97
+
{%- ifwith_conventional_commits%}
98
+
99
+
## Release Flow
100
+
101
+
1. Make commits following the [Conventional Commits](https://www.conventionalcommits.org/) format
102
+
2. Run `make release` locally — this bumps the version via commitizen, pushes commits and tags
103
+
3. The tag push triggers CI: **checks** → **tests** → **release** + **deploy-docs**{%ifpublish_to_pypi%} + **publish-package**{%endif%}
0 commit comments