Skip to content

Commit 5fdc6c5

Browse files
committed
validate depends on at adding and remocing requests
1 parent e40450e commit 5fdc6c5

File tree

1 file changed

+27
-4
lines changed

1 file changed

+27
-4
lines changed

src/msgraph_core/requests/batch_request_content.py

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def add_request(self, request: BatchRequestItem) -> None:
5050
if hasattr(request, 'depends_on') and request.depends_on:
5151
for dependent_id in request.depends_on:
5252
if dependent_id not in [req.id for req in self.requests]:
53-
dependent_request = self.requests.request(dependent_id)
53+
dependent_request = self._request_by_id(dependent_id)
5454
if dependent_request:
5555
self._requests.append(dependent_request)
5656
self._requests.append(request)
@@ -72,12 +72,20 @@ def add_urllib_request(self, request) -> None:
7272
def remove(self, request_id: str) -> None:
7373
"""
7474
Removes a request from the batch request content.
75+
Also removes the request from the depends_on list of
76+
other requests.
7577
"""
78+
request_to_remove = None
7679
for request in self.requests:
7780
if request.id == request_id:
78-
self.requests.remove(request)
79-
return
80-
raise ValueError(f"Request ID {request_id} not found in requests.")
81+
request_to_remove = request
82+
if hasattr(request, 'depends_on') and request.depends_on:
83+
if request_id in request.depends_on:
84+
request.depends_on.remove(request_id)
85+
if request_to_remove:
86+
self._requests.remove(request_to_remove)
87+
else:
88+
raise ValueError(f"Request ID {request_id} not found in requests.")
8189

8290
def remove_batch_request_item(self, item: BatchRequestItem) -> None:
8391
"""
@@ -92,6 +100,21 @@ def finalize(self):
92100
self.is_finalized = True
93101
return self._requests
94102

103+
def _request_by_id(self, request_id: str) -> Optional[BatchRequestItem]:
104+
"""
105+
Finds a request by its ID.
106+
107+
Args:
108+
request_id (str): The ID of the request to find.
109+
110+
Returns:
111+
The request with the given ID, or None if not found.
112+
"""
113+
for req in self.requests:
114+
if req.id == request_id:
115+
return req
116+
return None
117+
95118
@staticmethod
96119
def create_from_discriminator_value(
97120
parse_node: Optional[ParseNode] = None

0 commit comments

Comments
 (0)