diff options
author | Jordan Cook <jordan.cook.git@proton.me> | 2022-10-28 11:31:55 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-28 11:31:55 -0500 |
commit | b4e270f6b129b75003d754987acea9e2d8670a5e (patch) | |
tree | e78b8486daf04f69bf551d913d74b99d818ef5a4 | |
parent | 30fe73387e09b0d6f05f7e3f56e8cb22c6c30384 (diff) | |
parent | 679099e733d8d7b8c70ad3a600a6eafe1524aac8 (diff) | |
download | requests-cache-b4e270f6b129b75003d754987acea9e2d8670a5e.tar.gz |
Merge pull request #720 from requests-cache/cattrs
Handle using a converter that doesn't support `omit_if_default`
-rw-r--r-- | requests_cache/serializers/cattrs.py | 6 | ||||
-rw-r--r-- | tests/unit/test_serializers.py | 13 |
2 files changed, 18 insertions, 1 deletions
diff --git a/requests_cache/serializers/cattrs.py b/requests_cache/serializers/cattrs.py index abe6458..13d05e6 100644 --- a/requests_cache/serializers/cattrs.py +++ b/requests_cache/serializers/cattrs.py @@ -81,7 +81,11 @@ def init_converter( datetime support """ factory = factory or Converter - converter = factory(omit_if_default=True) + try: + converter = factory(omit_if_default=True) + # Handle previous versions of cattrs (<22.2) that don't support this argument + except TypeError: + converter = factory() # Convert datetimes to and from iso-formatted strings if convert_datetime: diff --git a/tests/unit/test_serializers.py b/tests/unit/test_serializers.py index b44fb1b..caed84a 100644 --- a/tests/unit/test_serializers.py +++ b/tests/unit/test_serializers.py @@ -9,10 +9,12 @@ from unittest.mock import patch from uuid import uuid4 import pytest +from cattr import BaseConverter, GenConverter from requests_cache import ( CachedResponse, CachedSession, + CattrStage, SerializerPipeline, Stage, json_serializer, @@ -128,3 +130,14 @@ def test_plain_pickle(tempfile_path): session.cache.responses['key'] = response assert session.cache.responses['key'] == response assert session.cache.responses['key'].expires is None + + +def test_cattrs_compat(): + """CattrStage should be compatible with BaseConverter, which doesn't support the omit_if_default + keyword arg. + """ + stage_1 = CattrStage() + assert isinstance(stage_1.converter, GenConverter) + + stage_2 = CattrStage(factory=BaseConverter) + assert isinstance(stage_2.converter, BaseConverter) |