From cfdccd94528403358316d217be783d4f2766782d Mon Sep 17 00:00:00 2001 From: Akanksha Trehun Date: Thu, 17 Sep 2026 00:08:40 +0530 Subject: [PATCH] fix mutable default argument in StateItem metadata Signed-off-by: Akanksha Trehun --- dapr/clients/grpc/_state.py | 4 ++-- tests/clients/test_state.py | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 tests/clients/test_state.py diff --git a/dapr/clients/grpc/_state.py b/dapr/clients/grpc/_state.py index e20df4293..9120a81f2 100644 --- a/dapr/clients/grpc/_state.py +++ b/dapr/clients/grpc/_state.py @@ -59,7 +59,7 @@ def __init__( value: Union[bytes, str], etag: Optional[str] = None, options: Optional[StateOptions] = None, - metadata: Optional[Dict[str, str]] = dict(), + metadata: Optional[Dict[str, str]] = None, ): """Inits StateItem with the required parameters. @@ -80,7 +80,7 @@ def __init__( self._value = value self._etag = etag self._options = options - self._metadata = metadata + self._metadata = metadata if metadata is not None else {} @property def key(self): diff --git a/tests/clients/test_state.py b/tests/clients/test_state.py new file mode 100644 index 000000000..8eeb9f325 --- /dev/null +++ b/tests/clients/test_state.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python3 + +""" +Unit tests for the StateItem class. +""" + +import unittest + +from dapr.clients.grpc._state import StateItem + + +class TestStateItem(unittest.TestCase): + """Test cases for StateItem.""" + + def test_metadata_defaults_to_empty_dict(self): + item = StateItem(key='key1', value='value1') + self.assertEqual(item.metadata, {}) + + def test_metadata_not_shared_between_instances(self): + item1 = StateItem(key='key1', value='value1') + item2 = StateItem(key='key2', value='value2') + + item1.metadata['injected'] = 'value' + + self.assertNotIn('injected', item2.metadata) + + def test_metadata_uses_provided_value(self): + item = StateItem(key='key1', value='value1', metadata={'k': 'v'}) + self.assertEqual(item.metadata, {'k': 'v'}) + + +if __name__ == '__main__': + unittest.main()