python-template-project 0.1.0__tar.gz → 0.1.15__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.0 → python_template_project-0.1.15}/HISTORY.md +8 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/Makefile +21 -11
- {python_template_project-0.1.0 → python_template_project-0.1.15}/PKG-INFO +26 -22
- {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/index.md +7 -4
- {python_template_project-0.1.0 → python_template_project-0.1.15}/pyproject.toml +5 -6
- python_template_project-0.1.15/setup.cfg +4 -0
- python_template_project-0.1.15/src/VERSION +1 -0
- python_template_project-0.1.15/src/python_template_project/_version.py +21 -0
- python_template_project-0.1.15/src/python_template_project.egg-info/PKG-INFO +96 -0
- python_template_project-0.1.15/src/python_template_project.egg-info/SOURCES.txt +72 -0
- python_template_project-0.1.15/src/python_template_project.egg-info/dependency_links.txt +1 -0
- python_template_project-0.1.15/src/python_template_project.egg-info/entry_points.txt +3 -0
- python_template_project-0.1.15/src/python_template_project.egg-info/requires.txt +23 -0
- python_template_project-0.1.15/src/python_template_project.egg-info/top_level.txt +3 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/uv.lock +0 -1
- python_template_project-0.1.0/src/VERSION +0 -1
- {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/FUNDING.yml +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/actions/setup-environment/action.yml +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/dependabot.yml +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/init.sh +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/release_message.sh +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/rename_project.sh +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/workflows/build-macos.yml +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/workflows/build.yml +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/workflows/main.yml +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/workflows/release.yml +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/workflows/update-readme.yml +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/.gitignore +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/.idea/runConfigurations/config_generate.xml +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/.idea/runConfigurations/module_cli.xml +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/.idea/runConfigurations/module_gui.xml +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/.pre-commit-config.yaml +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/.readthedocs.yaml +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/LICENSE +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/README.md +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/config.yaml +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/.nav.yml +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/_static/img/favicon.png +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/_static/img/logo.png +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/css/custom.css +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/develop/contributing.md +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/develop/make_windows.md +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/develop/pypi_release.md +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/getting-started/install.md +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/getting-started/virtual-environment.md +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/usage/cli.md +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/usage/config.md +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/examples/kuhkopfsteig.gpx +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/examples/rother_lilienstein.gpx +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/examples/teneriffa.gpx +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/mkdocs.yml +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/scripts/show-filelist.ps1 +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/scripts/show-tree.ps1 +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/scripts/update_readme.py +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/src/__init__.py +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/src/main.py +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/__init__.py +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/__main__.py +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/cli/__init__.py +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/cli/__main__.py +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/cli/cli.py +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/config/__init__.py +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/config/config.py +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/core/__init__.py +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/core/base.py +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/core/logging.py +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/gui/__init__.py +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/gui/__main__.py +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/gui/gui.py +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/tests/__init__.py +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/tests/test_generic_cli.py +0 -0
- {python_template_project-0.1.0 → python_template_project-0.1.15}/tests/test_gpx.py +0 -0
|
@@ -4,6 +4,14 @@ Changelog
|
|
|
4
4
|
|
|
5
5
|
(unreleased)
|
|
6
6
|
------------
|
|
7
|
+
- Feat #30: release project on pypi: deploy section in release.yml.
|
|
8
|
+
[Paul Magister]
|
|
9
|
+
- Feat #30: release project on pypi: rename contributing section, add
|
|
10
|
+
pypi_release.md doc. [Paul Magister]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
0.1.13 (2025-06-19)
|
|
14
|
+
-------------------
|
|
7
15
|
- Feat #16: fix installer link and name. [Paul Magister]
|
|
8
16
|
- Feat #16: release. [Paul Magister]
|
|
9
17
|
|
|
@@ -89,19 +89,29 @@ virtualenv: ## Create a virtual environment.
|
|
|
89
89
|
release: ## Create a new tag for release.
|
|
90
90
|
@echo "WARNING: This operation will create a version tag and push to GitHub"
|
|
91
91
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
92
|
+
# Get the latest Git tag if it exists, otherwise default to 0.0.0 for calculations
|
|
93
|
+
# 'git describe --tags --abbrev=0' gets the most recent tag
|
|
94
|
+
# '|| echo 0.0.0' provides a fallback if no tags exist yet
|
|
95
|
+
@CURRENT_TAG=$$(git describe --tags --abbrev=0 2>/dev/null || echo "0.0.0")
|
|
96
|
+
@echo "Current (latest) Git tag: $$CURRENT_TAG"
|
|
97
|
+
|
|
98
|
+
# Suggest next patch version based on the current tag
|
|
99
|
+
IFS=. read -r MAJOR MINOR PATCH <<< "$$CURRENT_TAG"
|
|
100
|
+
@NEXT_PATCH_VERSION="$$MAJOR.$$MINOR.$$((PATCH + 1))"
|
|
101
|
+
|
|
102
|
+
# Prompt the user for the new tag, suggesting the next patch version by default
|
|
103
|
+
read -e -i "$$NEXT_PATCH_VERSION" -p "Enter the new release tag (e.g., 1.0.0, 1.1.0, 1.1.1): " NEW_TAG
|
|
104
|
+
|
|
105
|
+
# Generate changelog *before* tagging, based on existing history up to the new tag point
|
|
98
106
|
uv run gitchangelog > HISTORY.md
|
|
99
|
-
git add
|
|
100
|
-
git commit -m "
|
|
101
|
-
|
|
102
|
-
git tag $${
|
|
107
|
+
git add HISTORY.md
|
|
108
|
+
git commit -m "docs: Update HISTORY.md for release $${NEW_TAG}"
|
|
109
|
+
|
|
110
|
+
echo "Creating git tag : $${NEW_TAG}"
|
|
111
|
+
git tag "$${NEW_TAG}"
|
|
103
112
|
git push -u origin HEAD --tags
|
|
104
|
-
|
|
113
|
+
|
|
114
|
+
echo "GitHub Actions will detect the new tag and trigger the release workflows."
|
|
105
115
|
echo "Add modified files to commit and push them to main"
|
|
106
116
|
|
|
107
117
|
.PHONY: docs
|
|
@@ -1,32 +1,33 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-template-project
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.15
|
|
4
4
|
Summary: Feature-rich Python project template designed for robustness and ease of use.
|
|
5
5
|
Author: pamagister
|
|
6
|
-
License-File: LICENSE
|
|
7
6
|
Requires-Python: <3.12,>=3.10
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
License-File: LICENSE
|
|
8
9
|
Requires-Dist: gpxpy>=1.6.2
|
|
9
10
|
Requires-Dist: pydantic>=2.11.7
|
|
10
11
|
Requires-Dist: pyyaml>=6.0.2
|
|
11
12
|
Requires-Dist: srtm-py>=0.3.7
|
|
12
13
|
Provides-Extra: dev
|
|
13
|
-
Requires-Dist:
|
|
14
|
-
Requires-Dist:
|
|
15
|
-
Requires-Dist:
|
|
16
|
-
Requires-Dist:
|
|
17
|
-
Requires-Dist:
|
|
18
|
-
Requires-Dist:
|
|
19
|
-
Requires-Dist:
|
|
20
|
-
Requires-Dist:
|
|
21
|
-
Requires-Dist:
|
|
22
|
-
Requires-Dist:
|
|
23
|
-
Requires-Dist:
|
|
24
|
-
Requires-Dist: ruff>=0.11.13; extra ==
|
|
14
|
+
Requires-Dist: pytest>=8.4.0; extra == "dev"
|
|
15
|
+
Requires-Dist: pytest-mock>=3.14.1; extra == "dev"
|
|
16
|
+
Requires-Dist: coverage>=7.8.2; extra == "dev"
|
|
17
|
+
Requires-Dist: flake8>=7.2.0; extra == "dev"
|
|
18
|
+
Requires-Dist: black>=25.1.0; extra == "dev"
|
|
19
|
+
Requires-Dist: isort>=6.0.1; extra == "dev"
|
|
20
|
+
Requires-Dist: pytest-cov>=6.1.1; extra == "dev"
|
|
21
|
+
Requires-Dist: mypy>=1.16.0; extra == "dev"
|
|
22
|
+
Requires-Dist: gitchangelog>=3.0.4; extra == "dev"
|
|
23
|
+
Requires-Dist: pyinstaller>=5.8; extra == "dev"
|
|
24
|
+
Requires-Dist: pre-commit>=4.2.0; extra == "dev"
|
|
25
|
+
Requires-Dist: ruff>=0.11.13; extra == "dev"
|
|
25
26
|
Provides-Extra: docs
|
|
26
|
-
Requires-Dist: mkdocs
|
|
27
|
-
Requires-Dist: mkdocs>=
|
|
28
|
-
Requires-Dist: pygments>=2.19.1; extra ==
|
|
29
|
-
|
|
27
|
+
Requires-Dist: mkdocs>=1.6.1; extra == "docs"
|
|
28
|
+
Requires-Dist: mkdocs-awesome-nav>=2.6.1; extra == "docs"
|
|
29
|
+
Requires-Dist: pygments>=2.19.1; extra == "docs"
|
|
30
|
+
Dynamic: license-file
|
|
30
31
|
|
|
31
32
|
# Welcome to python-template-project
|
|
32
33
|
|
|
@@ -46,17 +47,20 @@ This template provides a solid foundation for your next Python project, incorpor
|
|
|
46
47
|
## Feature overview
|
|
47
48
|
|
|
48
49
|
* **Testing:** Unit testing setup with `pytest`.
|
|
49
|
-
* **CI/CD:**
|
|
50
|
-
* **Code Formatting:** Pre-commit hook with the
|
|
50
|
+
* **CI/CD:** [GitHub Actions](https://github.com/features/actions) for automated builds (Windows, macOS), unit tests, and code checks.
|
|
51
|
+
* **Code Formatting and Linting:** Pre-commit hook with the [RUFF auto-formatter](https://docs.astral.sh/ruff/) to ensure consistent code style.
|
|
51
52
|
* **Automated Builds:** GitHub pipeline for automatically building a Windows executable and a macOS installer.
|
|
52
|
-
* **Package Management:** Utilizes
|
|
53
|
+
* **Package Management:** Utilizes [uv](https://docs.astral.sh/uv/getting-started/), an extremely fast Python package manager, with dependencies managed in `pyproject.toml`.
|
|
53
54
|
* **Parameter-Driven Automation:**
|
|
54
55
|
* Automatic generation of a configuration file from parameter definitions.
|
|
55
56
|
* Automatic generation of a Command-Line Interface (CLI) from the same parameters.
|
|
56
57
|
* Automatic generation of CLI API documentation.
|
|
57
|
-
* **Documentation:** Configuration for publishing documentation on Read the Docs.
|
|
58
|
+
* **Documentation:** Configuration for publishing documentation on [Read the Docs](https://about.readthedocs.com/) using [mkdocs](https://www.mkdocs.org/) .
|
|
58
59
|
* **Workflow Automation:** A `Makefile` is included to simplify and automate common development tasks.
|
|
59
60
|
* **Minimalist GUI:** Comes with a basic GUI based on [tkinker](https://tkdocs.com/tutorial/index.html) that includes an auto-generated settings menu based on your defined parameters.
|
|
61
|
+
* **Release pipeline:** Automated releases unsing the Makefile `make release` command, which creates a new tag and pushes it to the remote repo. The `release` pipeline will automatically create a new release on GitHub and trigger a release on PyPI.
|
|
62
|
+
* **[setuptools](https://pypi.org/project/setuptools/)** is used to package the project and manage dependencies.
|
|
63
|
+
* **[setuptools-scm](https://pypi.org/project/setuptools-scm/)** is used to automatically generate the `_version.py` file from the `pyproject.toml` file.
|
|
60
64
|
|
|
61
65
|
## Getting started
|
|
62
66
|
|
|
@@ -16,17 +16,20 @@ This template provides a solid foundation for your next Python project, incorpor
|
|
|
16
16
|
## Feature overview
|
|
17
17
|
|
|
18
18
|
* **Testing:** Unit testing setup with `pytest`.
|
|
19
|
-
* **CI/CD:**
|
|
20
|
-
* **Code Formatting:** Pre-commit hook with the
|
|
19
|
+
* **CI/CD:** [GitHub Actions](https://github.com/features/actions) for automated builds (Windows, macOS), unit tests, and code checks.
|
|
20
|
+
* **Code Formatting and Linting:** Pre-commit hook with the [RUFF auto-formatter](https://docs.astral.sh/ruff/) to ensure consistent code style.
|
|
21
21
|
* **Automated Builds:** GitHub pipeline for automatically building a Windows executable and a macOS installer.
|
|
22
|
-
* **Package Management:** Utilizes
|
|
22
|
+
* **Package Management:** Utilizes [uv](https://docs.astral.sh/uv/getting-started/), an extremely fast Python package manager, with dependencies managed in `pyproject.toml`.
|
|
23
23
|
* **Parameter-Driven Automation:**
|
|
24
24
|
* Automatic generation of a configuration file from parameter definitions.
|
|
25
25
|
* Automatic generation of a Command-Line Interface (CLI) from the same parameters.
|
|
26
26
|
* Automatic generation of CLI API documentation.
|
|
27
|
-
* **Documentation:** Configuration for publishing documentation on Read the Docs.
|
|
27
|
+
* **Documentation:** Configuration for publishing documentation on [Read the Docs](https://about.readthedocs.com/) using [mkdocs](https://www.mkdocs.org/) .
|
|
28
28
|
* **Workflow Automation:** A `Makefile` is included to simplify and automate common development tasks.
|
|
29
29
|
* **Minimalist GUI:** Comes with a basic GUI based on [tkinker](https://tkdocs.com/tutorial/index.html) that includes an auto-generated settings menu based on your defined parameters.
|
|
30
|
+
* **Release pipeline:** Automated releases unsing the Makefile `make release` command, which creates a new tag and pushes it to the remote repo. The `release` pipeline will automatically create a new release on GitHub and trigger a release on PyPI.
|
|
31
|
+
* **[setuptools](https://pypi.org/project/setuptools/)** is used to package the project and manage dependencies.
|
|
32
|
+
* **[setuptools-scm](https://pypi.org/project/setuptools-scm/)** is used to automatically generate the `_version.py` file from the `pyproject.toml` file.
|
|
30
33
|
|
|
31
34
|
## Getting started
|
|
32
35
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "python-template-project"
|
|
3
|
-
|
|
3
|
+
dynamic = ["version"]
|
|
4
4
|
description = "Feature-rich Python project template designed for robustness and ease of use."
|
|
5
5
|
authors = [
|
|
6
6
|
{name = "pamagister"}
|
|
@@ -42,12 +42,11 @@ python-template-project = "python_template_project.cli.cli:main"
|
|
|
42
42
|
python-template-project-gui = "python_template_project.gui.gui:main"
|
|
43
43
|
|
|
44
44
|
[build-system]
|
|
45
|
-
requires = ["
|
|
46
|
-
build-backend = "
|
|
45
|
+
requires = ["setuptools>=61.0", "wheel", "setuptools_scm[toml]>=6.2"]
|
|
46
|
+
build-backend = "setuptools.build_meta"
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
packages = ["src/python_template_project"]
|
|
48
|
+
[tool.setuptools_scm]
|
|
49
|
+
write_to = "src/python_template_project/_version.py"
|
|
51
50
|
|
|
52
51
|
[tool.deptry]
|
|
53
52
|
pep621_dev_dependency_groups = ["dev", "docs"]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.1.14
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# file generated by setuptools-scm
|
|
2
|
+
# don't change, don't track in version control
|
|
3
|
+
|
|
4
|
+
__all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
|
|
5
|
+
|
|
6
|
+
TYPE_CHECKING = False
|
|
7
|
+
if TYPE_CHECKING:
|
|
8
|
+
from typing import Tuple
|
|
9
|
+
from typing import Union
|
|
10
|
+
|
|
11
|
+
VERSION_TUPLE = Tuple[Union[int, str], ...]
|
|
12
|
+
else:
|
|
13
|
+
VERSION_TUPLE = object
|
|
14
|
+
|
|
15
|
+
version: str
|
|
16
|
+
__version__: str
|
|
17
|
+
__version_tuple__: VERSION_TUPLE
|
|
18
|
+
version_tuple: VERSION_TUPLE
|
|
19
|
+
|
|
20
|
+
__version__ = version = '0.1.15'
|
|
21
|
+
__version_tuple__ = version_tuple = (0, 1, 15)
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: python-template-project
|
|
3
|
+
Version: 0.1.15
|
|
4
|
+
Summary: Feature-rich Python project template designed for robustness and ease of use.
|
|
5
|
+
Author: pamagister
|
|
6
|
+
Requires-Python: <3.12,>=3.10
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
Requires-Dist: gpxpy>=1.6.2
|
|
10
|
+
Requires-Dist: pydantic>=2.11.7
|
|
11
|
+
Requires-Dist: pyyaml>=6.0.2
|
|
12
|
+
Requires-Dist: srtm-py>=0.3.7
|
|
13
|
+
Provides-Extra: dev
|
|
14
|
+
Requires-Dist: pytest>=8.4.0; extra == "dev"
|
|
15
|
+
Requires-Dist: pytest-mock>=3.14.1; extra == "dev"
|
|
16
|
+
Requires-Dist: coverage>=7.8.2; extra == "dev"
|
|
17
|
+
Requires-Dist: flake8>=7.2.0; extra == "dev"
|
|
18
|
+
Requires-Dist: black>=25.1.0; extra == "dev"
|
|
19
|
+
Requires-Dist: isort>=6.0.1; extra == "dev"
|
|
20
|
+
Requires-Dist: pytest-cov>=6.1.1; extra == "dev"
|
|
21
|
+
Requires-Dist: mypy>=1.16.0; extra == "dev"
|
|
22
|
+
Requires-Dist: gitchangelog>=3.0.4; extra == "dev"
|
|
23
|
+
Requires-Dist: pyinstaller>=5.8; extra == "dev"
|
|
24
|
+
Requires-Dist: pre-commit>=4.2.0; extra == "dev"
|
|
25
|
+
Requires-Dist: ruff>=0.11.13; extra == "dev"
|
|
26
|
+
Provides-Extra: docs
|
|
27
|
+
Requires-Dist: mkdocs>=1.6.1; extra == "docs"
|
|
28
|
+
Requires-Dist: mkdocs-awesome-nav>=2.6.1; extra == "docs"
|
|
29
|
+
Requires-Dist: pygments>=2.19.1; extra == "docs"
|
|
30
|
+
Dynamic: license-file
|
|
31
|
+
|
|
32
|
+
# Welcome to python-template-project
|
|
33
|
+
|
|
34
|
+
A feature-rich Python project template with with auto-generated CLI, GUI and parameterized configuration.
|
|
35
|
+
|
|
36
|
+
[](https://github.com/pamagister/python-template-project/actions)
|
|
37
|
+
[](https://github.com/pamagister/python-template-project/releases)
|
|
38
|
+
[](https://python-template-project.readthedocs.io/en/stable/)
|
|
39
|
+
[](https://github.com/pamagister/python-template-project/blob/main/LICENSE)
|
|
40
|
+
[](https://github.com/pamagister/python-template-project/issues)
|
|
41
|
+
[](https://pypi.org/project/python-template-project/)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
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
|
+
|
|
46
|
+
|
|
47
|
+
## Feature overview
|
|
48
|
+
|
|
49
|
+
* **Testing:** Unit testing setup with `pytest`.
|
|
50
|
+
* **CI/CD:** [GitHub Actions](https://github.com/features/actions) for automated builds (Windows, macOS), unit tests, and code checks.
|
|
51
|
+
* **Code Formatting and Linting:** Pre-commit hook with the [RUFF auto-formatter](https://docs.astral.sh/ruff/) to ensure consistent code style.
|
|
52
|
+
* **Automated Builds:** GitHub pipeline for automatically building a Windows executable and a macOS installer.
|
|
53
|
+
* **Package Management:** Utilizes [uv](https://docs.astral.sh/uv/getting-started/), an extremely fast Python package manager, with dependencies managed in `pyproject.toml`.
|
|
54
|
+
* **Parameter-Driven Automation:**
|
|
55
|
+
* Automatic generation of a configuration file from parameter definitions.
|
|
56
|
+
* Automatic generation of a Command-Line Interface (CLI) from the same parameters.
|
|
57
|
+
* Automatic generation of CLI API documentation.
|
|
58
|
+
* **Documentation:** Configuration for publishing documentation on [Read the Docs](https://about.readthedocs.com/) using [mkdocs](https://www.mkdocs.org/) .
|
|
59
|
+
* **Workflow Automation:** A `Makefile` is included to simplify and automate common development tasks.
|
|
60
|
+
* **Minimalist GUI:** Comes with a basic GUI based on [tkinker](https://tkdocs.com/tutorial/index.html) that includes an auto-generated settings menu based on your defined parameters.
|
|
61
|
+
* **Release pipeline:** Automated releases unsing the Makefile `make release` command, which creates a new tag and pushes it to the remote repo. The `release` pipeline will automatically create a new release on GitHub and trigger a release on PyPI.
|
|
62
|
+
* **[setuptools](https://pypi.org/project/setuptools/)** is used to package the project and manage dependencies.
|
|
63
|
+
* **[setuptools-scm](https://pypi.org/project/setuptools-scm/)** is used to automatically generate the `_version.py` file from the `pyproject.toml` file.
|
|
64
|
+
|
|
65
|
+
## Getting started
|
|
66
|
+
|
|
67
|
+
1. **Create** a new [github repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-new-repository).
|
|
68
|
+
2. **Clone** [github repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) the into your local file system.
|
|
69
|
+
```bash
|
|
70
|
+
git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY
|
|
71
|
+
```
|
|
72
|
+
4. **Install** [uv package and project manager](https://docs.astral.sh/uv/getting-started/installation/)
|
|
73
|
+
```bash
|
|
74
|
+
pip install uv
|
|
75
|
+
```
|
|
76
|
+
5. **Generate** [a sample project](https://docs.astral.sh/uv/guides/projects/#creating-a-new-project) with uv
|
|
77
|
+
6. Add and **push** the artifacts to your github repository
|
|
78
|
+
```bash
|
|
79
|
+
git push
|
|
80
|
+
```
|
|
81
|
+
8. Copy the content of this repository into your repository
|
|
82
|
+
|
|
83
|
+
## Troubleshooting
|
|
84
|
+
|
|
85
|
+
### Problems with release pipeline
|
|
86
|
+
|
|
87
|
+
If you get this error below:
|
|
88
|
+
```bash
|
|
89
|
+
/home/runner/work/_temp/xxxx_xxx.sh: line 1: .github/release_message.sh: Permission denied
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
You have to run these commands in your IDE Terminal or the git bash and then push the changes.
|
|
93
|
+
```bash
|
|
94
|
+
git update-index --chmod=+x ./.github/release_message.sh
|
|
95
|
+
```
|
|
96
|
+
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
.gitignore
|
|
2
|
+
.pre-commit-config.yaml
|
|
3
|
+
.readthedocs.yaml
|
|
4
|
+
HISTORY.md
|
|
5
|
+
LICENSE
|
|
6
|
+
Makefile
|
|
7
|
+
README.md
|
|
8
|
+
config.yaml
|
|
9
|
+
mkdocs.yml
|
|
10
|
+
pyproject.toml
|
|
11
|
+
uv.lock
|
|
12
|
+
.github/FUNDING.yml
|
|
13
|
+
.github/PULL_REQUEST_TEMPLATE.md
|
|
14
|
+
.github/dependabot.yml
|
|
15
|
+
.github/init.sh
|
|
16
|
+
.github/release_message.sh
|
|
17
|
+
.github/rename_project.sh
|
|
18
|
+
.github/ISSUE_TEMPLATE/bug_report.md
|
|
19
|
+
.github/ISSUE_TEMPLATE/feature_request.md
|
|
20
|
+
.github/actions/setup-environment/action.yml
|
|
21
|
+
.github/workflows/build-macos.yml
|
|
22
|
+
.github/workflows/build.yml
|
|
23
|
+
.github/workflows/main.yml
|
|
24
|
+
.github/workflows/release.yml
|
|
25
|
+
.github/workflows/update-readme.yml
|
|
26
|
+
.idea/runConfigurations/config_generate.xml
|
|
27
|
+
.idea/runConfigurations/module_cli.xml
|
|
28
|
+
.idea/runConfigurations/module_gui.xml
|
|
29
|
+
docs/.nav.yml
|
|
30
|
+
docs/index.md
|
|
31
|
+
docs/_static/img/favicon.png
|
|
32
|
+
docs/_static/img/logo.png
|
|
33
|
+
docs/css/custom.css
|
|
34
|
+
docs/develop/contributing.md
|
|
35
|
+
docs/develop/make_windows.md
|
|
36
|
+
docs/develop/pypi_release.md
|
|
37
|
+
docs/getting-started/install.md
|
|
38
|
+
docs/getting-started/virtual-environment.md
|
|
39
|
+
docs/usage/cli.md
|
|
40
|
+
docs/usage/config.md
|
|
41
|
+
examples/kuhkopfsteig.gpx
|
|
42
|
+
examples/rother_lilienstein.gpx
|
|
43
|
+
examples/teneriffa.gpx
|
|
44
|
+
scripts/show-filelist.ps1
|
|
45
|
+
scripts/show-tree.ps1
|
|
46
|
+
scripts/update_readme.py
|
|
47
|
+
src/VERSION
|
|
48
|
+
src/__init__.py
|
|
49
|
+
src/main.py
|
|
50
|
+
src/python_template_project/__init__.py
|
|
51
|
+
src/python_template_project/__main__.py
|
|
52
|
+
src/python_template_project/_version.py
|
|
53
|
+
src/python_template_project.egg-info/PKG-INFO
|
|
54
|
+
src/python_template_project.egg-info/SOURCES.txt
|
|
55
|
+
src/python_template_project.egg-info/dependency_links.txt
|
|
56
|
+
src/python_template_project.egg-info/entry_points.txt
|
|
57
|
+
src/python_template_project.egg-info/requires.txt
|
|
58
|
+
src/python_template_project.egg-info/top_level.txt
|
|
59
|
+
src/python_template_project/cli/__init__.py
|
|
60
|
+
src/python_template_project/cli/__main__.py
|
|
61
|
+
src/python_template_project/cli/cli.py
|
|
62
|
+
src/python_template_project/config/__init__.py
|
|
63
|
+
src/python_template_project/config/config.py
|
|
64
|
+
src/python_template_project/core/__init__.py
|
|
65
|
+
src/python_template_project/core/base.py
|
|
66
|
+
src/python_template_project/core/logging.py
|
|
67
|
+
src/python_template_project/gui/__init__.py
|
|
68
|
+
src/python_template_project/gui/__main__.py
|
|
69
|
+
src/python_template_project/gui/gui.py
|
|
70
|
+
tests/__init__.py
|
|
71
|
+
tests/test_generic_cli.py
|
|
72
|
+
tests/test_gpx.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
gpxpy>=1.6.2
|
|
2
|
+
pydantic>=2.11.7
|
|
3
|
+
pyyaml>=6.0.2
|
|
4
|
+
srtm-py>=0.3.7
|
|
5
|
+
|
|
6
|
+
[dev]
|
|
7
|
+
pytest>=8.4.0
|
|
8
|
+
pytest-mock>=3.14.1
|
|
9
|
+
coverage>=7.8.2
|
|
10
|
+
flake8>=7.2.0
|
|
11
|
+
black>=25.1.0
|
|
12
|
+
isort>=6.0.1
|
|
13
|
+
pytest-cov>=6.1.1
|
|
14
|
+
mypy>=1.16.0
|
|
15
|
+
gitchangelog>=3.0.4
|
|
16
|
+
pyinstaller>=5.8
|
|
17
|
+
pre-commit>=4.2.0
|
|
18
|
+
ruff>=0.11.13
|
|
19
|
+
|
|
20
|
+
[docs]
|
|
21
|
+
mkdocs>=1.6.1
|
|
22
|
+
mkdocs-awesome-nav>=2.6.1
|
|
23
|
+
pygments>=2.19.1
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.1.13
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_template_project-0.1.0 → python_template_project-0.1.15}/.github/PULL_REQUEST_TEMPLATE.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_template_project-0.1.0 → python_template_project-0.1.15}/.github/workflows/build-macos.yml
RENAMED
|
File without changes
|
{python_template_project-0.1.0 → python_template_project-0.1.15}/.github/workflows/build.yml
RENAMED
|
File without changes
|
|
File without changes
|
{python_template_project-0.1.0 → python_template_project-0.1.15}/.github/workflows/release.yml
RENAMED
|
File without changes
|
{python_template_project-0.1.0 → python_template_project-0.1.15}/.github/workflows/update-readme.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_template_project-0.1.0 → python_template_project-0.1.15}/docs/_static/img/favicon.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_template_project-0.1.0 → python_template_project-0.1.15}/docs/develop/contributing.md
RENAMED
|
File without changes
|
{python_template_project-0.1.0 → python_template_project-0.1.15}/docs/develop/make_windows.md
RENAMED
|
File without changes
|
{python_template_project-0.1.0 → python_template_project-0.1.15}/docs/develop/pypi_release.md
RENAMED
|
File without changes
|
{python_template_project-0.1.0 → python_template_project-0.1.15}/docs/getting-started/install.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_template_project-0.1.0 → python_template_project-0.1.15}/examples/rother_lilienstein.gpx
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|