oe-python-template-example 0.0.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_example-0.0.1/.act-env +2 -0
- oe_python_template_example-0.0.1/.act-secret +1 -0
- oe_python_template_example-0.0.1/.copier-answers.yml +21 -0
- oe_python_template_example-0.0.1/.devcontainer/Dockerfile +7 -0
- oe_python_template_example-0.0.1/.devcontainer/devcontainer.json +52 -0
- oe_python_template_example-0.0.1/.devcontainer/onCreateCommand +9 -0
- oe_python_template_example-0.0.1/.devcontainer/postAttachCommand +4 -0
- oe_python_template_example-0.0.1/.devcontainer/postCreateCommand +4 -0
- oe_python_template_example-0.0.1/.env.example +1 -0
- oe_python_template_example-0.0.1/.github/workflows/docker-image-build-publish.yml +74 -0
- oe_python_template_example-0.0.1/.github/workflows/package-build-publish-release.yml +61 -0
- oe_python_template_example-0.0.1/.github/workflows/test-and-report.yml +113 -0
- oe_python_template_example-0.0.1/.gitignore +72 -0
- oe_python_template_example-0.0.1/.pre-commit-config.yaml +60 -0
- oe_python_template_example-0.0.1/.python-version +1 -0
- oe_python_template_example-0.0.1/.readthedocs.yml +36 -0
- oe_python_template_example-0.0.1/.secrets.baseline +127 -0
- oe_python_template_example-0.0.1/.vscode/extensions.json +28 -0
- oe_python_template_example-0.0.1/.vscode/settings.json +75 -0
- oe_python_template_example-0.0.1/CHANGELOG.md +0 -0
- oe_python_template_example-0.0.1/CODEOWNERS +3 -0
- oe_python_template_example-0.0.1/CONTRIBUTING.md +120 -0
- oe_python_template_example-0.0.1/Dockerfile +39 -0
- oe_python_template_example-0.0.1/LICENSE +21 -0
- oe_python_template_example-0.0.1/PKG-INFO +288 -0
- oe_python_template_example-0.0.1/README.md +229 -0
- oe_python_template_example-0.0.1/SERVICE_CONNECTIONS.md +62 -0
- oe_python_template_example-0.0.1/VERSION +1 -0
- oe_python_template_example-0.0.1/_readme_footer.md +15 -0
- oe_python_template_example-0.0.1/_readme_header.md +29 -0
- oe_python_template_example-0.0.1/_readme_main.md +181 -0
- oe_python_template_example-0.0.1/bump +3 -0
- oe_python_template_example-0.0.1/codecov.yml +11 -0
- oe_python_template_example-0.0.1/compose.yaml +13 -0
- oe_python_template_example-0.0.1/docs/Makefile +20 -0
- oe_python_template_example-0.0.1/docs/make.bat +35 -0
- oe_python_template_example-0.0.1/docs/source/_static/.keep +0 -0
- oe_python_template_example-0.0.1/docs/source/conf.py +124 -0
- oe_python_template_example-0.0.1/docs/source/contributing.rst +1 -0
- oe_python_template_example-0.0.1/docs/source/index.rst +36 -0
- oe_python_template_example-0.0.1/docs/source/latexmkrc +11 -0
- oe_python_template_example-0.0.1/docs/source/main.rst +2 -0
- oe_python_template_example-0.0.1/docs/source/reference.rst +5 -0
- oe_python_template_example-0.0.1/docs/source/release-notes.rst +4 -0
- oe_python_template_example-0.0.1/examples/__init__.py +1 -0
- oe_python_template_example-0.0.1/examples/notebook.ipynb +46 -0
- oe_python_template_example-0.0.1/examples/notebook.py +18 -0
- oe_python_template_example-0.0.1/examples/script.py +13 -0
- oe_python_template_example-0.0.1/examples/streamlit.py +30 -0
- oe_python_template_example-0.0.1/github-action-run +4 -0
- oe_python_template_example-0.0.1/latexmkrc +11 -0
- oe_python_template_example-0.0.1/logo.png +0 -0
- oe_python_template_example-0.0.1/noxfile.py +113 -0
- oe_python_template_example-0.0.1/pyproject.toml +360 -0
- oe_python_template_example-0.0.1/sonar-project.properties +12 -0
- oe_python_template_example-0.0.1/src/oe_python_template_example/__init__.py +15 -0
- oe_python_template_example-0.0.1/src/oe_python_template_example/cli.py +55 -0
- oe_python_template_example-0.0.1/src/oe_python_template_example/constants.py +10 -0
- oe_python_template_example-0.0.1/src/oe_python_template_example/service.py +25 -0
- oe_python_template_example-0.0.1/tests/__init__.py +1 -0
- oe_python_template_example-0.0.1/tests/cli_test.py +39 -0
- oe_python_template_example-0.0.1/tests/fixtures/.keep +0 -0
- oe_python_template_example-0.0.1/uv.lock +3939 -0
@@ -0,0 +1 @@
|
|
1
|
+
ACTIONS_RUNTIME_TOKEN=TOKEN
|
@@ -0,0 +1,21 @@
|
|
1
|
+
_commit: v0.1.4-1-g94fa56b
|
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_image_name: oe-python-template-example
|
7
|
+
docker_io_owner: helmut-hoffer-von-ankershoffen
|
8
|
+
github_repository_name: oe-python-template-example
|
9
|
+
github_repository_owner: helmut-hoffer-von-ankershoffen
|
10
|
+
github_repository_url_https: https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example
|
11
|
+
github_repository_url_ssh: git@github.com:helmut-hoffer-von-ankershoffen/oe-python-template-example.git
|
12
|
+
org_email: helmuthva@gmail.com
|
13
|
+
org_name: Helmut Hoffer von Ankershoffen
|
14
|
+
project_description: Example project scaffolded and kept up to date with OE Python
|
15
|
+
Template (oe-python-template).
|
16
|
+
project_icon: ðŸ§
|
17
|
+
project_name: OE Python Template Example
|
18
|
+
pypi_distribution_name: oe-python-template-example
|
19
|
+
readthedocs_project_key: oe-python-template-example
|
20
|
+
sonarqube_key: helmut-hoffer-von-ankershoffen_oe-python-template-example
|
21
|
+
streamlit_project_key: oe-python-template-example
|
@@ -0,0 +1,7 @@
|
|
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/*
|
@@ -0,0 +1,52 @@
|
|
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
|
+
"elagil.pre-commit-helper",
|
25
|
+
"fill-labs.dependi",
|
26
|
+
"github.vscode-github-actions",
|
27
|
+
"github.copilot",
|
28
|
+
"github.copilot-chat",
|
29
|
+
"gruntfuggly.todo-tree",
|
30
|
+
"joshrmosier.streamlit-runner",
|
31
|
+
"kaih2o.python-resource-monitor",
|
32
|
+
"marimo-team.vscode-marimo",
|
33
|
+
"mikestead.dotenv",
|
34
|
+
"ms-azuretools.vscode-docker",
|
35
|
+
"ms-python.debugpy",
|
36
|
+
"ms-python.python",
|
37
|
+
"ms-python.vscode-pylance",
|
38
|
+
"ms-toolsai.jupyter",
|
39
|
+
"oderwat.indent-rainbow",
|
40
|
+
"samuelcolvin.jinjahtml",
|
41
|
+
"sonarsource.sonarlint-vscode",
|
42
|
+
"tamasfe.even-better-toml",
|
43
|
+
"tomoki1207.pdf",
|
44
|
+
"wayou.vscode-todo-highlight"
|
45
|
+
]
|
46
|
+
}
|
47
|
+
},
|
48
|
+
"mounts": [
|
49
|
+
"source=${localEnv:HOME}/.ssh,target=/home/vscode/.ssh,type=bind,consistency=cached"
|
50
|
+
],
|
51
|
+
"forwardPorts": []
|
52
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
THE_KEY=A value
|
@@ -0,0 +1,74 @@
|
|
1
|
+
name: "Build and publish Docker image to docker.io and ghcr.io"
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
tags:
|
6
|
+
- "v*.*.*"
|
7
|
+
|
8
|
+
env:
|
9
|
+
REGISTRY: docker.io
|
10
|
+
IMAGE_NAME: helmut-hoffer-von-ankershoffen/oe-python-template-example
|
11
|
+
|
12
|
+
|
13
|
+
jobs:
|
14
|
+
docker_image_build_publish:
|
15
|
+
runs-on: ubuntu-latest
|
16
|
+
permissions:
|
17
|
+
packages: write
|
18
|
+
contents: read
|
19
|
+
attestations: write
|
20
|
+
id-token: write
|
21
|
+
steps:
|
22
|
+
- name: Checkout
|
23
|
+
uses: actions/checkout@v4
|
24
|
+
|
25
|
+
- name: Set up QEMU
|
26
|
+
uses: docker/setup-qemu-action@v3
|
27
|
+
|
28
|
+
- name: Set up Docker Buildx
|
29
|
+
uses: docker/setup-buildx-action@v3
|
30
|
+
|
31
|
+
- name: Log in to Docker Hub
|
32
|
+
uses: docker/login-action@v3
|
33
|
+
with:
|
34
|
+
username: ${{ secrets.DOCKER_USERNAME }}
|
35
|
+
password: ${{ secrets.DOCKER_PASSWORD }}
|
36
|
+
|
37
|
+
- name: Log in to GitHub container registry
|
38
|
+
uses: docker/login-action@v3
|
39
|
+
with:
|
40
|
+
registry: ghcr.io
|
41
|
+
username: ${{ github.actor }}
|
42
|
+
password: ${{ secrets.GITHUB_TOKEN }}
|
43
|
+
- name: Extract metadata (tags, labels) for Docker
|
44
|
+
id: meta
|
45
|
+
uses: docker/metadata-action@v5
|
46
|
+
with:
|
47
|
+
images: |
|
48
|
+
${{ env.IMAGE_NAME }}
|
49
|
+
ghcr.io/${{ github.repository }}
|
50
|
+
tags: |
|
51
|
+
# set latest tag for releases
|
52
|
+
type=raw,value=latest
|
53
|
+
# set semver tags from git tags (v1.2.3 -> 1.2.3, 1.2, 1)
|
54
|
+
type=semver,pattern={{version}}
|
55
|
+
type=semver,pattern={{major}}.{{minor}}
|
56
|
+
type=semver,pattern={{major}}
|
57
|
+
|
58
|
+
- name: Build and push Docker image
|
59
|
+
id: push
|
60
|
+
uses: docker/build-push-action@v6
|
61
|
+
with:
|
62
|
+
context: .
|
63
|
+
file: ./Dockerfile
|
64
|
+
platforms: linux/amd64,linux/arm64
|
65
|
+
push: true
|
66
|
+
tags: ${{ steps.meta.outputs.tags }}
|
67
|
+
labels: ${{ steps.meta.outputs.labels }}
|
68
|
+
|
69
|
+
- name: Generate artifact attestation
|
70
|
+
uses: actions/attest-build-provenance@v2
|
71
|
+
with:
|
72
|
+
subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
73
|
+
subject-digest: ${{ steps.push.outputs.digest }}
|
74
|
+
push-to-registry: true
|
@@ -0,0 +1,61 @@
|
|
1
|
+
name: "Build package, publish to PyPI, create GitHub release"
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
tags:
|
6
|
+
- "v*.*.*"
|
7
|
+
|
8
|
+
permissions:
|
9
|
+
contents: write
|
10
|
+
packages: read
|
11
|
+
|
12
|
+
jobs:
|
13
|
+
package_build_publish_release:
|
14
|
+
environment: release
|
15
|
+
runs-on: ubuntu-latest
|
16
|
+
|
17
|
+
steps:
|
18
|
+
- name: Checkout
|
19
|
+
uses: actions/checkout@v4
|
20
|
+
with:
|
21
|
+
fetch-depth: 0
|
22
|
+
|
23
|
+
- name: Generate release notes
|
24
|
+
uses: orhun/git-cliff-action@v4
|
25
|
+
id: git-cliff
|
26
|
+
with:
|
27
|
+
config: pyproject.toml
|
28
|
+
args: --verbose
|
29
|
+
env:
|
30
|
+
OUTPUT: RELEASE_NOTES.md
|
31
|
+
GITHUB_REPO: ${{ github.repository }}
|
32
|
+
|
33
|
+
- name: Print the release notes
|
34
|
+
run: cat "${{ steps.git-cliff.outputs.changelog }}"
|
35
|
+
|
36
|
+
|
37
|
+
- name: Install uv
|
38
|
+
uses: astral-sh/setup-uv@v5
|
39
|
+
with:
|
40
|
+
version: "0.5.9"
|
41
|
+
cache-dependency-glob: uv.lock
|
42
|
+
enable-cache: true
|
43
|
+
|
44
|
+
- name: Build package into dist/
|
45
|
+
run: uv build
|
46
|
+
|
47
|
+
- name: Publish package to PyPI
|
48
|
+
run: uv publish -t ${{ secrets.UV_PUBLISH_TOKEN }}
|
49
|
+
|
50
|
+
- name: Create GitHub release
|
51
|
+
env:
|
52
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
53
|
+
run: |
|
54
|
+
gh release create ${{ github.ref_name }} ./dist/* --notes-file ${{ steps.git-cliff.outputs.changelog }}
|
55
|
+
|
56
|
+
- name: Allow other workflows to trigger on release
|
57
|
+
env:
|
58
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
59
|
+
run: |
|
60
|
+
gh api repos/helmut-hoffer-von-ankershoffen/oe-python-template-example/dispatches \
|
61
|
+
-f event_type=release_created_programatically
|
@@ -0,0 +1,113 @@
|
|
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
|
+
steps:
|
14
|
+
- name: Checkout
|
15
|
+
uses: actions/checkout@v4
|
16
|
+
with:
|
17
|
+
fetch-depth: 0
|
18
|
+
|
19
|
+
- name: Install dependencies
|
20
|
+
run: |
|
21
|
+
sudo apt-get update && sudo apt-get install -y libcairo2
|
22
|
+
|
23
|
+
- name: Install dev tools
|
24
|
+
run: |
|
25
|
+
sudo apt-get install -y curl jq xsltproc gnupg2 libcairo2
|
26
|
+
|
27
|
+
- name: Install uv (python package manager)
|
28
|
+
uses: astral-sh/setup-uv@v5
|
29
|
+
with:
|
30
|
+
version: "0.5.9"
|
31
|
+
enable-cache: true
|
32
|
+
cache-dependency-glob: uv.lock
|
33
|
+
|
34
|
+
- uses: actions/setup-node@v4
|
35
|
+
with:
|
36
|
+
node-version: 18
|
37
|
+
- run: npm install @modelcontextprotocol/inspector@0.3.0
|
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: s${{ !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@v2.0
|
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-example --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-example 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@v4
|
84
|
+
if: ${{ always() && (env.GITLAB_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@v5
|
98
|
+
if: ${{ !cancelled() && (env.GITLAB_WORKFLOW_RUNTIME != 'ACT') }}
|
99
|
+
with:
|
100
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
101
|
+
slug: helmut-hoffer-von-ankershoffen/oe-python-template-example
|
102
|
+
|
103
|
+
- name: Upload test results to Codecov
|
104
|
+
if: ${{ !cancelled() && (env.GITLAB_WORKFLOW_RUNTIME != 'ACT') }}
|
105
|
+
uses: codecov/test-results-action@v1
|
106
|
+
with:
|
107
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
108
|
+
- name: SonarQube Scan
|
109
|
+
if: ${{ !cancelled() && (env.GITLAB_WORKFLOW_RUNTIME != 'ACT') }}
|
110
|
+
uses: SonarSource/sonarqube-scan-action@v4
|
111
|
+
env:
|
112
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
113
|
+
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# .gitignore of project OE Python Template Example
|
2
|
+
|
3
|
+
# Environment
|
4
|
+
.env
|
5
|
+
.env.backup
|
6
|
+
.env.bak
|
7
|
+
ENV/
|
8
|
+
env/
|
9
|
+
.envrc
|
10
|
+
|
11
|
+
# Python virtual environment
|
12
|
+
venv/
|
13
|
+
.venv/
|
14
|
+
|
15
|
+
# Python temps
|
16
|
+
*.py[cdo]
|
17
|
+
__pycache__/
|
18
|
+
*.so
|
19
|
+
*.egg
|
20
|
+
*.egg-info/
|
21
|
+
*.log
|
22
|
+
dist/
|
23
|
+
build/
|
24
|
+
eggs/
|
25
|
+
parts/
|
26
|
+
sdist/
|
27
|
+
develop-eggs/
|
28
|
+
.installed.cfg
|
29
|
+
.Python
|
30
|
+
.pytest_cache/
|
31
|
+
.ruff_cache/
|
32
|
+
.nox
|
33
|
+
.dmypy.json
|
34
|
+
.mypy_cache/
|
35
|
+
|
36
|
+
|
37
|
+
# Build Artefacts
|
38
|
+
junit.xml
|
39
|
+
.coverage*
|
40
|
+
coverage.xml
|
41
|
+
coverage_html/
|
42
|
+
vulnerabilities.json
|
43
|
+
licenses.json
|
44
|
+
licenses-inverted.json
|
45
|
+
sbom.json
|
46
|
+
|
47
|
+
# IDE
|
48
|
+
.idea/
|
49
|
+
*.swp
|
50
|
+
*.swo
|
51
|
+
|
52
|
+
# macOS
|
53
|
+
.DS_Store
|
54
|
+
|
55
|
+
# Other OS
|
56
|
+
lib/
|
57
|
+
lib64/
|
58
|
+
|
59
|
+
# Data
|
60
|
+
var/
|
61
|
+
tmp/
|
62
|
+
|
63
|
+
# Node temps
|
64
|
+
node_modules/
|
65
|
+
|
66
|
+
# AI workflow
|
67
|
+
.fixme
|
68
|
+
|
69
|
+
# Copier
|
70
|
+
*.rej
|
71
|
+
|
72
|
+
# Application specific
|
@@ -0,0 +1,60 @@
|
|
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: https://github.com/pre-commit/pre-commit-hooks
|
10
|
+
rev: v5.0.0
|
11
|
+
hooks:
|
12
|
+
- id: check-added-large-files
|
13
|
+
- id: check-case-conflict
|
14
|
+
- id: check-illegal-windows-names
|
15
|
+
- id: check-merge-conflict
|
16
|
+
args: ["--assume-in-merge"]
|
17
|
+
- id: check-shebang-scripts-are-executable
|
18
|
+
- id: check-symlinks
|
19
|
+
- id: check-toml
|
20
|
+
- id: check-xml
|
21
|
+
- id: check-yaml
|
22
|
+
exclude: |
|
23
|
+
(?x)^(
|
24
|
+
test.*|
|
25
|
+
mkdocs.yml
|
26
|
+
)$
|
27
|
+
args: [--allow-multiple-documents]
|
28
|
+
- id: debug-statements
|
29
|
+
- id: destroyed-symlinks
|
30
|
+
- id: detect-private-key
|
31
|
+
- id: end-of-file-fixer
|
32
|
+
exclude: "^tests/fixtures/|.json$"
|
33
|
+
- id: fix-byte-order-marker
|
34
|
+
- id: fix-encoding-pragma
|
35
|
+
args: ["--remove"]
|
36
|
+
- id: mixed-line-ending
|
37
|
+
- id: name-tests-test
|
38
|
+
- id: requirements-txt-fixer
|
39
|
+
- id: trailing-whitespace
|
40
|
+
- repo: https://github.com/Yelp/detect-secrets
|
41
|
+
rev: v1.5.0
|
42
|
+
hooks:
|
43
|
+
- id: detect-secrets
|
44
|
+
args: ['--baseline', '.secrets.baseline']
|
45
|
+
additional_dependencies: ["gibberish-detector"]
|
46
|
+
exclude: package.lock.json
|
47
|
+
- repo: https://github.com/astral-sh/uv-pre-commit
|
48
|
+
# uv version.
|
49
|
+
rev: 0.5.8
|
50
|
+
hooks:
|
51
|
+
- id: uv-lock
|
52
|
+
- repo: local
|
53
|
+
hooks:
|
54
|
+
- id: nox
|
55
|
+
name: nox
|
56
|
+
entry: uv run nox
|
57
|
+
language: system
|
58
|
+
pass_filenames: false
|
59
|
+
always_run: true
|
60
|
+
verbose: true
|
@@ -0,0 +1 @@
|
|
1
|
+
3.11
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# Read the Docs configuration file for OE Python Template Example
|
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
|
@@ -0,0 +1,127 @@
|
|
1
|
+
{
|
2
|
+
"version": "1.5.0",
|
3
|
+
"plugins_used": [
|
4
|
+
{
|
5
|
+
"name": "ArtifactoryDetector"
|
6
|
+
},
|
7
|
+
{
|
8
|
+
"name": "AWSKeyDetector"
|
9
|
+
},
|
10
|
+
{
|
11
|
+
"name": "AzureStorageKeyDetector"
|
12
|
+
},
|
13
|
+
{
|
14
|
+
"name": "Base64HighEntropyString",
|
15
|
+
"limit": 4.5
|
16
|
+
},
|
17
|
+
{
|
18
|
+
"name": "BasicAuthDetector"
|
19
|
+
},
|
20
|
+
{
|
21
|
+
"name": "CloudantDetector"
|
22
|
+
},
|
23
|
+
{
|
24
|
+
"name": "DiscordBotTokenDetector"
|
25
|
+
},
|
26
|
+
{
|
27
|
+
"name": "GitHubTokenDetector"
|
28
|
+
},
|
29
|
+
{
|
30
|
+
"name": "GitLabTokenDetector"
|
31
|
+
},
|
32
|
+
{
|
33
|
+
"name": "HexHighEntropyString",
|
34
|
+
"limit": 3.0
|
35
|
+
},
|
36
|
+
{
|
37
|
+
"name": "IbmCloudIamDetector"
|
38
|
+
},
|
39
|
+
{
|
40
|
+
"name": "IbmCosHmacDetector"
|
41
|
+
},
|
42
|
+
{
|
43
|
+
"name": "IPPublicDetector"
|
44
|
+
},
|
45
|
+
{
|
46
|
+
"name": "JwtTokenDetector"
|
47
|
+
},
|
48
|
+
{
|
49
|
+
"name": "KeywordDetector",
|
50
|
+
"keyword_exclude": ""
|
51
|
+
},
|
52
|
+
{
|
53
|
+
"name": "MailchimpDetector"
|
54
|
+
},
|
55
|
+
{
|
56
|
+
"name": "NpmDetector"
|
57
|
+
},
|
58
|
+
{
|
59
|
+
"name": "OpenAIDetector"
|
60
|
+
},
|
61
|
+
{
|
62
|
+
"name": "PrivateKeyDetector"
|
63
|
+
},
|
64
|
+
{
|
65
|
+
"name": "PypiTokenDetector"
|
66
|
+
},
|
67
|
+
{
|
68
|
+
"name": "SendGridDetector"
|
69
|
+
},
|
70
|
+
{
|
71
|
+
"name": "SlackDetector"
|
72
|
+
},
|
73
|
+
{
|
74
|
+
"name": "SoftlayerDetector"
|
75
|
+
},
|
76
|
+
{
|
77
|
+
"name": "SquareOAuthDetector"
|
78
|
+
},
|
79
|
+
{
|
80
|
+
"name": "StripeDetector"
|
81
|
+
},
|
82
|
+
{
|
83
|
+
"name": "TelegramBotTokenDetector"
|
84
|
+
},
|
85
|
+
{
|
86
|
+
"name": "TwilioKeyDetector"
|
87
|
+
}
|
88
|
+
],
|
89
|
+
"filters_used": [
|
90
|
+
{
|
91
|
+
"path": "detect_secrets.filters.allowlist.is_line_allowlisted"
|
92
|
+
},
|
93
|
+
{
|
94
|
+
"path": "detect_secrets.filters.common.is_ignored_due_to_verification_policies",
|
95
|
+
"min_level": 2
|
96
|
+
},
|
97
|
+
{
|
98
|
+
"path": "detect_secrets.filters.heuristic.is_indirect_reference"
|
99
|
+
},
|
100
|
+
{
|
101
|
+
"path": "detect_secrets.filters.heuristic.is_likely_id_string"
|
102
|
+
},
|
103
|
+
{
|
104
|
+
"path": "detect_secrets.filters.heuristic.is_lock_file"
|
105
|
+
},
|
106
|
+
{
|
107
|
+
"path": "detect_secrets.filters.heuristic.is_not_alphanumeric_string"
|
108
|
+
},
|
109
|
+
{
|
110
|
+
"path": "detect_secrets.filters.heuristic.is_potential_uuid"
|
111
|
+
},
|
112
|
+
{
|
113
|
+
"path": "detect_secrets.filters.heuristic.is_prefixed_with_dollar_sign"
|
114
|
+
},
|
115
|
+
{
|
116
|
+
"path": "detect_secrets.filters.heuristic.is_sequential_string"
|
117
|
+
},
|
118
|
+
{
|
119
|
+
"path": "detect_secrets.filters.heuristic.is_swagger_file"
|
120
|
+
},
|
121
|
+
{
|
122
|
+
"path": "detect_secrets.filters.heuristic.is_templated_secret"
|
123
|
+
}
|
124
|
+
],
|
125
|
+
"results": {},
|
126
|
+
"generated_at": "2025-03-02T16:57:43Z"
|
127
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
{
|
2
|
+
"recommendations": [
|
3
|
+
"charliermarsh.ruff",
|
4
|
+
"codecov.codecov",
|
5
|
+
"donjayamanne.python-environment-manager",
|
6
|
+
"elagil.pre-commit-helper",
|
7
|
+
"fill-labs.dependi",
|
8
|
+
"github.vscode-github-actions",
|
9
|
+
"github.copilot",
|
10
|
+
"github.copilot-chat",
|
11
|
+
"gruntfuggly.todo-tree",
|
12
|
+
"joshrmosier.streamlit-runner",
|
13
|
+
"kaih2o.python-resource-monitor",
|
14
|
+
"marimo-team.vscode-marimo",
|
15
|
+
"mikestead.dotenv",
|
16
|
+
"ms-azuretools.vscode-docker",
|
17
|
+
"ms-python.debugpy",
|
18
|
+
"ms-python.python",
|
19
|
+
"ms-python.vscode-pylance",
|
20
|
+
"ms-toolsai.jupyter",
|
21
|
+
"oderwat.indent-rainbow",
|
22
|
+
"samuelcolvin.jinjahtml",
|
23
|
+
"sonarsource.sonarlint-vscode",
|
24
|
+
"tamasfe.even-better-toml",
|
25
|
+
"tomoki1207.pdf",
|
26
|
+
"wayou.vscode-todo-highlight",
|
27
|
+
]
|
28
|
+
}
|