oe-python-template 0.3.9__tar.gz → 0.4.1__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.
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/.copier-answers.yml +1 -1
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/.pre-commit-config.yaml +1 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/.secrets.baseline +1 -1
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/CHANGELOG.md +15 -1
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/PKG-INFO +38 -17
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/README.md +37 -16
- oe_python_template-0.4.1/RELEASE_NOTES.md +8 -0
- oe_python_template-0.4.1/VERSION +1 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/_readme_main.md +37 -16
- oe_python_template-0.4.1/docs/source/_static/openapi_v2.json +262 -0
- oe_python_template-0.4.1/docs/source/_static/openapi_v2.yaml +210 -0
- oe_python_template-0.4.1/docs/source/api_v1.rst +5 -0
- oe_python_template-0.4.1/docs/source/api_v2.rst +5 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/docs/source/conf.py +1 -1
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/docs/source/index.rst +2 -1
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/examples/notebook.py +1 -1
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/noxfile.py +12 -4
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/pyproject.toml +3 -2
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/sonar-project.properties +1 -1
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/src/oe_python_template/api.py +74 -5
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/src/oe_python_template/cli.py +26 -3
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/.pre-commit-config.yaml.jinja +1 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/_readme_main.md.jinja +37 -16
- oe_python_template-0.4.1/template/docs/source/api_v1.rst.jinja +5 -0
- oe_python_template-0.4.1/template/docs/source/api_v2.rst.jinja +5 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/docs/source/index.rst.jinja +2 -1
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/examples/notebook.py.jinja +1 -1
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/noxfile.py.jinja +12 -4
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/pyproject.toml.jinja +1 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/src/{{ project_name_snake_case }}/api.py.jinja +79 -5
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/src/{{ project_name_snake_case }}/cli.py.jinja +26 -3
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/tests/api_test.py.jinja +52 -20
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/tests/cli_test.py.jinja +15 -3
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/tests/api_test.py +53 -19
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/tests/cli_test.py +12 -1
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/uv.lock +12 -1
- oe_python_template-0.3.9/RELEASE_NOTES.md +0 -8
- oe_python_template-0.3.9/VERSION +0 -1
- oe_python_template-0.3.9/docs/source/api.rst +0 -5
- oe_python_template-0.3.9/template/docs/source/api.rst.jinja +0 -5
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/.act-env-public +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/.devcontainer/Dockerfile +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/.devcontainer/devcontainer.json +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/.devcontainer/onCreateCommand +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/.devcontainer/postAttachCommand +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/.devcontainer/postCreateCommand +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/.env.example +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/.github/workflows/docker-image-build-publish.yml +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/.github/workflows/package-build-publish-release.yml +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/.github/workflows/test-and-report.yml +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/.gitignore +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/.python-version +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/.readthedocs.yml +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/.vscode/extensions.json +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/.vscode/settings.json +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/CODEOWNERS +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/CONTRIBUTING.md +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/Dockerfile +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/LICENSE +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/SERVICE_CONNECTIONS.md +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/_readme_footer.md +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/_readme_header.md +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/bin/git-cliff +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/bump +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/codecov.yml +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/compose.yaml +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/copier.yml +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/docs/Makefile +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/docs/make.bat +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/docs/source/_static/.keep +0 -0
- /oe_python_template-0.3.9/docs/source/_static/openapi.json → /oe_python_template-0.4.1/docs/source/_static/openapi_v1.json +0 -0
- /oe_python_template-0.3.9/docs/source/_static/openapi.yaml → /oe_python_template-0.4.1/docs/source/_static/openapi_v1.yaml +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/docs/source/contributing.rst +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/docs/source/latexmkrc +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/docs/source/main.rst +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/docs/source/reference.rst +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/docs/source/release-notes.rst +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/examples/__init__.py +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/examples/jupyter.ipynb +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/examples/notebook.ipynb +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/examples/script.py +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/examples/streamlit.py +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/git-cliff-2.7.0/CHANGELOG.md +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/git-cliff-2.7.0/LICENSE-APACHE +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/git-cliff-2.7.0/LICENSE-MIT +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/git-cliff-2.7.0/README.md +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/git-cliff-2.7.0/completions/_git-cliff +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/git-cliff-2.7.0/completions/_git-cliff.ps1 +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/git-cliff-2.7.0/completions/git-cliff.bash +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/git-cliff-2.7.0/completions/git-cliff.elv +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/git-cliff-2.7.0/completions/git-cliff.fish +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/git-cliff-2.7.0/git-cliff-completions +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/git-cliff-2.7.0/git-cliff-mangen +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/git-cliff-2.7.0/man/git-cliff.1 +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/git-cliff-2.7.0-x86_64-unknown-linux-gnu.tar.gz +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/github-action-run +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/latexmkrc +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/logo.png +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/renovate.json +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/reports/mypy.xml +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/src/oe_python_template/__init__.py +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/src/oe_python_template/constants.py +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/src/oe_python_template/service.py +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/.act-env-public.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/.devcontainer/Dockerfile.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/.devcontainer/devcontainer.json.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/.devcontainer/onCreateCommand.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/.devcontainer/postAttachCommand.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/.devcontainer/postCreateCommand.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/.env.example.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/.github/workflows/docker-image-build-publish.yml.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/.github/workflows/package-build-publish-release.yml.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/.github/workflows/test-and-report.yml.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/.gitignore.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/.python-version +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/.readthedocs.yml.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/.vscode/extensions.json +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/.vscode/settings.json.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/CHANGELOG.md +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/CODEOWNERS.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/CONTRIBUTING.md.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/Dockerfile.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/LICENSE.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/SERVICE_CONNECTIONS.md.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/VERSION +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/_readme_footer.md.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/_readme_header.md.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/bump.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/codecov.yml.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/compose.yaml.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/docs/Makefile.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/docs/make.bat.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/docs/source/_static/.keep +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/docs/source/conf.py.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/docs/source/contributing.rst.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/docs/source/latexmkrc.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/docs/source/main.rst.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/docs/source/reference.rst.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/docs/source/release-notes.rst.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/examples/__init__.py.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/examples/notebook.ipynb.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/examples/script.py.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/examples/streamlit.py.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/github-action-run.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/latexmkrc.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/logo.png +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/sonar-project.properties.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/src/{{ project_name_snake_case }}/__init__.py.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/src/{{ project_name_snake_case }}/constants.py.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/src/{{ project_name_snake_case }}/service.py.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/tests/__init__.py.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/tests/fixtures/.keep +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/template/{{_copier_conf.answers_file}}.jinja +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/tests/__init__.py +0 -0
- {oe_python_template-0.3.9 → oe_python_template-0.4.1}/tests/fixtures/.keep +0 -0
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
[🧠 OE Python Template](https://oe-python-template.readthedocs.io/en/latest/)
|
|
2
2
|
|
|
3
|
-
## [0.
|
|
3
|
+
## [0.4.1](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/compare/v0.4.0..0.4.1) - 2025-03-13
|
|
4
|
+
|
|
5
|
+
### 🐛 Bug Fixes
|
|
6
|
+
|
|
7
|
+
- *(tests)* Test_cli_serve - ([ac1a02c](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/ac1a02c04f39c664d71ffa127af72635b5eadfa5))
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## [0.4.0](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/compare/v0.3.9..v0.4.0) - 2025-03-13
|
|
11
|
+
|
|
12
|
+
### ⛰️ Features
|
|
13
|
+
|
|
14
|
+
- Versioned API - ([dccaa20](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/dccaa202225102f2065f06a7079a2e7490474ca3))
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [0.3.9](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/compare/v0.3.8..v0.3.9) - 2025-03-12
|
|
4
18
|
|
|
5
19
|
### ⛰️ Features
|
|
6
20
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: oe-python-template
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.1
|
|
4
4
|
Summary: 🧠 Copier template to scaffold Python projects compliant with best practices and modern tooling.
|
|
5
5
|
Project-URL: Homepage, https://oe-python-template.readthedocs.io/en/latest/
|
|
6
6
|
Project-URL: Documentation, https://oe-python-template.readthedocs.io/en/latest/
|
|
@@ -101,9 +101,9 @@ Use Cases:
|
|
|
101
101
|
2) Consistent update of already scaffolded projects to benefit from new and improved features.
|
|
102
102
|
3) Dummy CLI application and service demonstrating example usage of the generated directory structure and build pipeline
|
|
103
103
|
|
|
104
|
-
## Scaffolding
|
|
104
|
+
## Scaffolding
|
|
105
105
|
|
|
106
|
-
Step 1
|
|
106
|
+
**Step 1**: Install uv package manager and copier
|
|
107
107
|
```shell
|
|
108
108
|
if [[ "$OSTYPE" == "darwin"* ]]; then # Install dependencies for macOS X
|
|
109
109
|
if ! command -v brew &> /dev/null; then ## Install Homebrew if not present
|
|
@@ -119,31 +119,32 @@ fi
|
|
|
119
119
|
uv tool install copier # Install copier as global tool
|
|
120
120
|
```
|
|
121
121
|
|
|
122
|
-
Step 2
|
|
122
|
+
**Step 2**: Now create an empty repository on GitHubm, clone to your local machine, and change into it's directory.
|
|
123
123
|
|
|
124
|
-
Step 3
|
|
124
|
+
**Step 3**: Scaffold the project
|
|
125
125
|
```shell
|
|
126
126
|
copier copy gh:helmut-hoffer-von-ankershoffen/oe-python-template .
|
|
127
127
|
```
|
|
128
|
-
Step 4
|
|
128
|
+
**Step 4**: Setup the local environment
|
|
129
129
|
|
|
130
130
|
```shell
|
|
131
131
|
uv run nox -s setup_dev
|
|
132
132
|
```
|
|
133
133
|
|
|
134
|
-
Step 5
|
|
134
|
+
**Step 5**: Perform initial commit and push
|
|
135
135
|
```shell
|
|
136
136
|
git add .
|
|
137
137
|
git commit -m "feat: Initial commit"
|
|
138
|
+
git push
|
|
138
139
|
```
|
|
139
140
|
|
|
140
141
|
Visit your GitHub repository and check the Actions tab. The CI workflow should fail at the SonarQube step,
|
|
141
142
|
as this external service is not yet configured for our new repository.
|
|
142
143
|
|
|
143
|
-
Step 6
|
|
144
|
-
such as Cloudcov, SonarQube Cloud, Read The Docs, Docker.io, GHCR.io and Streamlit Community Cloud.
|
|
144
|
+
**Step 6**: Follow the [SERVICE_INSTRUCTIONS.md](instructions) to wire up
|
|
145
|
+
external services such as Cloudcov, SonarQube Cloud, Read The Docs, Docker.io, GHCR.io and Streamlit Community Cloud.
|
|
145
146
|
|
|
146
|
-
Step 7
|
|
147
|
+
**Step 7**: Release the first versions
|
|
147
148
|
```shell
|
|
148
149
|
./bump
|
|
149
150
|
```
|
|
@@ -166,24 +167,38 @@ If you don't have uv installed follow [these instructions](https://docs.astral.s
|
|
|
166
167
|
pip install oe-python-template # add dependency to your project
|
|
167
168
|
```
|
|
168
169
|
|
|
169
|
-
Executing the command line interface (CLI) is just as easy:
|
|
170
|
+
Executing the command line interface (CLI) in an isolated Python environment is just as easy:
|
|
170
171
|
|
|
171
172
|
```shell
|
|
172
|
-
uvx oe-python-template
|
|
173
|
+
uvx oe-python-template hello-world # prints "Hello, world! [..]"
|
|
174
|
+
uvx oe-python-template serve # serves webservice API
|
|
173
175
|
```
|
|
174
176
|
|
|
177
|
+
When serving the API, go to [http://127.0.0.1:8000/api/v1/hello-world](http://127.0.0.1:8000/api/v1/hello-world) to see the result.
|
|
178
|
+
|
|
179
|
+
The API is versioned and provides interactive documentation at [http://127.0.0.1:8000/api/v1/docs](http://127.0.0.1:8000/api/v1/docs) resp. [http://127.0.0.1:8000/api/v2/docs](http://127.0.0.1:8000/api/v2/docs)
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
```shell
|
|
183
|
+
|
|
184
|
+
When running the webservice API, goto http://127.0.0.1:8000/api/v1/docs
|
|
185
|
+
|
|
175
186
|
The CLI provides extensive help:
|
|
176
187
|
|
|
177
188
|
```shell
|
|
178
189
|
uvx oe-python-template --help # all CLI commands
|
|
179
190
|
uvx oe-python-template hello-world --help # help for specific command
|
|
191
|
+
uvx oe-python-template echo --help
|
|
192
|
+
uvx oe-python-template openapi --help
|
|
193
|
+
uvx oe-python-template serve --help
|
|
180
194
|
```
|
|
181
195
|
|
|
182
196
|
|
|
183
|
-
##
|
|
197
|
+
## Operational Excellence
|
|
198
|
+
|
|
199
|
+
This project is designed with operational excellence in mind, using modern Python tooling and practices. It includes:
|
|
184
200
|
|
|
185
|
-
*
|
|
186
|
-
* Various Examples:
|
|
201
|
+
* Various examples demonstrating usage:
|
|
187
202
|
- [Simple Python script](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/examples/script.py)
|
|
188
203
|
- [Streamlit web application](https://oe-python-template.streamlit.app/) deployed on [Streamlit Community Cloud](https://streamlit.io/cloud)
|
|
189
204
|
- [Jupyter](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/examples/notebook.ipynb) and [Marimo](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/examples/notebook.py) notebook
|
|
@@ -199,6 +214,9 @@ uvx oe-python-template hello-world --help # help for specific command
|
|
|
199
214
|
|
|
200
215
|
## Usage Examples
|
|
201
216
|
|
|
217
|
+
The following examples run from source. Clone this repository first using
|
|
218
|
+
`git clone git@github.com:helmut-hoffer-von-ankershoffen/oe-python-template.git`.
|
|
219
|
+
|
|
202
220
|
### Minimal Python Script:
|
|
203
221
|
|
|
204
222
|
```python
|
|
@@ -240,7 +258,7 @@ uv run streamlit run examples/streamlit.py # Serve on localhost:8501, o
|
|
|
240
258
|
... or run within VSCode
|
|
241
259
|
|
|
242
260
|
```shell
|
|
243
|
-
uv sync --all-extras # Install
|
|
261
|
+
uv sync --all-extras # Install dependencies required for examples such as Juypyter kernel, see pyproject.toml
|
|
244
262
|
```
|
|
245
263
|
Install the [Jupyter extension for VSCode](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter)
|
|
246
264
|
|
|
@@ -337,7 +355,10 @@ docker compose run oe-python-template echo "Lorem" --json
|
|
|
337
355
|
docker compose run oe-python-template openapi
|
|
338
356
|
docker compose run oe-python-template openapi --output-format=json
|
|
339
357
|
docker compose up
|
|
340
|
-
curl http://127.0.0.1
|
|
358
|
+
curl http://127.0.0.1:8000/api/v1/hello-world
|
|
359
|
+
curl http://127.0.0.1:8000/api/v1/docs
|
|
360
|
+
curl http://127.0.0.1:8000/api/v2/hello-world
|
|
361
|
+
curl http://127.0.0.1:8000/api/v2/docs
|
|
341
362
|
```
|
|
342
363
|
|
|
343
364
|
## Extra: Lorem Ipsum
|
|
@@ -40,9 +40,9 @@ Use Cases:
|
|
|
40
40
|
2) Consistent update of already scaffolded projects to benefit from new and improved features.
|
|
41
41
|
3) Dummy CLI application and service demonstrating example usage of the generated directory structure and build pipeline
|
|
42
42
|
|
|
43
|
-
## Scaffolding
|
|
43
|
+
## Scaffolding
|
|
44
44
|
|
|
45
|
-
Step 1
|
|
45
|
+
**Step 1**: Install uv package manager and copier
|
|
46
46
|
```shell
|
|
47
47
|
if [[ "$OSTYPE" == "darwin"* ]]; then # Install dependencies for macOS X
|
|
48
48
|
if ! command -v brew &> /dev/null; then ## Install Homebrew if not present
|
|
@@ -58,31 +58,32 @@ fi
|
|
|
58
58
|
uv tool install copier # Install copier as global tool
|
|
59
59
|
```
|
|
60
60
|
|
|
61
|
-
Step 2
|
|
61
|
+
**Step 2**: Now create an empty repository on GitHubm, clone to your local machine, and change into it's directory.
|
|
62
62
|
|
|
63
|
-
Step 3
|
|
63
|
+
**Step 3**: Scaffold the project
|
|
64
64
|
```shell
|
|
65
65
|
copier copy gh:helmut-hoffer-von-ankershoffen/oe-python-template .
|
|
66
66
|
```
|
|
67
|
-
Step 4
|
|
67
|
+
**Step 4**: Setup the local environment
|
|
68
68
|
|
|
69
69
|
```shell
|
|
70
70
|
uv run nox -s setup_dev
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
-
Step 5
|
|
73
|
+
**Step 5**: Perform initial commit and push
|
|
74
74
|
```shell
|
|
75
75
|
git add .
|
|
76
76
|
git commit -m "feat: Initial commit"
|
|
77
|
+
git push
|
|
77
78
|
```
|
|
78
79
|
|
|
79
80
|
Visit your GitHub repository and check the Actions tab. The CI workflow should fail at the SonarQube step,
|
|
80
81
|
as this external service is not yet configured for our new repository.
|
|
81
82
|
|
|
82
|
-
Step 6
|
|
83
|
-
such as Cloudcov, SonarQube Cloud, Read The Docs, Docker.io, GHCR.io and Streamlit Community Cloud.
|
|
83
|
+
**Step 6**: Follow the [SERVICE_INSTRUCTIONS.md](instructions) to wire up
|
|
84
|
+
external services such as Cloudcov, SonarQube Cloud, Read The Docs, Docker.io, GHCR.io and Streamlit Community Cloud.
|
|
84
85
|
|
|
85
|
-
Step 7
|
|
86
|
+
**Step 7**: Release the first versions
|
|
86
87
|
```shell
|
|
87
88
|
./bump
|
|
88
89
|
```
|
|
@@ -105,24 +106,38 @@ If you don't have uv installed follow [these instructions](https://docs.astral.s
|
|
|
105
106
|
pip install oe-python-template # add dependency to your project
|
|
106
107
|
```
|
|
107
108
|
|
|
108
|
-
Executing the command line interface (CLI) is just as easy:
|
|
109
|
+
Executing the command line interface (CLI) in an isolated Python environment is just as easy:
|
|
109
110
|
|
|
110
111
|
```shell
|
|
111
|
-
uvx oe-python-template
|
|
112
|
+
uvx oe-python-template hello-world # prints "Hello, world! [..]"
|
|
113
|
+
uvx oe-python-template serve # serves webservice API
|
|
112
114
|
```
|
|
113
115
|
|
|
116
|
+
When serving the API, go to [http://127.0.0.1:8000/api/v1/hello-world](http://127.0.0.1:8000/api/v1/hello-world) to see the result.
|
|
117
|
+
|
|
118
|
+
The API is versioned and provides interactive documentation at [http://127.0.0.1:8000/api/v1/docs](http://127.0.0.1:8000/api/v1/docs) resp. [http://127.0.0.1:8000/api/v2/docs](http://127.0.0.1:8000/api/v2/docs)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
```shell
|
|
122
|
+
|
|
123
|
+
When running the webservice API, goto http://127.0.0.1:8000/api/v1/docs
|
|
124
|
+
|
|
114
125
|
The CLI provides extensive help:
|
|
115
126
|
|
|
116
127
|
```shell
|
|
117
128
|
uvx oe-python-template --help # all CLI commands
|
|
118
129
|
uvx oe-python-template hello-world --help # help for specific command
|
|
130
|
+
uvx oe-python-template echo --help
|
|
131
|
+
uvx oe-python-template openapi --help
|
|
132
|
+
uvx oe-python-template serve --help
|
|
119
133
|
```
|
|
120
134
|
|
|
121
135
|
|
|
122
|
-
##
|
|
136
|
+
## Operational Excellence
|
|
137
|
+
|
|
138
|
+
This project is designed with operational excellence in mind, using modern Python tooling and practices. It includes:
|
|
123
139
|
|
|
124
|
-
*
|
|
125
|
-
* Various Examples:
|
|
140
|
+
* Various examples demonstrating usage:
|
|
126
141
|
- [Simple Python script](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/examples/script.py)
|
|
127
142
|
- [Streamlit web application](https://oe-python-template.streamlit.app/) deployed on [Streamlit Community Cloud](https://streamlit.io/cloud)
|
|
128
143
|
- [Jupyter](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/examples/notebook.ipynb) and [Marimo](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/examples/notebook.py) notebook
|
|
@@ -138,6 +153,9 @@ uvx oe-python-template hello-world --help # help for specific command
|
|
|
138
153
|
|
|
139
154
|
## Usage Examples
|
|
140
155
|
|
|
156
|
+
The following examples run from source. Clone this repository first using
|
|
157
|
+
`git clone git@github.com:helmut-hoffer-von-ankershoffen/oe-python-template.git`.
|
|
158
|
+
|
|
141
159
|
### Minimal Python Script:
|
|
142
160
|
|
|
143
161
|
```python
|
|
@@ -179,7 +197,7 @@ uv run streamlit run examples/streamlit.py # Serve on localhost:8501, o
|
|
|
179
197
|
... or run within VSCode
|
|
180
198
|
|
|
181
199
|
```shell
|
|
182
|
-
uv sync --all-extras # Install
|
|
200
|
+
uv sync --all-extras # Install dependencies required for examples such as Juypyter kernel, see pyproject.toml
|
|
183
201
|
```
|
|
184
202
|
Install the [Jupyter extension for VSCode](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter)
|
|
185
203
|
|
|
@@ -276,7 +294,10 @@ docker compose run oe-python-template echo "Lorem" --json
|
|
|
276
294
|
docker compose run oe-python-template openapi
|
|
277
295
|
docker compose run oe-python-template openapi --output-format=json
|
|
278
296
|
docker compose up
|
|
279
|
-
curl http://127.0.0.1
|
|
297
|
+
curl http://127.0.0.1:8000/api/v1/hello-world
|
|
298
|
+
curl http://127.0.0.1:8000/api/v1/docs
|
|
299
|
+
curl http://127.0.0.1:8000/api/v2/hello-world
|
|
300
|
+
curl http://127.0.0.1:8000/api/v2/docs
|
|
280
301
|
```
|
|
281
302
|
|
|
282
303
|
## Extra: Lorem Ipsum
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
## [0.4.1](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/compare/v0.4.0..v0.4.1) - 2025-03-13
|
|
2
|
+
|
|
3
|
+
### 🐛 Bug Fixes
|
|
4
|
+
|
|
5
|
+
- *(tests)* Test_cli_serve - ([ac1a02c](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/ac1a02c04f39c664d71ffa127af72635b5eadfa5))
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.4.1
|
|
@@ -5,9 +5,9 @@ Use Cases:
|
|
|
5
5
|
2) Consistent update of already scaffolded projects to benefit from new and improved features.
|
|
6
6
|
3) Dummy CLI application and service demonstrating example usage of the generated directory structure and build pipeline
|
|
7
7
|
|
|
8
|
-
## Scaffolding
|
|
8
|
+
## Scaffolding
|
|
9
9
|
|
|
10
|
-
Step 1
|
|
10
|
+
**Step 1**: Install uv package manager and copier
|
|
11
11
|
```shell
|
|
12
12
|
if [[ "$OSTYPE" == "darwin"* ]]; then # Install dependencies for macOS X
|
|
13
13
|
if ! command -v brew &> /dev/null; then ## Install Homebrew if not present
|
|
@@ -23,31 +23,32 @@ fi
|
|
|
23
23
|
uv tool install copier # Install copier as global tool
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
Step 2
|
|
26
|
+
**Step 2**: Now create an empty repository on GitHubm, clone to your local machine, and change into it's directory.
|
|
27
27
|
|
|
28
|
-
Step 3
|
|
28
|
+
**Step 3**: Scaffold the project
|
|
29
29
|
```shell
|
|
30
30
|
copier copy gh:helmut-hoffer-von-ankershoffen/oe-python-template .
|
|
31
31
|
```
|
|
32
|
-
Step 4
|
|
32
|
+
**Step 4**: Setup the local environment
|
|
33
33
|
|
|
34
34
|
```shell
|
|
35
35
|
uv run nox -s setup_dev
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
Step 5
|
|
38
|
+
**Step 5**: Perform initial commit and push
|
|
39
39
|
```shell
|
|
40
40
|
git add .
|
|
41
41
|
git commit -m "feat: Initial commit"
|
|
42
|
+
git push
|
|
42
43
|
```
|
|
43
44
|
|
|
44
45
|
Visit your GitHub repository and check the Actions tab. The CI workflow should fail at the SonarQube step,
|
|
45
46
|
as this external service is not yet configured for our new repository.
|
|
46
47
|
|
|
47
|
-
Step 6
|
|
48
|
-
such as Cloudcov, SonarQube Cloud, Read The Docs, Docker.io, GHCR.io and Streamlit Community Cloud.
|
|
48
|
+
**Step 6**: Follow the [SERVICE_INSTRUCTIONS.md](instructions) to wire up
|
|
49
|
+
external services such as Cloudcov, SonarQube Cloud, Read The Docs, Docker.io, GHCR.io and Streamlit Community Cloud.
|
|
49
50
|
|
|
50
|
-
Step 7
|
|
51
|
+
**Step 7**: Release the first versions
|
|
51
52
|
```shell
|
|
52
53
|
./bump
|
|
53
54
|
```
|
|
@@ -70,24 +71,38 @@ If you don't have uv installed follow [these instructions](https://docs.astral.s
|
|
|
70
71
|
pip install oe-python-template # add dependency to your project
|
|
71
72
|
```
|
|
72
73
|
|
|
73
|
-
Executing the command line interface (CLI) is just as easy:
|
|
74
|
+
Executing the command line interface (CLI) in an isolated Python environment is just as easy:
|
|
74
75
|
|
|
75
76
|
```shell
|
|
76
|
-
uvx oe-python-template
|
|
77
|
+
uvx oe-python-template hello-world # prints "Hello, world! [..]"
|
|
78
|
+
uvx oe-python-template serve # serves webservice API
|
|
77
79
|
```
|
|
78
80
|
|
|
81
|
+
When serving the API, go to [http://127.0.0.1:8000/api/v1/hello-world](http://127.0.0.1:8000/api/v1/hello-world) to see the result.
|
|
82
|
+
|
|
83
|
+
The API is versioned and provides interactive documentation at [http://127.0.0.1:8000/api/v1/docs](http://127.0.0.1:8000/api/v1/docs) resp. [http://127.0.0.1:8000/api/v2/docs](http://127.0.0.1:8000/api/v2/docs)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
```shell
|
|
87
|
+
|
|
88
|
+
When running the webservice API, goto http://127.0.0.1:8000/api/v1/docs
|
|
89
|
+
|
|
79
90
|
The CLI provides extensive help:
|
|
80
91
|
|
|
81
92
|
```shell
|
|
82
93
|
uvx oe-python-template --help # all CLI commands
|
|
83
94
|
uvx oe-python-template hello-world --help # help for specific command
|
|
95
|
+
uvx oe-python-template echo --help
|
|
96
|
+
uvx oe-python-template openapi --help
|
|
97
|
+
uvx oe-python-template serve --help
|
|
84
98
|
```
|
|
85
99
|
|
|
86
100
|
|
|
87
|
-
##
|
|
101
|
+
## Operational Excellence
|
|
102
|
+
|
|
103
|
+
This project is designed with operational excellence in mind, using modern Python tooling and practices. It includes:
|
|
88
104
|
|
|
89
|
-
*
|
|
90
|
-
* Various Examples:
|
|
105
|
+
* Various examples demonstrating usage:
|
|
91
106
|
- [Simple Python script](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/examples/script.py)
|
|
92
107
|
- [Streamlit web application](https://oe-python-template.streamlit.app/) deployed on [Streamlit Community Cloud](https://streamlit.io/cloud)
|
|
93
108
|
- [Jupyter](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/examples/notebook.ipynb) and [Marimo](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/examples/notebook.py) notebook
|
|
@@ -103,6 +118,9 @@ uvx oe-python-template hello-world --help # help for specific command
|
|
|
103
118
|
|
|
104
119
|
## Usage Examples
|
|
105
120
|
|
|
121
|
+
The following examples run from source. Clone this repository first using
|
|
122
|
+
`git clone git@github.com:helmut-hoffer-von-ankershoffen/oe-python-template.git`.
|
|
123
|
+
|
|
106
124
|
### Minimal Python Script:
|
|
107
125
|
|
|
108
126
|
```python
|
|
@@ -144,7 +162,7 @@ uv run streamlit run examples/streamlit.py # Serve on localhost:8501, o
|
|
|
144
162
|
... or run within VSCode
|
|
145
163
|
|
|
146
164
|
```shell
|
|
147
|
-
uv sync --all-extras # Install
|
|
165
|
+
uv sync --all-extras # Install dependencies required for examples such as Juypyter kernel, see pyproject.toml
|
|
148
166
|
```
|
|
149
167
|
Install the [Jupyter extension for VSCode](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter)
|
|
150
168
|
|
|
@@ -241,7 +259,10 @@ docker compose run oe-python-template echo "Lorem" --json
|
|
|
241
259
|
docker compose run oe-python-template openapi
|
|
242
260
|
docker compose run oe-python-template openapi --output-format=json
|
|
243
261
|
docker compose up
|
|
244
|
-
curl http://127.0.0.1
|
|
262
|
+
curl http://127.0.0.1:8000/api/v1/hello-world
|
|
263
|
+
curl http://127.0.0.1:8000/api/v1/docs
|
|
264
|
+
curl http://127.0.0.1:8000/api/v2/hello-world
|
|
265
|
+
curl http://127.0.0.1:8000/api/v2/docs
|
|
245
266
|
```
|
|
246
267
|
|
|
247
268
|
## Extra: Lorem Ipsum
|