microsoftgraph / microsoftgraph/msgraph-sdk-python-core

Adding request info does not use specified request_id for BatchRequestContent

Abierto
#810 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

P1 priority:p1 type:bug
Lenguaje dominante
Python
Estrellas
288
Forks
52
Merge medio
8 h 10 min
PR fusionados (30 d)
1

Descripción

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_

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza en msgraph_core/requests/batch_request_content.py, en add_request_information, y sigue cómo se crea el BatchRequestItem en msgraph_core/requests/batch_request_item.py. Verifica que una request_id proporcionada siga siendo el ID del elemento y que los ID generados sigan funcionando cuando no se proporciona un ID personalizado.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
api
Tipo de issue
Error
Dificultad
2/5
Tiempo estimado
1-3 horas
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.