microsoftgraph / microsoftgraph/msgraph-sdk-python

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

未關閉
#237 6 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

還沒有人認領這個 Issue。

主要語言
Python
星號
630
分支
96
平均合併
15 小時 20 分鐘
30 天內合併 PR
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. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 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 開始,追蹤 response 經過 kiota_http/httpx_request_adapter.py、kiota_serialization_json/json_parse_node.py 和 generated/models/directory_object.py 的流程。完成的標準是 directory-object 要求不再引發所回報的 AttributeError,且其 response 可以被傳回。

由索引模型根據 Issue 內容生成。

評估

技術堆疊
python
領域
api
Issue 類型
缺陷
難度
3/5
預估耗時
1-2 天
活躍度
停滯
描述清晰度
基本清楚
新手友好度
35/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。