Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

batch response bodies are dropped when they are JSON objects

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

メンテナーはふだん 1 日以内に返信

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

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
72/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
python
領域
api, backend

調査の方向性

まず src/msgraph_core/requests/batch_response_item.py の body デシリアライザーから始め、次に kiota serialization JSON package の JsonParseNode._get_bytes_value() と BatchResponseContent のフローを調べます。BatchRequestBuilder を通じて、個々の body が JSON オブジェクトであるバッチレスポンスを再現します。完了条件は、オブジェクトが None になる代わりに BatchResponseItem.body に保持されることです。

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

説明

Summary

After upgrading to the Kiota Python version containing #646, batch responses from Microsoft Graph can no longer be deserialized correctly when an individual response body is a JSON object.

I am updating SharePoint list items in a batch request. The HTTP adapter returns the batch response body as a Python dict. During deserialization, BatchResponseItem passes that value to JsonParseNode.get_bytes_value(). The current _get_bytes_value() implementation only handles str values and returns None for dictionaries, so the response body is silently swallowed.

Before #646, non-string values were converted to a JSON string/UTF-8 byte sequence. That byte sequence was later parsed again as JSON, restoring the response body as a dictionary. #646 removed the non-string fallback needed for JSON object bodies.

This issue might originally stem from incorrect use of JsonParseNode in https://github.com/microsoftgraph/msgraph-sdk-python-core/blob/d23507bf38497aa514763f3ffa56b8ed8eceef70/src/msgraph_core/requests/batch_response_item.py#L159 but it didn't occur until the changes made in #646. If a fix should rather be made in msgraph-core, please let me know and I will raise the issue there.

Environment

  • Python: 3.13
  • microsoft-kiota-bundle: 1.12.3
  • microsoft-kiota-serialization-json: 1.12.3
  • microsoft-kiota-http: 1.12.3
  • msgraph-core: 1.5.1

Reproduction

  1. Create a Microsoft Graph batch request containing SharePoint list-item updates.
  2. Send the request through msgraph_core.requests.batch_request_builder.BatchRequestBuilder.
  3. Return a successful response whose individual body is a JSON object.
  4. Deserialize the batch response as BatchResponseContent.

The individual BatchResponseItem.body is expected to contain the JSON object, but it becomes None during deserialization.

Debugger call stack

I'm including a trace to where my app is hitting this regression.

Traceback (most recent call last):
  File ".venv/Lib/site-packages/msgraph_core/requests/batch_request_builder.py", line 103, in _post_batch_collection
    response = await self.post(batch_request_content, error_map)
  File ".venv/Lib/site-packages/msgraph_core/requests/batch_request_builder.py", line 65, in post
    response = await self._request_adapter.send_async(
  File ".venv/Lib/site-packages/kiota_http/httpx_request_adapter.py", line 198, in send_async
    value = root_node.get_object_value(parsable_factory)
  File ".venv/Lib/site-packages/kiota_serialization_json/json_parse_node.py", line 213, in get_object_value
    self._assign_field_values(result)
  File ".venv/Lib/site-packages/kiota_serialization_json/json_parse_node.py", line 352, in _assign_field_values
    field_deserializer(JsonParseNode(field_value))
  File ".venv/Lib/site-packages/msgraph_core/requests/batch_response_content.py", line 156, in <lambda>
    return {'responses': lambda n: set_responses(n)}
  File ".venv/Lib/site-packages/msgraph_core/requests/batch_response_content.py", line 150, in set_responses
    values = n.get_collection_of_object_values(BatchResponseItem)
  File ".venv/Lib/site-packages/kiota_serialization_json/json_parse_node.py", line 153, in <lambda>
    lambda x: self._create_new_node(x).get_object_value(factory),
  File ".venv/Lib/site-packages/kiota_serialization_json/json_parse_node.py", line 213, in get_object_value
    self._assign_field_values(result)
  File ".venv/Lib/site-packages/kiota_serialization_json/json_parse_node.py", line 352, in _assign_field_values
    field_deserializer(JsonParseNode(field_value))
  File ".venv/Lib/site-packages/msgraph_core/requests/batch_response_item.py", line 159, in <lambda>
    "body": lambda x: setattr(self, "body", x.get_bytes_value()),
  File ".venv/Lib/site-packages/kiota_serialization_json/json_parse_node.py", line 223, in get_bytes_value
    return self._get_bytes_value(self._json_node)
  File ".venv/Lib/site-packages/kiota_serialization_json/json_parse_node.py", line 296, in _get_bytes_value
    return None
主要言語
Python
スター
31
フォーク
40
平均マージ
1日 1時間
マージ済み PR(30日)
32

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

はじめの一歩

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

microsoft/kiota-python のほかの issue

microsoft/kiota-python の issue をすべて見る

似ている issue

Python の issue をもっと見る

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

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