microsoftgraph / microsoftgraph/msgraph-sdk-python

directory_object.by_directory_object_id: 'str' object has no attribute 'get'

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

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

主要言語
Python
スター
630
フォーク
96
平均マージ
15時間 20分
マージ済み PR(30日)
3

説明

Python 3.10.12 and msgraph-core==1.0.0a4 and msgraph-sdk==1.0.0a12, on Ubuntu 20 LTS.

I'm trying to replace a working azure-graphrbac function with the replacement msgraph version - it's to find a displayName for Azure IAM Role Assignments. From the few examples for app-only usage, I thought this was what I needed, but I get an error from deep inside the library that str object has no attribute get.

From what I could tell the parameter to by_directory_object() is supposed to be a string. The self.app_client is the Graph object from this tutorial: https://learn.microsoft.com/en-us/graph/tutorials/python-app-only?tabs=aad&tutorial-step=5 which does successfully list users, but not call my function.

async def get_directoryobject_by_id(self, object_id: str) -> DirectoryObject | None:
    """Given an AD ID from a Role Assignment, figure out what it is"""
    try:
        thing = await self.app_client.directory_objects.by_directory_object_id(object_id).get()
        if thing:
            print(thing)
            return thing
    except APIError as e:
        print(e.error.message)

    return None

Where am I going wrong? Having the library code be generated and the README just point to the REST API is quite frustrating.

Full stacktrace follows:

Traceback (most recent call last):
  File "/home/howardwork/Work/collector/example.py", line 135, in <module>
    asyncio.run(main())
  File "/usr/lib/python3.10/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/usr/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete
    return future.result()
  File "/home/howardwork/Work/collector/example.py", line 101, in main
    await make_graph_call(graph)
  File "/home/howardwork/Work/collector/example.py", line 131, in make_graph_call
    await graph.get_directoryobject_by_id("05eb8c5a-a278-408e-a2b5-739f56c00888")
  File "/home/howardwork/Work/collector/example.py", line 59, in get_directoryobject_by_id
    thing = await self.app_client.directory_objects.by_directory_object_id(object_id).get()
  File "/home/howardwork/Work/collector/venv/lib/python3.10/site-packages/msgraph/generated/directory_objects/item/directory_object_item_request_builder.py", line 82, in get
    return await self.request_adapter.send_async(request_info, directory_object.DirectoryObject, error_mapping)
  File "/home/howardwork/Work/collector/venv/lib/python3.10/site-packages/kiota_http/httpx_request_adapter.py", line 123, in send_async
    result = root_node.get_object_value(model_type)
  File "/home/howardwork/Work/collector/venv/lib/python3.10/site-packages/kiota_serialization_json/json_parse_node.py", line 224, in get_object_value
    result = factory.create_from_discriminator_value(self)
  File "/home/howardwork/Work/collector/venv/lib/python3.10/site-packages/msgraph/generated/models/directory_object.py", line 32, in create_from_discriminator_value
    mapping_value_node = parse_node.get_child_node("@odata.type")
  File "/home/howardwork/Work/collector/venv/lib/python3.10/site-packages/kiota_serialization_json/json_parse_node.py", line 55, in get_child_node
    if self._json_node and self._json_node.get(identifier):
AttributeError: 'str' object has no attribute 'get'

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

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

はじめの一歩

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

調査の方向性

Python 3.10.12、msgraph-core==1.0.0a4、msgraph-sdk==1.0.0a12 で呼び出しを再現します。generated/directory_objects/item/directory_object_item_request_builder.py から始め、kiota_http/httpx_request_adapter.py、kiota_serialization_json/json_parse_node.py、generated/models/directory_object.py を通してレスポンスを追跡します。directory-object リクエストで報告された AttributeError が発生しなくなり、そのレスポンスを返せるようになれば完了です。

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

評価

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

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

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