summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--requests_cache/backends/base.py2
-rw-r--r--requests_cache/serializers/pipeline.py13
-rw-r--r--tests/integration/test_filesystem.py5
3 files changed, 6 insertions, 14 deletions
diff --git a/requests_cache/backends/base.py b/requests_cache/backends/base.py
index e307cb4..5e00db0 100644
--- a/requests_cache/backends/base.py
+++ b/requests_cache/backends/base.py
@@ -329,7 +329,7 @@ class BaseStorage(MutableMapping[KT, VT], ABC):
# Wrap in a SerializerPipeline, if needed
if not isinstance(serializer, SerializerPipeline):
serializer = SerializerPipeline([serializer], name=str(serializer))
- serializer.decode_content = decode_content
+ serializer.set_decode_content(decode_content)
self.serializer = serializer
logger.debug(f'Initialized {type(self).__name__} with serializer: {self.serializer}')
diff --git a/requests_cache/serializers/pipeline.py b/requests_cache/serializers/pipeline.py
index 08e1cac..652c8f5 100644
--- a/requests_cache/serializers/pipeline.py
+++ b/requests_cache/serializers/pipeline.py
@@ -60,20 +60,11 @@ class SerializerPipeline:
value = step(value)
return value
- # TODO: I don't love this. Could BaseStorage init be refactored to not need this getter/setter?
- @property
- def decode_content(self) -> bool:
- for stage in self.stages:
- if hasattr(stage, 'decode_content'):
- return stage.decode_content
- return False
-
- @decode_content.setter
- def decode_content(self, value: bool):
+ def set_decode_content(self, decode_content: bool):
"""Set decode_content, if the pipeline contains a CattrStage or compatible object"""
for stage in self.stages:
if hasattr(stage, 'decode_content'):
- stage.decode_content = value
+ stage.decode_content = decode_content
def __str__(self) -> str:
return f'SerializerPipeline(name={self.name}, n_stages={len(self.dump_stages)})'
diff --git a/tests/integration/test_filesystem.py b/tests/integration/test_filesystem.py
index 54c782d..dfe9414 100644
--- a/tests/integration/test_filesystem.py
+++ b/tests/integration/test_filesystem.py
@@ -82,15 +82,16 @@ class TestFileCache(BaseCacheTest):
"""Test all relevant combinations of response formats X serializers"""
if not _valid_serializer(serializer):
pytest.skip(f'Dependencies not installed for {serializer}')
+ serializer.set_decode_content(False)
super().test_all_response_formats(response_format, serializer)
@pytest.mark.parametrize('serializer', [json_serializer, yaml_serializer])
@pytest.mark.parametrize('response_format', HTTPBIN_FORMATS)
def test_all_response_formats__no_decode_content(self, response_format, serializer):
- """Test with decode_content=False for text-based serialization formats"""
+ """Test with decode_content=True for text-based serialization formats"""
if not _valid_serializer(serializer):
pytest.skip(f'Dependencies not installed for {serializer}')
- serializer.decode_content = False
+ serializer.set_decode_content(True)
self.test_all_response_formats(response_format, serializer)
@pytest.mark.parametrize('serializer_name', SERIALIZERS.keys())