summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJordan Cook <jordan.cook.git@proton.me>2022-10-28 11:31:55 -0500
committerGitHub <noreply@github.com>2022-10-28 11:31:55 -0500
commitb4e270f6b129b75003d754987acea9e2d8670a5e (patch)
treee78b8486daf04f69bf551d913d74b99d818ef5a4
parent30fe73387e09b0d6f05f7e3f56e8cb22c6c30384 (diff)
parent679099e733d8d7b8c70ad3a600a6eafe1524aac8 (diff)
downloadrequests-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.py6
-rw-r--r--tests/unit/test_serializers.py13
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)