Skip to content

Commit a7a7427

Browse files
committed
fix: handle explicit none extra headers
1 parent 524fe85 commit a7a7427

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

packages/data-designer-engine/src/data_designer/engine/models/facade.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,11 +158,11 @@ def consolidate_kwargs(self, **kwargs: Any) -> dict[str, Any]:
158158
if self.model_provider.extra_body:
159159
kwargs["extra_body"] = {**kwargs.get("extra_body", {}), **self.model_provider.extra_body}
160160
if self.model_provider.extra_headers:
161-
kwargs["extra_headers"] = {**kwargs.get("extra_headers", {}), **self.model_provider.extra_headers}
161+
kwargs["extra_headers"] = {**(kwargs.get("extra_headers") or {}), **self.model_provider.extra_headers}
162162
# Inject framework-level attribution header when telemetry is enabled.
163163
# Applied last so that user-supplied or provider-level headers take precedence.
164164
if TELEMETRY_ENABLED:
165-
headers = kwargs.get("extra_headers", {})
165+
headers = kwargs.get("extra_headers") or {}
166166
if "X-Title" not in headers:
167167
kwargs["extra_headers"] = {"X-Title": ATTRIBUTION_TITLE, **headers}
168168
return kwargs

packages/data-designer-engine/tests/engine/models/test_facade.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,11 +252,24 @@ def test_consolidate_kwargs_telemetry_disabled(stub_model_configs: list[Any], st
252252
def test_consolidate_kwargs_user_x_title_override(
253253
stub_model_configs: list[Any], stub_model_facade: ModelFacade
254254
) -> None:
255-
"""User-supplied X-Title via provider extra_headers takes precedence over framework default."""
255+
"""User-supplied X-Title takes precedence over the framework default."""
256256
stub_model_facade.model_provider.extra_headers = {"X-Title": "My Custom App"}
257257
result = stub_model_facade.consolidate_kwargs()
258258
assert result["extra_headers"]["X-Title"] == "My Custom App"
259259

260+
stub_model_facade.model_provider.extra_headers = None
261+
result = stub_model_facade.consolidate_kwargs(extra_headers={"X-Title": "Caller App"})
262+
assert result["extra_headers"]["X-Title"] == "Caller App"
263+
264+
265+
def test_consolidate_kwargs_with_explicit_none_extra_headers(
266+
stub_model_configs: list[Any], stub_model_facade: ModelFacade
267+
) -> None:
268+
"""Explicit None extra_headers does not break provider merges or framework attribution."""
269+
stub_model_facade.model_provider.extra_headers = {"hello": "world"}
270+
result = stub_model_facade.consolidate_kwargs(extra_headers=None)
271+
assert result["extra_headers"] == {"X-Title": "NeMo Data Designer", "hello": "world"}
272+
260273

261274
@pytest.mark.parametrize(
262275
"skip_usage_tracking",

0 commit comments

Comments
 (0)