Skip to content

Commit 7985df7

Browse files
tpellissierclaude
andcommitted
Case-insensitive header merge, remove redundant install instruction
- Hook header merge now uses case-insensitive comparison to prevent hooks from bypassing SDK headers via different casing - Remove redundant 'pip install opentelemetry-sdk' from demo (already included in [telemetry] extra) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 7ceffc3 commit 7985df7

2 files changed

Lines changed: 4 additions & 2 deletions

File tree

examples/telemetry_demo.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
1212
To run with full OTel:
1313
pip install "PowerPlatform-Dataverse-Client[telemetry]"
14-
pip install opentelemetry-sdk
1514
python examples/telemetry_demo.py
1615
1716
To run Jaeger locally:

src/PowerPlatform/Dataverse/data/_odata.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,11 +236,14 @@ def _request(self, method: str, url: str, *, expected: tuple[int, ...] = _DEFAUL
236236
table_name = _OPERATION_TABLE.get()
237237

238238
# Merge hook-provided headers without overwriting SDK-managed headers
239+
# (case-insensitive comparison since HTTP headers are case-insensitive)
239240
hook_headers = self._telemetry.get_additional_headers()
240241
if hook_headers:
242+
existing_lower = {h.lower() for h in request_context.headers}
241243
for name, value in hook_headers.items():
242-
if name not in request_context.headers:
244+
if name.lower() not in existing_lower:
243245
request_context.headers[name] = value
246+
existing_lower.add(name.lower())
244247
request_context.kwargs["headers"] = request_context.headers
245248

246249
with self._telemetry.trace_request(

0 commit comments

Comments
 (0)