python-template-project 0.1.20__tar.gz → 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_template_project-0.1.20 → python_template_project-0.2.0}/.github/workflows/build-macos.yml +8 -1
- {python_template_project-0.1.20 → python_template_project-0.2.0}/HISTORY.md +16 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/Makefile +6 -6
- {python_template_project-0.1.20/src/python_template_project.egg-info → python_template_project-0.2.0}/PKG-INFO +129 -13
- {python_template_project-0.1.20 → python_template_project-0.2.0}/README.md +126 -12
- {python_template_project-0.1.20 → python_template_project-0.2.0}/docs/index.md +126 -12
- {python_template_project-0.1.20 → python_template_project-0.2.0}/docs/usage/cli.md +14 -24
- {python_template_project-0.1.20 → python_template_project-0.2.0}/docs/usage/config.md +1 -1
- {python_template_project-0.1.20 → python_template_project-0.2.0}/pyproject.toml +2 -0
- python_template_project-0.2.0/scripts/show_tree.py +175 -0
- python_template_project-0.2.0/src/generic_config_cli_gui/cli_generator.py +177 -0
- python_template_project-0.2.0/src/generic_config_cli_gui/config_framework.py +362 -0
- python_template_project-0.2.0/src/generic_config_cli_gui/gui_generator.py +225 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/src/python_template_project/_version.py +2 -2
- python_template_project-0.2.0/src/python_template_project/cli/cli.py +132 -0
- python_template_project-0.2.0/src/python_template_project/config/config.py +209 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/src/python_template_project/core/base.py +183 -72
- {python_template_project-0.1.20 → python_template_project-0.2.0}/src/python_template_project/core/logging.py +9 -9
- python_template_project-0.2.0/src/python_template_project/gui/gui.py +542 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0/src/python_template_project.egg-info}/PKG-INFO +129 -13
- {python_template_project-0.1.20 → python_template_project-0.2.0}/src/python_template_project.egg-info/SOURCES.txt +5 -1
- {python_template_project-0.1.20 → python_template_project-0.2.0}/src/python_template_project.egg-info/requires.txt +2 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/src/python_template_project.egg-info/top_level.txt +1 -0
- python_template_project-0.2.0/tests/__init__.py +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/tests/test_generic_cli.py +24 -27
- {python_template_project-0.1.20 → python_template_project-0.2.0}/tests/test_gpx.py +6 -6
- {python_template_project-0.1.20 → python_template_project-0.2.0}/uv.lock +148 -1
- python_template_project-0.1.20/docs/develop/01_getting_started_dev.md +0 -29
- python_template_project-0.1.20/src/python_template_project/cli/cli.py +0 -217
- python_template_project-0.1.20/src/python_template_project/config/config.py +0 -557
- python_template_project-0.1.20/src/python_template_project/gui/gui.py +0 -615
- {python_template_project-0.1.20 → python_template_project-0.2.0}/.github/FUNDING.yml +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/.github/actions/setup-environment/action.yml +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/.github/dependabot.yml +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/.github/init.sh +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/.github/release_message.sh +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/.github/rename_project.sh +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/.github/template.yml +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/.github/workflows/build.yml +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/.github/workflows/main.yml +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/.github/workflows/release.yml +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/.github/workflows/rename_project.yml +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/.github/workflows/update_readme.yml +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/.gitignore +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/.idea/runConfigurations/config_generate.xml +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/.idea/runConfigurations/module_cli.xml +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/.idea/runConfigurations/module_gui.xml +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/.pre-commit-config.yaml +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/.readthedocs.yaml +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/LICENSE +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/config.yaml +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/docs/.nav.yml +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/docs/_static/img/favicon.png +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/docs/_static/img/logo.png +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/docs/css/custom.css +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/docs/develop/contributing.md +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/docs/develop/make_windows.md +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/docs/develop/naming_convention.md +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/docs/develop/pypi_release.md +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/docs/getting-started/install.md +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/docs/getting-started/virtual-environment.md +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/examples/kuhkopfsteig.gpx +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/examples/rother_lilienstein.gpx +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/examples/teneriffa.gpx +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/mkdocs.yml +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/scripts/show_filelist.ps1 +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/scripts/show_tree.ps1 +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/scripts/update_readme.py +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/setup.cfg +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/src/__init__.py +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/src/firewall_handler.py +0 -0
- {python_template_project-0.1.20/src/python_template_project → python_template_project-0.2.0/src/generic_config_cli_gui}/__init__.py +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/src/main.py +0 -0
- {python_template_project-0.1.20/src/python_template_project/cli → python_template_project-0.2.0/src/python_template_project}/__init__.py +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/src/python_template_project/__main__.py +0 -0
- {python_template_project-0.1.20/src/python_template_project/config → python_template_project-0.2.0/src/python_template_project/cli}/__init__.py +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/src/python_template_project/cli/__main__.py +0 -0
- {python_template_project-0.1.20/src/python_template_project/core → python_template_project-0.2.0/src/python_template_project/config}/__init__.py +0 -0
- {python_template_project-0.1.20/src/python_template_project/gui → python_template_project-0.2.0/src/python_template_project/core}/__init__.py +0 -0
- {python_template_project-0.1.20/tests → python_template_project-0.2.0/src/python_template_project/gui}/__init__.py +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/src/python_template_project/gui/__main__.py +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/src/python_template_project.egg-info/dependency_links.txt +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/src/python_template_project.egg-info/entry_points.txt +0 -0
- {python_template_project-0.1.20 → python_template_project-0.2.0}/template.yml.url +0 -0
{python_template_project-0.1.20 → python_template_project-0.2.0}/.github/workflows/build-macos.yml
RENAMED
|
@@ -30,7 +30,14 @@ jobs:
|
|
|
30
30
|
python-version: ${{ matrix.python-version }}
|
|
31
31
|
|
|
32
32
|
- name: Build Unified Executable and App Bundle with PyInstaller
|
|
33
|
-
run:
|
|
33
|
+
run: |
|
|
34
|
+
make build-macos
|
|
35
|
+
|
|
36
|
+
- name: Prepare ZIP file for release
|
|
37
|
+
run: |
|
|
38
|
+
echo "Create the ZIP archive from the contents of the release folder"
|
|
39
|
+
cd release
|
|
40
|
+
zip -r ../package-macOS.zip .
|
|
34
41
|
|
|
35
42
|
- name: Upload ZIP to GitHub Release
|
|
36
43
|
uses: softprops/action-gh-release@v2
|
|
@@ -4,6 +4,22 @@ Changelog
|
|
|
4
4
|
|
|
5
5
|
(unreleased)
|
|
6
6
|
------------
|
|
7
|
+
- Feat #33: Support kml files for input and display output files as
|
|
8
|
+
clickable links #33. [Paul Magister]
|
|
9
|
+
- Feat #31: move project specific namings into makefile so that it can
|
|
10
|
+
be renamed. [Paul Magister]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
0.1.20 (2025-06-20)
|
|
14
|
+
-------------------
|
|
15
|
+
- Feat #31: move project specific namings into makefile so that it can
|
|
16
|
+
be renamed. [Paul Magister]
|
|
17
|
+
- Feat #31: move project specific namings into makefile so that it can
|
|
18
|
+
be renamed. [Paul Magister]
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
0.1.19 (2025-06-20)
|
|
22
|
+
-------------------
|
|
7
23
|
- Feat #31: move project specific namings into makefile so that it can
|
|
8
24
|
be renamed. [Paul Magister]
|
|
9
25
|
- Feat #31: try this renaming automation. [Paul Magister]
|
|
@@ -87,10 +87,6 @@ build-macos: ## Build the macOS executable.
|
|
|
87
87
|
cp README.md release/
|
|
88
88
|
echo "Create usage instructions"
|
|
89
89
|
|
|
90
|
-
echo "Create the ZIP archive from the contents of the release folder"
|
|
91
|
-
cd release
|
|
92
|
-
zip -r ../package-macOS.zip .
|
|
93
|
-
|
|
94
90
|
.PHONY: watch
|
|
95
91
|
watch: ## Run tests on every change.
|
|
96
92
|
ls **/**.py | entr uv run pytest -s -vvv -l --tb=long --maxfail=1 tests/
|
|
@@ -160,11 +156,15 @@ docs: ## Build and sync the documentation.
|
|
|
160
156
|
|
|
161
157
|
.PHONY: list
|
|
162
158
|
list: ## Show project file list (excluding ignored folders)
|
|
163
|
-
@powershell -NoProfile -ExecutionPolicy Bypass -File ./scripts/
|
|
159
|
+
@powershell -NoProfile -ExecutionPolicy Bypass -File ./scripts/show_filelist.ps1
|
|
164
160
|
|
|
165
161
|
.PHONY: tree
|
|
166
162
|
tree: ## Show project tree (excluding ignored folders)
|
|
167
|
-
@powershell -NoProfile -ExecutionPolicy Bypass -File ./scripts/
|
|
163
|
+
@powershell -NoProfile -ExecutionPolicy Bypass -File ./scripts/show_tree.ps1
|
|
164
|
+
|
|
165
|
+
.PHONY: pytree
|
|
166
|
+
pytree: ## Show project tree (excluding ignored folders)
|
|
167
|
+
@uv run ./scripts/show_tree.py
|
|
168
168
|
|
|
169
169
|
.PHONY: init
|
|
170
170
|
init: ## Initialize the project based on an application template.
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-template-project
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Feature-rich Python project template designed for robustness and ease of use.
|
|
5
5
|
Author: pamagister
|
|
6
6
|
Requires-Python: <3.12,>=3.10
|
|
7
7
|
Description-Content-Type: text/markdown
|
|
8
8
|
License-File: LICENSE
|
|
9
|
+
Requires-Dist: fastkml>=1.1.0
|
|
9
10
|
Requires-Dist: gpxpy>=1.6.2
|
|
10
11
|
Requires-Dist: pydantic>=2.11.7
|
|
11
12
|
Requires-Dist: pyyaml>=6.0.2
|
|
13
|
+
Requires-Dist: shapely>=2.1.1
|
|
12
14
|
Requires-Dist: srtm-py>=0.3.7
|
|
13
15
|
Provides-Extra: dev
|
|
14
16
|
Requires-Dist: pytest>=8.4.0; extra == "dev"
|
|
@@ -39,30 +41,98 @@ A feature-rich Python project template with with auto-generated CLI, GUI and par
|
|
|
39
41
|
[](https://github.com/pamagister/python-template-project/blob/main/LICENSE)
|
|
40
42
|
[](https://github.com/pamagister/python-template-project/issues)
|
|
41
43
|
[](https://pypi.org/project/python-template-project/)
|
|
44
|
+
[](https://pepy.tech/project/python-template-project/)
|
|
42
45
|
|
|
43
46
|
|
|
44
47
|
This template provides a solid foundation for your next Python project, incorporating best practices for testing, automation, and distribution. It streamlines the development process with a comprehensive set of pre-configured tools and workflows, allowing you to focus on writing code.
|
|
45
48
|
|
|
46
|
-
|
|
49
|
+
---
|
|
47
50
|
|
|
48
|
-
|
|
51
|
+
## How to use this template
|
|
49
52
|
|
|
50
|
-
|
|
53
|
+
Getting started on developing your own project based on this template
|
|
51
54
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
+
> **DO NOT FORK**
|
|
56
|
+
> This project is meant to be used from **[Use this template](https://github.com/pamagister/python-template-project/generate)** feature.
|
|
55
57
|
|
|
56
|
-
|
|
58
|
+
---
|
|
57
59
|
|
|
58
|
-
|
|
59
|
-
python-template-project
|
|
60
|
-
```
|
|
60
|
+
1. **Create a new repository using GitHub template**
|
|
61
|
+
Click on **[Use this template](https://github.com/pamagister/python-template-project/generate)**.
|
|
61
62
|
|
|
62
|
-
|
|
63
|
+
2. **Give a name to your project**
|
|
64
|
+
For example: `my-python-project`
|
|
65
|
+
*(Hyphens may ne used as project name; they are converted during renaming internally to underscores for packages.)*
|
|
66
|
+
|
|
67
|
+
3. **Set write permissions**
|
|
68
|
+
Go to: `Repository -> Settings -> Actions -> General -> Workflow permissions`
|
|
69
|
+
Select: `Read and write permissions`, then click **Save**.
|
|
70
|
+
|
|
71
|
+
4. **Trigger rename workflow**
|
|
72
|
+
Navigate to `Actions` tab → Select **Rename Action** → Run workflow on the `main` branch.
|
|
73
|
+
|
|
74
|
+
5. **Wait for the workflow to finish**
|
|
75
|
+
|
|
76
|
+
6. **Clone the repository**
|
|
77
|
+
Run:
|
|
78
|
+
```bash
|
|
79
|
+
git clone [your-github-url]
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
7. **Open the project in your IDE**
|
|
63
83
|
|
|
64
|
-
|
|
84
|
+
8. **Install dependencies and create virtual environment**
|
|
85
|
+
Run:
|
|
65
86
|
|
|
87
|
+
```bash
|
|
88
|
+
make install
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
9. **Configure your IDE**
|
|
92
|
+
Set `.venv` as the local Python virtual environment.
|
|
93
|
+
|
|
94
|
+
10. **Adjust project metadata**
|
|
95
|
+
Modify `pyproject.toml` (e.g., project description, authors, license, etc.)
|
|
96
|
+
|
|
97
|
+
11. **Clean up template scripts**
|
|
98
|
+
Delete the files:
|
|
99
|
+
|
|
100
|
+
* `rename_project.yml`
|
|
101
|
+
* `rename_project.sh`
|
|
102
|
+
|
|
103
|
+
12. **Format your codebase**
|
|
104
|
+
Run:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
make fmt
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
This will auto-format your files and reorder imports (based on any name changes).
|
|
111
|
+
|
|
112
|
+
13. **Enable pre-commit hooks**
|
|
113
|
+
Run:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
uv run pre-commit install
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
14. **Add repository to ReadTheDocs**
|
|
120
|
+
Visit: [https://app.readthedocs.org/dashboard/import/](https://app.readthedocs.org/dashboard/import/)
|
|
121
|
+
|
|
122
|
+
15. **Configure PyPI publishing**
|
|
123
|
+
|
|
124
|
+
* Generate a **PyPI API token** from your PyPI account.
|
|
125
|
+
* Go to **GitHub → Settings → Secrets and variables → Actions**.
|
|
126
|
+
* Add the secret as `PYPI_API_TOKEN`.
|
|
127
|
+
|
|
128
|
+
16. **Release your first version**
|
|
129
|
+
Run:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
make release
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
66
136
|
|
|
67
137
|
## Feature overview
|
|
68
138
|
|
|
@@ -84,3 +154,49 @@ python-template-project-gui
|
|
|
84
154
|
* **[setuptools](https://pypi.org/project/setuptools/)** is used to package the project and manage dependencies.
|
|
85
155
|
* **[setuptools-scm](https://pypi.org/project/setuptools-scm/)** is used to automatically generate the `_version.py` file from the `pyproject.toml` file.
|
|
86
156
|
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Installation
|
|
160
|
+
|
|
161
|
+
Get an impression of how your own project could be installed and look like.
|
|
162
|
+
|
|
163
|
+
Download from [PyPI](https://pypi.org/).
|
|
164
|
+
|
|
165
|
+
💾 For more installation options see [install](getting-started/install.md).
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
pip install python-template-project
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
Run GUI from command line
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
python-template-project-gui
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Run application from command line using CLI
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
python -m python_template_project.cli [OPTIONS] path/to/file
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
python-template-project-cli [OPTIONS] path/to/file
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Troubleshooting
|
|
190
|
+
|
|
191
|
+
### Problems with release pipeline
|
|
192
|
+
|
|
193
|
+
If you get this error below:
|
|
194
|
+
```bash
|
|
195
|
+
/home/runner/work/_temp/xxxx_xxx.sh: line 1: .github/release_message.sh: Permission denied
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
You have to run these commands in your IDE Terminal or the git bash and then push the changes.
|
|
199
|
+
```bash
|
|
200
|
+
git update-index --chmod=+x ./.github/release_message.sh
|
|
201
|
+
```
|
|
202
|
+
|
|
@@ -10,30 +10,98 @@ A feature-rich Python project template with with auto-generated CLI, GUI and par
|
|
|
10
10
|
[](https://github.com/pamagister/python-template-project/blob/main/LICENSE)
|
|
11
11
|
[](https://github.com/pamagister/python-template-project/issues)
|
|
12
12
|
[](https://pypi.org/project/python-template-project/)
|
|
13
|
+
[](https://pepy.tech/project/python-template-project/)
|
|
13
14
|
|
|
14
15
|
|
|
15
16
|
This template provides a solid foundation for your next Python project, incorporating best practices for testing, automation, and distribution. It streamlines the development process with a comprehensive set of pre-configured tools and workflows, allowing you to focus on writing code.
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
---
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
## How to use this template
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
Getting started on developing your own project based on this template
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
```
|
|
24
|
+
> **DO NOT FORK**
|
|
25
|
+
> This project is meant to be used from **[Use this template](https://github.com/pamagister/python-template-project/generate)** feature.
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
---
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
python-template-project
|
|
31
|
-
```
|
|
29
|
+
1. **Create a new repository using GitHub template**
|
|
30
|
+
Click on **[Use this template](https://github.com/pamagister/python-template-project/generate)**.
|
|
32
31
|
|
|
33
|
-
|
|
32
|
+
2. **Give a name to your project**
|
|
33
|
+
For example: `my-python-project`
|
|
34
|
+
*(Hyphens may ne used as project name; they are converted during renaming internally to underscores for packages.)*
|
|
35
|
+
|
|
36
|
+
3. **Set write permissions**
|
|
37
|
+
Go to: `Repository -> Settings -> Actions -> General -> Workflow permissions`
|
|
38
|
+
Select: `Read and write permissions`, then click **Save**.
|
|
39
|
+
|
|
40
|
+
4. **Trigger rename workflow**
|
|
41
|
+
Navigate to `Actions` tab → Select **Rename Action** → Run workflow on the `main` branch.
|
|
42
|
+
|
|
43
|
+
5. **Wait for the workflow to finish**
|
|
44
|
+
|
|
45
|
+
6. **Clone the repository**
|
|
46
|
+
Run:
|
|
47
|
+
```bash
|
|
48
|
+
git clone [your-github-url]
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
7. **Open the project in your IDE**
|
|
34
52
|
|
|
35
|
-
|
|
53
|
+
8. **Install dependencies and create virtual environment**
|
|
54
|
+
Run:
|
|
36
55
|
|
|
56
|
+
```bash
|
|
57
|
+
make install
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
9. **Configure your IDE**
|
|
61
|
+
Set `.venv` as the local Python virtual environment.
|
|
62
|
+
|
|
63
|
+
10. **Adjust project metadata**
|
|
64
|
+
Modify `pyproject.toml` (e.g., project description, authors, license, etc.)
|
|
65
|
+
|
|
66
|
+
11. **Clean up template scripts**
|
|
67
|
+
Delete the files:
|
|
68
|
+
|
|
69
|
+
* `rename_project.yml`
|
|
70
|
+
* `rename_project.sh`
|
|
71
|
+
|
|
72
|
+
12. **Format your codebase**
|
|
73
|
+
Run:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
make fmt
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
This will auto-format your files and reorder imports (based on any name changes).
|
|
80
|
+
|
|
81
|
+
13. **Enable pre-commit hooks**
|
|
82
|
+
Run:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
uv run pre-commit install
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
14. **Add repository to ReadTheDocs**
|
|
89
|
+
Visit: [https://app.readthedocs.org/dashboard/import/](https://app.readthedocs.org/dashboard/import/)
|
|
90
|
+
|
|
91
|
+
15. **Configure PyPI publishing**
|
|
92
|
+
|
|
93
|
+
* Generate a **PyPI API token** from your PyPI account.
|
|
94
|
+
* Go to **GitHub → Settings → Secrets and variables → Actions**.
|
|
95
|
+
* Add the secret as `PYPI_API_TOKEN`.
|
|
96
|
+
|
|
97
|
+
16. **Release your first version**
|
|
98
|
+
Run:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
make release
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
37
105
|
|
|
38
106
|
## Feature overview
|
|
39
107
|
|
|
@@ -55,3 +123,49 @@ python-template-project-gui
|
|
|
55
123
|
* **[setuptools](https://pypi.org/project/setuptools/)** is used to package the project and manage dependencies.
|
|
56
124
|
* **[setuptools-scm](https://pypi.org/project/setuptools-scm/)** is used to automatically generate the `_version.py` file from the `pyproject.toml` file.
|
|
57
125
|
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Installation
|
|
129
|
+
|
|
130
|
+
Get an impression of how your own project could be installed and look like.
|
|
131
|
+
|
|
132
|
+
Download from [PyPI](https://pypi.org/).
|
|
133
|
+
|
|
134
|
+
💾 For more installation options see [install](docs/getting-started/install.md).
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
pip install python-template-project
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Run GUI from command line
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
python-template-project-gui
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Run application from command line using CLI
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
python -m python_template_project.cli [OPTIONS] path/to/file
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
python-template-project-cli [OPTIONS] path/to/file
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Troubleshooting
|
|
159
|
+
|
|
160
|
+
### Problems with release pipeline
|
|
161
|
+
|
|
162
|
+
If you get this error below:
|
|
163
|
+
```bash
|
|
164
|
+
/home/runner/work/_temp/xxxx_xxx.sh: line 1: .github/release_message.sh: Permission denied
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
You have to run these commands in your IDE Terminal or the git bash and then push the changes.
|
|
168
|
+
```bash
|
|
169
|
+
git update-index --chmod=+x ./.github/release_message.sh
|
|
170
|
+
```
|
|
171
|
+
|
|
@@ -8,30 +8,98 @@ A feature-rich Python project template with with auto-generated CLI, GUI and par
|
|
|
8
8
|
[](https://github.com/pamagister/python-template-project/blob/main/LICENSE)
|
|
9
9
|
[](https://github.com/pamagister/python-template-project/issues)
|
|
10
10
|
[](https://pypi.org/project/python-template-project/)
|
|
11
|
+
[](https://pepy.tech/project/python-template-project/)
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
This template provides a solid foundation for your next Python project, incorporating best practices for testing, automation, and distribution. It streamlines the development process with a comprehensive set of pre-configured tools and workflows, allowing you to focus on writing code.
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
---
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
## How to use this template
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
Getting started on developing your own project based on this template
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
```
|
|
22
|
+
> **DO NOT FORK**
|
|
23
|
+
> This project is meant to be used from **[Use this template](https://github.com/pamagister/python-template-project/generate)** feature.
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
---
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
python-template-project
|
|
29
|
-
```
|
|
27
|
+
1. **Create a new repository using GitHub template**
|
|
28
|
+
Click on **[Use this template](https://github.com/pamagister/python-template-project/generate)**.
|
|
30
29
|
|
|
31
|
-
|
|
30
|
+
2. **Give a name to your project**
|
|
31
|
+
For example: `my-python-project`
|
|
32
|
+
*(Hyphens may ne used as project name; they are converted during renaming internally to underscores for packages.)*
|
|
33
|
+
|
|
34
|
+
3. **Set write permissions**
|
|
35
|
+
Go to: `Repository -> Settings -> Actions -> General -> Workflow permissions`
|
|
36
|
+
Select: `Read and write permissions`, then click **Save**.
|
|
37
|
+
|
|
38
|
+
4. **Trigger rename workflow**
|
|
39
|
+
Navigate to `Actions` tab → Select **Rename Action** → Run workflow on the `main` branch.
|
|
40
|
+
|
|
41
|
+
5. **Wait for the workflow to finish**
|
|
42
|
+
|
|
43
|
+
6. **Clone the repository**
|
|
44
|
+
Run:
|
|
45
|
+
```bash
|
|
46
|
+
git clone [your-github-url]
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
7. **Open the project in your IDE**
|
|
32
50
|
|
|
33
|
-
|
|
51
|
+
8. **Install dependencies and create virtual environment**
|
|
52
|
+
Run:
|
|
34
53
|
|
|
54
|
+
```bash
|
|
55
|
+
make install
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
9. **Configure your IDE**
|
|
59
|
+
Set `.venv` as the local Python virtual environment.
|
|
60
|
+
|
|
61
|
+
10. **Adjust project metadata**
|
|
62
|
+
Modify `pyproject.toml` (e.g., project description, authors, license, etc.)
|
|
63
|
+
|
|
64
|
+
11. **Clean up template scripts**
|
|
65
|
+
Delete the files:
|
|
66
|
+
|
|
67
|
+
* `rename_project.yml`
|
|
68
|
+
* `rename_project.sh`
|
|
69
|
+
|
|
70
|
+
12. **Format your codebase**
|
|
71
|
+
Run:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
make fmt
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
This will auto-format your files and reorder imports (based on any name changes).
|
|
78
|
+
|
|
79
|
+
13. **Enable pre-commit hooks**
|
|
80
|
+
Run:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
uv run pre-commit install
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
14. **Add repository to ReadTheDocs**
|
|
87
|
+
Visit: [https://app.readthedocs.org/dashboard/import/](https://app.readthedocs.org/dashboard/import/)
|
|
88
|
+
|
|
89
|
+
15. **Configure PyPI publishing**
|
|
90
|
+
|
|
91
|
+
* Generate a **PyPI API token** from your PyPI account.
|
|
92
|
+
* Go to **GitHub → Settings → Secrets and variables → Actions**.
|
|
93
|
+
* Add the secret as `PYPI_API_TOKEN`.
|
|
94
|
+
|
|
95
|
+
16. **Release your first version**
|
|
96
|
+
Run:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
make release
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
---
|
|
35
103
|
|
|
36
104
|
## Feature overview
|
|
37
105
|
|
|
@@ -53,3 +121,49 @@ python-template-project-gui
|
|
|
53
121
|
* **[setuptools](https://pypi.org/project/setuptools/)** is used to package the project and manage dependencies.
|
|
54
122
|
* **[setuptools-scm](https://pypi.org/project/setuptools-scm/)** is used to automatically generate the `_version.py` file from the `pyproject.toml` file.
|
|
55
123
|
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Installation
|
|
127
|
+
|
|
128
|
+
Get an impression of how your own project could be installed and look like.
|
|
129
|
+
|
|
130
|
+
Download from [PyPI](https://pypi.org/).
|
|
131
|
+
|
|
132
|
+
💾 For more installation options see [install](getting-started/install.md).
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
pip install python-template-project
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Run GUI from command line
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
python-template-project-gui
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Run application from command line using CLI
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
python -m python_template_project.cli [OPTIONS] path/to/file
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
python-template-project-cli [OPTIONS] path/to/file
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Troubleshooting
|
|
157
|
+
|
|
158
|
+
### Problems with release pipeline
|
|
159
|
+
|
|
160
|
+
If you get this error below:
|
|
161
|
+
```bash
|
|
162
|
+
/home/runner/work/_temp/xxxx_xxx.sh: line 1: .github/release_message.sh: Permission denied
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
You have to run these commands in your IDE Terminal or the git bash and then push the changes.
|
|
166
|
+
```bash
|
|
167
|
+
git update-index --chmod=+x ./.github/release_message.sh
|
|
168
|
+
```
|
|
169
|
+
|
|
@@ -1,55 +1,45 @@
|
|
|
1
|
-
# Command
|
|
1
|
+
# Command Line Interface
|
|
2
2
|
|
|
3
|
-
Command line options
|
|
3
|
+
Command line options for app
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
|
-
python -m
|
|
6
|
+
python -m app [OPTIONS] input
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
## ⚙️ CLI-Options
|
|
9
|
+
## Options
|
|
12
10
|
|
|
13
11
|
| Option | Type | Description | Default | Choices |
|
|
14
12
|
|-----------------------|------|---------------------------------------------------|------------|---------------|
|
|
15
|
-
| `
|
|
13
|
+
| `input` | str | Path to input (file or folder) | *required* | - |
|
|
16
14
|
| `--output` | str | Path to output destination | *required* | - |
|
|
17
15
|
| `--min_dist` | int | Maximum distance between two waypoints | 20 | - |
|
|
18
16
|
| `--extract_waypoints` | bool | Extract starting points of each track as waypoint | True | [True, False] |
|
|
19
17
|
| `--elevation` | bool | Include elevation data in waypoints | True | [True, False] |
|
|
20
18
|
|
|
21
19
|
|
|
22
|
-
##
|
|
23
|
-
|
|
24
|
-
In the example, the following is assumed: `example.input` in the current directory
|
|
25
|
-
|
|
20
|
+
## Examples
|
|
26
21
|
|
|
27
|
-
### 1. Standard version (only required parameter)
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
python -m python_template_project.cli input
|
|
31
|
-
```
|
|
32
22
|
|
|
33
|
-
###
|
|
23
|
+
### 1. Basic usage
|
|
34
24
|
|
|
35
25
|
```bash
|
|
36
|
-
python -m
|
|
26
|
+
python -m app input
|
|
37
27
|
```
|
|
38
28
|
|
|
39
|
-
###
|
|
29
|
+
### 2. With min_dist parameter
|
|
40
30
|
|
|
41
31
|
```bash
|
|
42
|
-
python -m
|
|
32
|
+
python -m app --min_dist 20 input
|
|
43
33
|
```
|
|
44
34
|
|
|
45
|
-
###
|
|
35
|
+
### 3. With extract_waypoints parameter
|
|
46
36
|
|
|
47
37
|
```bash
|
|
48
|
-
python -m
|
|
38
|
+
python -m app --extract_waypoints True input
|
|
49
39
|
```
|
|
50
40
|
|
|
51
|
-
###
|
|
41
|
+
### 4. With elevation parameter
|
|
52
42
|
|
|
53
43
|
```bash
|
|
54
|
-
python -m
|
|
44
|
+
python -m app --elevation True input
|
|
55
45
|
```
|