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.
Files changed (75) hide show
  1. {python_template_project-0.1.0 → python_template_project-0.1.15}/HISTORY.md +8 -0
  2. {python_template_project-0.1.0 → python_template_project-0.1.15}/Makefile +21 -11
  3. {python_template_project-0.1.0 → python_template_project-0.1.15}/PKG-INFO +26 -22
  4. {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/index.md +7 -4
  5. {python_template_project-0.1.0 → python_template_project-0.1.15}/pyproject.toml +5 -6
  6. python_template_project-0.1.15/setup.cfg +4 -0
  7. python_template_project-0.1.15/src/VERSION +1 -0
  8. python_template_project-0.1.15/src/python_template_project/_version.py +21 -0
  9. python_template_project-0.1.15/src/python_template_project.egg-info/PKG-INFO +96 -0
  10. python_template_project-0.1.15/src/python_template_project.egg-info/SOURCES.txt +72 -0
  11. python_template_project-0.1.15/src/python_template_project.egg-info/dependency_links.txt +1 -0
  12. python_template_project-0.1.15/src/python_template_project.egg-info/entry_points.txt +3 -0
  13. python_template_project-0.1.15/src/python_template_project.egg-info/requires.txt +23 -0
  14. python_template_project-0.1.15/src/python_template_project.egg-info/top_level.txt +3 -0
  15. {python_template_project-0.1.0 → python_template_project-0.1.15}/uv.lock +0 -1
  16. python_template_project-0.1.0/src/VERSION +0 -1
  17. {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/FUNDING.yml +0 -0
  18. {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  19. {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  20. {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  21. {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/actions/setup-environment/action.yml +0 -0
  22. {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/dependabot.yml +0 -0
  23. {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/init.sh +0 -0
  24. {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/release_message.sh +0 -0
  25. {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/rename_project.sh +0 -0
  26. {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/workflows/build-macos.yml +0 -0
  27. {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/workflows/build.yml +0 -0
  28. {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/workflows/main.yml +0 -0
  29. {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/workflows/release.yml +0 -0
  30. {python_template_project-0.1.0 → python_template_project-0.1.15}/.github/workflows/update-readme.yml +0 -0
  31. {python_template_project-0.1.0 → python_template_project-0.1.15}/.gitignore +0 -0
  32. {python_template_project-0.1.0 → python_template_project-0.1.15}/.idea/runConfigurations/config_generate.xml +0 -0
  33. {python_template_project-0.1.0 → python_template_project-0.1.15}/.idea/runConfigurations/module_cli.xml +0 -0
  34. {python_template_project-0.1.0 → python_template_project-0.1.15}/.idea/runConfigurations/module_gui.xml +0 -0
  35. {python_template_project-0.1.0 → python_template_project-0.1.15}/.pre-commit-config.yaml +0 -0
  36. {python_template_project-0.1.0 → python_template_project-0.1.15}/.readthedocs.yaml +0 -0
  37. {python_template_project-0.1.0 → python_template_project-0.1.15}/LICENSE +0 -0
  38. {python_template_project-0.1.0 → python_template_project-0.1.15}/README.md +0 -0
  39. {python_template_project-0.1.0 → python_template_project-0.1.15}/config.yaml +0 -0
  40. {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/.nav.yml +0 -0
  41. {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/_static/img/favicon.png +0 -0
  42. {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/_static/img/logo.png +0 -0
  43. {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/css/custom.css +0 -0
  44. {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/develop/contributing.md +0 -0
  45. {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/develop/make_windows.md +0 -0
  46. {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/develop/pypi_release.md +0 -0
  47. {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/getting-started/install.md +0 -0
  48. {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/getting-started/virtual-environment.md +0 -0
  49. {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/usage/cli.md +0 -0
  50. {python_template_project-0.1.0 → python_template_project-0.1.15}/docs/usage/config.md +0 -0
  51. {python_template_project-0.1.0 → python_template_project-0.1.15}/examples/kuhkopfsteig.gpx +0 -0
  52. {python_template_project-0.1.0 → python_template_project-0.1.15}/examples/rother_lilienstein.gpx +0 -0
  53. {python_template_project-0.1.0 → python_template_project-0.1.15}/examples/teneriffa.gpx +0 -0
  54. {python_template_project-0.1.0 → python_template_project-0.1.15}/mkdocs.yml +0 -0
  55. {python_template_project-0.1.0 → python_template_project-0.1.15}/scripts/show-filelist.ps1 +0 -0
  56. {python_template_project-0.1.0 → python_template_project-0.1.15}/scripts/show-tree.ps1 +0 -0
  57. {python_template_project-0.1.0 → python_template_project-0.1.15}/scripts/update_readme.py +0 -0
  58. {python_template_project-0.1.0 → python_template_project-0.1.15}/src/__init__.py +0 -0
  59. {python_template_project-0.1.0 → python_template_project-0.1.15}/src/main.py +0 -0
  60. {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/__init__.py +0 -0
  61. {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/__main__.py +0 -0
  62. {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/cli/__init__.py +0 -0
  63. {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/cli/__main__.py +0 -0
  64. {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/cli/cli.py +0 -0
  65. {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/config/__init__.py +0 -0
  66. {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/config/config.py +0 -0
  67. {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/core/__init__.py +0 -0
  68. {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/core/base.py +0 -0
  69. {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/core/logging.py +0 -0
  70. {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/gui/__init__.py +0 -0
  71. {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/gui/__main__.py +0 -0
  72. {python_template_project-0.1.0 → python_template_project-0.1.15}/src/python_template_project/gui/gui.py +0 -0
  73. {python_template_project-0.1.0 → python_template_project-0.1.15}/tests/__init__.py +0 -0
  74. {python_template_project-0.1.0 → python_template_project-0.1.15}/tests/test_generic_cli.py +0 -0
  75. {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
- @CURRENT_VERSION=$$(cat src/VERSION)
93
- IFS=. read -r MAJOR MINOR PATCH <<< "$$CURRENT_VERSION"
94
- @NEXT_VERSION="$$MAJOR.$$MINOR.$$((PATCH + 1))"
95
- echo "Current version: $$CURRENT_VERSION"
96
- read -e -i "$$NEXT_VERSION" -p "Version? (provide the next x.y.z semver) : " TAG
97
- echo "$${TAG}" > src/VERSION
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 src/VERSION HISTORY.md
100
- git commit -m "release: version $${TAG} 🚀"
101
- echo "creating git tag : $${TAG}"
102
- git tag $${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
- echo "GitHub Actions will detect the new tag and release the new version."
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.0
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: black>=25.1.0; extra == 'dev'
14
- Requires-Dist: coverage>=7.8.2; extra == 'dev'
15
- Requires-Dist: flake8>=7.2.0; extra == 'dev'
16
- Requires-Dist: gitchangelog>=3.0.4; extra == 'dev'
17
- Requires-Dist: isort>=6.0.1; extra == 'dev'
18
- Requires-Dist: mypy>=1.16.0; extra == 'dev'
19
- Requires-Dist: pre-commit>=4.2.0; extra == 'dev'
20
- Requires-Dist: pyinstaller>=5.8; extra == 'dev'
21
- Requires-Dist: pytest-cov>=6.1.1; extra == 'dev'
22
- Requires-Dist: pytest-mock>=3.14.1; extra == 'dev'
23
- Requires-Dist: pytest>=8.4.0; extra == 'dev'
24
- Requires-Dist: ruff>=0.11.13; 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"
25
26
  Provides-Extra: docs
26
- Requires-Dist: mkdocs-awesome-nav>=2.6.1; extra == 'docs'
27
- Requires-Dist: mkdocs>=1.6.1; extra == 'docs'
28
- Requires-Dist: pygments>=2.19.1; extra == 'docs'
29
- Description-Content-Type: text/markdown
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:** GitHub Actions for automated builds (Windows, macOS), unit tests, and code checks.
50
- * **Code Formatting:** Pre-commit hook with the *black* auto-formatter to ensure consistent code style.
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 *uv*, an extremely fast Python package manager, with dependencies managed in `pyproject.toml`.
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:** GitHub Actions for automated builds (Windows, macOS), unit tests, and code checks.
20
- * **Code Formatting:** Pre-commit hook with the *black* auto-formatter to ensure consistent code style.
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 *uv*, an extremely fast Python package manager, with dependencies managed in `pyproject.toml`.
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
- version = "0.1.0"
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 = ["hatchling"]
46
- build-backend = "hatchling.build"
45
+ requires = ["setuptools>=61.0", "wheel", "setuptools_scm[toml]>=6.2"]
46
+ build-backend = "setuptools.build_meta"
47
47
 
48
- # Hatchling-spezifische Konfiguration für src-Layout
49
- [tool.hatch.build.targets.wheel]
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,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -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
+ [![Github CI Status](https://github.com/pamagister/python-template-project/actions/workflows/main.yml/badge.svg)](https://github.com/pamagister/python-template-project/actions)
37
+ [![GitHub release](https://img.shields.io/github/v/release/pamagister/python-template-project)](https://github.com/pamagister/python-template-project/releases)
38
+ [![Read the Docs](https://readthedocs.org/projects/python-template-project/badge/?version=stable)](https://python-template-project.readthedocs.io/en/stable/)
39
+ [![License](https://img.shields.io/github/license/pamagister/python-template-project)](https://github.com/pamagister/python-template-project/blob/main/LICENSE)
40
+ [![GitHub issues](https://img.shields.io/github/issues/pamagister/python-template-project)](https://github.com/pamagister/python-template-project/issues)
41
+ [![PyPI](https://img.shields.io/pypi/v/python-template-project)](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,3 @@
1
+ [console_scripts]
2
+ python-template-project = python_template_project.cli.cli:main
3
+ python-template-project-gui = python_template_project.gui.gui:main
@@ -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
@@ -0,0 +1,3 @@
1
+ __init__
2
+ main
3
+ python_template_project
@@ -719,7 +719,6 @@ wheels = [
719
719
 
720
720
  [[package]]
721
721
  name = "python-template-project"
722
- version = "0.1.0"
723
722
  source = { editable = "." }
724
723
  dependencies = [
725
724
  { name = "gpxpy" },
@@ -1 +0,0 @@
1
- 0.1.13