microsoftgraph / microsoftgraph/msgraph-sdk-python

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

Ouverte
#237 6 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Python
Étoiles
630
Forks
96
Merge moyen
15 h 20 min
PR mergées (30 j)
3

Description

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'

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Reproduisez l’appel avec Python 3.10.12, msgraph-core==1.0.0a4 et msgraph-sdk==1.0.0a12. Commencez par generated/directory_objects/item/directory_object_item_request_builder.py et suivez la réponse à travers kiota_http/httpx_request_adapter.py, kiota_serialization_json/json_parse_node.py et generated/models/directory_object.py. Le travail est terminé lorsque la requête directory-object ne déclenche plus l’AttributeError signalée et que sa réponse peut être renvoyée.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
api
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.