Skip to content
Open
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
26 changes: 13 additions & 13 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,17 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0

- name: Set up Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
python-version: "3.12"
python-version: "3.15"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Keep CI coverage for the minimum supported Python

The workflows now test only Python 3.15, although the project supports Python >=3.12 and AGENTS.md records 3.12 as the CI target. This leaves regressions specific to the minimum supported runtime undetected; please retain 3.12 coverage or test both versions.

Prompt To Fix With AI
This is a comment left during a code review.
Path: .github/workflows/ci.yml
Line: 20

Comment:
**Keep CI coverage for the minimum supported Python**

The workflows now test only Python 3.15, although the project supports Python >=3.12 and AGENTS.md records 3.12 as the CI target. This leaves regressions specific to the minimum supported runtime undetected; please retain 3.12 coverage or test both versions.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

🟡 Minor · testing · Reply if this doesn't apply.


- name: Set up uv
uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0
with:
version: "0.11.22"
version: "0.13.7"

- name: Install dev dependencies
run: uv sync --frozen --group dev
Expand All @@ -41,17 +41,17 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0

- name: Set up Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
python-version: "3.12"
python-version: "3.15"

- name: Set up uv
uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0
with:
version: "0.11.22"
version: "0.13.7"

- name: Install dependencies
run: uv sync --frozen
Expand All @@ -64,17 +64,17 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0

- name: Set up Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
python-version: "3.12"
python-version: "3.15"

- name: Set up uv
uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0
with:
version: "0.11.22"
version: "0.13.7"

- name: Install Dragonfly
# The push delivery flows start their own bus, on the Dragonfly
Expand All @@ -101,7 +101,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0

- name: Build hosted HTTP image
run: docker build --build-arg PACKAGE_VERSION=0.0.0+ci -t appwrite-mcp:ci .
Expand All @@ -116,17 +116,17 @@ jobs:
APPWRITE_ENDPOINT: ${{ secrets.APPWRITE_ENDPOINT }}
steps:
- name: Check out code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0

- name: Set up Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
python-version: "3.12"
python-version: "3.15"

- name: Set up uv
uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0
with:
version: "0.11.22"
version: "0.13.7"

- name: Install dependencies
run: uv sync --frozen --extra integration
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/production.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the repo
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0

- name: Login to GitHub Container Registry
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
Expand Down Expand Up @@ -92,7 +92,7 @@ jobs:
repositories: ${{ env.DECLARATIVE_REPOSITORY }}

- name: Checkout ${{ env.DECLARATIVE_REPOSITORY }}
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
with:
repository: ${{ env.DECLARATIVE_OWNER }}/${{ env.DECLARATIVE_REPOSITORY }}
token: ${{ steps.app-token.outputs.token }}
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,14 @@ jobs:
contents: read
steps:
- name: Check out code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
with:
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
python-version: "3.12"
python-version: "3.15"

- name: Install build dependencies
run: |
Expand Down Expand Up @@ -64,14 +64,14 @@ jobs:
id-token: write
steps:
- name: Check out code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
with:
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
python-version: "3.12"
python-version: "3.15"

- name: Render MCP Registry metadata
run: |
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/staging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the repo
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0

- name: Login to GitHub Container Registry
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
Expand Down Expand Up @@ -74,7 +74,7 @@ jobs:
repositories: ${{ env.DECLARATIVE_REPOSITORY }}

- name: Checkout ${{ env.DECLARATIVE_REPOSITORY }}
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
with:
repository: ${{ env.DECLARATIVE_OWNER }}/${{ env.DECLARATIVE_REPOSITORY }}
token: ${{ steps.app-token.outputs.token }}
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/update-docs-index.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,20 +20,20 @@ jobs:
timeout-minutes: 30
steps:
- name: Check out code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
with:
ref: main
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
python-version: "3.12"
python-version: "3.15"

- name: Set up uv
uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0
with:
version: "0.11.22"
version: "0.13.7"

- name: Install dependencies
run: uv sync --frozen --group dev
Expand Down
2 changes: 1 addition & 1 deletion .python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.13
3.15
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM python:3.12-slim AS base
FROM python:3.15-slim@sha256:65a65fc7b30b06cb6df4930fd4650697cb23f4c2698ab81fc87e4b031bc36928 AS base

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Python 3.15 image cannot build locked cffi

The lockfile has no CPython 3.15 wheel for cffi 2.0.0, so this base image falls back to building its source distribution, but the slim image lacks the compiler and libffi headers required for that build. I reproduced the install failure with SETUPTOOLS_SCM_PRETEND_VERSION=0.0.0+ci uv sync --frozen --group dev, which failed compiling cffi because ffi.h was missing; the Dockerfile's uv sync --no-dev includes the same runtime dependency and will block image builds.

Prompt To Fix With AI
This is a comment left during a code review.
Path: Dockerfile
Line: 1

Comment:
**Python 3.15 image cannot build locked cffi**

The lockfile has no CPython 3.15 wheel for cffi 2.0.0, so this base image falls back to building its source distribution, but the slim image lacks the compiler and libffi headers required for that build. I reproduced the install failure with `SETUPTOOLS_SCM_PRETEND_VERSION=0.0.0+ci uv sync --frozen --group dev`, which failed compiling cffi because `ffi.h` was missing; the Dockerfile's `uv sync --no-dev` includes the same runtime dependency and will block image builds.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

🟠 Major · bug · Reply if this doesn't apply.


ENV PYTHONUNBUFFERED=1 \
UV_COMPILE_BYTECODE=1 \
Expand All @@ -9,7 +9,7 @@ WORKDIR /app
ARG PACKAGE_VERSION=0.0.0+docker
ENV SETUPTOOLS_SCM_PRETEND_VERSION=${PACKAGE_VERSION}

COPY --from=ghcr.io/astral-sh/uv:0.11.22 /uv /usr/local/bin/uv
COPY --from=ghcr.io/astral-sh/uv:0.13.8@sha256:5cc1805e2426484abca4ad46ea783bab281fdb225fd82d8ce6d66a81254bac85 /uv /usr/local/bin/uv

COPY pyproject.toml uv.lock README.md ./
COPY src ./src
Expand Down
2 changes: 1 addition & 1 deletion compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ services:
# Carries push events between replicas (MCP_EVENTS_PUSH), as in the cluster;
# any Redis-protocol server works. See docs/events.md.
dragonfly:
image: docker.dragonflydb.io/dragonflydb/dragonfly:v2.0.0
image: docker.dragonflydb.io/dragonflydb/dragonfly:v2.1.0
command: ["dragonfly", "--logtostderr", "--dbfilename=", "--proactor_threads=2"]
healthcheck:
test: ["CMD", "redis-cli", "ping"]
Expand Down
6 changes: 3 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ integration = [
[dependency-groups]
dev = [
"black==26.10.1",
"ruff==0.15.18",
"pyright==1.1.411",
"ruff==0.17.4",
"pyright==1.1.414",
]
# tests/e2e: the hosted server driven over real HTTP; no credentials needed.
e2e = [
Expand Down Expand Up @@ -78,5 +78,5 @@ venv = ".venv"
typeCheckingMode = "basic"

[build-system]
requires = ["hatchling==1.32.0", "hatch-vcs==0.5.0"]
requires = ["hatchling==1.33.0", "hatch-vcs==0.5.0"]
build-backend = "hatchling.build"
Loading
Loading