From 29e2f8f0e044f4d8e5b4d953e00f5a3a1714d7a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tin=20Tvrtkovi=C4=87?= Date: Thu, 5 May 2022 03:43:58 +0200 Subject: [PATCH] Docs and more preconf fixes --- HISTORY.rst | 2 ++ src/cattrs/preconf/bson.py | 4 ++-- src/cattrs/preconf/msgpack.py | 4 ++-- src/cattrs/preconf/orjson.py | 4 ++-- src/cattrs/preconf/tomlkit.py | 4 ++-- src/cattrs/preconf/ujson.py | 4 ++-- 6 files changed, 12 insertions(+), 10 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 5d62854b..bf2411a1 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -13,6 +13,8 @@ History * PyPy support (and tests, using a minimal Hypothesis profile) restored. (`#253 `_) * Fix propagating the `detailed_validation` flag to mapping and counter structuring generators. +* Fix ``typing.Set`` applying too broadly when used with the ``GenConverter.unstruct_collection_overrides`` parameter on Python versions below 3.9. Switch to ``typing.AbstractSet`` on those versions to restore the old behavior. + (`#264 `_) 22.1.0 (2022-04-03) ------------------- diff --git a/src/cattrs/preconf/bson.py b/src/cattrs/preconf/bson.py index af8e5f7b..f6d56582 100644 --- a/src/cattrs/preconf/bson.py +++ b/src/cattrs/preconf/bson.py @@ -5,7 +5,7 @@ from bson import DEFAULT_CODEC_OPTIONS, CodecOptions, ObjectId, decode, encode -from cattrs._compat import Set, is_mapping +from cattrs._compat import AbstractSet, is_mapping from cattrs.gen import make_mapping_structure_fn from ..converters import BaseConverter, Converter @@ -89,7 +89,7 @@ def gen_structure_mapping(cl: Any): def make_converter(*args, **kwargs) -> BsonConverter: kwargs["unstruct_collection_overrides"] = { **kwargs.get("unstruct_collection_overrides", {}), - Set: list, + AbstractSet: list, } res = BsonConverter(*args, **kwargs) configure_converter(res) diff --git a/src/cattrs/preconf/msgpack.py b/src/cattrs/preconf/msgpack.py index a2246bbd..54b8bad2 100644 --- a/src/cattrs/preconf/msgpack.py +++ b/src/cattrs/preconf/msgpack.py @@ -4,7 +4,7 @@ from msgpack import dumps, loads -from cattrs._compat import Set +from cattrs._compat import AbstractSet from ..converters import BaseConverter, Converter @@ -35,7 +35,7 @@ def configure_converter(converter: BaseConverter): def make_converter(*args, **kwargs) -> MsgpackConverter: kwargs["unstruct_collection_overrides"] = { **kwargs.get("unstruct_collection_overrides", {}), - Set: list, + AbstractSet: list, } res = MsgpackConverter(*args, **kwargs) configure_converter(res) diff --git a/src/cattrs/preconf/orjson.py b/src/cattrs/preconf/orjson.py index a7ba66de..fe0b143b 100644 --- a/src/cattrs/preconf/orjson.py +++ b/src/cattrs/preconf/orjson.py @@ -6,7 +6,7 @@ from orjson import dumps, loads -from cattrs._compat import Set, is_mapping +from cattrs._compat import AbstractSet, is_mapping from ..converters import BaseConverter, Converter @@ -69,7 +69,7 @@ def key_handler(v): def make_converter(*args, **kwargs) -> OrjsonConverter: kwargs["unstruct_collection_overrides"] = { **kwargs.get("unstruct_collection_overrides", {}), - Set: list, + AbstractSet: list, } res = OrjsonConverter(*args, **kwargs) configure_converter(res) diff --git a/src/cattrs/preconf/tomlkit.py b/src/cattrs/preconf/tomlkit.py index ee8b6bb4..913fd4b2 100644 --- a/src/cattrs/preconf/tomlkit.py +++ b/src/cattrs/preconf/tomlkit.py @@ -5,7 +5,7 @@ from tomlkit import dumps, loads -from cattrs._compat import Set, is_mapping +from cattrs._compat import AbstractSet, is_mapping from ..converters import BaseConverter, Converter from . import validate_datetime @@ -59,7 +59,7 @@ def key_handler(k: bytes): def make_converter(*args, **kwargs) -> TomlkitConverter: kwargs["unstruct_collection_overrides"] = { **kwargs.get("unstruct_collection_overrides", {}), - Set: list, + AbstractSet: list, tuple: list, } res = TomlkitConverter(*args, **kwargs) diff --git a/src/cattrs/preconf/ujson.py b/src/cattrs/preconf/ujson.py index f9794fda..c340ad67 100644 --- a/src/cattrs/preconf/ujson.py +++ b/src/cattrs/preconf/ujson.py @@ -5,7 +5,7 @@ from ujson import dumps, loads -from cattrs._compat import Set +from cattrs._compat import AbstractSet from ..converters import BaseConverter, Converter @@ -40,7 +40,7 @@ def configure_converter(converter: BaseConverter): def make_converter(*args, **kwargs) -> UjsonConverter: kwargs["unstruct_collection_overrides"] = { **kwargs.get("unstruct_collection_overrides", {}), - Set: list, + AbstractSet: list, } res = UjsonConverter(*args, **kwargs) configure_converter(res)