bitranox-template-py-lib 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. bitranox_template_py_lib-1.0.0/.devcontainer/devcontainer.json +22 -0
  2. bitranox_template_py_lib-1.0.0/.devcontainer/settings.json +6 -0
  3. bitranox_template_py_lib-1.0.0/.env.example +11 -0
  4. bitranox_template_py_lib-1.0.0/.github/dependabot.yml +22 -0
  5. bitranox_template_py_lib-1.0.0/.github/workflows/ci.yml +208 -0
  6. bitranox_template_py_lib-1.0.0/.github/workflows/codeql.yml +39 -0
  7. bitranox_template_py_lib-1.0.0/.github/workflows/release.yml +50 -0
  8. bitranox_template_py_lib-1.0.0/.gitignore +181 -0
  9. bitranox_template_py_lib-1.0.0/.qlty/qlty.toml +2 -0
  10. bitranox_template_py_lib-1.0.0/.snyk +5 -0
  11. bitranox_template_py_lib-1.0.0/AGENTS.md +104 -0
  12. bitranox_template_py_lib-1.0.0/CHANGELOG.md +4 -0
  13. bitranox_template_py_lib-1.0.0/CLAUDE.md +144 -0
  14. bitranox_template_py_lib-1.0.0/CONTRIBUTING.md +48 -0
  15. bitranox_template_py_lib-1.0.0/DEVELOPMENT.md +134 -0
  16. bitranox_template_py_lib-1.0.0/INSTALL.md +193 -0
  17. bitranox_template_py_lib-1.0.0/LICENSE +22 -0
  18. bitranox_template_py_lib-1.0.0/Makefile +54 -0
  19. bitranox_template_py_lib-1.0.0/PKG-INFO +128 -0
  20. bitranox_template_py_lib-1.0.0/README.md +89 -0
  21. bitranox_template_py_lib-1.0.0/codecov.yml +28 -0
  22. bitranox_template_py_lib-1.0.0/concept.md +312 -0
  23. bitranox_template_py_lib-1.0.0/docs/systemdesign/module_reference.md +259 -0
  24. bitranox_template_py_lib-1.0.0/notebooks/Quickstart.ipynb +165 -0
  25. bitranox_template_py_lib-1.0.0/pyproject.toml +117 -0
  26. bitranox_template_py_lib-1.0.0/reset_git_history.sh +54 -0
  27. bitranox_template_py_lib-1.0.0/scripts/__init__.py +3 -0
  28. bitranox_template_py_lib-1.0.0/scripts/__main__.py +7 -0
  29. bitranox_template_py_lib-1.0.0/scripts/_utils.py +591 -0
  30. bitranox_template_py_lib-1.0.0/scripts/build.py +52 -0
  31. bitranox_template_py_lib-1.0.0/scripts/bump.py +32 -0
  32. bitranox_template_py_lib-1.0.0/scripts/bump_major.py +20 -0
  33. bitranox_template_py_lib-1.0.0/scripts/bump_minor.py +20 -0
  34. bitranox_template_py_lib-1.0.0/scripts/bump_patch.py +20 -0
  35. bitranox_template_py_lib-1.0.0/scripts/bump_version.py +80 -0
  36. bitranox_template_py_lib-1.0.0/scripts/clean.py +48 -0
  37. bitranox_template_py_lib-1.0.0/scripts/cli.py +213 -0
  38. bitranox_template_py_lib-1.0.0/scripts/dev.py +19 -0
  39. bitranox_template_py_lib-1.0.0/scripts/help.py +41 -0
  40. bitranox_template_py_lib-1.0.0/scripts/install.py +19 -0
  41. bitranox_template_py_lib-1.0.0/scripts/menu.py +568 -0
  42. bitranox_template_py_lib-1.0.0/scripts/push.py +77 -0
  43. bitranox_template_py_lib-1.0.0/scripts/release.py +90 -0
  44. bitranox_template_py_lib-1.0.0/scripts/run_cli.py +154 -0
  45. bitranox_template_py_lib-1.0.0/scripts/target_metadata.py +174 -0
  46. bitranox_template_py_lib-1.0.0/scripts/test.py +544 -0
  47. bitranox_template_py_lib-1.0.0/scripts/version_current.py +20 -0
  48. bitranox_template_py_lib-1.0.0/src/bitranox_template_py_lib/__init__.py +19 -0
  49. bitranox_template_py_lib-1.0.0/src/bitranox_template_py_lib/__init__conf__.py +67 -0
  50. bitranox_template_py_lib-1.0.0/src/bitranox_template_py_lib/__main__.py +20 -0
  51. bitranox_template_py_lib-1.0.0/src/bitranox_template_py_lib/behaviors.py +145 -0
  52. bitranox_template_py_lib-1.0.0/src/bitranox_template_py_lib/cli.py +168 -0
  53. bitranox_template_py_lib-1.0.0/src/bitranox_template_py_lib/py.typed +0 -0
  54. bitranox_template_py_lib-1.0.0/tests/conftest.py +47 -0
  55. bitranox_template_py_lib-1.0.0/tests/test_behaviors.py +61 -0
  56. bitranox_template_py_lib-1.0.0/tests/test_cli.py +159 -0
  57. bitranox_template_py_lib-1.0.0/tests/test_metadata.py +111 -0
  58. bitranox_template_py_lib-1.0.0/tests/test_module_entry.py +65 -0
  59. bitranox_template_py_lib-1.0.0/tests/test_scripts.py +266 -0
@@ -0,0 +1,22 @@
1
+ {
2
+ "image": "mcr.microsoft.com/devcontainers/python:3.13",
3
+
4
+ "postCreateCommand": "bash -lc '\nPY=/usr/local/bin/python;\n$PY -m pip install -U pip && \\\n$PY -m pip install ipykernel && \\\n$PY -m pip install -e . && \\\n# register kernel using this exact interpreter\n$PY -m ipykernel install --name=python3 --display-name=\"Python 3 (3.13)\" --user && \\\n# patch the notebook to point to the python3 kernelspec (VS Code will bind to /usr/local/bin/python)\n$PY - <<\"PY\"\nimport json, pathlib\np = pathlib.Path(\"notebooks/Quickstart.ipynb\")\nif p.exists():\n nb = json.loads(p.read_text(encoding=\"utf-8\"))\n md = nb.setdefault(\"metadata\", {})\n md[\"kernelspec\"] = {\n \"name\": \"python3\",\n \"display_name\": \"Python 3 (3.13)\",\n \"language\": \"python\"\n }\n md[\"language_info\"] = {\"name\": \"python\"}\n p.write_text(json.dumps(nb, ensure_ascii=False, indent=1), encoding=\"utf-8\")\n print(\"Pinned kernelspec to python3 in\", p)\nelse:\n print(\"Notebook not found:\", p)\nPY'\n",
5
+
6
+ "customizations": {
7
+ "vscode": {
8
+ "extensions": ["ms-toolsai.jupyter", "ms-python.python"],
9
+ "settings": {
10
+ "workbench.startupEditor": "none",
11
+ "jupyter.alwaysTrustNotebooks": true,
12
+ "jupyter.kernelPickerType": "OnlyRecommended",
13
+ "python.defaultInterpreterPath": "/usr/local/bin/python"
14
+ }
15
+ },
16
+ "codespaces": {
17
+ "openFiles": ["README.md"]
18
+ }
19
+ },
20
+
21
+ "postAttachCommand": "bash -lc 'if [ -f notebooks/Quickstart.ipynb ]; then code -r notebooks/Quickstart.ipynb; fi'"
22
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "python.defaultInterpreterPath": "/usr/local/bin/python3.13",
3
+ "jupyter.alwaysTrustNotebooks": true,
4
+ "jupyter.kernelPickerType": "OnlyRecommended",
5
+ "jupyter.askForKernelRestart": false
6
+ }
@@ -0,0 +1,11 @@
1
+ # Copy to .env and fill values as needed.
2
+
3
+ # Codecov upload token (required for private repos; optional for public repos)
4
+ CODECOV_TOKEN=
5
+
6
+ # PyPI API token for release workflow (.github/workflows/release.yml)
7
+ # Format: pypi-AgENdGVzdC5weXBpLm9yZwIk...
8
+ PYPI_API_TOKEN=
9
+
10
+ # Optional: GitHub token for API-limited tasks
11
+ GITHUB_TOKEN=
@@ -0,0 +1,22 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "pip"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "weekly"
7
+ allow:
8
+ - dependency-type: "direct"
9
+ labels:
10
+ - "dependencies"
11
+ commit-message:
12
+ prefix: "deps"
13
+ include: "scope"
14
+ - package-ecosystem: "github-actions"
15
+ directory: "/"
16
+ schedule:
17
+ interval: "weekly"
18
+ labels:
19
+ - "dependencies"
20
+ commit-message:
21
+ prefix: "deps"
22
+ include: "scope"
@@ -0,0 +1,208 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [ main, master ]
6
+ pull_request:
7
+ branches: [ main, master ]
8
+ schedule:
9
+ # Run daily at 3:17 AM UTC (off-peak hours, odd minute to avoid congestion)
10
+ - cron: '17 3 * * *'
11
+
12
+ jobs:
13
+ test:
14
+ name: Tests (Python ${{ matrix.python }}, ${{ matrix.os }})
15
+ runs-on: ${{ matrix.os }}
16
+ strategy:
17
+ fail-fast: false
18
+ matrix:
19
+ os: [ubuntu-latest, macos-latest, windows-latest]
20
+ # Test against Python 3.9+ as specified in requires-python
21
+ python: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.x"]
22
+ env:
23
+ PYO3_USE_ABI3_FORWARD_COMPATIBILITY: "1"
24
+ steps:
25
+ - uses: actions/checkout@v5
26
+ - uses: actions/setup-python@v6
27
+ with:
28
+ python-version: ${{ matrix.python }}
29
+ cache: 'pip'
30
+ cache-dependency-path: 'pyproject.toml'
31
+ - name: Install uv
32
+ uses: astral-sh/setup-uv@v7
33
+ with:
34
+ enable-cache: true
35
+ - name: Install tomli for Python < 3.11
36
+ if: matrix.python == '3.9' || matrix.python == '3.10'
37
+ run: python -m pip install tomli
38
+ - name: Extract project metadata
39
+ shell: python
40
+ run: |
41
+ import os
42
+ try:
43
+ import tomllib
44
+ except ModuleNotFoundError:
45
+ import tomli as tomllib
46
+ from pathlib import Path
47
+
48
+ data = tomllib.loads(Path('pyproject.toml').read_text('utf-8'))
49
+ project = data['project']['name']
50
+ module = project.replace('-', '_')
51
+ dash = project.replace('_', '-')
52
+ scripts = list(data['project'].get('scripts', {}).keys())
53
+ cli_bin = scripts[0] if scripts else dash
54
+
55
+ with open(os.environ['GITHUB_ENV'], 'a', encoding='utf-8') as env:
56
+ env.write(f"PROJECT_NAME={project}\n")
57
+ env.write(f"PACKAGE_MODULE={module}\n")
58
+ env.write(f"CLI_BIN={cli_bin}\n")
59
+ - name: Install make on Windows
60
+ if: runner.os == 'Windows'
61
+ shell: pwsh
62
+ run: |
63
+ choco install -y make
64
+ echo "C:\\ProgramData\\chocolatey\\bin" >> $env:GITHUB_PATH
65
+ - name: Install journald prerequisites
66
+ if: runner.os == 'Linux'
67
+ shell: bash
68
+ run: |
69
+ sudo apt-get update
70
+ sudo apt-get install -y python3-systemd
71
+
72
+ - name: Upgrade pip
73
+ shell: bash
74
+ run: python -m pip install --upgrade pip
75
+
76
+ - name: Install dev deps
77
+ shell: bash
78
+ run: |
79
+ uv pip install -e .[dev] --system
80
+
81
+ - name: Install Windows Event Log prerequisites
82
+ if: runner.os == 'Windows'
83
+ shell: bash
84
+ run: |
85
+ uv pip install pywin32 --system
86
+ - name: Cache ruff
87
+ uses: actions/cache@v4
88
+ with:
89
+ path: .ruff_cache
90
+ key: ruff-${{ runner.os }}-${{ hashFiles('**/*.py') }}
91
+ restore-keys: |
92
+ ruff-${{ runner.os }}-
93
+ - name: Cache pyright
94
+ uses: actions/cache@v4
95
+ with:
96
+ path: .pyright
97
+ key: pyright-${{ runner.os }}-py${{ matrix.python }}-${{ hashFiles('**/*.py', 'pyproject.toml') }}
98
+ restore-keys: |
99
+ pyright-${{ runner.os }}-py${{ matrix.python }}-
100
+ pyright-${{ runner.os }}-
101
+ - name: Run full test suite (lint, types, tests, coverage, codecov)
102
+ shell: bash
103
+ env:
104
+ TEST_VERBOSE: "1"
105
+ run: make test
106
+ - name: Build wheel/sdist
107
+ shell: bash
108
+ run: python -m build
109
+ - name: Verify wheel install in clean env
110
+ shell: bash
111
+ run: |
112
+ python -m venv .venv_wheel
113
+ . .venv_wheel/bin/activate 2>/dev/null || . .venv_wheel/Scripts/activate 2>/dev/null
114
+ pip install dist/*.whl
115
+ "$CLI_BIN" --version 2>/dev/null || python -m "$PACKAGE_MODULE" --version
116
+
117
+ pipx-uv:
118
+ name: pipx/uv verification (ubuntu)
119
+ runs-on: ubuntu-latest
120
+ steps:
121
+ - uses: actions/checkout@v5
122
+ - uses: actions/setup-python@v6
123
+ with:
124
+ python-version: "3.13"
125
+ cache: 'pip'
126
+ cache-dependency-path: 'pyproject.toml'
127
+ - name: Extract project metadata
128
+ shell: python
129
+ run: |
130
+ import os
131
+ try:
132
+ import tomllib
133
+ except ModuleNotFoundError:
134
+ import tomli as tomllib
135
+ from pathlib import Path
136
+
137
+ data = tomllib.loads(Path('pyproject.toml').read_text('utf-8'))
138
+ project = data['project']['name']
139
+ module = project.replace('-', '_')
140
+ dash = project.replace('_', '-')
141
+ scripts = list(data['project'].get('scripts', {}).keys())
142
+ cli_bin = scripts[0] if scripts else dash
143
+
144
+ with open(os.environ['GITHUB_ENV'], 'a', encoding='utf-8') as env:
145
+ env.write(f"PROJECT_NAME={project}\n")
146
+ env.write(f"PACKAGE_MODULE={module}\n")
147
+ env.write(f"CLI_BIN={cli_bin}\n")
148
+ - name: Build wheel
149
+ run: |
150
+ python -m pip install --upgrade pip build
151
+ python -m build
152
+ - name: pipx install from wheel
153
+ run: |
154
+ python -m pip install pipx
155
+ pipx install dist/*.whl
156
+ "$CLI_BIN" --version 2>/dev/null || python -m "$PACKAGE_MODULE" --version
157
+ - name: Install uv
158
+ uses: astral-sh/setup-uv@v7
159
+ with:
160
+ enable-cache: true
161
+ - name: uv tool install
162
+ run: |
163
+ uv tool install .
164
+ "$CLI_BIN" --version 2>/dev/null || python -m "$PACKAGE_MODULE" --version
165
+
166
+ notebooks:
167
+ name: Execute notebooks (ubuntu, Python 3.13)
168
+ runs-on: ubuntu-latest
169
+ steps:
170
+ - uses: actions/checkout@v5
171
+ - uses: actions/setup-python@v6
172
+ with:
173
+ python-version: "3.13"
174
+ cache: 'pip'
175
+ cache-dependency-path: 'pyproject.toml'
176
+ - name: Install notebook runner deps
177
+ run: |
178
+ python -m pip install --upgrade pip
179
+ pip install nbclient nbformat ipykernel jupyter_client
180
+ python -m ipykernel install --user --name python3 --display-name "Python 3"
181
+ - name: Execute Quickstart notebook
182
+ env:
183
+ PIP_DISABLE_PIP_VERSION_CHECK: "1"
184
+ PIP_NO_INPUT: "1"
185
+ run: |
186
+ python - << 'PY'
187
+ from pathlib import Path
188
+
189
+ import nbformat
190
+ from nbclient import NotebookClient
191
+
192
+ nb_path = Path('notebooks/Quickstart.ipynb')
193
+ if not nb_path.exists():
194
+ raise SystemExit(f"Notebook not found: {nb_path}")
195
+
196
+ notebook = nbformat.read(nb_path, as_version=4)
197
+ client = NotebookClient(
198
+ notebook,
199
+ timeout=900,
200
+ kernel_name='python3',
201
+ allow_errors=False,
202
+ )
203
+ client.execute()
204
+
205
+ out_path = Path('notebooks/Quickstart-executed.ipynb')
206
+ nbformat.write(notebook, out_path)
207
+ print(f"Executed notebook written to: {out_path}")
208
+ PY
@@ -0,0 +1,39 @@
1
+ name: CodeQL
2
+
3
+ on:
4
+ push:
5
+ branches: [ main, master ]
6
+ pull_request:
7
+ branches: [ main, master ]
8
+ schedule:
9
+ - cron: '0 8 * * 1'
10
+
11
+ jobs:
12
+ analyze:
13
+ name: CodeQL Analyze
14
+ runs-on: ubuntu-latest
15
+ permissions:
16
+ actions: read
17
+ contents: read
18
+ security-events: write
19
+ strategy:
20
+ fail-fast: false
21
+ matrix:
22
+ language: [ 'python' ]
23
+
24
+ steps:
25
+ - name: Checkout repository
26
+ uses: actions/checkout@v5
27
+
28
+ - name: Initialize CodeQL
29
+ uses: github/codeql-action/init@v4
30
+ with:
31
+ languages: ${{ matrix.language }}
32
+
33
+ - name: Autobuild
34
+ uses: github/codeql-action/autobuild@v4
35
+
36
+ - name: Perform CodeQL Analysis
37
+ uses: github/codeql-action/analyze@v4
38
+ with:
39
+ category: "/language:${{ matrix.language }}"
@@ -0,0 +1,50 @@
1
+ name: Release
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ push:
7
+ tags:
8
+ - 'v*'
9
+ workflow_dispatch: {}
10
+
11
+ jobs:
12
+ build-and-publish:
13
+ runs-on: ubuntu-latest
14
+ permissions:
15
+ contents: read
16
+ steps:
17
+ - uses: actions/checkout@v5
18
+ - name: Verify PyPI token is set
19
+ run: |
20
+ if [ -z "${{ secrets.PYPI_API_TOKEN }}" ]; then
21
+ echo "::error title=Missing PyPI token::Set the PYPI_API_TOKEN secret in GitHub repository settings to enable PyPI publishing on releases."
22
+ echo "See: https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions"
23
+ exit 1
24
+ fi
25
+ - uses: actions/setup-python@v6
26
+ with:
27
+ python-version: '3.13'
28
+ cache: 'pip'
29
+ cache-dependency-path: 'pyproject.toml'
30
+ - name: Install uv
31
+ uses: astral-sh/setup-uv@v7
32
+ with:
33
+ enable-cache: true
34
+ - name: Build artifacts
35
+ run: |
36
+ python -m pip install --upgrade pip
37
+ uv pip install build --system
38
+ python -m build
39
+ - name: Publish to PyPI
40
+ # Use the rolling major tag to get latest Twine/standards support (e.g., Core Metadata 2.4)
41
+ uses: pypa/gh-action-pypi-publish@release/v1
42
+ with:
43
+ password: ${{ secrets.PYPI_API_TOKEN }}
44
+ attestations: false
45
+ skip-existing: true
46
+ - name: Upload artifacts
47
+ uses: actions/upload-artifact@v5
48
+ with:
49
+ name: dist
50
+ path: dist/*
@@ -0,0 +1,181 @@
1
+ # ====================================
2
+ # ROTEK SPEZIFISCH: Git commands you might run once
3
+ # git add .gitignore && git commit -m "Ignore IDE settings"
4
+ # git push
5
+ # git rm -r --cached .idea
6
+ # git commit -m "Remove .idea and add to .gitignore"
7
+ # git push
8
+ # alternative : BE CAREFUL: overwrites remote history
9
+ # git push origin master --force
10
+
11
+ # ====================================
12
+ # APP
13
+ # ====================================
14
+ website/build/
15
+ website/.docusaurus/
16
+ website/node_modules/
17
+ node_modules/
18
+ web-local-preview/
19
+ translation_app*.log
20
+ translation_web*.log
21
+ tmp_github_web_pages/
22
+ tmp_linkcheck_web_pages/
23
+ .eslintcache
24
+ .vitest/
25
+ npm-debug.log*
26
+ yarn-error.log*
27
+ pnpm-debug.log*
28
+ .env.*
29
+ !.env.example
30
+ todo.md
31
+ tmp_*
32
+ .claude
33
+
34
+ # ====================================
35
+ # IDEs & Editors
36
+ # ====================================
37
+ # IntelliJ, PyCharm, etc.
38
+ .idea/
39
+ # VS Code workspace settings
40
+ .vscode/
41
+ *.code-workspace
42
+
43
+ # ====================================
44
+ # Python bytecode & caches
45
+ # ====================================
46
+ # __pycache__: compiled .pyc files at any depth
47
+ # *.py[cod]: catches .pyc, .pyo, .pyd
48
+ __pycache__/
49
+ *.py[cod]
50
+ *$py.class # other compiled artifacts
51
+
52
+ # pytest, coverage, MyPy, Hypothesis
53
+ .pytest_cache/
54
+ .mypy_cache/
55
+ .pyright/
56
+ .coverage*
57
+ htmlcov/
58
+ nosetests.xml
59
+ coverage.xml
60
+ *.cover
61
+ .hypothesis/
62
+ .tox/
63
+ .nox/
64
+
65
+ # general cache directories (any project-level caching)
66
+ .cache/
67
+ .run/
68
+ .import_linter_cache/
69
+
70
+ # ====================================
71
+ # Build & distribution artifacts
72
+ # ====================================
73
+ # source/package builds
74
+ build/
75
+ dist/
76
+ *.egg-info/ # metadata for pip installs
77
+ *.egg
78
+ *.whl
79
+ pip-wheel-metadata/
80
+ *.manifest # PyInstaller metadata
81
+ *.spec # PyInstaller spec files
82
+
83
+ # Eggs, parts, wheels, sdist, etc.
84
+ develop-eggs/
85
+ .eggs/
86
+ parts/
87
+ sdist/
88
+ wheels/
89
+ downloads/
90
+ var/
91
+
92
+ # pip logs & installer leftovers
93
+ pip-log.txt
94
+ pip-delete-this-directory.txt
95
+ .installed.cfg
96
+
97
+ # ====================================
98
+ # Virtual environments & secrets
99
+ # ====================================
100
+ # common venv folder names
101
+ env/
102
+ venv/
103
+ ENV/
104
+ .venv/
105
+ # backups, alternate names
106
+ env.bak/
107
+ venv.bak/
108
+ # dotenv files with credentials
109
+ .env
110
+
111
+ # ====================================
112
+ # Project-specific & framework files
113
+ # ====================================
114
+ # Django logs & local overrides
115
+ *.log
116
+ local_settings.py
117
+
118
+ # Flask instance folder
119
+ instance/
120
+ .webassets-cache
121
+
122
+ # Scrapy cache
123
+ .scrapy
124
+
125
+ # Sphinx docs
126
+ docs/_build/
127
+
128
+ # PyBuilder output
129
+ target/
130
+
131
+ # Jupyter notebooks checkpoints
132
+ .ipynb_checkpoints
133
+
134
+ # pyenv Python version file
135
+ .python-version
136
+
137
+ # Celery beat schedule
138
+ celerybeat-schedule
139
+
140
+ # SageMath parsed files
141
+ *.sage.py
142
+
143
+ # Spyder IDE
144
+ .spyderproject
145
+ .spyproject
146
+
147
+ # Rope IDE
148
+ .ropeproject
149
+
150
+ # MkDocs static site folder
151
+ /site
152
+
153
+ # ====================================
154
+ # OS-specific files
155
+ # ====================================
156
+ # macOS
157
+ .DS_Store
158
+ # Windows
159
+ Thumbs.db
160
+ ehthumbs.db
161
+
162
+ # Archives
163
+ *.zip
164
+
165
+ # Thunderbird build artifact (created temporarily by pack script)
166
+ sources/manifest.json
167
+
168
+ # ====================================
169
+ # Tool-specific extras
170
+ # ====================================
171
+ # Codecov uploader script (downloaded during local uploads)
172
+ codecov.sh
173
+ codecov.xml
174
+
175
+ # Nix build result symlink
176
+ result
177
+
178
+ # Optional lockfiles (for alternative managers)
179
+ poetry.lock
180
+ pdm.lock
181
+ uv.lock
@@ -0,0 +1,2 @@
1
+ exclude_patterns = ["scripts/**"]
2
+ test_patterns = ["tests/**"]
@@ -0,0 +1,5 @@
1
+ # Snyk (https://snyk.io) policy file
2
+ exclude:
3
+ global:
4
+ - scripts/**
5
+ - tests/**
@@ -0,0 +1,104 @@
1
+ # Repository Guidelines
2
+
3
+ ## On session start
4
+
5
+ - Read following files from directory /media/srv-main/softdev/*/projects/softwarestack/systemprompts and keep their guidance in working memory:
6
+ - core_programming_solid.md
7
+ - bash_clean_architecture.md
8
+ - bash_clean_code.md
9
+ - bash_small_functions.md
10
+ - python_solid_architecture_enforcer.md
11
+ - python_clean_architecture.md
12
+ - python_clean_code.md
13
+ - python_small_functions_style.md
14
+ - python_libraries_to_use.md
15
+ - python_structure_template.md
16
+ - self_documenting.md
17
+ - self_documenting_template.md
18
+ - python_jupyter_notebooks.md
19
+ - python_testing.md
20
+
21
+ always apply those Rules :
22
+
23
+ - core_programming_solid.md
24
+
25
+ when writing or refracturing Bash scripts, apply those Rules :
26
+
27
+ - core_programming_solid.md
28
+ - bash_clean_architecture.md
29
+ - bash_clean_code.md
30
+ - bash_small_functions.md
31
+
32
+ when writing or refracturing Python scripts, apply those Rules :
33
+ - core_programming_solid.md
34
+ - python_solid_architecture_enforcer.md
35
+ - python_clean_architecture.md
36
+ - python_clean_code.md
37
+ - python_small_functions_style.md
38
+ - python_libraries_to_use.md
39
+ - python_lib_structure_template.md
40
+
41
+ ## Project Structure & Module Organization
42
+
43
+ - `src/bitranox_template_py_lib/`: Python package
44
+ - `scripts/`: shared automation
45
+ - `tests/`: test suite
46
+
47
+
48
+ ### Versioning & Releases
49
+
50
+ - Single source of truth for the package version is `pyproject.toml` (`[project].version`).
51
+ - Automation rewrites `src/bitranox_template_py_lib/__init__conf__.py` from `pyproject.toml`, so runtime code imports generated constants instead of querying `importlib.metadata`.
52
+ - After updating project metadata (version, summary, URLs, authors) run `make test` (or `python -m scripts.test`) to regenerate the metadata module before committing.
53
+ - Tag releases `vX.Y.Z` and push tags; CI will build artifacts and publish when configured.
54
+
55
+ ### Common Make Targets (Alphabetical)
56
+
57
+
58
+ | Target | One-line description |
59
+ |-------------------|--------------------------------------------------------------------------------|
60
+ | `build` | Build wheel/sdist artifacts. |
61
+ | `bump` | Bump version (VERSION=X.Y.Z or PART=major\|minor\|patch) and update changelog. |
62
+ | `bump-major` | Increment major version ((X+1).0.0). |
63
+ | `bump-minor` | Increment minor version (X.Y.Z → X.(Y+1).0). |
64
+ | `bump-patch` | Increment patch version (X.Y.Z → X.Y.(Z+1)). |
65
+ | `clean` | Remove caches, coverage, and build artifacts (includes `dist/` and `build/`). |
66
+ | `dev` | Install package with dev extras. |
67
+ | `help` | Show this table. |
68
+ | `install` | Editable install. |
69
+ | `menu` | Interactive TUI menu (make menu). |
70
+ | `push` | Commit changes once and push to GitHub (no CI monitoring). |
71
+ | `release` | Tag vX.Y.Z, push, sync packaging, run gh release if available. |
72
+ | `run` | Run module entry (`python -m ... --help`). |
73
+ | `test` | Lint, format, type-check, run tests with coverage, upload to Codecov. |
74
+ | `version-current` | Print current version from `pyproject.toml`. |
75
+
76
+
77
+ ## Coding Style & Naming Conventions
78
+ - apply python_clean_code.md
79
+
80
+
81
+ ## Commit & Pull Request Guidelines
82
+
83
+ ## Architecture Overview
84
+ - apply python_clean_architecture.md
85
+
86
+ ## Security & Configuration Tips
87
+ - `.env` is only for local tooling (CodeCov tokens, etc.); do not commit secrets.
88
+ - Rich logging should sanitize payloads before rendering once implemented.
89
+
90
+ ## Translations (Docs)
91
+
92
+ ## Translations (App UI Strings)
93
+
94
+ ## Changes in WEB Documentation
95
+ - when asked to update website documentation - only do that in the english docs under /website/docs because other languages will be translated automatically,
96
+ unless stated otherwise by the user. In doubt - ask the user
97
+
98
+ ## Changes in APP Strings
99
+ - when i18 strings are changed, only to that in sources/\_locales/en because other languages will be translated automatically,
100
+ unless stated otherwise by the user. In doubt - ask the user
101
+
102
+ ## commit/push/GitHub policy
103
+ - run "make test" before any push to avoid lint/test breakage.
104
+ - after push, monitor errors in the github actions and try to correct the errors
@@ -0,0 +1,4 @@
1
+ # Changelog
2
+
3
+ ## [1.0.0] - 2025-11-04
4
+ - Bootstrap `bitranox_template_py_lib`