From b664bc0a8a185c4f42f0140824921072cd02d882 Mon Sep 17 00:00:00 2001 From: Nico Loesch Date: Thu, 23 Jul 2026 02:39:04 +0000 Subject: [PATCH 1/3] Widen sibling dependency pins to semver ranges, add lowest-direct CI and Dependabot --- .github/dependabot.yml | 11 +++++++++++ .github/workflows/ci.yml | 13 +++++++++++++ pyproject.toml | 4 ++-- 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..8d80f25 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +version: 2 +updates: + - package-ecosystem: "uv" + directory: "/" + schedule: + interval: "weekly" + versioning-strategy: "lockfile-only" + labels: + - "dependencies" + allow: + - dependency-name: "oa-configurator" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c6a8d47..3a403ba 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,3 +18,16 @@ jobs: --test-user test \ --test-password test \ --test-database-name orm_loader_test + build-test-lowest-direct: + uses: AustralianCancerDataNetwork/cava-devops/.github/workflows/build-test-postgres.yml@main + with: + postgres-db: orm_loader_test + resolution: lowest-direct + setup-commands: | + uv run omop-config configure orm_loader \ + --test-dialect postgresql+psycopg \ + --test-host localhost \ + --test-port 5432 \ + --test-user test \ + --test-password test \ + --test-database-name orm_loader_test diff --git a/pyproject.toml b/pyproject.toml index a92d203..389e11c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ authors = [ requires-python = ">=3.12" dependencies = [ "chardet>=5.2.0", - "oa-configurator==0.1.2", + "oa-configurator>=0.1.2,<1.0.0", "pandas>=2.3.3", "pyarrow>=23.0.1", "sqlalchemy>=2.0.45", @@ -49,7 +49,7 @@ postgres = [ "psycopg[binary]>=3.2", ] dev = [ - "oa-configurator[postgres]==0.1.2", + "oa-configurator[postgres]>=0.1.2,<1.0.0", "pytest>=9.0.3", "ty>=0.0.59", "ruff>=0.14.11", From a9484d809adb7d6757655a67b5fe20b42ce3c3a4 Mon Sep 17 00:00:00 2001 From: Nico Loesch Date: Thu, 23 Jul 2026 03:51:09 +0000 Subject: [PATCH 2/3] Update uv.lock file --- uv.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/uv.lock b/uv.lock index aa5f456..b06c3c6 100644 --- a/uv.lock +++ b/uv.lock @@ -615,8 +615,8 @@ requires-dist = [ { name = "mkdocs-material", marker = "extra == 'dev'", specifier = ">=9.7.1" }, { name = "mkdocs-mermaid2-plugin", marker = "extra == 'dev'" }, { name = "mkdocstrings-python", marker = "extra == 'dev'", specifier = ">=2.0.1" }, - { name = "oa-configurator", specifier = "==0.1.2" }, - { name = "oa-configurator", extras = ["postgres"], marker = "extra == 'dev'", specifier = "==0.1.2" }, + { name = "oa-configurator", specifier = ">=0.1.2,<1.0.0" }, + { name = "oa-configurator", extras = ["postgres"], marker = "extra == 'dev'", specifier = ">=0.1.2,<1.0.0" }, { name = "pandas", specifier = ">=2.3.3" }, { name = "psycopg", extras = ["binary"], marker = "extra == 'postgres'", specifier = ">=3.2" }, { name = "pyarrow", specifier = ">=23.0.1" }, From 139ed9204540362675dd1dcd1730ddd5c33d5735 Mon Sep 17 00:00:00 2001 From: Nico Loesch Date: Fri, 24 Jul 2026 06:03:40 +0000 Subject: [PATCH 3/3] Update to new cava-devops, pre-commit hooks --- .githooks/pre-commit | 37 +++++++++++++++++++++++++++++++++++++ .github/dependabot.yml | 11 ----------- .github/workflows/ci.yml | 13 ------------- 3 files changed, 37 insertions(+), 24 deletions(-) create mode 100755 .githooks/pre-commit delete mode 100644 .github/dependabot.yml diff --git a/.githooks/pre-commit b/.githooks/pre-commit new file mode 100755 index 0000000..398202d --- /dev/null +++ b/.githooks/pre-commit @@ -0,0 +1,37 @@ +#!/usr/bin/env bash +# Canonical CAVA pre-commit hook: keeps uv.lock in sync with pyproject.toml. +# +# If pyproject.toml is staged, finds the specific dependency line(s) that +# changed (added, removed, or had their version spec edited) and refreshes +# only those packages in uv.lock via `uv lock --upgrade-package`. Does not +# touch any other package -- this is a targeted sync, not a blanket +# `uv lock`, so it never pulls in an unrelated upstream release. +set -euo pipefail + +if ! git diff --cached --name-only | grep -q '^pyproject\.toml$'; then + exit 0 +fi + +if ! command -v uv >/dev/null 2>&1; then + echo "pre-commit: uv not found on PATH, skipping uv.lock sync" >&2 + exit 0 +fi + +changed_names=$(git diff --cached -- pyproject.toml \ + | grep -E '^[+-]\s*"[A-Za-z0-9][A-Za-z0-9._-]*' \ + | sed -E 's/^[+-]\s*"([A-Za-z0-9][A-Za-z0-9._-]*).*/\1/' \ + | sort -u) + +if [ -z "$changed_names" ]; then + exit 0 +fi + +upgrade_args=() +while IFS= read -r name; do + upgrade_args+=(--upgrade-package "$name") +done <<< "$changed_names" + +echo "pre-commit: syncing uv.lock for changed dependencies:" +echo "$changed_names" | sed 's/^/ - /' +uv lock "${upgrade_args[@]}" +git add uv.lock diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 8d80f25..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,11 +0,0 @@ -version: 2 -updates: - - package-ecosystem: "uv" - directory: "/" - schedule: - interval: "weekly" - versioning-strategy: "lockfile-only" - labels: - - "dependencies" - allow: - - dependency-name: "oa-configurator" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3a403ba..c6a8d47 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,16 +18,3 @@ jobs: --test-user test \ --test-password test \ --test-database-name orm_loader_test - build-test-lowest-direct: - uses: AustralianCancerDataNetwork/cava-devops/.github/workflows/build-test-postgres.yml@main - with: - postgres-db: orm_loader_test - resolution: lowest-direct - setup-commands: | - uv run omop-config configure orm_loader \ - --test-dialect postgresql+psycopg \ - --test-host localhost \ - --test-port 5432 \ - --test-user test \ - --test-password test \ - --test-database-name orm_loader_test