netzooe-eservice-api 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.
- netzooe_eservice_api-1.0.0/.editorconfig +10 -0
- netzooe_eservice_api-1.0.0/.gitattributes +1 -0
- netzooe_eservice_api-1.0.0/.github/actions/setup-project/action.yml +17 -0
- netzooe_eservice_api-1.0.0/.github/dependabot.yml +10 -0
- netzooe_eservice_api-1.0.0/.github/environments.json +3 -0
- netzooe_eservice_api-1.0.0/.github/workflows/ci.yml +215 -0
- netzooe_eservice_api-1.0.0/.github/workflows/configure.yml +24 -0
- netzooe_eservice_api-1.0.0/.github/workflows/schedule-ci.yml +21 -0
- netzooe_eservice_api-1.0.0/.github/workflows/security.yml +33 -0
- netzooe_eservice_api-1.0.0/.gitignore +33 -0
- netzooe_eservice_api-1.0.0/.idea/.gitignore +3 -0
- netzooe_eservice_api-1.0.0/.idea/.name +1 -0
- netzooe_eservice_api-1.0.0/.idea/NetzOOE-eService-API.iml +8 -0
- netzooe_eservice_api-1.0.0/.idea/inspectionProfiles/Project_Default.xml +12 -0
- netzooe_eservice_api-1.0.0/.idea/inspectionProfiles/profiles_settings.xml +6 -0
- netzooe_eservice_api-1.0.0/.idea/misc.xml +9 -0
- netzooe_eservice_api-1.0.0/.idea/modules.xml +8 -0
- netzooe_eservice_api-1.0.0/.idea/runConfigurations/tests.xml +17 -0
- netzooe_eservice_api-1.0.0/.idea/vcs.xml +6 -0
- netzooe_eservice_api-1.0.0/.pre-commit-config.yaml +41 -0
- netzooe_eservice_api-1.0.0/.yamllint.yml +31 -0
- netzooe_eservice_api-1.0.0/CHANGELOG.md +12 -0
- netzooe_eservice_api-1.0.0/CONTRIBUTING.md +72 -0
- netzooe_eservice_api-1.0.0/LICENSE +201 -0
- netzooe_eservice_api-1.0.0/PKG-INFO +58 -0
- netzooe_eservice_api-1.0.0/README.md +33 -0
- netzooe_eservice_api-1.0.0/coverage-badge.svg +1 -0
- netzooe_eservice_api-1.0.0/netzooe_eservice_api/__init__.py +1 -0
- netzooe_eservice_api-1.0.0/netzooe_eservice_api/api.py +231 -0
- netzooe_eservice_api-1.0.0/netzooe_eservice_api/constants.py +25 -0
- netzooe_eservice_api-1.0.0/netzooe_eservice_api/error.py +33 -0
- netzooe_eservice_api-1.0.0/netzooe_eservice_api/py.typed +0 -0
- netzooe_eservice_api-1.0.0/netzooe_eservice_api/version.py +24 -0
- netzooe_eservice_api-1.0.0/netzooe_eservice_api.egg-info/PKG-INFO +58 -0
- netzooe_eservice_api-1.0.0/netzooe_eservice_api.egg-info/SOURCES.txt +44 -0
- netzooe_eservice_api-1.0.0/netzooe_eservice_api.egg-info/dependency_links.txt +1 -0
- netzooe_eservice_api-1.0.0/netzooe_eservice_api.egg-info/requires.txt +1 -0
- netzooe_eservice_api-1.0.0/netzooe_eservice_api.egg-info/top_level.txt +1 -0
- netzooe_eservice_api-1.0.0/pyproject.toml +163 -0
- netzooe_eservice_api-1.0.0/scripts/lint.sh +11 -0
- netzooe_eservice_api-1.0.0/scripts/setup.sh +8 -0
- netzooe_eservice_api-1.0.0/setup.cfg +4 -0
- netzooe_eservice_api-1.0.0/tests/__init__.py +0 -0
- netzooe_eservice_api-1.0.0/tests/conftest.py +0 -0
- netzooe_eservice_api-1.0.0/tests/test_api.py +428 -0
- netzooe_eservice_api-1.0.0/uv.lock +1536 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* text=auto eol=lf
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
name: Set up project
|
|
2
|
+
inputs:
|
|
3
|
+
python-version:
|
|
4
|
+
description: Python version
|
|
5
|
+
|
|
6
|
+
runs:
|
|
7
|
+
using: composite
|
|
8
|
+
steps:
|
|
9
|
+
- name: Set up Python
|
|
10
|
+
uses: actions/setup-python@v5
|
|
11
|
+
with:
|
|
12
|
+
python-version: ${{ inputs.python-version }}
|
|
13
|
+
- name: Install uv
|
|
14
|
+
uses: astral-sh/setup-uv@v7
|
|
15
|
+
- name: Install the project
|
|
16
|
+
run: uv sync --all-extras --dev
|
|
17
|
+
shell: bash
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
permissions:
|
|
4
|
+
contents: read
|
|
5
|
+
pull-requests: write
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
inputs:
|
|
10
|
+
build-python-package:
|
|
11
|
+
description: Build python package
|
|
12
|
+
type: boolean
|
|
13
|
+
pull_request:
|
|
14
|
+
push:
|
|
15
|
+
branches:
|
|
16
|
+
- main
|
|
17
|
+
- develop
|
|
18
|
+
tags:
|
|
19
|
+
- v*
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
configure:
|
|
23
|
+
name: Configure
|
|
24
|
+
uses: ./.github/workflows/configure.yml
|
|
25
|
+
|
|
26
|
+
code-analysis:
|
|
27
|
+
name: Code analysis using Python ${{ matrix.python-version }}
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
needs: configure
|
|
30
|
+
strategy:
|
|
31
|
+
fail-fast: False
|
|
32
|
+
matrix:
|
|
33
|
+
python-version: ${{ fromJson(needs.configure.outputs.environments).python-version }}
|
|
34
|
+
steps:
|
|
35
|
+
- name: Check out repository
|
|
36
|
+
uses: actions/checkout@v6
|
|
37
|
+
- name: Set up project
|
|
38
|
+
uses: ./.github/actions/setup-project
|
|
39
|
+
with:
|
|
40
|
+
python-version: ${{ matrix.python-version }}
|
|
41
|
+
- name: Lint python files with black
|
|
42
|
+
run: uv run black --diff --check $(git ls-files '*.py')
|
|
43
|
+
- name: Lint python files with mypy
|
|
44
|
+
run: uv run mypy $(git ls-files '*.py')
|
|
45
|
+
- name: Lint python files with ruff
|
|
46
|
+
run: uv run ruff check $(git ls-files '*.py')
|
|
47
|
+
- name: Lint YAML files
|
|
48
|
+
run: uv run yamllint $(git ls-files '*.yml' '*.yaml')
|
|
49
|
+
- name: Lint Markdown files
|
|
50
|
+
run: uv run rumdl check $(git ls-files '*.md')
|
|
51
|
+
|
|
52
|
+
security:
|
|
53
|
+
name: Security
|
|
54
|
+
uses: ./.github/workflows/security.yml
|
|
55
|
+
needs: configure
|
|
56
|
+
with:
|
|
57
|
+
environments: ${{ needs.configure.outputs.environments }}
|
|
58
|
+
|
|
59
|
+
tests:
|
|
60
|
+
name: Tests using Python ${{ matrix.python-version }}
|
|
61
|
+
runs-on: ubuntu-latest
|
|
62
|
+
needs: configure
|
|
63
|
+
strategy:
|
|
64
|
+
fail-fast: False
|
|
65
|
+
matrix:
|
|
66
|
+
python-version: ${{ fromJson(needs.configure.outputs.environments).python-version }}
|
|
67
|
+
steps:
|
|
68
|
+
- name: Check out repository
|
|
69
|
+
uses: actions/checkout@v6
|
|
70
|
+
- name: Set up project
|
|
71
|
+
uses: ./.github/actions/setup-project
|
|
72
|
+
with:
|
|
73
|
+
python-version: ${{ matrix.python-version }}
|
|
74
|
+
- name: Run tests
|
|
75
|
+
run: uv run pytest -n auto
|
|
76
|
+
- name: Upload coverage
|
|
77
|
+
uses: actions/upload-artifact@v6
|
|
78
|
+
with:
|
|
79
|
+
name: coverage-xml-${{ matrix.python-version }}
|
|
80
|
+
path: reports/coverage.xml
|
|
81
|
+
if-no-files-found: error
|
|
82
|
+
overwrite: True
|
|
83
|
+
|
|
84
|
+
coverage:
|
|
85
|
+
name: Generate coverage badge
|
|
86
|
+
runs-on: ubuntu-latest
|
|
87
|
+
if: github.ref_type != 'tag'
|
|
88
|
+
needs:
|
|
89
|
+
- configure
|
|
90
|
+
- tests
|
|
91
|
+
permissions:
|
|
92
|
+
contents: write
|
|
93
|
+
steps:
|
|
94
|
+
- name: Check out repository
|
|
95
|
+
uses: actions/checkout@v6
|
|
96
|
+
- name: Set up project
|
|
97
|
+
uses: ./.github/actions/setup-project
|
|
98
|
+
with:
|
|
99
|
+
python-version: ${{ fromJson(needs.configure.outputs.environments).python-version[0] }}
|
|
100
|
+
- name: Download coverage
|
|
101
|
+
uses: actions/download-artifact@v7
|
|
102
|
+
with:
|
|
103
|
+
name: coverage-xml-${{ fromJson(needs.configure.outputs.environments).python-version[0] }}
|
|
104
|
+
path: reports
|
|
105
|
+
- name: Create coverage badge
|
|
106
|
+
run: uv run genbadge coverage --input-file reports/coverage.xml
|
|
107
|
+
- name: Verify coverage badge changed
|
|
108
|
+
uses: tj-actions/verify-changed-files@v20
|
|
109
|
+
id: changed-files
|
|
110
|
+
with:
|
|
111
|
+
files: coverage-badge.svg
|
|
112
|
+
- name: Commit coverage badge
|
|
113
|
+
if: steps.changed-files.outputs.files_changed == 'true'
|
|
114
|
+
run: |
|
|
115
|
+
git config --local user.email "github-actions[bot]@users.noreply.github.com"
|
|
116
|
+
git config --local user.name "github-actions[bot]"
|
|
117
|
+
git add coverage-badge.svg
|
|
118
|
+
git commit -m "Updated coverage-badge.svg"
|
|
119
|
+
- name: Push changes
|
|
120
|
+
if: steps.changed-files.outputs.files_changed == 'true'
|
|
121
|
+
uses: ad-m/github-push-action@master
|
|
122
|
+
with:
|
|
123
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
124
|
+
branch: ${{ github.ref }}
|
|
125
|
+
|
|
126
|
+
build-python-package:
|
|
127
|
+
name: Build python package
|
|
128
|
+
runs-on: ubuntu-latest
|
|
129
|
+
if: |
|
|
130
|
+
github.ref_type == 'tag'
|
|
131
|
+
|| (
|
|
132
|
+
github.ref_type == 'branch'
|
|
133
|
+
&& inputs.build-python-package
|
|
134
|
+
)
|
|
135
|
+
&& !endsWith(github.ref_name, '/merge')
|
|
136
|
+
needs:
|
|
137
|
+
- configure
|
|
138
|
+
- code-analysis
|
|
139
|
+
- security
|
|
140
|
+
- tests
|
|
141
|
+
steps:
|
|
142
|
+
- name: Check out repository
|
|
143
|
+
uses: actions/checkout@v6
|
|
144
|
+
- name: Set up project
|
|
145
|
+
uses: ./.github/actions/setup-project
|
|
146
|
+
with:
|
|
147
|
+
python-version: ${{ fromJson(needs.configure.outputs.environments).python-version[0] }}
|
|
148
|
+
- name: Build package
|
|
149
|
+
run: uv run python -m build
|
|
150
|
+
- name: Upload package files
|
|
151
|
+
uses: actions/upload-artifact@v6
|
|
152
|
+
with:
|
|
153
|
+
name: python-package
|
|
154
|
+
path: dist
|
|
155
|
+
if-no-files-found: error
|
|
156
|
+
|
|
157
|
+
release:
|
|
158
|
+
name: Release on GitHub
|
|
159
|
+
runs-on: ubuntu-latest
|
|
160
|
+
if: github.ref_type == 'tag'
|
|
161
|
+
needs:
|
|
162
|
+
- configure
|
|
163
|
+
- build-python-package
|
|
164
|
+
permissions:
|
|
165
|
+
contents: write
|
|
166
|
+
steps:
|
|
167
|
+
- name: Check out repository
|
|
168
|
+
uses: actions/checkout@v6
|
|
169
|
+
- name: Set up project
|
|
170
|
+
uses: ./.github/actions/setup-project
|
|
171
|
+
with:
|
|
172
|
+
python-version: ${{ fromJson(needs.configure.outputs.environments).python-version[0] }}
|
|
173
|
+
- name: Download files
|
|
174
|
+
uses: actions/download-artifact@v7
|
|
175
|
+
with:
|
|
176
|
+
name: python-package
|
|
177
|
+
path: dist
|
|
178
|
+
- name: Check if prerelease
|
|
179
|
+
id: check_prerelease
|
|
180
|
+
run: |
|
|
181
|
+
TAG_NAME="${GITHUB_REF#refs/tags/}"
|
|
182
|
+
echo "Tag: $TAG_NAME"
|
|
183
|
+
|
|
184
|
+
if [[ "$TAG_NAME" =~ ^v[0-9]+\.[0-9]+\.[0-9]+b[0-9]+$ ]]; then
|
|
185
|
+
echo "🟡 Pre-release detected"
|
|
186
|
+
echo "prerelease=true" >> "$GITHUB_OUTPUT"
|
|
187
|
+
else
|
|
188
|
+
echo "🟢 Regular release"
|
|
189
|
+
echo "prerelease=false" >> "$GITHUB_OUTPUT"
|
|
190
|
+
fi
|
|
191
|
+
- name: Release on GitHub
|
|
192
|
+
uses: softprops/action-gh-release@v2
|
|
193
|
+
with:
|
|
194
|
+
files: |
|
|
195
|
+
dist/*.tar.gz
|
|
196
|
+
dist/*.whl
|
|
197
|
+
prerelease: ${{ steps.check_prerelease.outputs.prerelease }}
|
|
198
|
+
|
|
199
|
+
publish-on-pypi:
|
|
200
|
+
name: Publish
|
|
201
|
+
runs-on: ubuntu-latest
|
|
202
|
+
if: github.ref_type == 'tag'
|
|
203
|
+
needs:
|
|
204
|
+
- release
|
|
205
|
+
steps:
|
|
206
|
+
- name: Download files
|
|
207
|
+
uses: actions/download-artifact@v7
|
|
208
|
+
with:
|
|
209
|
+
name: python-package
|
|
210
|
+
path: dist
|
|
211
|
+
- name: Publish on PyPi
|
|
212
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
213
|
+
with:
|
|
214
|
+
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
215
|
+
packages-dir: dist
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
name: Configure
|
|
2
|
+
|
|
3
|
+
permissions:
|
|
4
|
+
contents: read
|
|
5
|
+
pull-requests: write
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
workflow_call:
|
|
9
|
+
outputs:
|
|
10
|
+
environments:
|
|
11
|
+
value: ${{ jobs.configure.outputs.environments }}
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
configure:
|
|
15
|
+
name: Configure
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
outputs:
|
|
18
|
+
environments: ${{ steps.set-environments.outputs.environments }}
|
|
19
|
+
steps:
|
|
20
|
+
- name: Check out repository
|
|
21
|
+
uses: actions/checkout@v6
|
|
22
|
+
- name: Set environments
|
|
23
|
+
id: set-environments
|
|
24
|
+
run: echo "environments=$(jq -c . < ./.github/environments.json)" >> $GITHUB_OUTPUT
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
name: Schedule CI
|
|
2
|
+
|
|
3
|
+
permissions:
|
|
4
|
+
contents: read
|
|
5
|
+
pull-requests: write
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
schedule:
|
|
9
|
+
- cron: 30 5 * * *
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
configure:
|
|
13
|
+
name: Configure
|
|
14
|
+
uses: ./.github/workflows/configure.yml
|
|
15
|
+
|
|
16
|
+
security:
|
|
17
|
+
name: Security
|
|
18
|
+
uses: ./.github/workflows/security.yml
|
|
19
|
+
needs: configure
|
|
20
|
+
with:
|
|
21
|
+
environments: ${{ needs.configure.outputs.environments }}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
name: Security
|
|
2
|
+
|
|
3
|
+
permissions:
|
|
4
|
+
contents: read
|
|
5
|
+
pull-requests: write
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
workflow_call:
|
|
9
|
+
inputs:
|
|
10
|
+
environments:
|
|
11
|
+
required: True
|
|
12
|
+
type: string
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
security:
|
|
16
|
+
name: Audit packages using Python ${{ matrix.python-version }}
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
continue-on-error: True
|
|
19
|
+
strategy:
|
|
20
|
+
fail-fast: False
|
|
21
|
+
matrix:
|
|
22
|
+
python-version: ${{ fromJson(inputs.environments).python-version }}
|
|
23
|
+
steps:
|
|
24
|
+
- name: Check out repository
|
|
25
|
+
uses: actions/checkout@v6
|
|
26
|
+
- name: Set up project
|
|
27
|
+
uses: ./.github/actions/setup-project
|
|
28
|
+
with:
|
|
29
|
+
python-version: ${{ matrix.python-version }}
|
|
30
|
+
- name: Create requirements.txt
|
|
31
|
+
run: uv export --quiet --locked --all-extras --dev --no-hashes --no-editable --output-file=requirements.txt
|
|
32
|
+
- name: Audit python packages
|
|
33
|
+
run: uv run pip-audit --requirement=requirements.txt
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# OS generated files
|
|
2
|
+
.DS_Store
|
|
3
|
+
._*
|
|
4
|
+
*.swp
|
|
5
|
+
|
|
6
|
+
# cache
|
|
7
|
+
*.pyc
|
|
8
|
+
|
|
9
|
+
# virtualenv
|
|
10
|
+
.venv
|
|
11
|
+
|
|
12
|
+
# GitHub Action
|
|
13
|
+
output/
|
|
14
|
+
|
|
15
|
+
# checks
|
|
16
|
+
.ruff_cache
|
|
17
|
+
.mypy_cache
|
|
18
|
+
.pytest_cache
|
|
19
|
+
.rumdl_cache
|
|
20
|
+
|
|
21
|
+
# reports
|
|
22
|
+
reports/
|
|
23
|
+
.coverage
|
|
24
|
+
|
|
25
|
+
# build package
|
|
26
|
+
*.egg
|
|
27
|
+
*.egg-info
|
|
28
|
+
build/
|
|
29
|
+
dist/
|
|
30
|
+
netzooe_eservice_api/version.py
|
|
31
|
+
|
|
32
|
+
# others
|
|
33
|
+
netzooe_eservice_api/test.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
NetzOOE-eService-API
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<module type="PYTHON_MODULE" version="4">
|
|
3
|
+
<component name="NewModuleRootManager">
|
|
4
|
+
<content url="file://$MODULE_DIR$" />
|
|
5
|
+
<orderEntry type="jdk" jdkName="uv (netzooe_eservice_api)" jdkType="Python SDK" />
|
|
6
|
+
<orderEntry type="sourceFolder" forTests="false" />
|
|
7
|
+
</component>
|
|
8
|
+
</module>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<component name="InspectionProjectProfileManager">
|
|
2
|
+
<profile version="1.0">
|
|
3
|
+
<option name="myName" value="Project Default" />
|
|
4
|
+
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
|
5
|
+
<option name="ignoredIdentifiers">
|
|
6
|
+
<list>
|
|
7
|
+
<option value="str.*" />
|
|
8
|
+
</list>
|
|
9
|
+
</option>
|
|
10
|
+
</inspection_tool>
|
|
11
|
+
</profile>
|
|
12
|
+
</component>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="Black">
|
|
4
|
+
<option name="enabledOnReformat" value="true" />
|
|
5
|
+
<option name="enabledOnSave" value="true" />
|
|
6
|
+
<option name="sdkName" value="uv (netzooe_eservice_api)" />
|
|
7
|
+
</component>
|
|
8
|
+
<component name="ProjectRootManager" version="2" project-jdk-name="uv (netzooe_eservice_api)" project-jdk-type="Python SDK" />
|
|
9
|
+
</project>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="ProjectModuleManager">
|
|
4
|
+
<modules>
|
|
5
|
+
<module fileurl="file://$PROJECT_DIR$/.idea/NetzOOE-eService-API.iml" filepath="$PROJECT_DIR$/.idea/NetzOOE-eService-API.iml" />
|
|
6
|
+
</modules>
|
|
7
|
+
</component>
|
|
8
|
+
</project>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<component name="ProjectRunConfigurationManager">
|
|
2
|
+
<configuration default="false" name="tests" type="tests" factoryName="Autodetect">
|
|
3
|
+
<module name="NetzOOE-eService-API" />
|
|
4
|
+
<option name="ENV_FILES" value="" />
|
|
5
|
+
<option name="INTERPRETER_OPTIONS" value="" />
|
|
6
|
+
<option name="PARENT_ENVS" value="true" />
|
|
7
|
+
<option name="SDK_HOME" value="" />
|
|
8
|
+
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/tests" />
|
|
9
|
+
<option name="IS_MODULE_SDK" value="true" />
|
|
10
|
+
<option name="ADD_CONTENT_ROOTS" value="true" />
|
|
11
|
+
<option name="ADD_SOURCE_ROOTS" value="true" />
|
|
12
|
+
<option name="_new_additionalArguments" value="""" />
|
|
13
|
+
<option name="_new_target" value=""$PROJECT_DIR$/tests"" />
|
|
14
|
+
<option name="_new_targetType" value=""PATH"" />
|
|
15
|
+
<method v="2" />
|
|
16
|
+
</configuration>
|
|
17
|
+
</component>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
3
|
+
rev: v6.0.0
|
|
4
|
+
hooks:
|
|
5
|
+
- id: check-shebang-scripts-are-executable
|
|
6
|
+
- id: check-symlinks
|
|
7
|
+
- id: check-yaml
|
|
8
|
+
- id: check-toml
|
|
9
|
+
- id: detect-private-key
|
|
10
|
+
- id: end-of-file-fixer
|
|
11
|
+
- id: trailing-whitespace
|
|
12
|
+
- repo: local
|
|
13
|
+
hooks:
|
|
14
|
+
- id: black
|
|
15
|
+
name: black
|
|
16
|
+
entry: uv run black --check
|
|
17
|
+
language: system
|
|
18
|
+
types:
|
|
19
|
+
- python
|
|
20
|
+
- id: ruff
|
|
21
|
+
name: ruff
|
|
22
|
+
entry: uv run ruff check
|
|
23
|
+
language: system
|
|
24
|
+
types:
|
|
25
|
+
- python
|
|
26
|
+
- id: mypy
|
|
27
|
+
name: mypy
|
|
28
|
+
entry: uv run mypy
|
|
29
|
+
language: system
|
|
30
|
+
types:
|
|
31
|
+
- python
|
|
32
|
+
- id: rumdl
|
|
33
|
+
name: rumdl
|
|
34
|
+
entry: uv run rumdl check
|
|
35
|
+
language: system
|
|
36
|
+
files: \.md$
|
|
37
|
+
- id: yamllint
|
|
38
|
+
name: yamllint
|
|
39
|
+
entry: uv run yamllint
|
|
40
|
+
language: system
|
|
41
|
+
files: \.ya?ml$
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
extends: default
|
|
2
|
+
|
|
3
|
+
ignore-from-file: .gitignore
|
|
4
|
+
|
|
5
|
+
rules:
|
|
6
|
+
document-start: disable
|
|
7
|
+
truthy:
|
|
8
|
+
allowed-values: ['True', 'False', 'yes', 'no', 'on', 'off'] # yamllint disable rule:brackets
|
|
9
|
+
line-length:
|
|
10
|
+
max: 140
|
|
11
|
+
allow-non-breakable-words: True
|
|
12
|
+
allow-non-breakable-inline-mappings: True
|
|
13
|
+
quoted-strings:
|
|
14
|
+
quote-type: single
|
|
15
|
+
required: only-when-needed
|
|
16
|
+
empty-lines:
|
|
17
|
+
max: 1
|
|
18
|
+
max-start: 0
|
|
19
|
+
max-end: 0
|
|
20
|
+
braces:
|
|
21
|
+
forbid: non-empty
|
|
22
|
+
min-spaces-inside: 0
|
|
23
|
+
max-spaces-inside: 0
|
|
24
|
+
min-spaces-inside-empty: -1
|
|
25
|
+
max-spaces-inside-empty: -1
|
|
26
|
+
brackets:
|
|
27
|
+
forbid: non-empty
|
|
28
|
+
min-spaces-inside: 0
|
|
29
|
+
max-spaces-inside: 0
|
|
30
|
+
min-spaces-inside-empty: -1
|
|
31
|
+
max-spaces-inside-empty: -1
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [1.0.0] - 2026-02-14
|
|
11
|
+
|
|
12
|
+
Initial release
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
<!--start-contributing-->
|
|
4
|
+
|
|
5
|
+
## Guidelines
|
|
6
|
+
|
|
7
|
+
Contributing to this project should be as easy and transparent as possible, whether it's:
|
|
8
|
+
|
|
9
|
+
- Reporting a bug
|
|
10
|
+
- Discussing the current state of the code
|
|
11
|
+
- Submitting a fix
|
|
12
|
+
- Proposing new features
|
|
13
|
+
|
|
14
|
+
## Getting started
|
|
15
|
+
|
|
16
|
+
Set up the project with `./scripts/setup.sh`.
|
|
17
|
+
|
|
18
|
+
## GitHub is used for everything
|
|
19
|
+
|
|
20
|
+
GitHub is used to host code, to track issues and feature requests, as well as accept pull requests.
|
|
21
|
+
|
|
22
|
+
Pull requests are the best way to propose changes to the codebase.
|
|
23
|
+
|
|
24
|
+
1. Fork the repo and create your branch from `main`
|
|
25
|
+
2. If you've changed something, update the documentation.
|
|
26
|
+
3. Make sure your code lints with `./scripts/lint.sh`.
|
|
27
|
+
4. Test you contribution.
|
|
28
|
+
5. Issue that pull request!
|
|
29
|
+
|
|
30
|
+
## Report bugs using Github's [issues](https://github.com/superbox-dev/netzooe_eservice_api/issues)
|
|
31
|
+
|
|
32
|
+
GitHub issues are used to track public bugs.
|
|
33
|
+
Report a bug by [opening a new issue](https://github.com/superbox-dev/netzooe_eservice_api/issues/new/choose);
|
|
34
|
+
it's that easy!
|
|
35
|
+
|
|
36
|
+
## Write bug reports with detail, background, and sample code
|
|
37
|
+
|
|
38
|
+
**Great Bug Reports** tend to have:
|
|
39
|
+
|
|
40
|
+
- A quick summary and/or background
|
|
41
|
+
- Steps to reproduce
|
|
42
|
+
- Be specific!
|
|
43
|
+
- Give sample code if you can
|
|
44
|
+
- What you expected would happen
|
|
45
|
+
- What actually happens
|
|
46
|
+
- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)
|
|
47
|
+
|
|
48
|
+
People *love* thorough bug reports. I'm not even kidding.
|
|
49
|
+
|
|
50
|
+
## Use a Consistent Coding Style
|
|
51
|
+
|
|
52
|
+
Use [black](https://github.com/ambv/black) to make sure the code follows the style.
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
uv run black .
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Test your code modification
|
|
59
|
+
|
|
60
|
+
To test the code we use [pytest](https://docs.pytest.org):
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
uv run pytest -n auto
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## License
|
|
67
|
+
|
|
68
|
+
By contributing, you agree that your contributions will be licensed under its [Apache License][license].
|
|
69
|
+
|
|
70
|
+
[license]: https://github.com/superbox-dev/keba_keenergy/blob/main/LICENSE
|
|
71
|
+
|
|
72
|
+
<!--end-contributing-->
|