python-template-project 0.2.5__tar.gz → 0.2.6__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.2.6/.github/release_message.sh +12 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.github/update_funding.py +2 -2
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.github/workflows/build-linux.yml +6 -2
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.github/workflows/build-macos.yml +6 -2
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.github/workflows/build-windows.yml +6 -2
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.github/workflows/main.yml +11 -7
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.github/workflows/release.yml +10 -3
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.github/workflows/rename_project.yml +5 -1
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.github/workflows/update_readme.yml +6 -2
- python_template_project-0.2.6/AGENTS.md +72 -0
- python_template_project-0.2.6/AGENTS_GLOBAL.md +24 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/HISTORY.md +185 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/Makefile +1 -1
- {python_template_project-0.2.5/src/python_template_project.egg-info → python_template_project-0.2.6}/PKG-INFO +1 -1
- python_template_project-0.2.6/SECURITY.md +31 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/docs/usage/cli.md +10 -1
- {python_template_project-0.2.5 → python_template_project-0.2.6}/scripts/generate_config_docs.py +18 -1
- python_template_project-0.2.6/scripts/show_tree.py +625 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/scripts/update_readme.py +1 -1
- {python_template_project-0.2.5 → python_template_project-0.2.6}/src/python_template_project/_version.py +3 -3
- {python_template_project-0.2.5 → python_template_project-0.2.6/src/python_template_project.egg-info}/PKG-INFO +1 -1
- {python_template_project-0.2.5 → python_template_project-0.2.6}/src/python_template_project.egg-info/SOURCES.txt +5 -1
- {python_template_project-0.2.5 → python_template_project-0.2.6}/src/python_template_project.egg-info/scm_file_list.json +4 -0
- python_template_project-0.2.6/src/python_template_project.egg-info/scm_version.json +8 -0
- python_template_project-0.2.6/tests/test_show_tree.py +249 -0
- python_template_project-0.2.5/.github/release_message.sh +0 -3
- python_template_project-0.2.5/scripts/show_tree.py +0 -174
- python_template_project-0.2.5/src/python_template_project.egg-info/scm_version.json +0 -8
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.github/FUNDING.yml +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.github/actions/setup-environment/action.yml +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.github/dependabot.yml +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.github/init.sh +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.github/rename_project.sh +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.github/template.yml +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.gitignore +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.idea/runConfigurations/config_generate.xml +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.idea/runConfigurations/module_cli.xml +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.idea/runConfigurations/module_gui.xml +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.pre-commit-config-linux.yaml +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.pre-commit-config.yaml +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/.readthedocs.yaml +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/LICENSE +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/README.md +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/config.yaml +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/docs/.nav.yml +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/docs/_static/img/favicon.png +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/docs/_static/img/logo.png +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/docs/css/custom.css +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/docs/develop/contributing.md +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/docs/develop/make_windows.md +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/docs/develop/naming_convention.md +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/docs/develop/pypi_release.md +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/docs/funding/funding.md +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/docs/getting-started/install.md +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/docs/getting-started/virtual-environment.md +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/docs/index.md +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/docs/usage/config.md +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/examples/kuhkopfsteig.gpx +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/examples/rother_lilienstein.gpx +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/examples/teneriffa.gpx +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/mkdocs.yml +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/pyproject.toml +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/pytest.ini +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/scripts/show_filelist.py +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/setup.cfg +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/src/__init__.py +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/src/firewall_handler.py +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/src/main.py +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/src/python_template_project/__init__.py +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/src/python_template_project/__main__.py +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/src/python_template_project/cli/__init__.py +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/src/python_template_project/cli/__main__.py +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/src/python_template_project/cli/cli.py +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/src/python_template_project/config/__init__.py +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/src/python_template_project/config/config.py +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/src/python_template_project/core/__init__.py +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/src/python_template_project/core/base.py +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/src/python_template_project/core/logging.py +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/src/python_template_project/gui/__init__.py +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/src/python_template_project/gui/__main__.py +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/src/python_template_project/gui/gui.py +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/src/python_template_project.egg-info/dependency_links.txt +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/src/python_template_project.egg-info/entry_points.txt +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/src/python_template_project.egg-info/requires.txt +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/src/python_template_project.egg-info/top_level.txt +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/template.yml.url +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/tests/__init__.py +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/tests/test_gpx.py +0 -0
- {python_template_project-0.2.5 → python_template_project-0.2.6}/uv.lock +0 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
previous_tag=$(git tag --sort=-creatordate | sed -n 2p)
|
|
5
|
+
|
|
6
|
+
if [ -z "$previous_tag" ]; then
|
|
7
|
+
# Erster Tag im Repository: Es gibt noch keinen Vorgänger-Tag,
|
|
8
|
+
# daher alle Commits in den Changelog einbeziehen.
|
|
9
|
+
git shortlog | sed 's/^./ &/'
|
|
10
|
+
else
|
|
11
|
+
git shortlog "${previous_tag}.." | sed 's/^./ &/'
|
|
12
|
+
fi
|
|
@@ -16,7 +16,7 @@ def update_funding_file():
|
|
|
16
16
|
Downloads the FUNDING.md file from the central repository
|
|
17
17
|
and saves it to the specified path within the current repository.
|
|
18
18
|
"""
|
|
19
|
-
print(f"Attempting to download FUNDING.md from: {FUNDING_REPO_URL}")
|
|
19
|
+
print(f" ... Attempting to download FUNDING.md from: {FUNDING_REPO_URL}")
|
|
20
20
|
|
|
21
21
|
try:
|
|
22
22
|
# Send a GET request to the URL
|
|
@@ -30,7 +30,7 @@ def update_funding_file():
|
|
|
30
30
|
with open(DST_THIS_REPO, "wb") as f:
|
|
31
31
|
f.write(response.content)
|
|
32
32
|
|
|
33
|
-
print(f"Successfully updated
|
|
33
|
+
print(f"Generated: Successfully updated {DST_THIS_REPO}")
|
|
34
34
|
|
|
35
35
|
except requests.exceptions.RequestException as e:
|
|
36
36
|
print(f"Error downloading FUNDING.md: {e}", file=sys.stderr)
|
{python_template_project-0.2.5 → python_template_project-0.2.6}/.github/workflows/build-linux.yml
RENAMED
|
@@ -6,6 +6,10 @@ on:
|
|
|
6
6
|
- '*'
|
|
7
7
|
workflow_dispatch:
|
|
8
8
|
|
|
9
|
+
concurrency:
|
|
10
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
11
|
+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
12
|
+
|
|
9
13
|
jobs:
|
|
10
14
|
build:
|
|
11
15
|
strategy:
|
|
@@ -17,10 +21,10 @@ jobs:
|
|
|
17
21
|
|
|
18
22
|
steps:
|
|
19
23
|
- name: Checkout repository
|
|
20
|
-
uses: actions/checkout@
|
|
24
|
+
uses: actions/checkout@v7
|
|
21
25
|
|
|
22
26
|
- name: Set up Python
|
|
23
|
-
uses: actions/setup-python@
|
|
27
|
+
uses: actions/setup-python@v7
|
|
24
28
|
with:
|
|
25
29
|
python-version: ${{ matrix.python-version }}
|
|
26
30
|
|
{python_template_project-0.2.5 → python_template_project-0.2.6}/.github/workflows/build-macos.yml
RENAMED
|
@@ -6,6 +6,10 @@ on:
|
|
|
6
6
|
- '*' # Triggers for tags like 0.1 or v0.1.3
|
|
7
7
|
workflow_dispatch: # Allows manual triggering
|
|
8
8
|
|
|
9
|
+
concurrency:
|
|
10
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
11
|
+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
12
|
+
|
|
9
13
|
jobs:
|
|
10
14
|
build:
|
|
11
15
|
strategy:
|
|
@@ -17,10 +21,10 @@ jobs:
|
|
|
17
21
|
|
|
18
22
|
steps:
|
|
19
23
|
- name: Checkout repository
|
|
20
|
-
uses: actions/checkout@
|
|
24
|
+
uses: actions/checkout@v7
|
|
21
25
|
|
|
22
26
|
- name: Set up Python
|
|
23
|
-
uses: actions/setup-python@
|
|
27
|
+
uses: actions/setup-python@v7
|
|
24
28
|
with:
|
|
25
29
|
python-version: '3.11'
|
|
26
30
|
|
{python_template_project-0.2.5 → python_template_project-0.2.6}/.github/workflows/build-windows.yml
RENAMED
|
@@ -6,6 +6,10 @@ on:
|
|
|
6
6
|
- '*' # Triggers for tags like 0.1 or v0.1.3
|
|
7
7
|
workflow_dispatch: # Allows manual triggering
|
|
8
8
|
|
|
9
|
+
concurrency:
|
|
10
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
11
|
+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
12
|
+
|
|
9
13
|
jobs:
|
|
10
14
|
build:
|
|
11
15
|
strategy:
|
|
@@ -16,10 +20,10 @@ jobs:
|
|
|
16
20
|
runs-on: ${{ matrix.os }}
|
|
17
21
|
steps:
|
|
18
22
|
- name: Checkout repository
|
|
19
|
-
uses: actions/checkout@
|
|
23
|
+
uses: actions/checkout@v7
|
|
20
24
|
|
|
21
25
|
- name: Set up Python
|
|
22
|
-
uses: actions/setup-python@
|
|
26
|
+
uses: actions/setup-python@v7
|
|
23
27
|
with:
|
|
24
28
|
python-version: '3.11'
|
|
25
29
|
|
|
@@ -13,6 +13,10 @@ on:
|
|
|
13
13
|
# Allows you to run this workflow manually from the Actions tab
|
|
14
14
|
workflow_dispatch:
|
|
15
15
|
|
|
16
|
+
concurrency:
|
|
17
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
18
|
+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
19
|
+
|
|
16
20
|
jobs:
|
|
17
21
|
linter:
|
|
18
22
|
strategy:
|
|
@@ -22,8 +26,8 @@ jobs:
|
|
|
22
26
|
os: [ubuntu-latest]
|
|
23
27
|
runs-on: ${{ matrix.os }}
|
|
24
28
|
steps:
|
|
25
|
-
- uses: actions/checkout@
|
|
26
|
-
- uses: actions/setup-python@
|
|
29
|
+
- uses: actions/checkout@v7
|
|
30
|
+
- uses: actions/setup-python@v6
|
|
27
31
|
with:
|
|
28
32
|
python-version: ${{ matrix.python-version }}
|
|
29
33
|
|
|
@@ -44,8 +48,8 @@ jobs:
|
|
|
44
48
|
os: [windows-latest]
|
|
45
49
|
runs-on: ${{ matrix.os }}
|
|
46
50
|
steps:
|
|
47
|
-
- uses: actions/checkout@
|
|
48
|
-
- uses: actions/setup-python@
|
|
51
|
+
- uses: actions/checkout@v7
|
|
52
|
+
- uses: actions/setup-python@v6
|
|
49
53
|
with:
|
|
50
54
|
python-version: ${{ matrix.python-version }}
|
|
51
55
|
|
|
@@ -66,8 +70,8 @@ jobs:
|
|
|
66
70
|
os: [ ubuntu-latest, macos-latest ]
|
|
67
71
|
runs-on: ${{ matrix.os }}
|
|
68
72
|
steps:
|
|
69
|
-
- uses: actions/checkout@
|
|
70
|
-
- uses: actions/setup-python@
|
|
73
|
+
- uses: actions/checkout@v7
|
|
74
|
+
- uses: actions/setup-python@v6
|
|
71
75
|
with:
|
|
72
76
|
python-version: ${{ matrix.python-version }}
|
|
73
77
|
|
|
@@ -80,4 +84,4 @@ jobs:
|
|
|
80
84
|
run: make test
|
|
81
85
|
|
|
82
86
|
- name: "Upload coverage to Codecov"
|
|
83
|
-
uses: codecov/codecov-action@
|
|
87
|
+
uses: codecov/codecov-action@v7
|
{python_template_project-0.2.5 → python_template_project-0.2.6}/.github/workflows/release.yml
RENAMED
|
@@ -14,6 +14,10 @@ on:
|
|
|
14
14
|
# Allows you to run this workflow manually from the Actions tab
|
|
15
15
|
workflow_dispatch:
|
|
16
16
|
|
|
17
|
+
concurrency:
|
|
18
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
19
|
+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
20
|
+
|
|
17
21
|
jobs:
|
|
18
22
|
release:
|
|
19
23
|
name: Create Release
|
|
@@ -21,7 +25,7 @@ jobs:
|
|
|
21
25
|
permissions:
|
|
22
26
|
contents: write
|
|
23
27
|
steps:
|
|
24
|
-
- uses: actions/checkout@
|
|
28
|
+
- uses: actions/checkout@v7
|
|
25
29
|
with:
|
|
26
30
|
# by default, it uses a depth of 1
|
|
27
31
|
# this fetches all history so that we can read each commit
|
|
@@ -37,9 +41,12 @@ jobs:
|
|
|
37
41
|
needs: release
|
|
38
42
|
runs-on: ubuntu-latest
|
|
39
43
|
steps:
|
|
40
|
-
- uses: actions/checkout@
|
|
44
|
+
- uses: actions/checkout@v7
|
|
45
|
+
with:
|
|
46
|
+
# setuptools_scm benötigt die Git-Tags für die Versionsnummer
|
|
47
|
+
fetch-depth: 0
|
|
41
48
|
- name: Set up Python
|
|
42
|
-
uses: actions/setup-python@
|
|
49
|
+
uses: actions/setup-python@v7
|
|
43
50
|
with:
|
|
44
51
|
# Use a specific Python version, e.g., 3.11, consistent with your build
|
|
45
52
|
python-version: '3.11'
|
{python_template_project-0.2.5 → python_template_project-0.2.6}/.github/workflows/rename_project.yml
RENAMED
|
@@ -4,12 +4,16 @@ on: [workflow_dispatch]
|
|
|
4
4
|
|
|
5
5
|
permissions: write-all
|
|
6
6
|
|
|
7
|
+
concurrency:
|
|
8
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
9
|
+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
10
|
+
|
|
7
11
|
jobs:
|
|
8
12
|
rename-project:
|
|
9
13
|
if: ${{ !contains (github.repository, 'python-template-project') }}
|
|
10
14
|
runs-on: ubuntu-latest
|
|
11
15
|
steps:
|
|
12
|
-
- uses: actions/checkout@
|
|
16
|
+
- uses: actions/checkout@v7
|
|
13
17
|
with:
|
|
14
18
|
# by default, it uses a depth of 1
|
|
15
19
|
# this fetches all history so that we can read each commit
|
{python_template_project-0.2.5 → python_template_project-0.2.6}/.github/workflows/update_readme.yml
RENAMED
|
@@ -8,13 +8,17 @@ on:
|
|
|
8
8
|
# Allows you to run this workflow manually from the Actions tab
|
|
9
9
|
workflow_dispatch:
|
|
10
10
|
|
|
11
|
+
concurrency:
|
|
12
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
13
|
+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
14
|
+
|
|
11
15
|
jobs:
|
|
12
16
|
sync:
|
|
13
17
|
runs-on: ubuntu-latest
|
|
14
18
|
steps:
|
|
15
|
-
- uses: actions/checkout@
|
|
19
|
+
- uses: actions/checkout@v7
|
|
16
20
|
- name: Set up Python
|
|
17
|
-
uses: actions/setup-python@
|
|
21
|
+
uses: actions/setup-python@v7
|
|
18
22
|
with:
|
|
19
23
|
python-version: "3.11"
|
|
20
24
|
- name: Update README.md
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
## Python
|
|
4
|
+
|
|
5
|
+
- Follow PEP 8 and the project's formatter and configuration.
|
|
6
|
+
- Use descriptive names, type-hint function signatures, and document public APIs. Avoid `Any`
|
|
7
|
+
unless necessary.
|
|
8
|
+
- Keep functions focused; use dataclasses for simple data containers when appropriate. Avoid
|
|
9
|
+
mutable defaults, and use `is` for `None`, `True`, and `False`.
|
|
10
|
+
- Prefer explicit imports, f-strings, and context managers.
|
|
11
|
+
- Avoid wildcard imports and redundant comments.
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## Workflow
|
|
15
|
+
|
|
16
|
+
1. **Inspect** the relevant code, project structure, configuration, dependencies, and existing tests before making changes.
|
|
17
|
+
2. **Plan** briefly for nontrivial tasks. Define concrete, verifiable success criteria.
|
|
18
|
+
3. **Implement** the smallest complete solution, following existing project conventions.
|
|
19
|
+
4. **Verify** changes with relevant tests, formatting, linting, and type checking. Fix issues introduced by the changes.
|
|
20
|
+
5. **Report** what changed, which checks passed, and any remaining limitations.
|
|
21
|
+
|
|
22
|
+
Do not claim that checks passed unless they were actually executed. If verification is impossible, explain why.
|
|
23
|
+
|
|
24
|
+
## Tests
|
|
25
|
+
|
|
26
|
+
- Add or update "Tests with Teeth" for behavior changes and important edge/failure cases. Keep tests
|
|
27
|
+
deterministic, mock only when needed, and never weaken tests to pass.
|
|
28
|
+
- Run relevant configured checks and report what actually ran; do not claim unrun checks passed.
|
|
29
|
+
|
|
30
|
+
## Dependencies and Tooling
|
|
31
|
+
|
|
32
|
+
- Use `uv` for dependency management and virtual environments when available or when initializing a project.
|
|
33
|
+
- Declare and manage dependencies in `pyproject.toml`. Avoid unnecessary dependencies and preserve existing project tooling.
|
|
34
|
+
- Prefer established project commands and configuration over introducing new tools or conventions.
|
|
35
|
+
- Use `ruff` for formatting and linting and `mypy` for static type checking when configured or appropriate.
|
|
36
|
+
- Use `pytest` for tests. Add or update tests for new behavior, bug fixes, and meaningful edge cases. Mock external dependencies where appropriate.
|
|
37
|
+
- Never introduce tooling or dependencies solely for marginal benefits.
|
|
38
|
+
|
|
39
|
+
## Project workflows and generated files
|
|
40
|
+
|
|
41
|
+
- Use existing Makefile targets when relevant; common checks are
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
make fmt
|
|
45
|
+
make lint
|
|
46
|
+
make test
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Check the Makefile and project configuration rather than assuming a command exists.
|
|
50
|
+
- `make syncdocs` runs `scripts/generate_config_docs.py`, `scripts/update_readme.py`, and
|
|
51
|
+
`.github/update_funding.py`. It regenerates `config.yaml`, `docs/usage/config.md`,
|
|
52
|
+
`docs/usage/cli.md`, `README.md`, and `docs/funding/funding.md`. Do not edit these outputs
|
|
53
|
+
directly: update the relevant `ConfigCategory` definitions used by `ConfigManager` or
|
|
54
|
+
`docs/index.md`, then run `make syncdocs`.
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
## github
|
|
58
|
+
|
|
59
|
+
- use github cli to interact with github, see https://cli.github.com/manual/gh
|
|
60
|
+
- if requested, use `gh issue list` to view a number of issues (--limit <int>) or filter JSON output using a jq expression (--jq <expression>) to view existing issues
|
|
61
|
+
- Create issues via the GitHub web UI or `gh issue create`; templates are located in `.github/ISSUE_TEMPLATE/`.
|
|
62
|
+
- to view details of an issue use `gh issue view {<number> | <url>} [flags]`
|
|
63
|
+
- to append a comment to an issue use `gh issue comment {<number> | <url>} [flags]`
|
|
64
|
+
- Check the status of an Actions pipeline using `gh run list` and `gh run view <run-id>`.
|
|
65
|
+
- use this commit message format: (where type may be one of `feat` `fix` `docs` `refactor` `test` `ci` `revert`)
|
|
66
|
+
```
|
|
67
|
+
<type>[optional scope]: <description>
|
|
68
|
+
|
|
69
|
+
[optional body]
|
|
70
|
+
|
|
71
|
+
[optional footer(s), e.g. `#<number>` for a github issue or `Fixes #` if the issue is completed on this commit]
|
|
72
|
+
```
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
[//]: # (GLOBAL AGENTS.md: Move and rename this ~/.config/opencode/AGENTS.md)
|
|
2
|
+
|
|
3
|
+
# AGENTS.md
|
|
4
|
+
|
|
5
|
+
## Principles
|
|
6
|
+
|
|
7
|
+
- Understand the task; inspect relevant code, configuration, tests, and conventions.
|
|
8
|
+
- Clarify material ambiguity or state assumptions. Make the smallest correct change, following
|
|
9
|
+
established patterns and avoiding unrelated refactors, speculative features, and unnecessary
|
|
10
|
+
dependencies.
|
|
11
|
+
- Keep code clear and maintainable; preserve type safety and compatibility. Surface errors with
|
|
12
|
+
useful context; avoid broad catches and silent failures.
|
|
13
|
+
- Use english language in doc strings, documentation and comments.
|
|
14
|
+
|
|
15
|
+
## Decision Rules
|
|
16
|
+
|
|
17
|
+
- Do not assume when uncertainty matters. State assumptions and ask concise clarifying questions when necessary.
|
|
18
|
+
- Do not add features, abstractions, error handling, or configuration without a concrete need.
|
|
19
|
+
- Do not refactor unrelated code or reformat entire files unnecessarily.
|
|
20
|
+
- When multiple solutions are viable, prefer the simplest maintainable option that fits the existing architecture.
|
|
21
|
+
- If requirements conflict with existing behavior, security, correctness, or maintainability, explain the conflict before making consequential changes.
|
|
22
|
+
- Treat repository instructions and established project conventions as authoritative unless they conflict with explicit user requirements or higher-priority instructions.
|
|
23
|
+
|
|
24
|
+
**Guiding principle:** Make the smallest correct change, keep the code maintainable, and verify the result.
|
|
@@ -4,6 +4,191 @@ Changelog
|
|
|
4
4
|
|
|
5
5
|
(unreleased)
|
|
6
6
|
------------
|
|
7
|
+
|
|
8
|
+
Fix
|
|
9
|
+
~~~
|
|
10
|
+
- UnicodeEncodeError in show_tree.py unter Windows (cp1252) [Paul
|
|
11
|
+
Magister]
|
|
12
|
+
|
|
13
|
+
sys.stdout auf UTF-8 umstellen, damit Unicode-Symbole (Emojis,
|
|
14
|
+
Baum-Zeichen) auch unter Windows mit cp1252-Konsole ausgegeben
|
|
15
|
+
werden können.
|
|
16
|
+
|
|
17
|
+
Closes #48
|
|
18
|
+
- Use Unix path separator in build-linux (closes #43) [Paul Magister]
|
|
19
|
+
|
|
20
|
+
config.yaml verwendet in build-linux das Windows-Pfadtrennzeichen ';',
|
|
21
|
+
unter Linux/macOS erwartet PyInstaller den Doppelpunkt ':'. Damit wird
|
|
22
|
+
config.yaml korrekt in den Linux-Build bündelt.
|
|
23
|
+
|
|
24
|
+
Other
|
|
25
|
+
~~~~~
|
|
26
|
+
- Move globally useful guidelines to a AGENTS_GLOBAL.md that has to be
|
|
27
|
+
renamed and kept in the global folder for AGENTS.md files. [Paul
|
|
28
|
+
Magister]
|
|
29
|
+
- Merge pull request #49 from
|
|
30
|
+
pamagister/dependabot/github_actions/actions/checkout-7. [Paul
|
|
31
|
+
Magister]
|
|
32
|
+
|
|
33
|
+
Bump actions/checkout from 4 to 7
|
|
34
|
+
- Merge branch 'main' into dependabot/github_actions/actions/checkout-7.
|
|
35
|
+
[Paul Magister]
|
|
36
|
+
- Merge pull request #50 from
|
|
37
|
+
pamagister/dependabot/github_actions/actions/setup-python-7. [Paul
|
|
38
|
+
Magister]
|
|
39
|
+
|
|
40
|
+
Bump actions/setup-python from 5 to 7
|
|
41
|
+
- Bump actions/setup-python from 5 to 7. [dependabot[bot]]
|
|
42
|
+
|
|
43
|
+
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 7.
|
|
44
|
+
- [Release notes](https://github.com/actions/setup-python/releases)
|
|
45
|
+
- [Commits](https://github.com/actions/setup-python/compare/v5...v7)
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
updated-dependencies:
|
|
49
|
+
- dependency-name: actions/setup-python
|
|
50
|
+
dependency-version: '7'
|
|
51
|
+
dependency-type: direct:production
|
|
52
|
+
update-type: version-update:semver-major
|
|
53
|
+
...
|
|
54
|
+
- Merge pull request #51 from
|
|
55
|
+
pamagister/dependabot/github_actions/codecov/codecov-action-7. [Paul
|
|
56
|
+
Magister]
|
|
57
|
+
|
|
58
|
+
Bump codecov/codecov-action from 5 to 7
|
|
59
|
+
- Bump codecov/codecov-action from 5 to 7. [dependabot[bot]]
|
|
60
|
+
|
|
61
|
+
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5 to 7.
|
|
62
|
+
- [Release notes](https://github.com/codecov/codecov-action/releases)
|
|
63
|
+
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
|
|
64
|
+
- [Commits](https://github.com/codecov/codecov-action/compare/v5...v7)
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
updated-dependencies:
|
|
68
|
+
- dependency-name: codecov/codecov-action
|
|
69
|
+
dependency-version: '7'
|
|
70
|
+
dependency-type: direct:production
|
|
71
|
+
update-type: version-update:semver-major
|
|
72
|
+
...
|
|
73
|
+
- Bump actions/checkout from 4 to 7. [dependabot[bot]]
|
|
74
|
+
|
|
75
|
+
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 7.
|
|
76
|
+
- [Release notes](https://github.com/actions/checkout/releases)
|
|
77
|
+
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
|
|
78
|
+
- [Commits](https://github.com/actions/checkout/compare/v4...v7)
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
updated-dependencies:
|
|
82
|
+
- dependency-name: actions/checkout
|
|
83
|
+
dependency-version: '7'
|
|
84
|
+
dependency-type: direct:production
|
|
85
|
+
update-type: version-update:semver-major
|
|
86
|
+
...
|
|
87
|
+
- Merge pull request #39 from
|
|
88
|
+
pamagister/dependabot/github_actions/actions/setup-python-6. [Paul
|
|
89
|
+
Magister]
|
|
90
|
+
|
|
91
|
+
Bump actions/setup-python from 4 to 6
|
|
92
|
+
- Merge branch 'main' into dependabot/github_actions/actions/setup-
|
|
93
|
+
python-6. [Paul Magister]
|
|
94
|
+
- Merge pull request #40 from
|
|
95
|
+
pamagister/dependabot/github_actions/actions/checkout-6. [Paul
|
|
96
|
+
Magister]
|
|
97
|
+
|
|
98
|
+
Bump actions/checkout from 3 to 6
|
|
99
|
+
- Merge branch 'main' into dependabot/github_actions/actions/checkout-6.
|
|
100
|
+
[Paul Magister]
|
|
101
|
+
- Bump actions/checkout from 3 to 6. [dependabot[bot]]
|
|
102
|
+
|
|
103
|
+
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 6.
|
|
104
|
+
- [Release notes](https://github.com/actions/checkout/releases)
|
|
105
|
+
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
|
|
106
|
+
- [Commits](https://github.com/actions/checkout/compare/v3...v6)
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
updated-dependencies:
|
|
110
|
+
- dependency-name: actions/checkout
|
|
111
|
+
dependency-version: '6'
|
|
112
|
+
dependency-type: direct:production
|
|
113
|
+
update-type: version-update:semver-major
|
|
114
|
+
...
|
|
115
|
+
- Merge branch 'main' into dependabot/github_actions/actions/setup-
|
|
116
|
+
python-6 resolve merge conflict manually. [Paul Magister]
|
|
117
|
+
- Test: show_tree-Ausgabe unter Windows als UTF-8 dekodieren. [Paul
|
|
118
|
+
Magister]
|
|
119
|
+
|
|
120
|
+
subprocess.run(text=True) dekodiert unter Windows (cp1252) die
|
|
121
|
+
Kindprozess-Ausgabe; da show_tree.py UTF-8 ausgibt, muss der Test
|
|
122
|
+
encoding="utf-8" verwenden, damit Emoji- und Baum-Zeichen korrekt
|
|
123
|
+
erfasst werden.
|
|
124
|
+
|
|
125
|
+
Closes #48
|
|
126
|
+
- #48: add github usage details. [Paul Magister]
|
|
127
|
+
- Docs: Add SECURITY.md for vulnerability reporting (closes #45) [Paul
|
|
128
|
+
Magister]
|
|
129
|
+
- Docs: Add SECURITY.md for vulnerability reporting (closes #45) [Paul
|
|
130
|
+
Magister]
|
|
131
|
+
|
|
132
|
+
Dokumentiert den Meldungsweg für Sicherheitslücken über die private
|
|
133
|
+
Schwachstellenmeldung von GitHub (Security -> Report a vulnerability),
|
|
134
|
+
da es keinen öffentlichen Kanal gab.
|
|
135
|
+
- Ci: concurrency-Gruppen in allen Workflows (closes #42) [Paul
|
|
136
|
+
Magister]
|
|
137
|
+
|
|
138
|
+
Verhindert überlappende Läufe desselben Workflows (Gruppe nach
|
|
139
|
+
github.workflow und github.ref). Läufe bei Pull-Requests werden beim
|
|
140
|
+
erneuten Push abgebrochen; Tag-Releases und main-Pushes laufen weiter.
|
|
141
|
+
- Ci: release_message.sh auch bei erstem Tag gültig (closes #46) [Paul
|
|
142
|
+
Magister]
|
|
143
|
+
|
|
144
|
+
Bei nur einem Tag lieferte 'git tag ... | sed -n 2p' keinen Vorgänger,
|
|
145
|
+
weshalb 'git shortlog ".."' fehlschlug oder einen leeren
|
|
146
|
+
Changelog erzeugte. Nun wird bei fehlendem Vorgänger-Tag die Historie
|
|
147
|
+
aller Commits einbezogen.
|
|
148
|
+
- Ci: Checkout with fetch-depth 0 in deploy job (closes #44) [Paul
|
|
149
|
+
Magister]
|
|
150
|
+
|
|
151
|
+
setuptools_scm benötigt die Git-Tags, um die Version zu erzeugen.
|
|
152
|
+
Im deploy-Job von release.yml fehlte fetch-depth: 0 (shallow clone),
|
|
153
|
+
wodurch der PyPI-Upload fehlschlagen oder eine falsche Version
|
|
154
|
+
veröffentlichen konnte.
|
|
155
|
+
- Squeeze AGENTS.md. [Paul Magister]
|
|
156
|
+
- Feat(show_tree): use nice symbols. [Paul Magister]
|
|
157
|
+
- Feat(show_tree): align folder details and add global summary. [Paul
|
|
158
|
+
Magister]
|
|
159
|
+
|
|
160
|
+
Show folder summaries whenever --details is used, restrict --folder output to directories without file names, and always print a recursive overall summary at the end.
|
|
161
|
+
|
|
162
|
+
Refs #41
|
|
163
|
+
- Feat(show_tree): add per-folder summaries. [Paul Magister]
|
|
164
|
+
|
|
165
|
+
Add --folder to show direct subfolder/file counts, total size, and the top three file extensions per directory. File metadata is suppressed in this mode.
|
|
166
|
+
|
|
167
|
+
Refs #41
|
|
168
|
+
- Feat(show_tree): add optional metadata details. [Paul Magister]
|
|
169
|
+
|
|
170
|
+
Add a --details flag that appends file size, timestamps, owner, directory entry counts, and best-effort document metadata from ODF, OOXML, and PDF files. The default tree output remains unchanged.
|
|
171
|
+
|
|
172
|
+
Closes #41
|
|
173
|
+
- Add AGENTS.md and harmonize doc generation. [Paul Magister]
|
|
174
|
+
- Bump actions/setup-python from 4 to 6. [dependabot[bot]]
|
|
175
|
+
|
|
176
|
+
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 6.
|
|
177
|
+
- [Release notes](https://github.com/actions/setup-python/releases)
|
|
178
|
+
- [Commits](https://github.com/actions/setup-python/compare/v4...v6)
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
updated-dependencies:
|
|
182
|
+
- dependency-name: actions/setup-python
|
|
183
|
+
dependency-version: '6'
|
|
184
|
+
dependency-type: direct:production
|
|
185
|
+
update-type: version-update:semver-major
|
|
186
|
+
...
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
0.2.5 (2026-10-07)
|
|
190
|
+
------------------
|
|
191
|
+
- Docs: Update HISTORY.md for release 0.2.5. [Paul Magister]
|
|
7
192
|
- Ich habe .readthedocs.yaml auf Read the Docs’ uv-Integration mit der
|
|
8
193
|
Gruppe docs umgestellt. Hinweis: uv sync wählt standardmäßig auch die
|
|
9
194
|
dev-Gruppe aus. [Paul Magister]
|
|
@@ -68,7 +68,7 @@ build-win: ## Build the Windows executable.
|
|
|
68
68
|
.PHONY: build-linux
|
|
69
69
|
build-linux: ## Build the Linux executable.
|
|
70
70
|
## Build the Linux executable.
|
|
71
|
-
uv run pyinstaller --onefile src/main.py --name python-template-project --add-data "config.yaml
|
|
71
|
+
uv run pyinstaller --onefile src/main.py --name python-template-project --add-data "config.yaml:." --hidden-import python_template_project.cli.cli --hidden-import python_template_project.gui.gui
|
|
72
72
|
|
|
73
73
|
rm -rf release
|
|
74
74
|
mkdir release
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
## Supported Versions
|
|
4
|
+
|
|
5
|
+
Currently, only the latest release of the template is supported. Older
|
|
6
|
+
releases no longer receive security updates.
|
|
7
|
+
|
|
8
|
+
## Reporting Vulnerabilities
|
|
9
|
+
|
|
10
|
+
Please do **not** disclose discovered security vulnerabilities publicly
|
|
11
|
+
via issues or pull requests.
|
|
12
|
+
|
|
13
|
+
Instead, report them using GitHub’s private vulnerability reporting feature:
|
|
14
|
+
|
|
15
|
+
1. Open the **Security** tab of the repository.
|
|
16
|
+
2. Click on **Report a vulnerability** (or **Advisories → New draft
|
|
17
|
+
security advisory**).
|
|
18
|
+
3. Describe the issue, the affected versions, and the potential
|
|
19
|
+
impact as accurately as possible.
|
|
20
|
+
|
|
21
|
+
The GitHub security team will forward the report to the maintainers.
|
|
22
|
+
You will receive an acknowledgment and be kept informed about the progress.
|
|
23
|
+
|
|
24
|
+
## Expected Process
|
|
25
|
+
|
|
26
|
+
* Acknowledgment of receipt within 5 business days.
|
|
27
|
+
* Initial assessment and prioritization within 14 days.
|
|
28
|
+
* If a fix is developed: publication alongside a new release and
|
|
29
|
+
(where appropriate) a CVE.
|
|
30
|
+
|
|
31
|
+
Thank you for helping to keep this template secure.
|
|
@@ -72,4 +72,13 @@ python-template-project --extract_waypoints True input
|
|
|
72
72
|
```bash
|
|
73
73
|
python -m python_template_project --help
|
|
74
74
|
python -m python_template_project input
|
|
75
|
-
```
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
# More parameter
|
|
78
|
+
|
|
79
|
+
For your specific projects that inherit from the library,
|
|
80
|
+
you can add more parameters to the CLI and config file
|
|
81
|
+
by creating your own ConfigManager subclass
|
|
82
|
+
and adding more ConfigParameter instances.
|
|
83
|
+
The documentation generator will automatically include them
|
|
84
|
+
in the generated documentation.
|
{python_template_project-0.2.5 → python_template_project-0.2.6}/scripts/generate_config_docs.py
RENAMED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
|
|
1
3
|
from config_cli_gui.docs import DocumentationGenerator
|
|
2
4
|
|
|
3
5
|
from python_template_project.config.config import ConfigParameterManager
|
|
@@ -19,4 +21,19 @@ docGen.generate_config_markdown_doc(output_file=default_config_doc)
|
|
|
19
21
|
print(f"Generated: {default_config_doc}")
|
|
20
22
|
|
|
21
23
|
docGen.generate_cli_markdown_doc(output_file=default_cli_doc, app_name=config_manager.get_app_name())
|
|
22
|
-
print(f"Generated: {default_cli_doc}")
|
|
24
|
+
print(f"Generated: {default_cli_doc}")
|
|
25
|
+
|
|
26
|
+
additional_cli_content = """
|
|
27
|
+
|
|
28
|
+
# More parameter
|
|
29
|
+
|
|
30
|
+
For your specific projects that inherit from the library,
|
|
31
|
+
you can add more parameters to the CLI and config file
|
|
32
|
+
by creating your own ConfigManager subclass
|
|
33
|
+
and adding more ConfigParameter instances.
|
|
34
|
+
The documentation generator will automatically include them
|
|
35
|
+
in the generated documentation.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
with Path(default_cli_doc).open("a", encoding="utf-8") as cli_doc:
|
|
39
|
+
cli_doc.write(additional_cli_content)
|