From 06b0a452d2b281c813c1c365a42dd480d50434bf Mon Sep 17 00:00:00 2001 From: Asif Saif Uddin Date: Fri, 10 Sep 2021 10:41:43 +0600 Subject: [PATCH 1/7] remove most common python 2 crafts from the code base --- rest_framework_json_api/views.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/rest_framework_json_api/views.py b/rest_framework_json_api/views.py index 6b739582..c53864a0 100644 --- a/rest_framework_json_api/views.py +++ b/rest_framework_json_api/views.py @@ -30,7 +30,7 @@ ) -class PreloadIncludesMixin(object): +class PreloadIncludesMixin: """ This mixin provides a helper attributes to select or prefetch related models based on the include specified in the URL. @@ -60,7 +60,7 @@ def get_prefetch_related(self, include): return getattr(self, "prefetch_for_includes", {}).get(include, None) def get_queryset(self, *args, **kwargs): - qs = super(PreloadIncludesMixin, self).get_queryset(*args, **kwargs) + qs = super().get_queryset(*args, **kwargs) included_resources = get_included_resources( self.request, self.get_serializer_class() @@ -78,10 +78,10 @@ def get_queryset(self, *args, **kwargs): return qs -class AutoPrefetchMixin(object): +class AutoPrefetchMixin: def get_queryset(self, *args, **kwargs): """This mixin adds automatic prefetching for OneToOne and ManyToMany fields.""" - qs = super(AutoPrefetchMixin, self).get_queryset(*args, **kwargs) + qs = super().get_queryset(*args, **kwargs) included_resources = get_included_resources( self.request, self.get_serializer_class() @@ -127,7 +127,7 @@ def get_queryset(self, *args, **kwargs): return qs -class RelatedMixin(object): +class RelatedMixin: """ This mixin handles all related entities, whose Serializers are declared in "related_serializers" """ @@ -239,7 +239,7 @@ def get_serializer_class(self): return self.serializer_class def __init__(self, **kwargs): - super(RelationshipView, self).__init__(**kwargs) + super().__init__(**kwargs) # We include this simply for dependency injection in tests. # We can't add it as a class attributes or it would expect an # implicit `self` argument to be passed. From d141bb7d9d47c4eaeb6bb0e7e6c9b30274ce9904 Mon Sep 17 00:00:00 2001 From: Asif Saif Uddin Date: Fri, 10 Sep 2021 10:43:43 +0600 Subject: [PATCH 2/7] remove most common python 2 crafts from the codebase[settings] --- rest_framework_json_api/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework_json_api/settings.py b/rest_framework_json_api/settings.py index fd59c80c..00a28fe5 100644 --- a/rest_framework_json_api/settings.py +++ b/rest_framework_json_api/settings.py @@ -18,7 +18,7 @@ } -class JSONAPISettings(object): +class JSONAPISettings: """ A settings object that allows JSON:API settings to be access as properties. From 9c7a67742cf91be5f22ba760c072178e52957926 Mon Sep 17 00:00:00 2001 From: Asif Saif Uddin Date: Fri, 10 Sep 2021 10:49:27 +0600 Subject: [PATCH 3/7] remove most common python 2 crafts from the codebase[serializers] --- rest_framework_json_api/serializers.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/rest_framework_json_api/serializers.py b/rest_framework_json_api/serializers.py index b0a85df7..6e8fa7e1 100644 --- a/rest_framework_json_api/serializers.py +++ b/rest_framework_json_api/serializers.py @@ -45,7 +45,7 @@ def __init__(self, *args, **kwargs): self.model_class = kwargs.pop("model_class", self.model_class) # this has no fields but assumptions are made elsewhere that self.fields exists. self.fields = {} - super(ResourceIdentifierObjectSerializer, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) def to_representation(self, instance): return { @@ -69,7 +69,7 @@ def to_internal_value(self, data): self.fail("incorrect_type", data_type=type(data["pk"]).__name__) -class SparseFieldsetsMixin(object): +class SparseFieldsetsMixin: """ A serializer mixin that adds support for sparse fieldsets through `fields` query parameter. @@ -77,7 +77,7 @@ class SparseFieldsetsMixin(object): """ def __init__(self, *args, **kwargs): - super(SparseFieldsetsMixin, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) context = kwargs.get("context") request = context.get("request") if context else None @@ -107,7 +107,7 @@ def __init__(self, *args, **kwargs): self.fields.pop(field_name) -class IncludedResourcesValidationMixin(object): +class IncludedResourcesValidationMixin: """ A serializer mixin that adds validation of `include` query parameter to support compound documents. @@ -150,7 +150,7 @@ def validate_path(serializer_class, field_path, path): this_serializer_class, included_field_path, included_field_name ) - super(IncludedResourcesValidationMixin, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) class LazySerializersDict(Mapping): @@ -302,7 +302,7 @@ class PolymorphicSerializerMetaclass(SerializerMetaclass): """ def __new__(cls, name, bases, attrs): - new_class = super(PolymorphicSerializerMetaclass, cls).__new__( + new_class = super().__new__( cls, name, bases, attrs ) @@ -363,7 +363,7 @@ def get_fields(self): raise Exception( "Cannot get fields from a polymorphic serializer given a queryset" ) - return super(PolymorphicModelSerializer, self).get_fields() + return super().get_fields() @classmethod def get_polymorphic_serializer_for_instance(cls, instance): From d7490a7b2566ad08e98bab7a9a97ac912ebca63b Mon Sep 17 00:00:00 2001 From: Asif Saif Uddin Date: Fri, 10 Sep 2021 10:54:43 +0600 Subject: [PATCH 4/7] remove most common python 2 crafts from the codebase[renderers] --- rest_framework_json_api/renderers.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/rest_framework_json_api/renderers.py b/rest_framework_json_api/renderers.py index de9e3c32..0b399b8e 100644 --- a/rest_framework_json_api/renderers.py +++ b/rest_framework_json_api/renderers.py @@ -495,12 +495,12 @@ def render_relationship_view( links = view.get_links() if links: render_data.update({"links": links}), - return super(JSONRenderer, self).render( + return super().render( render_data, accepted_media_type, renderer_context ) def render_errors(self, data, accepted_media_type=None, renderer_context=None): - return super(JSONRenderer, self).render( + return super().render( utils.format_errors(data), accepted_media_type, renderer_context ) @@ -522,7 +522,7 @@ def render(self, data, accepted_media_type=None, renderer_context=None): # be None response = renderer_context.get("response", None) if response is not None and response.status_code == 204: - return super(JSONRenderer, self).render( + return super().render( None, accepted_media_type, renderer_context ) @@ -536,7 +536,7 @@ def render(self, data, accepted_media_type=None, renderer_context=None): # If `resource_name` is set to None then render default as the dev # wants to build the output format manually. if resource_name is None or resource_name is False: - return super(JSONRenderer, self).render( + return super().render( data, accepted_media_type, renderer_context ) @@ -664,7 +664,7 @@ def render(self, data, accepted_media_type=None, renderer_context=None): if json_api_meta: render_data["meta"] = utils.format_field_names(json_api_meta) - return super(JSONRenderer, self).render( + return super().render( render_data, accepted_media_type, renderer_context ) From b679cb65f195f6d40980c134530aaac5e59c9b77 Mon Sep 17 00:00:00 2001 From: Asif Saif Uddin Date: Fri, 10 Sep 2021 10:57:47 +0600 Subject: [PATCH 5/7] remove most common python 2 crafts from the codebase[relations] --- rest_framework_json_api/relations.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/rest_framework_json_api/relations.py b/rest_framework_json_api/relations.py index 605f7c1c..f6e91cfe 100644 --- a/rest_framework_json_api/relations.py +++ b/rest_framework_json_api/relations.py @@ -29,14 +29,14 @@ ] -class SkipDataMixin(object): +class SkipDataMixin: """ This workaround skips "data" rendering for relationships in order to save some sql queries and improve performance """ def __init__(self, *args, **kwargs): - super(SkipDataMixin, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) def get_attribute(self, instance): raise SkipField @@ -49,7 +49,7 @@ class ManyRelatedFieldWithNoData(SkipDataMixin, DRFManyRelatedField): pass -class HyperlinkedMixin(object): +class HyperlinkedMixin: self_link_view_name = None related_link_view_name = None related_link_lookup_field = "pk" @@ -72,7 +72,7 @@ def __init__(self, self_link_view_name=None, related_link_view_name=None, **kwar # implicit `self` argument to be passed. self.reverse = reverse - super(HyperlinkedMixin, self).__init__(**kwargs) + super().__init__(**kwargs) def get_url(self, name, view_name, kwargs, request): """ @@ -197,7 +197,7 @@ def __init__(self, **kwargs): if model: self.model = model - super(ResourceRelatedField, self).__init__(**kwargs) + super().__init__(**kwargs) def use_pk_only_optimization(self): # We need the real object to determine its type... @@ -245,7 +245,7 @@ def to_internal_value(self, data): received_type=data["type"], ) - return super(ResourceRelatedField, self).to_internal_value(data["id"]) + return super().to_internal_value(data["id"]) def to_representation(self, value): if getattr(self, "pk_field", None) is not None: @@ -329,7 +329,7 @@ class PolymorphicResourceRelatedField(ResourceRelatedField): def __init__(self, polymorphic_serializer, *args, **kwargs): self.polymorphic_serializer = polymorphic_serializer - super(PolymorphicResourceRelatedField, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) def use_pk_only_optimization(self): return False From 02871ae5f3edfd078b3c9d81d0e0667bc4839dba Mon Sep 17 00:00:00 2001 From: Asif Saif Uddin Date: Fri, 10 Sep 2021 13:06:33 +0600 Subject: [PATCH 6/7] added the author name --- AUTHORS | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS b/AUTHORS index 03da87a8..cb038bd4 100644 --- a/AUTHORS +++ b/AUTHORS @@ -2,6 +2,7 @@ Adam Wróbel Adam Ziolkowski Alan Crosswell Anton Shutik +Asif Saif Uddin Beni Keller Boris Pleshakov Charlie Allatson From f78901b657d883865852d0876843866e8695cc3c Mon Sep 17 00:00:00 2001 From: Asif Saif Uddin Date: Fri, 10 Sep 2021 13:06:47 +0600 Subject: [PATCH 7/7] black format --- rest_framework_json_api/renderers.py | 16 ++++------------ rest_framework_json_api/serializers.py | 4 +--- 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/rest_framework_json_api/renderers.py b/rest_framework_json_api/renderers.py index 0b399b8e..e86c0c0b 100644 --- a/rest_framework_json_api/renderers.py +++ b/rest_framework_json_api/renderers.py @@ -495,9 +495,7 @@ def render_relationship_view( links = view.get_links() if links: render_data.update({"links": links}), - return super().render( - render_data, accepted_media_type, renderer_context - ) + return super().render(render_data, accepted_media_type, renderer_context) def render_errors(self, data, accepted_media_type=None, renderer_context=None): return super().render( @@ -522,9 +520,7 @@ def render(self, data, accepted_media_type=None, renderer_context=None): # be None response = renderer_context.get("response", None) if response is not None and response.status_code == 204: - return super().render( - None, accepted_media_type, renderer_context - ) + return super().render(None, accepted_media_type, renderer_context) from rest_framework_json_api.views import RelationshipView @@ -536,9 +532,7 @@ def render(self, data, accepted_media_type=None, renderer_context=None): # If `resource_name` is set to None then render default as the dev # wants to build the output format manually. if resource_name is None or resource_name is False: - return super().render( - data, accepted_media_type, renderer_context - ) + return super().render(data, accepted_media_type, renderer_context) json_api_data = data # initialize json_api_meta with pagination meta or an empty dict @@ -664,9 +658,7 @@ def render(self, data, accepted_media_type=None, renderer_context=None): if json_api_meta: render_data["meta"] = utils.format_field_names(json_api_meta) - return super().render( - render_data, accepted_media_type, renderer_context - ) + return super().render(render_data, accepted_media_type, renderer_context) class BrowsableAPIRenderer(renderers.BrowsableAPIRenderer): diff --git a/rest_framework_json_api/serializers.py b/rest_framework_json_api/serializers.py index 6e8fa7e1..ce80874a 100644 --- a/rest_framework_json_api/serializers.py +++ b/rest_framework_json_api/serializers.py @@ -302,9 +302,7 @@ class PolymorphicSerializerMetaclass(SerializerMetaclass): """ def __new__(cls, name, bases, attrs): - new_class = super().__new__( - cls, name, bases, attrs - ) + new_class = super().__new__(cls, name, bases, attrs) # Ensure initialization is only performed for subclasses of PolymorphicModelSerializer # (excluding PolymorphicModelSerializer class itself).