Skip to content

🐛 Bug Report: Client.call raises KeyError when error response omits Content-Type #174

Open

Description

@dajiaohuang

👟 Reproduction steps

With SDK 27.0.0, use a synthetic requests.Response and patch requests.request so no network request is made:

from unittest.mock import patch
from requests import Response
from appwrite.client import Client

response = Response()
response.status_code = 502
response.url = "https://cloud.appwrite.io/v1/synthetic"
response._content = b"upstream unavailable"
response.headers = {}  # valid response without a Content-Type header

with patch("appwrite.client.requests.request", return_value=response):
    Client().call("get", "/synthetic")

👍 Expected behavior

The failed HTTP response should surface as AppwriteException (including its status/body where available), consistent with the SDK's documented error behavior.

👎 Actual Behavior

The call raises KeyError: 'Content-Type' from appwrite/client.py while handling the HTTP 502, hiding the original HTTP failure and bypassing AppwriteException.

🎲 Appwrite version

Different version (specify in environment): SDK package 27.0.0; no live Appwrite server was used.

💻 Operating system

Windows

🧱 Your Environment

CPython 3.13, requests 2.34.2. The reproduction patches the request function and uses only a synthetic response; it sends no network request and uses no credentials.

👀 Have you spent some time to check if this issue has been raised before?

🏢 Have you read the Code of Conduct?

  • I have read the Code of Conduct

The SDK README describes this repository as auto-generated, and the repository's bot told PR #162 that direct pull requests are not accepted. I'm reporting the reproducible behavior here rather than editing generated code; please route the fix through the appropriate generator/source if applicable.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions