microsoftgraph / microsoftgraph/msgraph-sdk-python-core

Adding request info does not use specified request_id for BatchRequestContent

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

Personne n'a encore pris cette issue.

P1 priority:p1 type:bug
Langage dominant
Python
Étoiles
288
Forks
52
Merge moyen
8 h 10 min
PR mergées (30 j)
1

Description

Describe the bug

Trying to add batch request steps with custom request IDs so that I can track the responses, however the custom request ID is always overridden to a random uuid

Expected behavior

Should be able to specify a custom request ID as specified in the function doc strings and in samples.

How to reproduce

You can track this through:

msgraph_core/requests/batch_request_content.py

    def add_request_information(
        self, request_information: RequestInformation, request_id: Optional[str] = None
    ) -> None:
        """
        Adds a request to the batch request content.
        Args:
            request_information (RequestInformation): The request information to add.
            request_id: Optional[str]: The request id to add.
        """
        request_id = request_id if request_id else str(uuid.uuid4())
        self.add_request(request_id, BatchRequestItem(request_information))

When creating the BatchRequestItem (msgraph_core/requests/batch_request_item.py), we've not passed the request ID into the init, so a random one is assigned to the Item:

    def __init__(
        self,
        request_information: Optional[RequestInformation] = None,
        id: str = "",
        depends_on: Optional[list[Union[str, 'BatchRequestItem']]] = []
    ):
        """
        Initializes a new instance of the BatchRequestItem class.
        Args:
            request_information (RequestInformation): The request information.
            id (str, optional): The ID of the request item. Defaults to "".
            depends_on (Optional[list[Union[str, BatchRequestItem]], optional):
            The IDs of the requests that this request depends on. Defaults to None.
        """
        if request_information is None or not request_information.http_method:
            raise ValueError("HTTP method cannot be Null/Empty")
        self._id = id or str(uuid4())

The custom one is then only used if there isn't one already on the request, which is impossible here because of the initialisation of the item object:

    def add_request(self, request_id: Optional[str], request: BatchRequestItem) -> None:
        """
        Adds a request to the batch request content.
        Args:
            request_id (Optional[str]): The request id to add.
            request (BatchRequestItem): The request to add.
        """
        if len(self.requests) >= BatchRequestContent.MAX_REQUESTS:
            raise RuntimeError(f"Maximum number of requests is {BatchRequestContent.MAX_REQUESTS}")
        if not request.id:
            request.id = request_id if request_id else str(uuid.uuid4())

So it's impossible for you to set a custom request ID through the add_request_information function. Either we should pass the custom one into the initialisation of the Item, or the "add_request" function should be checking for whether we have a request_id not a request.id. Suspect it should be the latter otherwise the function signature makes no sense.

SDK Version

1.17.0 of the SDK, 1.20.0 of msgraph-core

Latest version known to work for scenario above?

No response

Known Workarounds

No response

Debug output
Click to expand log ```
</details>


### Configuration

_No response_

### Other information

_No response_

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

Commencez dans msgraph_core/requests/batch_request_content.py, au niveau de add_request_information, et suivez la création de BatchRequestItem dans msgraph_core/requests/batch_request_item.py. Vérifiez qu'une request_id fournie reste l'ID de l'élément et que les ID générés continuent de fonctionner lorsqu'aucun ID personnalisé n'est fourni.

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é
2/5
Temps estimé
1-3 heures
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

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