tests/client/test_client.py: 14 failures on Windows — AttributeError: '...Result' object has no attribute '_meta'

オープン
#3,544 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
75/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
python
領域
testing

調査の方向性

まず、固定された依存関係を使用して Windows 上で uv run --no-sync pytest tests/client/test_client.py -q を実行します。tests/client/test_client.py 内の失敗するケースを読み、そこにある CallToolResult の snapshot 引数を、報告されている meta/_meta の動作と比較します。14 件の失敗が解消され、期待される結果を弱めることなくクライアントのテストファイルがパスすれば完了です。

索引モデルが issue の本文から書いたものです。

説明

Initial Checks
Release line

2.x (current stable)

Description

On a clean checkout of main, tests/client/test_client.py fails with 14 errors of the form AttributeError: 'CallToolResult' object has no attribute '_meta'. Did you mean: 'meta'?

The snapshots pass the wire name (snapshot(CallToolResult(_meta={...}))), but inline_snapshot's generic_call_adapter.argument() does a plain getattr(value, '_meta') and the pydantic model exposes the field as meta. The data is there — the repr shows meta={'io.modelcontextprotocol/serverInfo': ...}.

I'd expect the test suite to pass on a fresh clone with locked dependencies.

Ruled out: unlocked dependency resolution (reproduced with --frozen and --no-sync), Python version (3.12.14 and 3.14.2 both fail), and a non-ASCII checkout path (reproduces under a plain ASCII path too).

I only have Windows to test on, so I don't know whether this reproduces on Linux or macOS. If CI is green, the difference is presumably platform-specific and I'm happy to run whatever would help narrow it down.

┃ File ┃ Function ┃ Function Line ┃ Error Line ┃ Error ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩
│ tests\client\test_client.py │ test_client_with_simple_server │ 133 │ │ │
│ tests\client\test_client.py │ test_client_list_tools │ 151 │ │ │
│ tests\client\test_client.py │ test_client_call_tool │ 179 │ │ │
│ tests\client\test_client.py │ test_read_resource │ 191 │ │ │
│ tests\client\test_client.py │ test_get_prompt │ 272 │ │ │
│ tests\client\test_client.py │ test_client_list_resources_wi… │ 339 │ │ │
│ tests\client\test_client.py │ test_client_list_resource_tem… │ 358 │ │ │
│ tests\client\test_client.py │ test_list_prompts │ 369 │ │ │
│ tests\client\test_client.py │ test_complete_with_prompt_ref… │ 387 │ │ │
│ tests\client\test_client.py │ test_call_tool_auto_loop_disp… │ 768 │ 797 │ AttributeError │
│ tests\client\test_client.py │ test_call_tool_auto_loop_disp… │ 810 │ 846 │ AttributeError │
│ tests\client\test_client.py │ test_call_tool_auto_loop_disp… │ 857 │ 881 │ AttributeError │
│ tests\client\test_client.py │ test_get_prompt_auto_loop_res… │ 945 │ 968 │ AttributeError │
│ tests\client\test_client.py │ test_read_resource_auto_loop_… │ 976 │ 999 │ AttributeError

Example Code
┃  File                         ┃  Function                        ┃  Function Line  ┃  Error Line  ┃  Error           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩
│  tests\client\test_client.py  │  test_client_with_simple_server  │  133            │              │                  │
│  tests\client\test_client.py  │  test_client_list_tools          │  151            │              │                  │
│  tests\client\test_client.py  │  test_client_call_tool           │  179            │              │                  │
│  tests\client\test_client.py  │  test_read_resource              │  191            │              │                  │
│  tests\client\test_client.py  │  test_get_prompt                 │  272            │              │                  │
│  tests\client\test_client.py  │  test_client_list_resources_wi…  │  339            │              │                  │
│  tests\client\test_client.py  │  test_client_list_resource_tem…  │  358            │              │                  │
│  tests\client\test_client.py  │  test_list_prompts               │  369            │              │                  │
│  tests\client\test_client.py  │  test_complete_with_prompt_ref…  │  387            │              │                  │
│  tests\client\test_client.py  │  test_call_tool_auto_loop_disp…  │  768            │  797         │  AttributeError  │
│  tests\client\test_client.py  │  test_call_tool_auto_loop_disp…  │  810            │  846         │  AttributeError  │
│  tests\client\test_client.py  │  test_call_tool_auto_loop_disp…  │  857            │  881         │  AttributeError  │
│  tests\client\test_client.py  │  test_get_prompt_auto_loop_res…  │  945            │  968         │  AttributeError  │
│  tests\client\test_client.py  │  test_read_resource_auto_loop_…  │  976            │  999         │  AttributeError

git clone https://github.com/modelcontextprotocol/python-sdk.git
cd python-sdk
uv sync --frozen --all-extras --dev
uv run --no-sync pytest tests/client/test_client.py -q

# → 14 failed, 33 passed
Python & MCP Python SDK
Python 3.12.14 (also reproduced on 3.14.2)
mcp 2.2.1.dev1+6affe5c0 (source checkout of main, commit 6affe5c0)
inline_snapshot 0.28.0, pydantic 2.12.5 (both from uv.lock)
uv 0.12.16
Windows 11, PowerShell
主要言語
Python
スター
24.3k
フォーク
4k
平均マージ
1日 1時間
マージ済み PR(30日)
31

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

modelcontextprotocol/python-sdk のほかの issue

modelcontextprotocol/python-sdk の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。