From 24c20be33773b05ae4b692f6ce73f5a5e2318887 Mon Sep 17 00:00:00 2001 From: Josh Bonczkowski Date: Fri, 13 Mar 2026 16:34:49 -0400 Subject: [PATCH] Addressed feedback where the newrelic options might not apply correctly. --- litellm/integrations/newrelic/newrelic.py | 8 ++++++-- .../integrations/newrelic/test_newrelic.py | 14 ++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/litellm/integrations/newrelic/newrelic.py b/litellm/integrations/newrelic/newrelic.py index 79ce469e9bb..5275125a21d 100644 --- a/litellm/integrations/newrelic/newrelic.py +++ b/litellm/integrations/newrelic/newrelic.py @@ -51,7 +51,6 @@ from litellm.integrations.custom_logger import CustomLogger from litellm.types.integrations.newrelic import NewRelicInitParams from litellm.types.utils import ModelResponse, Message - # Global state for supportability metric emission # Protected by _metric_lock to ensure thread-safe access _last_metric_emission_time: float = 0.0 @@ -72,7 +71,12 @@ class NewRelicLogger(CustomLogger): # Handle newrelic_params set as litellm.newrelic_params ######################################################### dict_newrelic_params = self._get_newrelic_params() - kwargs.update(dict_newrelic_params) + + # Use setdefault so constructor kwargs take priority over global params. + # model_dump() always returns all fields (including defaults), so update() + # would silently overwrite explicit constructor args like turn_off_message_logging=True. + for k, v in dict_newrelic_params.items(): + kwargs.setdefault(k, v) # CustomLogger.__init__ will set self.turn_off_message_logging from kwargs super().__init__(**kwargs) diff --git a/tests/test_litellm/integrations/newrelic/test_newrelic.py b/tests/test_litellm/integrations/newrelic/test_newrelic.py index f4dbc8533b6..b53c1d9a28d 100644 --- a/tests/test_litellm/integrations/newrelic/test_newrelic.py +++ b/tests/test_litellm/integrations/newrelic/test_newrelic.py @@ -163,6 +163,20 @@ class TestNewRelicLoggerInit: logger = NewRelicLogger(turn_off_message_logging=False) assert logger.record_content is False + def test_constructor_kwargs_take_priority_over_global_params(self): + """Constructor turn_off_message_logging=True must not be overwritten by + litellm.newrelic_params which defaults turn_off_message_logging to False.""" + from litellm.types.integrations.newrelic import NewRelicInitParams + + with patch("newrelic.agent.register_application"): + with patch.dict(os.environ, NR_ENV): + with patch( + "litellm.newrelic_params", + NewRelicInitParams(turn_off_message_logging=False), + ): + logger = NewRelicLogger(turn_off_message_logging=True) + assert logger.record_content is False + # --------------------------------------------------------------------------- # 2. _parse_bool_env