diff --git a/backend/python/app/sources/external/microsoft/one_note/one_note.py b/backend/python/app/sources/external/microsoft/one_note/one_note.py index 76dbc9ad19..ce6129b3d2 100644 --- a/backend/python/app/sources/external/microsoft/one_note/one_note.py +++ b/backend/python/app/sources/external/microsoft/one_note/one_note.py @@ -1,5 +1,3 @@ - - import json import logging from dataclasses import asdict @@ -2081,38 +2079,49 @@ async def groups_group_onenote_notebooks_notebook_section_groups_section_group_s """ # Build query parameters including OData for OneNote try: - # Use typed query parameters - query_params = RequestConfiguration() + # Build query parameters including OData for OneNote using dictionary to avoid unnecessary instantiation + query_params = {} # Set query parameters using typed object properties if select: - query_params.select = select if isinstance(select, list) else [select] + query_params['select'] = select if isinstance(select, list) else [select] if expand: - query_params.expand = expand if isinstance(expand, list) else [expand] + query_params['expand'] = expand if isinstance(expand, list) else [expand] if filter: - query_params.filter = filter + query_params['filter'] = filter if orderby: - query_params.orderby = orderby + query_params['orderby'] = orderby if search: - query_params.search = search + query_params['search'] = search if top is not None: - query_params.top = top + query_params['top'] = top if skip is not None: - query_params.skip = skip + query_params['skip'] = skip + # Create proper typed request configuration config = RequestConfiguration() - config.query_parameters = query_params + if query_params: + config.query_parameters = query_params if headers: - config.headers = headers + config.headers = headers.copy() # avoid mutation of input headers # Add consistency level for search operations in OneNote if search: - if not config.headers: + if not hasattr(config, "headers") or config.headers is None: config.headers = {} config.headers['ConsistencyLevel'] = 'eventual' - response = await self.client.groups.by_group_id(group_id).onenote.notebooks.by_notebook_id(notebook_id).section_groups.by_section_group_id(sectionGroup_id).sections.by_onenote_section_id(onenoteSection_id).copy_to_notebook.post(body=request_body, request_configuration=config) + # Endpoints are chainable, but create variable path to avoid recomputing property lookups + section_req = ( + self.client + .groups.by_group_id(group_id) + .onenote.notebooks.by_notebook_id(notebook_id) + .section_groups.by_section_group_id(sectionGroup_id) + .sections.by_onenote_section_id(onenoteSection_id) + .copy_to_notebook + ) + response = await section_req.post(body=request_body, request_configuration=config) return self._handle_onenote_response(response) except Exception as e: return OneNoteResponse(