oe-python-template 0.6.26__tar.gz → 0.6.27__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 (167) hide show
  1. {oe_python_template-0.6.26 → oe_python_template-0.6.27}/PKG-INFO +1 -1
  2. {oe_python_template-0.6.26 → oe_python_template-0.6.27}/pyproject.toml +9 -3
  3. oe_python_template-0.6.26/.act-env-public +0 -1
  4. oe_python_template-0.6.26/.copier-answers.yml +0 -23
  5. oe_python_template-0.6.26/.devcontainer/Dockerfile +0 -7
  6. oe_python_template-0.6.26/.devcontainer/devcontainer.json +0 -51
  7. oe_python_template-0.6.26/.devcontainer/onCreateCommand +0 -9
  8. oe_python_template-0.6.26/.devcontainer/postAttachCommand +0 -4
  9. oe_python_template-0.6.26/.devcontainer/postCreateCommand +0 -4
  10. oe_python_template-0.6.26/.env.example +0 -1
  11. oe_python_template-0.6.26/.github/copilot-instructions.md +0 -5
  12. oe_python_template-0.6.26/.github/dependabot.yml +0 -13
  13. oe_python_template-0.6.26/.github/prompts/.keep +0 -0
  14. oe_python_template-0.6.26/.github/workflows/codeql.yml +0 -100
  15. oe_python_template-0.6.26/.github/workflows/docker-image-build-publish.yml +0 -93
  16. oe_python_template-0.6.26/.github/workflows/package-build-publish-release.yml +0 -63
  17. oe_python_template-0.6.26/.github/workflows/test-and-report.yml +0 -113
  18. oe_python_template-0.6.26/.pre-commit-config.yaml +0 -76
  19. oe_python_template-0.6.26/.python-version +0 -1
  20. oe_python_template-0.6.26/.readthedocs.yml +0 -36
  21. oe_python_template-0.6.26/.secrets.baseline +0 -127
  22. oe_python_template-0.6.26/.vscode/extensions.json +0 -27
  23. oe_python_template-0.6.26/.vscode/settings.json +0 -76
  24. oe_python_template-0.6.26/CHANGELOG.md +0 -631
  25. oe_python_template-0.6.26/CODEOWNERS +0 -3
  26. oe_python_template-0.6.26/CODE_STYLE.md +0 -284
  27. oe_python_template-0.6.26/CONTRIBUTING.md +0 -155
  28. oe_python_template-0.6.26/Dockerfile +0 -42
  29. oe_python_template-0.6.26/RELEASE_NOTES.md +0 -8
  30. oe_python_template-0.6.26/SECURITY.md +0 -59
  31. oe_python_template-0.6.26/SERVICE_CONNECTIONS.md +0 -85
  32. oe_python_template-0.6.26/VERSION +0 -1
  33. oe_python_template-0.6.26/bin/git-cliff +0 -0
  34. oe_python_template-0.6.26/codecov.yml +0 -11
  35. oe_python_template-0.6.26/compose.yaml +0 -35
  36. oe_python_template-0.6.26/copier.yml +0 -210
  37. oe_python_template-0.6.26/docs/Makefile +0 -20
  38. oe_python_template-0.6.26/docs/make.bat +0 -35
  39. oe_python_template-0.6.26/docs/partials/README_footer.md +0 -15
  40. oe_python_template-0.6.26/docs/partials/README_header.md +0 -37
  41. oe_python_template-0.6.26/docs/partials/README_main.md +0 -305
  42. oe_python_template-0.6.26/docs/source/_static/.keep +0 -0
  43. oe_python_template-0.6.26/docs/source/_static/openapi_v1.json +0 -262
  44. oe_python_template-0.6.26/docs/source/_static/openapi_v1.yaml +0 -38
  45. oe_python_template-0.6.26/docs/source/_static/openapi_v2.json +0 -262
  46. oe_python_template-0.6.26/docs/source/_static/openapi_v2.yaml +0 -188
  47. oe_python_template-0.6.26/docs/source/api_v1.rst +0 -9
  48. oe_python_template-0.6.26/docs/source/api_v1.rst.jinja +0 -9
  49. oe_python_template-0.6.26/docs/source/api_v2.rst +0 -9
  50. oe_python_template-0.6.26/docs/source/api_v2.rst.jinja +0 -9
  51. oe_python_template-0.6.26/docs/source/code-style.rst +0 -1
  52. oe_python_template-0.6.26/docs/source/conf.py +0 -128
  53. oe_python_template-0.6.26/docs/source/contributing.rst +0 -1
  54. oe_python_template-0.6.26/docs/source/index.rst +0 -40
  55. oe_python_template-0.6.26/docs/source/latexmkrc +0 -11
  56. oe_python_template-0.6.26/docs/source/main.rst +0 -1
  57. oe_python_template-0.6.26/docs/source/reference.rst +0 -5
  58. oe_python_template-0.6.26/docs/source/release-notes.rst +0 -4
  59. oe_python_template-0.6.26/docs/source/security.rst +0 -1
  60. oe_python_template-0.6.26/examples/__init__.py +0 -1
  61. oe_python_template-0.6.26/examples/notebook.ipynb +0 -46
  62. oe_python_template-0.6.26/examples/notebook.py +0 -18
  63. oe_python_template-0.6.26/examples/script.py +0 -13
  64. oe_python_template-0.6.26/examples/streamlit.py +0 -30
  65. oe_python_template-0.6.26/git-cliff-2.7.0/CHANGELOG.md +0 -1513
  66. oe_python_template-0.6.26/git-cliff-2.7.0/LICENSE-APACHE +0 -176
  67. oe_python_template-0.6.26/git-cliff-2.7.0/LICENSE-MIT +0 -22
  68. oe_python_template-0.6.26/git-cliff-2.7.0/README.md +0 -95
  69. oe_python_template-0.6.26/git-cliff-2.7.0/completions/_git-cliff +0 -86
  70. oe_python_template-0.6.26/git-cliff-2.7.0/completions/_git-cliff.ps1 +0 -84
  71. oe_python_template-0.6.26/git-cliff-2.7.0/completions/git-cliff.bash +0 -190
  72. oe_python_template-0.6.26/git-cliff-2.7.0/completions/git-cliff.elv +0 -78
  73. oe_python_template-0.6.26/git-cliff-2.7.0/completions/git-cliff.fish +0 -39
  74. oe_python_template-0.6.26/git-cliff-2.7.0/git-cliff-completions +0 -0
  75. oe_python_template-0.6.26/git-cliff-2.7.0/git-cliff-mangen +0 -0
  76. oe_python_template-0.6.26/git-cliff-2.7.0/man/git-cliff.1 +0 -214
  77. oe_python_template-0.6.26/git-cliff-2.7.0-x86_64-unknown-linux-gnu.tar.gz +0 -0
  78. oe_python_template-0.6.26/github-action-run +0 -5
  79. oe_python_template-0.6.26/logo.png +0 -0
  80. oe_python_template-0.6.26/n +0 -28
  81. oe_python_template-0.6.26/noxfile.py +0 -235
  82. oe_python_template-0.6.26/renovate.json +0 -9
  83. oe_python_template-0.6.26/reports/.keep +0 -0
  84. oe_python_template-0.6.26/sonar-project.properties +0 -12
  85. oe_python_template-0.6.26/template/.act-env-public.jinja +0 -1
  86. oe_python_template-0.6.26/template/.devcontainer/Dockerfile.jinja +0 -7
  87. oe_python_template-0.6.26/template/.devcontainer/devcontainer.json.jinja +0 -51
  88. oe_python_template-0.6.26/template/.devcontainer/onCreateCommand.jinja +0 -9
  89. oe_python_template-0.6.26/template/.devcontainer/postAttachCommand.jinja +0 -4
  90. oe_python_template-0.6.26/template/.devcontainer/postCreateCommand.jinja +0 -4
  91. oe_python_template-0.6.26/template/.env.example.jinja +0 -1
  92. oe_python_template-0.6.26/template/.github/copilot-instructions.md +0 -5
  93. oe_python_template-0.6.26/template/.github/dependabot.yml +0 -13
  94. oe_python_template-0.6.26/template/.github/workflows/codeql.yml +0 -100
  95. oe_python_template-0.6.26/template/.github/workflows/docker-image-build-publish.yml.jinja +0 -98
  96. oe_python_template-0.6.26/template/.github/workflows/package-build-publish-release.yml.jinja +0 -63
  97. oe_python_template-0.6.26/template/.github/workflows/test-and-report.yml.jinja +0 -113
  98. oe_python_template-0.6.26/template/.gitignore.jinja +0 -78
  99. oe_python_template-0.6.26/template/.pre-commit-config.yaml.jinja +0 -76
  100. oe_python_template-0.6.26/template/.python-version +0 -1
  101. oe_python_template-0.6.26/template/.readthedocs.yml.jinja +0 -36
  102. oe_python_template-0.6.26/template/.vscode/extensions.json +0 -27
  103. oe_python_template-0.6.26/template/.vscode/settings.json.jinja +0 -76
  104. oe_python_template-0.6.26/template/CHANGELOG.md +0 -0
  105. oe_python_template-0.6.26/template/CODEOWNERS.jinja +0 -3
  106. oe_python_template-0.6.26/template/CODE_STYLE.md.jinja +0 -284
  107. oe_python_template-0.6.26/template/CONTRIBUTING.md.jinja +0 -155
  108. oe_python_template-0.6.26/template/Dockerfile.jinja +0 -42
  109. oe_python_template-0.6.26/template/LICENSE.jinja +0 -21
  110. oe_python_template-0.6.26/template/README.md +0 -0
  111. oe_python_template-0.6.26/template/SECURITY.md.jinja +0 -59
  112. oe_python_template-0.6.26/template/SERVICE_CONNECTIONS.md.jinja +0 -85
  113. oe_python_template-0.6.26/template/VERSION +0 -1
  114. oe_python_template-0.6.26/template/codecov.yml.jinja +0 -11
  115. oe_python_template-0.6.26/template/compose.yaml.jinja +0 -35
  116. oe_python_template-0.6.26/template/docs/Makefile.jinja +0 -20
  117. oe_python_template-0.6.26/template/docs/make.bat.jinja +0 -35
  118. oe_python_template-0.6.26/template/docs/partials/README_footer.md.jinja +0 -15
  119. oe_python_template-0.6.26/template/docs/partials/README_header.md.jinja +0 -40
  120. oe_python_template-0.6.26/template/docs/partials/README_main.md.jinja +0 -305
  121. oe_python_template-0.6.26/template/docs/source/_static/.keep +0 -0
  122. oe_python_template-0.6.26/template/docs/source/api_v1.rst.jinja +0 -9
  123. oe_python_template-0.6.26/template/docs/source/api_v2.rst.jinja +0 -9
  124. oe_python_template-0.6.26/template/docs/source/code-style.rst.jinja +0 -1
  125. oe_python_template-0.6.26/template/docs/source/conf.py.jinja +0 -128
  126. oe_python_template-0.6.26/template/docs/source/contributing.rst.jinja +0 -1
  127. oe_python_template-0.6.26/template/docs/source/index.rst.jinja +0 -40
  128. oe_python_template-0.6.26/template/docs/source/main.rst.jinja +0 -1
  129. oe_python_template-0.6.26/template/docs/source/reference.rst.jinja +0 -5
  130. oe_python_template-0.6.26/template/docs/source/release-notes.rst.jinja +0 -4
  131. oe_python_template-0.6.26/template/docs/source/security.rst.jinja +0 -1
  132. oe_python_template-0.6.26/template/examples/__init__.py.jinja +0 -1
  133. oe_python_template-0.6.26/template/examples/notebook.ipynb.jinja +0 -46
  134. oe_python_template-0.6.26/template/examples/notebook.py.jinja +0 -18
  135. oe_python_template-0.6.26/template/examples/script.py.jinja +0 -13
  136. oe_python_template-0.6.26/template/examples/streamlit.py.jinja +0 -30
  137. oe_python_template-0.6.26/template/github-action-run.jinja +0 -5
  138. oe_python_template-0.6.26/template/logo.png +0 -0
  139. oe_python_template-0.6.26/template/n.jinja +0 -28
  140. oe_python_template-0.6.26/template/noxfile.py.jinja +0 -235
  141. oe_python_template-0.6.26/template/pyproject.toml.jinja +0 -409
  142. oe_python_template-0.6.26/template/renovate.json +0 -9
  143. oe_python_template-0.6.26/template/reports/.keep +0 -0
  144. oe_python_template-0.6.26/template/sonar-project.properties.jinja +0 -12
  145. oe_python_template-0.6.26/template/src/{{ project_name_snake_case }}/__init__.py.jinja +0 -15
  146. oe_python_template-0.6.26/template/src/{{ project_name_snake_case }}/api.py.jinja +0 -239
  147. oe_python_template-0.6.26/template/src/{{ project_name_snake_case }}/cli.py.jinja +0 -133
  148. oe_python_template-0.6.26/template/src/{{ project_name_snake_case }}/constants.py.jinja +0 -10
  149. oe_python_template-0.6.26/template/src/{{ project_name_snake_case }}/service.py.jinja +0 -35
  150. oe_python_template-0.6.26/template/tests/__init__.py.jinja +0 -1
  151. oe_python_template-0.6.26/template/tests/api_test.py.jinja +0 -132
  152. oe_python_template-0.6.26/template/tests/cli_test.py.jinja +0 -86
  153. oe_python_template-0.6.26/template/tests/fixtures/.keep +0 -0
  154. oe_python_template-0.6.26/template/{{_copier_conf.answers_file}}.jinja +0 -1
  155. oe_python_template-0.6.26/tests/__init__.py +0 -1
  156. oe_python_template-0.6.26/tests/api_test.py +0 -132
  157. oe_python_template-0.6.26/tests/cli_test.py +0 -86
  158. oe_python_template-0.6.26/tests/fixtures/.keep +0 -0
  159. oe_python_template-0.6.26/uv.lock +0 -4296
  160. {oe_python_template-0.6.26 → oe_python_template-0.6.27}/.gitignore +0 -0
  161. {oe_python_template-0.6.26 → oe_python_template-0.6.27}/LICENSE +0 -0
  162. {oe_python_template-0.6.26 → oe_python_template-0.6.27}/README.md +0 -0
  163. {oe_python_template-0.6.26 → oe_python_template-0.6.27}/src/oe_python_template/__init__.py +0 -0
  164. {oe_python_template-0.6.26 → oe_python_template-0.6.27}/src/oe_python_template/api.py +0 -0
  165. {oe_python_template-0.6.26 → oe_python_template-0.6.27}/src/oe_python_template/cli.py +0 -0
  166. {oe_python_template-0.6.26 → oe_python_template-0.6.27}/src/oe_python_template/constants.py +0 -0
  167. {oe_python_template-0.6.26 → oe_python_template-0.6.27}/src/oe_python_template/service.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oe-python-template
3
- Version: 0.6.26
3
+ Version: 0.6.27
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/
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "oe-python-template"
3
- version = "0.6.26"
3
+ version = "0.6.27"
4
4
  description = "🧠 Copier template to scaffold Python projects compliant with best practices and modern tooling."
5
5
  readme = "README.md"
6
6
  authors = [
@@ -79,9 +79,15 @@ Changelog = "https://github.com/helmut-hoffer-von-ankershoffen/oe-python-templat
79
79
  Issues = "https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/issues"
80
80
 
81
81
  [build-system]
82
- requires = ["hatchling"]
82
+ requires = ["hatchling==1.27.0"]
83
83
  build-backend = "hatchling.build"
84
84
 
85
+ [tool.hatch.build]
86
+ include = ["src/*"]
87
+
88
+ [tool.hatch.build.targets.wheel]
89
+ packages = ["src/oe_python_template"]
90
+
85
91
  [project.optional-dependencies]
86
92
  examples = [
87
93
  "streamlit>=1.43.2",
@@ -242,7 +248,7 @@ source = ["src/"]
242
248
 
243
249
 
244
250
  [tool.bumpversion]
245
- current_version = "0.6.26"
251
+ current_version = "0.6.27"
246
252
  parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
247
253
  serialize = ["{major}.{minor}.{patch}"]
248
254
  search = "{current_version}"
@@ -1 +0,0 @@
1
- GITHUB_WORKFLOW_RUNTIME=ACT
@@ -1,23 +0,0 @@
1
- _commit: v0.6.25-1-gfb4e83c
2
- _src_path: .
3
- author_email: helmuthva@gmail.com
4
- author_github_username: helmut-hoffer-von-ankershoffen
5
- author_name: Helmut Hoffer von Ankershoffen
6
- docker_io_enabled: true
7
- docker_io_image_name: oe-python-template
8
- docker_io_owner: helmuthva
9
- github_repository_name: oe-python-template
10
- github_repository_owner: helmut-hoffer-von-ankershoffen
11
- github_repository_url_https: https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template
12
- github_repository_url_ssh: git@github.com:helmut-hoffer-von-ankershoffen/oe-python-template.git
13
- org_email: helmuthva@gmail.com
14
- org_name: Helmut Hoffer von Ankershoffen
15
- project_description: Copier template to scaffold Python projects compliant with best
16
- practices and modern tooling.
17
- project_icon: 🧠
18
- project_name: OE Python Template
19
- pypi_distribution_name: oe-python-template
20
- readthedocs_domain: readthedocs.org
21
- readthedocs_project_key: oe-python-template
22
- sonarqube_key: helmut-hoffer-von-ankershoffen_oe-python-template
23
- streamlit_project_key: oe-python-template
@@ -1,7 +0,0 @@
1
- FROM mcr.microsoft.com/devcontainers/python:1-3.11-bullseye
2
-
3
- RUN curl --proto '=https' --tlsv1.2 -fsSL https://deb.nodesource.com/setup_22.x | bash - && \
4
- apt update -y && \
5
- apt install -y --no-install-recommends curl gnupg2 jq less nano nodejs procps psmisc && \
6
- apt-get clean && \
7
- rm -rf /var/lib/apt/lists/*
@@ -1,51 +0,0 @@
1
- {
2
- "build": {
3
- "dockerfile": "Dockerfile"
4
- },
5
- "features": {
6
- "ghcr.io/devcontainers/features/github-cli:1": {},
7
- "ghcr.io/va-h/devcontainers-features/uv:1": {},
8
- "ghcr.io/dhoeric/features/act:1": {},
9
- "ghcr.io/devcontainers/features/docker-in-docker:2": {},
10
- "ghcr.io/devcontainers/features/java:1": {},
11
- "ghcr.io/devcontainers/features/node:1": {}
12
- },
13
- "onCreateCommand": ".devcontainer/onCreateCommand",
14
- "postCreateCommand": ".devcontainer/postCreateCommand",
15
- "postAttachCommand": ".devcontainer/postAttachCommand",
16
- "customizations": {
17
- // Configure properties specific to VS Code.
18
- "vscode": {
19
- // Add the IDs of extensions you want installed when the container is created.
20
- "extensions": [
21
- "charliermarsh.ruff",
22
- "codecov.codecov",
23
- "donjayamanne.python-environment-manager",
24
- "fill-labs.dependi",
25
- "github.vscode-github-actions",
26
- "github.copilot",
27
- "github.copilot-chat",
28
- "gruntfuggly.todo-tree",
29
- "joshrmosier.streamlit-runner",
30
- "kaih2o.python-resource-monitor",
31
- "marimo-team.vscode-marimo",
32
- "mikestead.dotenv",
33
- "ms-azuretools.vscode-docker",
34
- "ms-python.debugpy",
35
- "ms-python.python",
36
- "ms-python.vscode-pylance",
37
- "ms-toolsai.jupyter",
38
- "oderwat.indent-rainbow",
39
- "samuelcolvin.jinjahtml",
40
- "sonarsource.sonarlint-vscode",
41
- "tamasfe.even-better-toml",
42
- "tomoki1207.pdf",
43
- "wayou.vscode-todo-highlight"
44
- ]
45
- }
46
- },
47
- "mounts": [
48
- "source=${localEnv:HOME}/.ssh,target=/home/vscode/.ssh,type=bind,consistency=cached"
49
- ],
50
- "forwardPorts": []
51
- }
@@ -1,9 +0,0 @@
1
- #!/bin/sh
2
-
3
- echo "onCreateCommand: start"
4
- git config --global --add safe.directory /workspaces/oe-python-template
5
- rm -rf .nox
6
- rm -rf .venv
7
- uv sync --frozen
8
- uv run pre-commit install
9
- echo "onCreateCommand: end"
@@ -1,4 +0,0 @@
1
- #!/bin/sh
2
-
3
- echo "postAttachCommand:start"
4
- echo "postAttachCommand:end"
@@ -1,4 +0,0 @@
1
- #!/bin/sh
2
-
3
- echo "postCreateCommand:start"
4
- echo "postCreateCommand:end"
@@ -1 +0,0 @@
1
- THE_KEY=A value
@@ -1,5 +0,0 @@
1
- Always conform to the coding styles defined in CODE_STYLE.md in the root
2
- directory of this repository when generating code.
3
-
4
- Learn about tools to use in CONTRIBUTING.md in the root directory of this
5
- repository.
@@ -1,13 +0,0 @@
1
- # Please see the documentation for all configuration options:
2
- # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
3
-
4
- version: 2
5
- updates:
6
- - package-ecosystem: "pip"
7
- directory: "/"
8
- schedule:
9
- interval: "daily"
10
- - package-ecosystem: "github-actions"
11
- directory: "/"
12
- schedule:
13
- interval: "daily"
File without changes
@@ -1,100 +0,0 @@
1
- # For most projects, this workflow file will not need changing; you simply need
2
- # to commit it to your repository.
3
- #
4
- # You may wish to alter this file to override the set of languages analyzed,
5
- # or to provide custom queries or build logic.
6
- #
7
- # ******** NOTE ********
8
- # We have attempted to detect the languages in your repository. Please check
9
- # the `language` matrix defined below to confirm you have the correct set of
10
- # supported CodeQL languages.
11
- #
12
- name: "CodeQL Advanced"
13
-
14
- on:
15
- push:
16
- branches: ["main"]
17
- pull_request:
18
- branches: ["main"]
19
- schedule:
20
- - cron: "22 3 * * 2"
21
-
22
- jobs:
23
- analyze:
24
- name: Analyze (${{ matrix.language }})
25
- # Runner size impacts CodeQL analysis time. To learn more, please see:
26
- # - https://gh.io/recommended-hardware-resources-for-running-codeql
27
- # - https://gh.io/supported-runners-and-hardware-resources
28
- # - https://gh.io/using-larger-runners (GitHub.com only)
29
- # Consider using larger runners or machines with greater resources for possible analysis time improvements.
30
- runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
31
- permissions:
32
- # required for all workflows
33
- security-events: write
34
-
35
- # required to fetch internal or private CodeQL packs
36
- packages: read
37
-
38
- # only required for workflows in private repositories
39
- actions: read
40
- contents: read
41
-
42
- strategy:
43
- fail-fast: false
44
- matrix:
45
- include:
46
- - language: actions
47
- build-mode: none
48
- - language: python
49
- build-mode: none
50
- # CodeQL supports the following values keywords for 'language': 'actions', 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift'
51
- # Use `c-cpp` to analyze code written in C, C++ or both
52
- # Use 'java-kotlin' to analyze code written in Java, Kotlin or both
53
- # Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
54
- # To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
55
- # see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
56
- # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
57
- # your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
58
- steps:
59
- - name: Checkout repository
60
- uses: actions/checkout@v4
61
-
62
- # Add any setup steps before running the `github/codeql-action/init` action.
63
- # This includes steps like installing compilers or runtimes (`actions/setup-node`
64
- # or others). This is typically only required for manual builds.
65
- # - name: Setup runtime (example)
66
- # uses: actions/setup-example@v1
67
-
68
- # Initializes the CodeQL tools for scanning.
69
- - name: Initialize CodeQL
70
- uses: github/codeql-action/init@v3
71
- with:
72
- languages: ${{ matrix.language }}
73
- build-mode: ${{ matrix.build-mode }}
74
- # If you wish to specify custom queries, you can do so here or in a config file.
75
- # By default, queries listed here will override any specified in a config file.
76
- # Prefix the list here with "+" to use these queries and those in the config file.
77
-
78
- # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
79
- queries: security-extended,security-and-quality
80
-
81
- # If the analyze step fails for one of the languages you are analyzing with
82
- # "We were unable to automatically build your code", modify the matrix above
83
- # to set the build mode to "manual" for that language. Then modify this step
84
- # to build your code.
85
- # ℹ️ Command-line programs to run using the OS shell.
86
- # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
87
- - if: matrix.build-mode == 'manual'
88
- shell: bash
89
- run: |
90
- echo 'If you are using a "manual" build mode for one or more of the' \
91
- 'languages you are analyzing, replace this with the commands to build' \
92
- 'your code, for example:'
93
- echo ' make bootstrap'
94
- echo ' make release'
95
- exit 1
96
-
97
- - name: Perform CodeQL Analysis
98
- uses: github/codeql-action/analyze@v3
99
- with:
100
- category: "/language:${{matrix.language}}"
@@ -1,93 +0,0 @@
1
- name: "Build and publish Docker image to docker.io and ghcr.io"
2
-
3
- on:
4
- push:
5
- tags:
6
- - "v*.*.*"
7
-
8
-
9
- env:
10
- REGISTRY: docker.io
11
- IMAGE_NAME: helmuthva/oe-python-template
12
-
13
-
14
- jobs:
15
- docker_image_build_publish:
16
- runs-on: ubuntu-latest
17
- permissions:
18
- packages: write
19
- contents: read
20
- attestations: write
21
- id-token: write
22
- steps:
23
- - name: Checkout
24
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
25
-
26
- - name: Set up QEMU
27
- uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
28
-
29
- - name: Set up Docker Buildx
30
- uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
31
-
32
-
33
-
34
- - name: Log in to Docker Hub
35
- uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
36
- with:
37
-
38
- username: ${{ secrets.DOCKER_USERNAME }}
39
- password: ${{ secrets.DOCKER_PASSWORD }}
40
-
41
-
42
-
43
- - name: Log in to GitHub container registry
44
- uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
45
- with:
46
- registry: ghcr.io
47
-
48
- username: ${{ github.actor }}
49
- password: ${{ secrets.GITHUB_TOKEN }}
50
-
51
-
52
- - name: Extract metadata (tags, labels) for Docker
53
- id: meta
54
- uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5.7.0
55
- with:
56
-
57
-
58
- images: |
59
- ${{ env.IMAGE_NAME }}
60
- ghcr.io/${{ github.repository }}
61
-
62
-
63
-
64
- tags: |
65
- # set latest tag for releases
66
- type=raw,value=latest
67
- # set semver tags from git tags (v1.2.3 -> 1.2.3, 1.2, 1)
68
- type=semver,pattern={{version}}
69
- type=semver,pattern={{major}}.{{minor}}
70
- type=semver,pattern={{major}}
71
-
72
-
73
-
74
- - name: Build and push Docker image
75
- id: push
76
- uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0
77
- with:
78
- context: .
79
- file: ./Dockerfile
80
- platforms: linux/amd64,linux/arm64
81
- push: true
82
- tags: ${{ steps.meta.outputs.tags }}
83
- labels: ${{ steps.meta.outputs.labels }}
84
-
85
-
86
-
87
-
88
- - name: Generate artifact attestation
89
- uses: actions/attest-build-provenance@c074443f1aee8d4aeeae555aebba3282517141b2 # v2.2.3
90
- with:
91
- subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
92
- subject-digest: ${{ steps.push.outputs.digest }}
93
- push-to-registry: true
@@ -1,63 +0,0 @@
1
- name: "Build package, publish to PyPI, create GitHub release"
2
-
3
- on:
4
- push:
5
- tags:
6
- - "v*.*.*"
7
-
8
-
9
- jobs:
10
- package_build_publish_release:
11
- environment: release
12
- runs-on: ubuntu-latest
13
- permissions:
14
- contents: write
15
- packages: read
16
- steps:
17
- - name: Checkout
18
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
19
- with:
20
- fetch-depth: 0
21
-
22
- - name: Generate release notes
23
- uses: orhun/git-cliff-action@4a4a951bc43fafe41cd2348d181853f52356bee7 # v4.4.2
24
- id: git-cliff
25
- with:
26
- config: pyproject.toml
27
- args: --verbose --latest --strip header
28
- env:
29
- OUTPUT: RELEASE_NOTES.md
30
- GITHUB_REPO: ${{ github.repository }}
31
-
32
- - name: Print the release notes
33
- run: cat "${{ steps.git-cliff.outputs.changelog }}"
34
-
35
-
36
- - name: Install uv
37
- uses: astral-sh/setup-uv@f94ec6bedd8674c4426838e6b50417d36b6ab231 # v5.3.1
38
- with:
39
- version: "0.6.3"
40
- cache-dependency-glob: uv.lock
41
- enable-cache: true
42
-
43
- - name: Build package into dist/
44
- run: uv build
45
-
46
- - name: Publish package to PyPI
47
- run: uv publish -t ${{ secrets.UV_PUBLISH_TOKEN }}
48
-
49
- - name: Build package into dist/
50
- run: uv run nox -s audit
51
-
52
- - name: Create GitHub release
53
- env:
54
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
55
- run: |
56
- gh release create ${{ github.ref_name }} ./dist/* ./reports/* --notes-file ${{ steps.git-cliff.outputs.changelog }}
57
-
58
- - name: Allow other workflows to trigger on release
59
- env:
60
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
61
- run: |
62
- gh api repos/helmut-hoffer-von-ankershoffen/oe-python-template/dispatches \
63
- -f event_type=release_created_programatically
@@ -1,113 +0,0 @@
1
- name: "CI"
2
-
3
- on:
4
- push:
5
- branches:
6
- - "**"
7
- pull_request:
8
- branches: [main]
9
-
10
- jobs:
11
- test:
12
- runs-on: ubuntu-latest
13
- permissions:
14
- packages: write
15
- contents: read
16
- attestations: write
17
- id-token: write
18
- steps:
19
- - name: Checkout
20
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
21
- with:
22
- fetch-depth: 0
23
-
24
- - name: Install dependencies
25
- run: |
26
- sudo apt-get update && sudo apt-get install -y libcairo2
27
-
28
- - name: Install dev tools
29
- run: |
30
- sudo apt-get install -y curl jq xsltproc gnupg2 libcairo2
31
-
32
- - name: Install uv (python package manager)
33
- uses: astral-sh/setup-uv@f94ec6bedd8674c4426838e6b50417d36b6ab231 # v5.3.1
34
- with:
35
- version: "0.6.3"
36
- enable-cache: true
37
- cache-dependency-glob: uv.lock
38
-
39
- - name: Install Python, venv and dependencies
40
- run: |
41
- uv sync --all-extras --frozen --link-mode=copy
42
-
43
- - name: Release version check
44
- if: startsWith(github.ref, 'refs/tags/v')
45
- run: |
46
- TAG_VERSION=${GITHUB_REF#refs/tags/v}
47
- TOML_VERSION=$(uv run python -c "import tomli; print(tomli.load(open('pyproject.toml', 'rb'))['project']['version'])")
48
-
49
- if [ "$TAG_VERSION" != "$TOML_VERSION" ]; then
50
- echo "Release version mismatch: Tag $TAG_VERSION != pyproject.toml $TOML_VERSION"
51
- exit 1
52
- fi
53
-
54
- - name: Print development version info
55
- if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
56
- run: |
57
- TOML_VERSION=$(uv run python -c "import tomli; print(tomli.load(open('pyproject.toml', 'rb'))['project']['version'])")
58
- echo "Development build - Current version in pyproject.toml: $TOML_VERSION"
59
-
60
- - name: Create .env file
61
- uses: SpicyPizza/create-envfile@ace6d4f5d7802b600276c23ca417e669f1a06f6f # v2.0.3
62
- with:
63
- envkey_ENV_KEY: "ENV_VALUE"
64
- fail_on_empty: true
65
-
66
- - name: Validate installation
67
- run: |
68
- OUTPUT=$(uv run oe-python-template --help)
69
- if [[ "$OUTPUT" != *"built with love in Berlin"* ]]; then
70
- echo "Output does not contain 'built with love in Berlin'"
71
- exit 1
72
- fi
73
-
74
- - name: Smoke tests
75
- run: |
76
- uv run oe-python-template hello-world
77
-
78
- - name: Run unit tests, measure coverage, lint, and check vulnerabilities
79
- run: |
80
- uv run nox
81
-
82
- - name: Upload test results
83
- uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
84
- if: ${{ always() && (env.GITHUB_WORKFLOW_RUNTIME != 'ACT') }}
85
- with:
86
- name: test-results
87
- path: |
88
- junit.xml
89
- coverage.xml
90
- coverage_html/
91
- vulnerabilities.json
92
- licenses.json
93
- licenses-inverted.json
94
- retention-days: 30
95
-
96
- - name: Upload coverage reports to Codecov
97
- uses: codecov/codecov-action@0565863a31f2c772f9f0395002a31e3f06189574 # v5.4.0
98
- if: ${{ !cancelled() && (env.GITHUB_WORKFLOW_RUNTIME != 'ACT') }}
99
- with:
100
- token: ${{ secrets.CODECOV_TOKEN }}
101
- slug: helmut-hoffer-von-ankershoffen/oe-python-template
102
-
103
- - name: Upload test results to Codecov
104
- if: ${{ !cancelled() && (env.GITHUB_WORKFLOW_RUNTIME != 'ACT') }}
105
- uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0
106
- with:
107
- token: ${{ secrets.CODECOV_TOKEN }}
108
- - name: SonarQube Scan
109
- if: ${{ !cancelled() && (env.GITHUB_WORKFLOW_RUNTIME != 'ACT') }}
110
- uses: SonarSource/sonarqube-scan-action@0303d6b62e310685c0e34d0b9cde218036885c4d # v5.0.0
111
- env:
112
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
113
- SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
@@ -1,76 +0,0 @@
1
- # .pre-commit-config.yaml
2
- default_install_hook_types:
3
- - pre-commit
4
- - post-checkout
5
- - post-merge
6
- - post-rewrite
7
- fail_fast: true
8
- repos:
9
- - repo: meta
10
- hooks:
11
- - id: check-useless-excludes
12
- - repo: https://github.com/pre-commit/pygrep-hooks
13
- rev: v1.10.0
14
- hooks:
15
- - id: python-check-blanket-noqa
16
- - id: python-check-blanket-type-ignore
17
- exclude: "^examples/notebook.py$"
18
- - id: python-check-mock-methods
19
- - id: python-no-eval
20
- - id: python-no-log-warn
21
- - id: python-use-type-annotations
22
- - id: rst-backticks
23
- - id: rst-directive-colons
24
- - id: rst-inline-touching-normal
25
- - id: text-unicode-replacement-char
26
- - repo: https://github.com/pre-commit/pre-commit-hooks
27
- rev: v5.0.0
28
- hooks:
29
- - id: check-added-large-files
30
- - id: check-case-conflict
31
- - id: check-illegal-windows-names
32
- - id: check-merge-conflict
33
- args: ["--assume-in-merge"]
34
- - id: check-shebang-scripts-are-executable
35
- - id: check-symlinks
36
- - id: check-toml
37
- - id: check-xml
38
- - id: check-yaml
39
- exclude: |
40
- (?x)^(
41
- test.*|
42
- mkdocs.yml
43
- )$
44
- args: [--allow-multiple-documents]
45
- - id: debug-statements
46
- - id: destroyed-symlinks
47
- - id: detect-private-key
48
- - id: end-of-file-fixer
49
- exclude: "^tests/fixtures/|.json$"
50
- - id: fix-byte-order-marker
51
- - id: fix-encoding-pragma
52
- args: ["--remove"]
53
- - id: mixed-line-ending
54
- - id: name-tests-test
55
- - id: requirements-txt-fixer
56
- - id: trailing-whitespace
57
- exclude: "docs/source/_static"
58
- - repo: https://github.com/Yelp/detect-secrets
59
- rev: v1.5.0
60
- hooks:
61
- - id: detect-secrets
62
- args: ['--baseline', '.secrets.baseline']
63
- additional_dependencies: ["gibberish-detector"]
64
- - repo: https://github.com/astral-sh/uv-pre-commit
65
- rev: 0.6.5
66
- hooks:
67
- - id: uv-lock
68
- - repo: local
69
- hooks:
70
- - id: nox
71
- name: nox
72
- entry: uv run nox
73
- language: system
74
- pass_filenames: false
75
- always_run: true
76
- verbose: true
@@ -1 +0,0 @@
1
- 3.11
@@ -1,36 +0,0 @@
1
- # Read the Docs configuration file for OE Python Template
2
- # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
3
-
4
- # Required
5
- version: 2
6
-
7
- # Don't publish the docs if there are any warnings, as they might be relevant
8
- # https://github.com/readthedocs/readthedocs.org/issues/6837#issuecomment-607229633
9
- sphinx:
10
- builder: html
11
- configuration: docs/source/conf.py
12
- fail_on_warning: true
13
-
14
- # Formats of the documentation to be built
15
- formats:
16
- - htmlzip
17
- - pdf
18
-
19
- # Build configuration
20
- # We use Ubuntu 22.04 with Python 3.12 and set up uv as package manager
21
- # for faster and more reliable dependency installation
22
- build:
23
- os: ubuntu-22.04
24
- tools:
25
- python: "3.12"
26
- apt_packages:
27
- - imagemagick
28
- jobs:
29
- install:
30
- - asdf plugin add uv
31
- - asdf install uv latest
32
- - asdf global uv latest
33
- - echo $READTHEDOCS_VIRTUALENV_PATH
34
- - uv venv $READTHEDOCS_VIRTUALENV_PATH
35
- - . ${READTHEDOCS_VIRTUALENV_PATH}/bin/activate
36
- - UV_PROJECT_ENVIRONMENT=$READTHEDOCS_VIRTUALENV_PATH uv sync --frozen --all-extras