diff options
-rw-r--r-- | requests_cache/backends/base.py | 2 | ||||
-rw-r--r-- | requests_cache/serializers/pipeline.py | 13 | ||||
-rw-r--r-- | tests/integration/test_filesystem.py | 5 |
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()) |