From fa591a8ecb69b1a1a1b8fea75d751a887e389874 Mon Sep 17 00:00:00 2001 From: Kevin Tran Date: Fri, 30 Apr 2021 14:09:57 -0700 Subject: [PATCH 1/2] Use deep copy so that all arguments are copied by value --- rest_witchcraft/serializers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_witchcraft/serializers.py b/rest_witchcraft/serializers.py index 97616c1..4f9023e 100644 --- a/rest_witchcraft/serializers.py +++ b/rest_witchcraft/serializers.py @@ -42,7 +42,7 @@ def is_nested(self): def build_standard_field_kwargs(self, field_name, field_class, column_info): """Analyze model column to generate field kwargs.""" - field_kwargs = column_info.field_kwargs.copy() + field_kwargs = copy.deepcopy(column_info.field_kwargs) field_kwargs["label"] = capfirst(" ".join(field_name.split("_")).strip()) field_kwargs["allow_null"] = not field_kwargs.get("required", True) From fea06ede49c7189fe17fae7e6834953118ef81b7 Mon Sep 17 00:00:00 2001 From: Sourcery AI <> Date: Fri, 30 Apr 2021 21:13:33 +0000 Subject: [PATCH 2/2] 'Refactored by Sourcery' --- rest_witchcraft/serializers.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/rest_witchcraft/serializers.py b/rest_witchcraft/serializers.py index 4f9023e..e15f300 100644 --- a/rest_witchcraft/serializers.py +++ b/rest_witchcraft/serializers.py @@ -383,13 +383,16 @@ def get_field_names(self, declared_fields, info): serializer_class=self.__class__.__name__ ) - assert not (_fields is None and exclude is None), ( + assert _fields is not None or exclude is not None, ( "Creating a ModelSerializer without either the 'fields' attribute " "or the 'exclude' attribute has been deprecated since 3.3.0, " "and is now disallowed. Add an explicit fields = '__all__' to the " - "{serializer_class} serializer.".format(serializer_class=self.__class__.__name__), + "{serializer_class} serializer.".format( + serializer_class=self.__class__.__name__ + ), ) + if _fields == ALL_FIELDS: _fields = None @@ -574,10 +577,11 @@ def get_nested_relationship_fields(self, relation_info, depth): target_model_info = meta.model_info(relation_info.related_model) # figure out backrefs - backrefs = set() - for key, rel in target_model_info.relationships.items(): - if rel.related_model == self.model: - backrefs.add(key) + backrefs = { + key + for key, rel in target_model_info.relationships.items() + if rel.related_model == self.model + } _fields = set(target_model_info.primary_keys.keys()) _fields.update(target_model_info.properties.keys())