Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 0 additions & 29 deletions .copier-answers.yml

This file was deleted.

2 changes: 1 addition & 1 deletion .github/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ than copying), `track_progress`, `use_sticky_comment`. Model is
`claude-sonnet-4-5-20250929`.

**Setup**: installs `uv`, dev tools (`_install_dev_tools.bash`),
`uv sync --all-extras --frozen`, headless display. Only secret available is
`uv sync --all-extras --locked`, headless display. Only secret available is
`ANTHROPIC_API_KEY` — Claude Code workflows intentionally have **no** platform
or GCP credentials.

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/_audit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:

- name: Install Python, venv and dependencies
shell: bash
run: uv sync --all-extras --frozen --link-mode=copy
run: uv sync --all-extras --locked --link-mode=copy

- name: Audit
shell: bash
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/_claude-code.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ jobs:

- name: Install Python, venv and dependencies
shell: bash
run: uv sync --all-extras --frozen --link-mode=copy
run: uv sync --all-extras --locked --link-mode=copy

- name: Setup display
uses: pyvista/setup-headless-display-action@10e6efb97af3cd1523828f0e22c39f0e4567f3e4 # v5.2
Expand All @@ -72,7 +72,7 @@ jobs:
if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
shell: bash
run: |
TOML_VERSION=$(uv run --frozen python -c "import tomli; print(tomli.load(open('pyproject.toml', 'rb'))['project']['version'])")
TOML_VERSION=$(uv run --locked python -c "import tomli; print(tomli.load(open('pyproject.toml', 'rb'))['project']['version'])")
echo "Development build - Current version in pyproject.toml: $TOML_VERSION"

- name: Run Claude Code (Interactive Mode)
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/_docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:

- name: Install Python, venv and dependencies
shell: bash
run: uv sync --all-extras --frozen --link-mode=copy
run: uv sync --all-extras --locked --link-mode=copy

- name: Docs
shell: bash
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/_lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:

- name: Install Python, venv and dependencies
shell: bash
run: uv sync --all-extras --frozen --link-mode=copy
run: uv sync --all-extras --locked --link-mode=copy

- name: Lint
shell: bash
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/_package-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,12 +61,12 @@ jobs:

- name: Install Python, venv and dependencies
shell: bash
run: uv sync --all-extras --frozen --link-mode=copy
run: uv sync --all-extras --locked --link-mode=copy

- name: Validate installation
shell: bash
run: |
OUTPUT=$(uv run --frozen --all-extras --no-dev aignostics --help)
OUTPUT=$(uv run --locked --all-extras --no-dev aignostics --help)
if [[ "$OUTPUT" != *"built with love in Berlin"* ]]; then
echo "Output does not contain 'built with love in Berlin'"
exit 1
Expand Down Expand Up @@ -149,7 +149,7 @@ jobs:
- name: Final smoke test
shell: bash
run: |
uv run --frozen --no-dev aignostics --help
uv run --locked --no-dev aignostics --help

- name: Docs
shell: bash
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/_scheduled-audit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:

- name: Install Python, venv and dependencies
shell: bash
run: uv sync --all-extras --frozen --link-mode=copy
run: uv sync --all-extras --locked --link-mode=copy

- name: Audit
shell: bash
Expand Down
18 changes: 9 additions & 9 deletions .github/workflows/_scheduled-test-daily.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ jobs:

- name: Install Python, venv and dependencies
shell: bash
run: uv sync --all-extras --frozen --link-mode=copy
run: uv sync --all-extras --locked --link-mode=copy

# Need xdisplay for testing QuPath app integration
- name: Setup display
Expand All @@ -76,7 +76,7 @@ jobs:
if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
shell: bash
run: |
TOML_VERSION=$(uv run --frozen python -c "import tomli; print(tomli.load(open('pyproject.toml', 'rb'))['project']['version'])")
TOML_VERSION=$(uv run --locked python -c "import tomli; print(tomli.load(open('pyproject.toml', 'rb'))['project']['version'])")
echo "Development build - Current version in pyproject.toml: $TOML_VERSION"

- name: Create .env file
Expand Down Expand Up @@ -108,7 +108,7 @@ jobs:
continue-on-error: true
shell: bash
run: |
OUTPUT=$(uv run --frozen --no-dev aignostics --help)
OUTPUT=$(uv run --locked --no-dev aignostics --help)
if [[ "$OUTPUT" != *"built with love in Berlin"* ]]; then
echo "Output does not contain 'built with love in Berlin'"
exit 1
Expand All @@ -119,12 +119,12 @@ jobs:
continue-on-error: true
shell: bash
run: |
uv run --frozen --no-dev aignostics --help
uv run --frozen --all-extras aignostics system info
uv run --frozen --all-extras aignostics system health
uv run --frozen --all-extras aignostics user whoami --mask-secrets
uv run --frozen --all-extras aignostics application list
uv run --frozen --all-extras aignostics application run list --verbose --limit 1
uv run --locked --no-dev aignostics --help
uv run --locked --all-extras aignostics system info
uv run --locked --all-extras aignostics system health
uv run --locked --all-extras aignostics user whoami --mask-secrets
uv run --locked --all-extras aignostics application list
uv run --locked --all-extras aignostics application run list --verbose --limit 1

- name: Test / Unit (multiple Python versions)
id: unit
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/_scheduled-test-hourly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ jobs:

- name: Install Python, venv and dependencies
shell: bash
run: uv sync --all-extras --frozen --link-mode=copy
run: uv sync --all-extras --locked --link-mode=copy

- name: Create .env file
uses: SpicyPizza/create-envfile@ace6d4f5d7802b600276c23ca417e669f1a06f6f # v2.0.3
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/_scheduled-test-stress.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ jobs:

- name: Install Python, venv and dependencies
shell: bash
run: uv sync --all-extras --frozen --link-mode=copy
run: uv sync --all-extras --locked --link-mode=copy

- name: Create .env file
uses: SpicyPizza/create-envfile@ace6d4f5d7802b600276c23ca417e669f1a06f6f # v2.0.3
Expand Down
20 changes: 10 additions & 10 deletions .github/workflows/_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ jobs:

- name: Install Python, venv and dependencies
shell: bash
run: uv sync --all-extras --frozen --link-mode=copy
run: uv sync --all-extras --locked --link-mode=copy

# Need xdisplay for testing QuPath app integration
- name: Setup display
Expand All @@ -102,7 +102,7 @@ jobs:
shell: bash
run: |
TAG_VERSION=${GITHUB_REF#refs/tags/v}
TOML_VERSION=$(uv run --frozen python -c "import tomli; print(tomli.load(open('pyproject.toml', 'rb'))['project']['version'])")
TOML_VERSION=$(uv run --locked python -c "import tomli; print(tomli.load(open('pyproject.toml', 'rb'))['project']['version'])")
if [ "$TAG_VERSION" != "$TOML_VERSION" ]; then
echo "Release version mismatch: Tag $TAG_VERSION != pyproject.toml $TOML_VERSION"
exit 1
Expand All @@ -112,7 +112,7 @@ jobs:
if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
shell: bash
run: |
TOML_VERSION=$(uv run --frozen python -c "import tomli; print(tomli.load(open('pyproject.toml', 'rb'))['project']['version'])")
TOML_VERSION=$(uv run --locked python -c "import tomli; print(tomli.load(open('pyproject.toml', 'rb'))['project']['version'])")
echo "Development build - Current version in pyproject.toml: $TOML_VERSION"

- name: Create .env file
Expand Down Expand Up @@ -142,7 +142,7 @@ jobs:
- name: Validate installation (single Python version)
shell: bash
run: |
OUTPUT=$(uv run --frozen --no-dev aignostics --help)
OUTPUT=$(uv run --locked --no-dev aignostics --help)
if [[ "$OUTPUT" != *"built with love in Berlin"* ]]; then
echo "Output does not contain 'built with love in Berlin'"
exit 1
Expand All @@ -151,12 +151,12 @@ jobs:
- name: Test / Smoke (single Python version)
shell: bash
run: |
uv run --frozen --no-dev aignostics --help
uv run --frozen --all-extras aignostics system info
uv run --frozen --all-extras aignostics system health
uv run --frozen --all-extras aignostics user whoami --mask-secrets
uv run --frozen --all-extras aignostics application list
uv run --frozen --all-extras aignostics application run list --verbose --limit 1
uv run --locked --no-dev aignostics --help
uv run --locked --all-extras aignostics system info
uv run --locked --all-extras aignostics system health
uv run --locked --all-extras aignostics user whoami --mask-secrets
uv run --locked --all-extras aignostics application list
uv run --locked --all-extras aignostics application run list --verbose --limit 1

# All test steps use continue-on-error: true so that every test suite
# always runs regardless of whether earlier suites failed. This ensures
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/prepare-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ jobs:
run: git checkout -b "${{ steps.version.outputs.branch_name }}"

- name: Bump version
run: uv run --frozen bump-my-version bump --new-version "${{ steps.version.outputs.new_version }}"
run: uv run --locked bump-my-version bump --new-version "${{ steps.version.outputs.new_version }}"

- name: Push release branch
run: git push -u origin "${{ steps.version.outputs.branch_name }}"
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/publish-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ jobs:
cache-dependency-glob: uv.lock

- name: Install dependencies
run: uv sync --frozen
run: uv sync --locked

- name: Read version info
id: version
Expand All @@ -105,9 +105,9 @@ jobs:
PREV_TAG="${{ steps.version.outputs.prev_tag }}"
TAG_NAME="${{ steps.version.outputs.tag_name }}"
if [ -n "$PREV_TAG" ]; then
uv run --frozen git-cliff --tag "$TAG_NAME" --prepend CHANGELOG.md "${PREV_TAG}..HEAD"
uv run --locked git-cliff --tag "$TAG_NAME" --prepend CHANGELOG.md "${PREV_TAG}..HEAD"
else
uv run --frozen git-cliff --tag "$TAG_NAME" --output CHANGELOG.md
uv run --locked git-cliff --tag "$TAG_NAME" --output CHANGELOG.md
fi

- name: Commit changelog
Expand Down
2 changes: 1 addition & 1 deletion .readthedocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,6 @@ build:
- asdf global uv latest
- echo $READTHEDOCS_VIRTUALENV_PATH
- . ${READTHEDOCS_VIRTUALENV_PATH}/bin/activate
- UV_PROJECT_ENVIRONMENT=$READTHEDOCS_VIRTUALENV_PATH uv sync --frozen --all-extras
- UV_PROJECT_ENVIRONMENT=$READTHEDOCS_VIRTUALENV_PATH uv sync --locked --all-extras
post_install:
- npm install -g --ignore-scripts @mermaid-js/mermaid-cli
8 changes: 0 additions & 8 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -214,14 +214,6 @@ Notes:
pinact run # See https://dev.to/suzukishunsuke/pin-github-actions-to-a-full-length-commit-sha-for-security-2n7p
```

## Update from Template

Update project to latest version of [oe-python-template](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template) template.

```shell
make update_from_template
```

## Custom Metadata

When submitting application runs to the Aignostics Platform, you can attach custom metadata to provide additional context, tracking information, or control flags. The SDK itself automatically attaches structured metadata to every run, which includes:
Expand Down
5 changes: 2 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ $(error Python version validation failed. See error message above.)
endif

# Define all PHONY targets
.PHONY: act all audit clean codegen dist dist_native docs gui_watch install lint lint_fix merge-release pre_commit_run_all prepare-release profile publish-release setup test test_coverage_reset test_default test_e2e test_e2e_matrix test_integration test_integration_matrix test_long_running test_scheduled test_stress test_sequential test_unit test_unit_matrix test_very_long_running update_from_template
.PHONY: act all audit clean codegen dist dist_native docs gui_watch install lint lint_fix merge-release pre_commit_run_all prepare-release profile publish-release setup test test_coverage_reset test_default test_e2e test_e2e_matrix test_integration test_integration_matrix test_long_running test_scheduled test_stress test_sequential test_unit test_unit_matrix test_very_long_running


# Main target i.e. default sessions defined in noxfile.py
Expand All @@ -47,7 +47,7 @@ else \
fi

## Individual Nox sessions
act audit dist docs lint lint_fix setup test update_from_template:
act audit dist docs lint lint_fix setup test:
$(nox-cmd)

# Standalone targets
Expand Down Expand Up @@ -247,6 +247,5 @@ help:
@echo " test_sequential - Run tests marked as sequential (python version defined in .python-version)"
@echo " test_scheduled - Run tests marked as scheduled (python version defined in .python-version)"
@echo " test_coverage_reset - Reset test coverage data"
@echo " update_from_template - Update from template using copier"
@echo ""
@echo "Built with love in Berlin 🐻"
2 changes: 1 addition & 1 deletion install.bash
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ LINUX_BREW_TOOLS=(
)

UV_TOOLS=(
"copier;copier;https://copier.readthedocs.io/;local"
# uv tools will be added here
)

PNPM_TOOLS=(
Expand Down
25 changes: 1 addition & 24 deletions noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
from pathlib import Path

import nox
import tomli
from nox.command import CommandFailed

nox.options.reuse_existing_virtualenvs = True
Expand Down Expand Up @@ -78,7 +77,7 @@ def _get_test_python_versions() -> list[str]:

def _setup_venv(session: nox.Session, all_extras: bool = True, no_dev: bool = False) -> None:
"""Install dependencies for the given session using uv."""
args = ["uv", "sync", "--frozen"]
args = ["uv", "sync", "--locked"]
if all_extras:
args.append("--all-extras")
if no_dev:
Expand Down Expand Up @@ -962,28 +961,6 @@ def setup(session: nox.Session) -> None:
session.run("git", "add", ".", external=True)


@nox.session(default=False)
def update_from_template(session: nox.Session) -> None:
"""Update from copier template."""
if Path("copier.yaml").is_file() or Path("copier.yml").is_file():
# Read the current version from pyproject.toml
with Path("pyproject.toml").open("rb") as f:
pyproject = tomli.load(f)
current_version = pyproject["tool"]["bumpversion"]["current_version"]
# In this case the project itself is the template
session.run("copier", "copy", "-r", "HEAD", ".", ".", "--force", "--trust", "--skip-tasks", external=True)
# Bump the version using the current version from pyproject.toml
session.run("bump-my-version", "replace", "--new-version", current_version, "--allow-dirty", external=True)
else:
# In this case the template has been generated from a template
session.run("copier", "update", "--trust", "--skip-answered", "--skip-tasks", external=True)

# Schedule the lint session to run after this session completes
session.notify("audit")
session.notify("docs")
session.notify("lint")


@nox.session(default=False)
def act(session: nox.Session) -> None:
"""Run GitHub Actions workflow locally with act."""
Expand Down
6 changes: 0 additions & 6 deletions renovate.json
Original file line number Diff line number Diff line change
Expand Up @@ -107,12 +107,6 @@

// ---- Repo rules: they deviate from the org config ----

// The template source uses the gh: form, which Renovate looks up as git-tags without release
// dates. The SDK takes no template updates, so the copier manager is off.
"copier": {
"enabled": false
},

"lockFileMaintenance": {
"enabled": true,
"schedule": ["before 5am on monday"]
Expand Down
Loading