From 9bea804f147869376f2d410d9e9e0d8f9faa7770 Mon Sep 17 00:00:00 2001
From: Eliot Berriot <contact@eliotberriot.com>
Date: Sun, 10 Jun 2018 10:55:16 +0200
Subject: [PATCH] See #297: sorted imports

---
 api/funkwhale_api/activity/views.py           |  3 +-
 api/funkwhale_api/common/auth.py              |  2 --
 api/funkwhale_api/common/authentication.py    |  1 -
 api/funkwhale_api/common/consumers.py         |  1 +
 api/funkwhale_api/common/fields.py            |  2 --
 api/funkwhale_api/common/permissions.py       |  1 -
 api/funkwhale_api/common/preferences.py       |  6 ++--
 .../django_permissions_to_user_permissions.py |  4 +--
 api/funkwhale_api/common/session.py           |  1 -
 api/funkwhale_api/common/utils.py             |  2 +-
 api/funkwhale_api/downloader/downloader.py    |  1 +
 api/funkwhale_api/favorites/activities.py     |  2 +-
 api/funkwhale_api/favorites/factories.py      |  1 -
 api/funkwhale_api/favorites/urls.py           |  4 +--
 api/funkwhale_api/favorites/views.py          | 10 +++---
 api/funkwhale_api/federation/actors.py        | 12 ++-----
 .../federation/authentication.py              | 10 ++----
 api/funkwhale_api/federation/factories.py     | 10 +++---
 api/funkwhale_api/federation/keys.py          |  7 ++---
 api/funkwhale_api/federation/library.py       |  8 ++---
 api/funkwhale_api/federation/models.py        |  2 +-
 api/funkwhale_api/federation/permissions.py   |  1 +
 api/funkwhale_api/federation/serializers.py   |  8 ++---
 api/funkwhale_api/federation/signing.py       |  4 +--
 api/funkwhale_api/federation/tasks.py         |  7 ++---
 api/funkwhale_api/federation/urls.py          |  2 +-
 api/funkwhale_api/federation/views.py         | 31 +++++++++----------
 api/funkwhale_api/federation/webfinger.py     |  3 +-
 api/funkwhale_api/history/activities.py       |  2 +-
 api/funkwhale_api/history/models.py           |  2 +-
 api/funkwhale_api/history/urls.py             |  4 +--
 api/funkwhale_api/history/views.py            |  6 ++--
 .../instance/dynamic_preferences_registry.py  |  1 -
 api/funkwhale_api/instance/nodeinfo.py        |  1 -
 api/funkwhale_api/instance/views.py           |  6 ++--
 api/funkwhale_api/manage/urls.py              |  4 +--
 api/funkwhale_api/manage/views.py             |  7 ++---
 api/funkwhale_api/music/factories.py          |  5 +--
 api/funkwhale_api/music/filters.py            |  2 +-
 api/funkwhale_api/music/lyrics.py             |  1 +
 .../management/commands/fix_track_files.py    |  3 +-
 api/funkwhale_api/music/metadata.py           |  2 +-
 api/funkwhale_api/music/models.py             | 21 ++++++-------
 api/funkwhale_api/music/permissions.py        |  3 +-
 api/funkwhale_api/music/serializers.py        |  3 +-
 api/funkwhale_api/music/tasks.py              | 10 +++---
 api/funkwhale_api/music/utils.py              |  4 +--
 api/funkwhale_api/music/views.py              | 24 ++++++--------
 api/funkwhale_api/musicbrainz/client.py       |  4 +--
 api/funkwhale_api/musicbrainz/views.py        |  5 ++-
 api/funkwhale_api/playlists/models.py         |  7 ++---
 api/funkwhale_api/playlists/serializers.py    |  1 +
 api/funkwhale_api/playlists/views.py          | 15 +++------
 .../acoustid/dynamic_preferences_registry.py  |  3 +-
 .../management/commands/import_files.py       |  3 +-
 .../providers/audiofile/tasks.py              |  7 +++--
 api/funkwhale_api/providers/youtube/client.py |  1 -
 .../youtube/dynamic_preferences_registry.py   |  3 +-
 api/funkwhale_api/providers/youtube/urls.py   |  2 +-
 api/funkwhale_api/providers/youtube/views.py  |  3 +-
 api/funkwhale_api/radios/filters.py           |  3 +-
 api/funkwhale_api/radios/models.py            |  6 ++--
 api/funkwhale_api/radios/radios.py            | 11 ++++---
 api/funkwhale_api/radios/serializers.py       |  3 +-
 api/funkwhale_api/radios/urls.py              |  4 +--
 api/funkwhale_api/radios/views.py             | 12 ++-----
 api/funkwhale_api/requests/api_urls.py        |  4 +--
 api/funkwhale_api/requests/filters.py         |  1 +
 api/funkwhale_api/requests/models.py          |  1 -
 api/funkwhale_api/requests/views.py           |  4 +--
 api/funkwhale_api/subsonic/authentication.py  |  3 +-
 .../subsonic/dynamic_preferences_registry.py  |  1 -
 api/funkwhale_api/subsonic/negotiation.py     |  4 +--
 api/funkwhale_api/subsonic/serializers.py     |  3 +-
 api/funkwhale_api/subsonic/views.py           | 10 ++----
 api/funkwhale_api/taskapp/celery.py           |  4 +--
 api/funkwhale_api/users/adapters.py           |  3 +-
 api/funkwhale_api/users/api_urls.py           |  1 +
 api/funkwhale_api/users/factories.py          |  4 +--
 api/funkwhale_api/users/models.py             |  7 ++---
 api/funkwhale_api/users/rest_auth_urls.py     |  6 ++--
 api/funkwhale_api/users/serializers.py        |  4 +--
 api/funkwhale_api/users/views.py              | 13 +++-----
 api/setup.cfg                                 |  3 ++
 api/tests/activity/test_views.py              |  3 +-
 api/tests/channels/test_auth.py               |  1 -
 api/tests/common/test_fields.py               |  1 -
 api/tests/common/test_permissions.py          |  4 +--
 api/tests/common/test_preferences.py          |  2 +-
 api/tests/common/test_scripts.py              |  2 +-
 api/tests/common/test_session.py              |  1 -
 api/tests/conftest.py                         | 11 +++----
 api/tests/favorites/test_activity.py          |  5 ++-
 api/tests/favorites/test_favorites.py         |  1 +
 api/tests/federation/test_activity.py         |  3 +-
 api/tests/federation/test_actors.py           |  7 +----
 api/tests/federation/test_authentication.py   |  3 +-
 api/tests/federation/test_library.py          |  3 +-
 api/tests/federation/test_models.py           |  2 --
 api/tests/federation/test_permissions.py      |  3 +-
 api/tests/federation/test_serializers.py      |  6 +---
 api/tests/federation/test_signing.py          |  3 +-
 api/tests/federation/test_tasks.py            |  3 +-
 api/tests/federation/test_views.py            | 11 ++-----
 api/tests/federation/test_webfinger.py        |  1 -
 api/tests/history/test_activity.py            |  5 ++-
 api/tests/instance/test_nodeinfo.py           |  1 -
 api/tests/instance/test_preferences.py        |  2 --
 api/tests/instance/test_views.py              |  1 -
 api/tests/manage/test_views.py                |  4 +--
 api/tests/music/conftest.py                   |  1 -
 api/tests/music/test_api.py                   |  5 ++-
 api/tests/music/test_lyrics.py                |  3 +-
 api/tests/music/test_metadata.py              |  3 +-
 api/tests/music/test_models.py                |  5 ++-
 api/tests/music/test_music.py                 |  4 ++-
 api/tests/music/test_tasks.py                 |  1 +
 api/tests/music/test_utils.py                 |  1 +
 api/tests/music/test_views.py                 |  5 ++-
 api/tests/musicbrainz/test_api.py             |  1 -
 api/tests/playlists/test_models.py            |  1 -
 api/tests/playlists/test_serializers.py       |  3 +-
 api/tests/playlists/test_views.py             |  4 +--
 api/tests/radios/test_api.py                  |  3 +-
 api/tests/radios/test_filters.py              |  1 -
 api/tests/radios/test_radios.py               |  9 ++----
 api/tests/subsonic/test_authentication.py     |  2 +-
 api/tests/subsonic/test_views.py              |  7 ++---
 api/tests/test_import_audio_file.py           |  2 +-
 api/tests/test_youtube.py                     |  2 ++
 api/tests/users/test_jwt.py                   |  2 --
 api/tests/users/test_views.py                 |  1 -
 132 files changed, 218 insertions(+), 363 deletions(-)

diff --git a/api/funkwhale_api/activity/views.py b/api/funkwhale_api/activity/views.py
index f2f747d4d8..701dd04b8c 100644
--- a/api/funkwhale_api/activity/views.py
+++ b/api/funkwhale_api/activity/views.py
@@ -4,8 +4,7 @@ from rest_framework.response import Response
 from funkwhale_api.common.permissions import ConditionalAuthentication
 from funkwhale_api.favorites.models import TrackFavorite
 
-from . import serializers
-from . import utils
+from . import serializers, utils
 
 
 class ActivityViewSet(viewsets.GenericViewSet):
diff --git a/api/funkwhale_api/common/auth.py b/api/funkwhale_api/common/auth.py
index 83738a3e94..7717c836ba 100644
--- a/api/funkwhale_api/common/auth.py
+++ b/api/funkwhale_api/common/auth.py
@@ -1,8 +1,6 @@
 from urllib.parse import parse_qs
 
-
 from django.contrib.auth.models import AnonymousUser
-
 from rest_framework import exceptions
 from rest_framework_jwt.authentication import BaseJSONWebTokenAuthentication
 
diff --git a/api/funkwhale_api/common/authentication.py b/api/funkwhale_api/common/authentication.py
index 9ddc06a3be..10bf36613f 100644
--- a/api/funkwhale_api/common/authentication.py
+++ b/api/funkwhale_api/common/authentication.py
@@ -1,6 +1,5 @@
 from django.utils.encoding import smart_text
 from django.utils.translation import ugettext as _
-
 from rest_framework import exceptions
 from rest_framework_jwt import authentication
 from rest_framework_jwt.settings import api_settings
diff --git a/api/funkwhale_api/common/consumers.py b/api/funkwhale_api/common/consumers.py
index 32a8876dce..47a666f054 100644
--- a/api/funkwhale_api/common/consumers.py
+++ b/api/funkwhale_api/common/consumers.py
@@ -1,4 +1,5 @@
 from channels.generic.websocket import JsonWebsocketConsumer
+
 from funkwhale_api.common import channels
 
 
diff --git a/api/funkwhale_api/common/fields.py b/api/funkwhale_api/common/fields.py
index de3ee37e58..190576efa6 100644
--- a/api/funkwhale_api/common/fields.py
+++ b/api/funkwhale_api/common/fields.py
@@ -1,10 +1,8 @@
 import django_filters
-
 from django.db import models
 
 from funkwhale_api.music import utils
 
-
 PRIVACY_LEVEL_CHOICES = [
     ("me", "Only me"),
     ("followers", "Me and my followers"),
diff --git a/api/funkwhale_api/common/permissions.py b/api/funkwhale_api/common/permissions.py
index 0671645427..8f391a70c1 100644
--- a/api/funkwhale_api/common/permissions.py
+++ b/api/funkwhale_api/common/permissions.py
@@ -1,7 +1,6 @@
 import operator
 
 from django.http import Http404
-
 from rest_framework.permissions import BasePermission
 
 from funkwhale_api.common import preferences
diff --git a/api/funkwhale_api/common/preferences.py b/api/funkwhale_api/common/preferences.py
index 9b8f12e856..acda9a90c3 100644
--- a/api/funkwhale_api/common/preferences.py
+++ b/api/funkwhale_api/common/preferences.py
@@ -1,8 +1,6 @@
-from django.conf import settings
 from django import forms
-
-from dynamic_preferences import serializers
-from dynamic_preferences import types
+from django.conf import settings
+from dynamic_preferences import serializers, types
 from dynamic_preferences.registries import global_preferences_registry
 
 
diff --git a/api/funkwhale_api/common/scripts/django_permissions_to_user_permissions.py b/api/funkwhale_api/common/scripts/django_permissions_to_user_permissions.py
index 1c20723851..48144f8ea7 100644
--- a/api/funkwhale_api/common/scripts/django_permissions_to_user_permissions.py
+++ b/api/funkwhale_api/common/scripts/django_permissions_to_user_permissions.py
@@ -2,10 +2,10 @@
 Convert django permissions to user permissions in the database,
 following the work done in #152.
 """
+from django.contrib.auth.models import Permission
 from django.db.models import Q
-from funkwhale_api.users import models
 
-from django.contrib.auth.models import Permission
+from funkwhale_api.users import models
 
 mapping = {
     "dynamic_preferences.change_globalpreferencemodel": "settings",
diff --git a/api/funkwhale_api/common/session.py b/api/funkwhale_api/common/session.py
index 871fc4c219..4d5d0bb60b 100644
--- a/api/funkwhale_api/common/session.py
+++ b/api/funkwhale_api/common/session.py
@@ -1,5 +1,4 @@
 import requests
-
 from django.conf import settings
 
 import funkwhale_api
diff --git a/api/funkwhale_api/common/utils.py b/api/funkwhale_api/common/utils.py
index f2ea52a8c5..221d2336b7 100644
--- a/api/funkwhale_api/common/utils.py
+++ b/api/funkwhale_api/common/utils.py
@@ -1,6 +1,6 @@
-from urllib.parse import urlencode, parse_qs, urlsplit, urlunsplit
 import os
 import shutil
+from urllib.parse import parse_qs, urlencode, urlsplit, urlunsplit
 
 from django.db import transaction
 
diff --git a/api/funkwhale_api/downloader/downloader.py b/api/funkwhale_api/downloader/downloader.py
index 41ae729958..f2b7568cc5 100644
--- a/api/funkwhale_api/downloader/downloader.py
+++ b/api/funkwhale_api/downloader/downloader.py
@@ -1,4 +1,5 @@
 import os
+
 import youtube_dl
 from django.conf import settings
 
diff --git a/api/funkwhale_api/favorites/activities.py b/api/funkwhale_api/favorites/activities.py
index d9d546335b..294194e061 100644
--- a/api/funkwhale_api/favorites/activities.py
+++ b/api/funkwhale_api/favorites/activities.py
@@ -1,5 +1,5 @@
-from funkwhale_api.common import channels
 from funkwhale_api.activity import record
+from funkwhale_api.common import channels
 
 from . import serializers
 
diff --git a/api/funkwhale_api/favorites/factories.py b/api/funkwhale_api/favorites/factories.py
index 797c135ef0..d96ef1c151 100644
--- a/api/funkwhale_api/favorites/factories.py
+++ b/api/funkwhale_api/favorites/factories.py
@@ -1,7 +1,6 @@
 import factory
 
 from funkwhale_api.factories import registry
-
 from funkwhale_api.music.factories import TrackFactory
 from funkwhale_api.users.factories import UserFactory
 
diff --git a/api/funkwhale_api/favorites/urls.py b/api/funkwhale_api/favorites/urls.py
index 69bc01f651..28d0c86766 100644
--- a/api/funkwhale_api/favorites/urls.py
+++ b/api/funkwhale_api/favorites/urls.py
@@ -1,7 +1,7 @@
-from . import views
-
 from rest_framework import routers
 
+from . import views
+
 router = routers.SimpleRouter()
 router.register(r"tracks", views.TrackFavoriteViewSet, "tracks")
 
diff --git a/api/funkwhale_api/favorites/views.py b/api/funkwhale_api/favorites/views.py
index 6210ea2cf5..4d1c1e756a 100644
--- a/api/funkwhale_api/favorites/views.py
+++ b/api/funkwhale_api/favorites/views.py
@@ -1,14 +1,12 @@
-from rest_framework import mixins, viewsets
-from rest_framework import status
-from rest_framework.response import Response
+from rest_framework import mixins, status, viewsets
 from rest_framework.decorators import list_route
+from rest_framework.response import Response
 
 from funkwhale_api.activity import record
-from funkwhale_api.music.models import Track
 from funkwhale_api.common.permissions import ConditionalAuthentication
+from funkwhale_api.music.models import Track
 
-from . import models
-from . import serializers
+from . import models, serializers
 
 
 class TrackFavoriteViewSet(
diff --git a/api/funkwhale_api/federation/actors.py b/api/funkwhale_api/federation/actors.py
index d42ea575f4..f0b6b0986c 100644
--- a/api/funkwhale_api/federation/actors.py
+++ b/api/funkwhale_api/federation/actors.py
@@ -6,22 +6,14 @@ from django.conf import settings
 from django.db import transaction
 from django.urls import reverse
 from django.utils import timezone
-
 from rest_framework.exceptions import PermissionDenied
 
-
-from funkwhale_api.common import preferences
-from funkwhale_api.common import session
+from funkwhale_api.common import preferences, session
 from funkwhale_api.common import utils as funkwhale_utils
 from funkwhale_api.music import models as music_models
 from funkwhale_api.music import tasks as music_tasks
 
-from . import activity
-from . import keys
-from . import models
-from . import serializers
-from . import signing
-from . import utils
+from . import activity, keys, models, serializers, signing, utils
 
 logger = logging.getLogger(__name__)
 
diff --git a/api/funkwhale_api/federation/authentication.py b/api/funkwhale_api/federation/authentication.py
index a12d510346..f32c78ff30 100644
--- a/api/funkwhale_api/federation/authentication.py
+++ b/api/funkwhale_api/federation/authentication.py
@@ -1,14 +1,8 @@
 import cryptography
-
 from django.contrib.auth.models import AnonymousUser
+from rest_framework import authentication, exceptions
 
-from rest_framework import authentication
-from rest_framework import exceptions
-
-from . import actors
-from . import keys
-from . import signing
-from . import utils
+from . import actors, keys, signing, utils
 
 
 class SignatureAuthentication(authentication.BaseAuthentication):
diff --git a/api/funkwhale_api/federation/factories.py b/api/funkwhale_api/federation/factories.py
index 52a5e8b54d..7370ebd77d 100644
--- a/api/funkwhale_api/federation/factories.py
+++ b/api/funkwhale_api/federation/factories.py
@@ -1,16 +1,14 @@
+import uuid
+
 import factory
 import requests
 import requests_http_signature
-import uuid
-
-from django.utils import timezone
 from django.conf import settings
+from django.utils import timezone
 
 from funkwhale_api.factories import registry
 
-from . import keys
-from . import models
-
+from . import keys, models
 
 registry.register(keys.get_key_pair, name="federation.KeyPair")
 
diff --git a/api/funkwhale_api/federation/keys.py b/api/funkwhale_api/federation/keys.py
index bc9416fb85..e7c30c50ae 100644
--- a/api/funkwhale_api/federation/keys.py
+++ b/api/funkwhale_api/federation/keys.py
@@ -1,10 +1,9 @@
-from cryptography.hazmat.primitives import serialization as crypto_serialization
-from cryptography.hazmat.primitives.asymmetric import rsa
-from cryptography.hazmat.backends import default_backend as crypto_default_backend
-
 import re
 import urllib.parse
 
+from cryptography.hazmat.backends import default_backend as crypto_default_backend
+from cryptography.hazmat.primitives import serialization as crypto_serialization
+from cryptography.hazmat.primitives.asymmetric import rsa
 
 KEY_ID_REGEX = re.compile(r"keyId=\"(?P<id>.*)\"")
 
diff --git a/api/funkwhale_api/federation/library.py b/api/funkwhale_api/federation/library.py
index 28bb9a762a..e1587f2a8e 100644
--- a/api/funkwhale_api/federation/library.py
+++ b/api/funkwhale_api/federation/library.py
@@ -1,15 +1,11 @@
 import json
-import requests
 
+import requests
 from django.conf import settings
 
 from funkwhale_api.common import session
 
-from . import actors
-from . import models
-from . import serializers
-from . import signing
-from . import webfinger
+from . import actors, models, serializers, signing, webfinger
 
 
 def scan_from_account_name(account_name):
diff --git a/api/funkwhale_api/federation/models.py b/api/funkwhale_api/federation/models.py
index 398ab23c4d..979b0674a9 100644
--- a/api/funkwhale_api/federation/models.py
+++ b/api/funkwhale_api/federation/models.py
@@ -1,6 +1,6 @@
 import os
-import uuid
 import tempfile
+import uuid
 
 from django.conf import settings
 from django.contrib.postgres.fields import JSONField
diff --git a/api/funkwhale_api/federation/permissions.py b/api/funkwhale_api/federation/permissions.py
index c1a39a6902..a08d57e5f3 100644
--- a/api/funkwhale_api/federation/permissions.py
+++ b/api/funkwhale_api/federation/permissions.py
@@ -2,6 +2,7 @@
 from rest_framework.permissions import BasePermission
 
 from funkwhale_api.common import preferences
+
 from . import actors
 
 
diff --git a/api/funkwhale_api/federation/serializers.py b/api/funkwhale_api/federation/serializers.py
index 91ad2eb971..a706324617 100644
--- a/api/funkwhale_api/federation/serializers.py
+++ b/api/funkwhale_api/federation/serializers.py
@@ -3,18 +3,14 @@ import urllib.parse
 
 from django.core.paginator import Paginator
 from django.db import transaction
-
 from rest_framework import serializers
 
-from funkwhale_api.common import utils as funkwhale_utils
 from funkwhale_api.common import serializers as common_serializers
+from funkwhale_api.common import utils as funkwhale_utils
 from funkwhale_api.music import models as music_models
 from funkwhale_api.music import tasks as music_tasks
-from . import activity
-from . import filters
-from . import models
-from . import utils
 
+from . import activity, filters, models, utils
 
 AP_CONTEXT = [
     "https://www.w3.org/ns/activitystreams",
diff --git a/api/funkwhale_api/federation/signing.py b/api/funkwhale_api/federation/signing.py
index bb02f042b4..15525b3e51 100644
--- a/api/funkwhale_api/federation/signing.py
+++ b/api/funkwhale_api/federation/signing.py
@@ -1,9 +1,9 @@
 import logging
+
 import requests
 import requests_http_signature
 
-from . import exceptions
-from . import utils
+from . import exceptions, utils
 
 logger = logging.getLogger(__name__)
 
diff --git a/api/funkwhale_api/federation/tasks.py b/api/funkwhale_api/federation/tasks.py
index 596755e3b3..d1b5b7bd21 100644
--- a/api/funkwhale_api/federation/tasks.py
+++ b/api/funkwhale_api/federation/tasks.py
@@ -6,18 +6,15 @@ import os
 from django.conf import settings
 from django.db.models import Q
 from django.utils import timezone
-
-from requests.exceptions import RequestException
 from dynamic_preferences.registries import global_preferences_registry
+from requests.exceptions import RequestException
 
 from funkwhale_api.common import session
 from funkwhale_api.taskapp import celery
 
 from . import actors
 from . import library as lb
-from . import models
-from . import signing
-
+from . import models, signing
 
 logger = logging.getLogger(__name__)
 
diff --git a/api/funkwhale_api/federation/urls.py b/api/funkwhale_api/federation/urls.py
index 3cd4cb7329..2594f55499 100644
--- a/api/funkwhale_api/federation/urls.py
+++ b/api/funkwhale_api/federation/urls.py
@@ -1,6 +1,6 @@
 from django.conf.urls import include, url
-
 from rest_framework import routers
+
 from . import views
 
 router = routers.SimpleRouter(trailing_slash=False)
diff --git a/api/funkwhale_api/federation/views.py b/api/funkwhale_api/federation/views.py
index 84cd27db67..67b2746874 100644
--- a/api/funkwhale_api/federation/views.py
+++ b/api/funkwhale_api/federation/views.py
@@ -3,27 +3,26 @@ from django.core import paginator
 from django.db import transaction
 from django.http import HttpResponse
 from django.urls import reverse
-
-from rest_framework import mixins
-from rest_framework import response
-from rest_framework import viewsets
-from rest_framework.decorators import list_route, detail_route
+from rest_framework import mixins, response, viewsets
+from rest_framework.decorators import detail_route, list_route
 
 from funkwhale_api.common import preferences
 from funkwhale_api.music import models as music_models
 from funkwhale_api.users.permissions import HasUserPermission
 
-from . import actors
-from . import authentication
-from . import filters
-from . import library
-from . import models
-from . import permissions
-from . import renderers
-from . import serializers
-from . import tasks
-from . import utils
-from . import webfinger
+from . import (
+    actors,
+    authentication,
+    filters,
+    library,
+    models,
+    permissions,
+    renderers,
+    serializers,
+    tasks,
+    utils,
+    webfinger
+)
 
 
 class FederationMixin(object):
diff --git a/api/funkwhale_api/federation/webfinger.py b/api/funkwhale_api/federation/webfinger.py
index fd06d8d564..b899fe2072 100644
--- a/api/funkwhale_api/federation/webfinger.py
+++ b/api/funkwhale_api/federation/webfinger.py
@@ -3,8 +3,7 @@ from django.conf import settings
 
 from funkwhale_api.common import session
 
-from . import actors
-from . import serializers
+from . import actors, serializers
 
 VALID_RESOURCE_TYPES = ["acct"]
 
diff --git a/api/funkwhale_api/history/activities.py b/api/funkwhale_api/history/activities.py
index 3e8556ce55..b63de1f26f 100644
--- a/api/funkwhale_api/history/activities.py
+++ b/api/funkwhale_api/history/activities.py
@@ -1,5 +1,5 @@
-from funkwhale_api.common import channels
 from funkwhale_api.activity import record
+from funkwhale_api.common import channels
 
 from . import serializers
 
diff --git a/api/funkwhale_api/history/models.py b/api/funkwhale_api/history/models.py
index 5a72ee4495..8da4e67cd5 100644
--- a/api/funkwhale_api/history/models.py
+++ b/api/funkwhale_api/history/models.py
@@ -1,5 +1,5 @@
-from django.utils import timezone
 from django.db import models
+from django.utils import timezone
 
 from funkwhale_api.music.models import Track
 
diff --git a/api/funkwhale_api/history/urls.py b/api/funkwhale_api/history/urls.py
index 2c6209757d..707e95cd7d 100644
--- a/api/funkwhale_api/history/urls.py
+++ b/api/funkwhale_api/history/urls.py
@@ -1,7 +1,7 @@
-from . import views
-
 from rest_framework import routers
 
+from . import views
+
 router = routers.SimpleRouter()
 router.register(r"listenings", views.ListeningViewSet, "listenings")
 
diff --git a/api/funkwhale_api/history/views.py b/api/funkwhale_api/history/views.py
index db45cec692..e104a2aa3d 100644
--- a/api/funkwhale_api/history/views.py
+++ b/api/funkwhale_api/history/views.py
@@ -1,10 +1,8 @@
-from rest_framework import mixins, viewsets
-from rest_framework import permissions
+from rest_framework import mixins, permissions, viewsets
 
 from funkwhale_api.activity import record
 
-from . import models
-from . import serializers
+from . import models, serializers
 
 
 class ListeningViewSet(
diff --git a/api/funkwhale_api/instance/dynamic_preferences_registry.py b/api/funkwhale_api/instance/dynamic_preferences_registry.py
index 618bd8ea4d..0edb94482d 100644
--- a/api/funkwhale_api/instance/dynamic_preferences_registry.py
+++ b/api/funkwhale_api/instance/dynamic_preferences_registry.py
@@ -1,5 +1,4 @@
 from django.forms import widgets
-
 from dynamic_preferences import types
 from dynamic_preferences.registries import global_preferences_registry
 
diff --git a/api/funkwhale_api/instance/nodeinfo.py b/api/funkwhale_api/instance/nodeinfo.py
index 9077a34bc8..0b8f4b3cec 100644
--- a/api/funkwhale_api/instance/nodeinfo.py
+++ b/api/funkwhale_api/instance/nodeinfo.py
@@ -5,7 +5,6 @@ from funkwhale_api.common import preferences
 
 from . import stats
 
-
 store = memoize.djangocache.Cache("default")
 memo = memoize.Memoizer(store, namespace="instance:stats")
 
diff --git a/api/funkwhale_api/instance/views.py b/api/funkwhale_api/instance/views.py
index 35432d4889..ea63110333 100644
--- a/api/funkwhale_api/instance/views.py
+++ b/api/funkwhale_api/instance/views.py
@@ -1,16 +1,14 @@
-from rest_framework import views
-from rest_framework.response import Response
-
 from dynamic_preferences.api import serializers
 from dynamic_preferences.api import viewsets as preferences_viewsets
 from dynamic_preferences.registries import global_preferences_registry
+from rest_framework import views
+from rest_framework.response import Response
 
 from funkwhale_api.common import preferences
 from funkwhale_api.users.permissions import HasUserPermission
 
 from . import nodeinfo
 
-
 NODEINFO_2_CONTENT_TYPE = "application/json; profile=http://nodeinfo.diaspora.software/ns/schema/2.0#; charset=utf-8"  # noqa
 
 
diff --git a/api/funkwhale_api/manage/urls.py b/api/funkwhale_api/manage/urls.py
index 38ed7d1c99..60853034f0 100644
--- a/api/funkwhale_api/manage/urls.py
+++ b/api/funkwhale_api/manage/urls.py
@@ -1,8 +1,8 @@
 from django.conf.urls import include, url
-from . import views
-
 from rest_framework import routers
 
+from . import views
+
 library_router = routers.SimpleRouter()
 library_router.register(r"track-files", views.ManageTrackFileViewSet, "track-files")
 
diff --git a/api/funkwhale_api/manage/views.py b/api/funkwhale_api/manage/views.py
index 77581acf0e..8511732c96 100644
--- a/api/funkwhale_api/manage/views.py
+++ b/api/funkwhale_api/manage/views.py
@@ -1,13 +1,10 @@
-from rest_framework import mixins
-from rest_framework import response
-from rest_framework import viewsets
+from rest_framework import mixins, response, viewsets
 from rest_framework.decorators import list_route
 
 from funkwhale_api.music import models as music_models
 from funkwhale_api.users.permissions import HasUserPermission
 
-from . import filters
-from . import serializers
+from . import filters, serializers
 
 
 class ManageTrackFileViewSet(
diff --git a/api/funkwhale_api/music/factories.py b/api/funkwhale_api/music/factories.py
index 6e2e6a1155..2dd4ba3038 100644
--- a/api/funkwhale_api/music/factories.py
+++ b/api/funkwhale_api/music/factories.py
@@ -1,7 +1,8 @@
-import factory
 import os
 
-from funkwhale_api.factories import registry, ManyToManyFromList
+import factory
+
+from funkwhale_api.factories import ManyToManyFromList, registry
 from funkwhale_api.federation.factories import LibraryTrackFactory
 from funkwhale_api.users.factories import UserFactory
 
diff --git a/api/funkwhale_api/music/filters.py b/api/funkwhale_api/music/filters.py
index 6e1e4df09d..1f73fc9b06 100644
--- a/api/funkwhale_api/music/filters.py
+++ b/api/funkwhale_api/music/filters.py
@@ -1,8 +1,8 @@
 from django.db.models import Count
-
 from django_filters import rest_framework as filters
 
 from funkwhale_api.common import fields
+
 from . import models
 
 
diff --git a/api/funkwhale_api/music/lyrics.py b/api/funkwhale_api/music/lyrics.py
index 2cf1cff75a..6d5f20e44d 100644
--- a/api/funkwhale_api/music/lyrics.py
+++ b/api/funkwhale_api/music/lyrics.py
@@ -1,4 +1,5 @@
 import urllib.request
+
 from bs4 import BeautifulSoup
 
 
diff --git a/api/funkwhale_api/music/management/commands/fix_track_files.py b/api/funkwhale_api/music/management/commands/fix_track_files.py
index c494b05abd..c462f683f4 100644
--- a/api/funkwhale_api/music/management/commands/fix_track_files.py
+++ b/api/funkwhale_api/music/management/commands/fix_track_files.py
@@ -1,8 +1,7 @@
 import cacheops
-
+from django.core.management.base import BaseCommand
 from django.db import transaction
 from django.db.models import Q
-from django.core.management.base import BaseCommand
 
 from funkwhale_api.music import models, utils
 
diff --git a/api/funkwhale_api/music/metadata.py b/api/funkwhale_api/music/metadata.py
index 3a43521c58..d2534f6b24 100644
--- a/api/funkwhale_api/music/metadata.py
+++ b/api/funkwhale_api/music/metadata.py
@@ -1,6 +1,6 @@
-from django import forms
 import arrow
 import mutagen
+from django import forms
 
 NODEFAULT = object()
 
diff --git a/api/funkwhale_api/music/models.py b/api/funkwhale_api/music/models.py
index 95056738fc..c4c3d0fc21 100644
--- a/api/funkwhale_api/music/models.py
+++ b/api/funkwhale_api/music/models.py
@@ -1,29 +1,26 @@
-import os
-import arrow
 import datetime
-import tempfile
+import os
 import shutil
-import markdown
+import tempfile
 import uuid
 
+import arrow
+import markdown
 from django.conf import settings
-from django.db import models
-from django.core.files.base import ContentFile
 from django.core.files import File
+from django.core.files.base import ContentFile
+from django.db import models
 from django.db.models.signals import post_save
 from django.dispatch import receiver
 from django.urls import reverse
 from django.utils import timezone
-
 from taggit.managers import TaggableManager
 from versatileimagefield.fields import VersatileImageField
 
-from funkwhale_api import downloader
-from funkwhale_api import musicbrainz
+from funkwhale_api import downloader, musicbrainz
 from funkwhale_api.federation import utils as federation_utils
-from . import importers
-from . import metadata
-from . import utils
+
+from . import importers, metadata, utils
 
 
 class APIModelMixin(models.Model):
diff --git a/api/funkwhale_api/music/permissions.py b/api/funkwhale_api/music/permissions.py
index ab35337ec5..dc589b5dde 100644
--- a/api/funkwhale_api/music/permissions.py
+++ b/api/funkwhale_api/music/permissions.py
@@ -2,8 +2,7 @@
 from rest_framework.permissions import BasePermission
 
 from funkwhale_api.common import preferences
-from funkwhale_api.federation import actors
-from funkwhale_api.federation import models
+from funkwhale_api.federation import actors, models
 
 
 class Listen(BasePermission):
diff --git a/api/funkwhale_api/music/serializers.py b/api/funkwhale_api/music/serializers.py
index d39891aca1..c34970d0b5 100644
--- a/api/funkwhale_api/music/serializers.py
+++ b/api/funkwhale_api/music/serializers.py
@@ -5,8 +5,7 @@ from taggit.models import Tag
 from funkwhale_api.activity import serializers as activity_serializers
 from funkwhale_api.users.serializers import UserBasicSerializer
 
-from . import models
-from . import tasks
+from . import models, tasks
 
 
 class ArtistAlbumSerializer(serializers.ModelSerializer):
diff --git a/api/funkwhale_api/music/tasks.py b/api/funkwhale_api/music/tasks.py
index dd321e4dd7..788ef5dabc 100644
--- a/api/funkwhale_api/music/tasks.py
+++ b/api/funkwhale_api/music/tasks.py
@@ -1,21 +1,19 @@
 import logging
 import os
 
+from django.conf import settings
 from django.core.files.base import ContentFile
-
 from musicbrainzngs import ResponseError
 
 from funkwhale_api.common import preferences
-from funkwhale_api.federation import activity
-from funkwhale_api.federation import actors
+from funkwhale_api.federation import activity, actors
 from funkwhale_api.federation import serializers as federation_serializers
-from funkwhale_api.taskapp import celery
 from funkwhale_api.providers.acoustid import get_acoustid_client
 from funkwhale_api.providers.audiofile import tasks as audiofile_tasks
+from funkwhale_api.taskapp import celery
 
-from django.conf import settings
-from . import models
 from . import lyrics as lyrics_utils
+from . import models
 from . import utils as music_utils
 
 logger = logging.getLogger(__name__)
diff --git a/api/funkwhale_api/music/utils.py b/api/funkwhale_api/music/utils.py
index 9b300ac2a4..3080c1c6c0 100644
--- a/api/funkwhale_api/music/utils.py
+++ b/api/funkwhale_api/music/utils.py
@@ -1,8 +1,8 @@
-import magic
 import mimetypes
-import mutagen
 import re
 
+import magic
+import mutagen
 from django.db.models import Q
 
 
diff --git a/api/funkwhale_api/music/views.py b/api/funkwhale_api/music/views.py
index 1bb169f53f..92512a0e67 100644
--- a/api/funkwhale_api/music/views.py
+++ b/api/funkwhale_api/music/views.py
@@ -2,35 +2,31 @@ import json
 import logging
 import urllib
 
-from django.core.exceptions import ObjectDoesNotExist
 from django.conf import settings
+from django.core.exceptions import ObjectDoesNotExist
 from django.db import models, transaction
-from django.db.models.functions import Length
 from django.db.models import Count
+from django.db.models.functions import Length
 from django.utils import timezone
-
-from rest_framework import viewsets, views, mixins
+from musicbrainzngs import ResponseError
+from rest_framework import mixins
+from rest_framework import settings as rest_settings
+from rest_framework import views, viewsets
 from rest_framework.decorators import detail_route, list_route
 from rest_framework.response import Response
-from rest_framework import settings as rest_settings
-from musicbrainzngs import ResponseError
+from taggit.models import Tag
 
 from funkwhale_api.common import utils as funkwhale_utils
 from funkwhale_api.common.permissions import ConditionalAuthentication
-from funkwhale_api.users.permissions import HasUserPermission
-from taggit.models import Tag
 from funkwhale_api.federation.authentication import SignatureAuthentication
 from funkwhale_api.federation.models import LibraryTrack
 from funkwhale_api.musicbrainz import api
 from funkwhale_api.requests.models import ImportRequest
+from funkwhale_api.users.permissions import HasUserPermission
 
-from . import filters
-from . import importers
-from . import models
+from . import filters, importers, models
 from . import permissions as music_permissions
-from . import serializers
-from . import tasks
-from . import utils
+from . import serializers, tasks, utils
 
 logger = logging.getLogger(__name__)
 
diff --git a/api/funkwhale_api/musicbrainz/client.py b/api/funkwhale_api/musicbrainz/client.py
index b3749a93b3..deae0672fd 100644
--- a/api/funkwhale_api/musicbrainz/client.py
+++ b/api/funkwhale_api/musicbrainz/client.py
@@ -1,7 +1,7 @@
-import musicbrainzngs
 import memoize.djangocache
-
+import musicbrainzngs
 from django.conf import settings
+
 from funkwhale_api import __version__
 
 _api = musicbrainzngs
diff --git a/api/funkwhale_api/musicbrainz/views.py b/api/funkwhale_api/musicbrainz/views.py
index 07271def2d..b6f009dca7 100644
--- a/api/funkwhale_api/musicbrainz/views.py
+++ b/api/funkwhale_api/musicbrainz/views.py
@@ -1,11 +1,10 @@
 from rest_framework import viewsets
-from rest_framework.views import APIView
-from rest_framework.response import Response
 from rest_framework.decorators import list_route
+from rest_framework.response import Response
+from rest_framework.views import APIView
 
 from funkwhale_api.common.permissions import ConditionalAuthentication
 
-
 from .client import api
 
 
diff --git a/api/funkwhale_api/playlists/models.py b/api/funkwhale_api/playlists/models.py
index 65ba763237..e9df4624de 100644
--- a/api/funkwhale_api/playlists/models.py
+++ b/api/funkwhale_api/playlists/models.py
@@ -1,11 +1,8 @@
-from django.db import models
-from django.db import transaction
+from django.db import models, transaction
 from django.utils import timezone
-
 from rest_framework import exceptions
 
-from funkwhale_api.common import fields
-from funkwhale_api.common import preferences
+from funkwhale_api.common import fields, preferences
 
 
 class PlaylistQuerySet(models.QuerySet):
diff --git a/api/funkwhale_api/playlists/serializers.py b/api/funkwhale_api/playlists/serializers.py
index 94247611db..17cc06b10b 100644
--- a/api/funkwhale_api/playlists/serializers.py
+++ b/api/funkwhale_api/playlists/serializers.py
@@ -5,6 +5,7 @@ from funkwhale_api.common import preferences
 from funkwhale_api.music.models import Track
 from funkwhale_api.music.serializers import TrackSerializer
 from funkwhale_api.users.serializers import UserBasicSerializer
+
 from . import models
 
 
diff --git a/api/funkwhale_api/playlists/views.py b/api/funkwhale_api/playlists/views.py
index 2b4075ec97..d5d19df74b 100644
--- a/api/funkwhale_api/playlists/views.py
+++ b/api/funkwhale_api/playlists/views.py
@@ -1,18 +1,13 @@
-from django.db.models import Count
 from django.db import transaction
-
-from rest_framework import exceptions
-from rest_framework import mixins, viewsets
+from django.db.models import Count
+from rest_framework import exceptions, mixins, viewsets
 from rest_framework.decorators import detail_route
-from rest_framework.response import Response
 from rest_framework.permissions import IsAuthenticatedOrReadOnly
+from rest_framework.response import Response
 
-from funkwhale_api.common import permissions
-from funkwhale_api.common import fields
+from funkwhale_api.common import fields, permissions
 
-from . import filters
-from . import models
-from . import serializers
+from . import filters, models, serializers
 
 
 class PlaylistViewSet(
diff --git a/api/funkwhale_api/providers/acoustid/dynamic_preferences_registry.py b/api/funkwhale_api/providers/acoustid/dynamic_preferences_registry.py
index 2e5a35f0db..2411de86ad 100644
--- a/api/funkwhale_api/providers/acoustid/dynamic_preferences_registry.py
+++ b/api/funkwhale_api/providers/acoustid/dynamic_preferences_registry.py
@@ -1,7 +1,6 @@
 from django import forms
-
-from dynamic_preferences.types import StringPreference, Section
 from dynamic_preferences.registries import global_preferences_registry
+from dynamic_preferences.types import Section, StringPreference
 
 acoustid = Section("providers_acoustid")
 
diff --git a/api/funkwhale_api/providers/audiofile/management/commands/import_files.py b/api/funkwhale_api/providers/audiofile/management/commands/import_files.py
index 45b428790f..de2560d3c8 100644
--- a/api/funkwhale_api/providers/audiofile/management/commands/import_files.py
+++ b/api/funkwhale_api/providers/audiofile/management/commands/import_files.py
@@ -5,8 +5,7 @@ from django.conf import settings
 from django.core.files import File
 from django.core.management.base import BaseCommand, CommandError
 
-from funkwhale_api.music import models
-from funkwhale_api.music import tasks
+from funkwhale_api.music import models, tasks
 from funkwhale_api.users.models import User
 
 
diff --git a/api/funkwhale_api/providers/audiofile/tasks.py b/api/funkwhale_api/providers/audiofile/tasks.py
index a4426a0093..624e068c3c 100644
--- a/api/funkwhale_api/providers/audiofile/tasks.py
+++ b/api/funkwhale_api/providers/audiofile/tasks.py
@@ -1,11 +1,12 @@
-import acoustid
 import os
+
+import acoustid
 from django.core.files import File
 from django.db import transaction
 
-from funkwhale_api.taskapp import celery
+from funkwhale_api.music import metadata, models
 from funkwhale_api.providers.acoustid import get_acoustid_client
-from funkwhale_api.music import models, metadata
+from funkwhale_api.taskapp import celery
 
 
 @transaction.atomic
diff --git a/api/funkwhale_api/providers/youtube/client.py b/api/funkwhale_api/providers/youtube/client.py
index 94df351660..2235fcdc83 100644
--- a/api/funkwhale_api/providers/youtube/client.py
+++ b/api/funkwhale_api/providers/youtube/client.py
@@ -1,7 +1,6 @@
 import threading
 
 from apiclient.discovery import build
-
 from dynamic_preferences.registries import global_preferences_registry as registry
 
 YOUTUBE_API_SERVICE_NAME = "youtube"
diff --git a/api/funkwhale_api/providers/youtube/dynamic_preferences_registry.py b/api/funkwhale_api/providers/youtube/dynamic_preferences_registry.py
index 42b54b5350..2d950eb6b2 100644
--- a/api/funkwhale_api/providers/youtube/dynamic_preferences_registry.py
+++ b/api/funkwhale_api/providers/youtube/dynamic_preferences_registry.py
@@ -1,7 +1,6 @@
 from django import forms
-
-from dynamic_preferences.types import StringPreference, Section
 from dynamic_preferences.registries import global_preferences_registry
+from dynamic_preferences.types import Section, StringPreference
 
 youtube = Section("providers_youtube")
 
diff --git a/api/funkwhale_api/providers/youtube/urls.py b/api/funkwhale_api/providers/youtube/urls.py
index 710eabcac7..d9687ac9f8 100644
--- a/api/funkwhale_api/providers/youtube/urls.py
+++ b/api/funkwhale_api/providers/youtube/urls.py
@@ -1,6 +1,6 @@
 from django.conf.urls import url
-from .views import APISearch, APISearchs
 
+from .views import APISearch, APISearchs
 
 urlpatterns = [
     url(r"^search/$", APISearch.as_view(), name="search"),
diff --git a/api/funkwhale_api/providers/youtube/views.py b/api/funkwhale_api/providers/youtube/views.py
index 012b1825d5..5e1982f48e 100644
--- a/api/funkwhale_api/providers/youtube/views.py
+++ b/api/funkwhale_api/providers/youtube/views.py
@@ -1,5 +1,6 @@
-from rest_framework.views import APIView
 from rest_framework.response import Response
+from rest_framework.views import APIView
+
 from funkwhale_api.common.permissions import ConditionalAuthentication
 
 from .client import client
diff --git a/api/funkwhale_api/radios/filters.py b/api/funkwhale_api/radios/filters.py
index 72e18caf54..158bf578b4 100644
--- a/api/funkwhale_api/radios/filters.py
+++ b/api/funkwhale_api/radios/filters.py
@@ -1,11 +1,10 @@
 import collections
 
+import persisting_theory
 from django.core.exceptions import ValidationError
 from django.db.models import Q
 from django.urls import reverse_lazy
 
-import persisting_theory
-
 from funkwhale_api.music import models
 
 
diff --git a/api/funkwhale_api/radios/models.py b/api/funkwhale_api/radios/models.py
index 69f13f9f46..d0c3d1716a 100644
--- a/api/funkwhale_api/radios/models.py
+++ b/api/funkwhale_api/radios/models.py
@@ -1,9 +1,9 @@
-from django.db import models
-from django.utils import timezone
-from django.contrib.postgres.fields import JSONField
 from django.contrib.contenttypes.fields import GenericForeignKey
 from django.contrib.contenttypes.models import ContentType
+from django.contrib.postgres.fields import JSONField
 from django.core.serializers.json import DjangoJSONEncoder
+from django.db import models
+from django.utils import timezone
 
 from funkwhale_api.music.models import Track
 
diff --git a/api/funkwhale_api/radios/radios.py b/api/funkwhale_api/radios/radios.py
index 7e3c1ab5ad..c7c361de9d 100644
--- a/api/funkwhale_api/radios/radios.py
+++ b/api/funkwhale_api/radios/radios.py
@@ -1,13 +1,14 @@
 import random
-from rest_framework import serializers
-from django.db.models import Count
+
 from django.core.exceptions import ValidationError
+from django.db.models import Count
+from rest_framework import serializers
 from taggit.models import Tag
+
+from funkwhale_api.music.models import Artist, Track
 from funkwhale_api.users.models import User
-from funkwhale_api.music.models import Track, Artist
 
-from . import filters
-from . import models
+from . import filters, models
 from .registries import registry
 
 
diff --git a/api/funkwhale_api/radios/serializers.py b/api/funkwhale_api/radios/serializers.py
index be60bbc3e5..9bffbf5b9c 100644
--- a/api/funkwhale_api/radios/serializers.py
+++ b/api/funkwhale_api/radios/serializers.py
@@ -3,8 +3,7 @@ from rest_framework import serializers
 from funkwhale_api.music.serializers import TrackSerializer
 from funkwhale_api.users.serializers import UserBasicSerializer
 
-from . import filters
-from . import models
+from . import filters, models
 from .radios import registry
 
 
diff --git a/api/funkwhale_api/radios/urls.py b/api/funkwhale_api/radios/urls.py
index 66c6f37e8e..8b9fd52c8a 100644
--- a/api/funkwhale_api/radios/urls.py
+++ b/api/funkwhale_api/radios/urls.py
@@ -1,7 +1,7 @@
-from . import views
-
 from rest_framework import routers
 
+from . import views
+
 router = routers.SimpleRouter()
 router.register(r"sessions", views.RadioSessionViewSet, "sessions")
 router.register(r"radios", views.RadioViewSet, "radios")
diff --git a/api/funkwhale_api/radios/views.py b/api/funkwhale_api/radios/views.py
index 4fdd192e62..77df238e11 100644
--- a/api/funkwhale_api/radios/views.py
+++ b/api/funkwhale_api/radios/views.py
@@ -1,18 +1,12 @@
 from django.db.models import Q
 from django.http import Http404
-
-from rest_framework import mixins, viewsets
-from rest_framework import permissions
-from rest_framework import status
-from rest_framework.response import Response
+from rest_framework import mixins, permissions, status, viewsets
 from rest_framework.decorators import detail_route, list_route
+from rest_framework.response import Response
 
 from funkwhale_api.music.serializers import TrackSerializer
 
-from . import models
-from . import filters
-from . import filtersets
-from . import serializers
+from . import filters, filtersets, models, serializers
 
 
 class RadioViewSet(
diff --git a/api/funkwhale_api/requests/api_urls.py b/api/funkwhale_api/requests/api_urls.py
index 309eba7cdd..403a0953ba 100644
--- a/api/funkwhale_api/requests/api_urls.py
+++ b/api/funkwhale_api/requests/api_urls.py
@@ -1,7 +1,7 @@
-from . import views
-
 from rest_framework import routers
 
+from . import views
+
 router = routers.SimpleRouter()
 router.register(r"import-requests", views.ImportRequestViewSet, "import-requests")
 
diff --git a/api/funkwhale_api/requests/filters.py b/api/funkwhale_api/requests/filters.py
index ad8b000d27..4a06dea1b7 100644
--- a/api/funkwhale_api/requests/filters.py
+++ b/api/funkwhale_api/requests/filters.py
@@ -1,6 +1,7 @@
 import django_filters
 
 from funkwhale_api.common import fields
+
 from . import models
 
 
diff --git a/api/funkwhale_api/requests/models.py b/api/funkwhale_api/requests/models.py
index 650d502407..a24086d7a6 100644
--- a/api/funkwhale_api/requests/models.py
+++ b/api/funkwhale_api/requests/models.py
@@ -1,5 +1,4 @@
 from django.db import models
-
 from django.utils import timezone
 
 NATURE_CHOICES = [("artist", "artist"), ("album", "album"), ("track", "track")]
diff --git a/api/funkwhale_api/requests/views.py b/api/funkwhale_api/requests/views.py
index e940c7896f..96d8c89279 100644
--- a/api/funkwhale_api/requests/views.py
+++ b/api/funkwhale_api/requests/views.py
@@ -1,8 +1,6 @@
 from rest_framework import mixins, viewsets
 
-from . import filters
-from . import models
-from . import serializers
+from . import filters, models, serializers
 
 
 class ImportRequestViewSet(
diff --git a/api/funkwhale_api/subsonic/authentication.py b/api/funkwhale_api/subsonic/authentication.py
index 808e5e5ec3..a573a10924 100644
--- a/api/funkwhale_api/subsonic/authentication.py
+++ b/api/funkwhale_api/subsonic/authentication.py
@@ -1,8 +1,7 @@
 import binascii
 import hashlib
 
-from rest_framework import authentication
-from rest_framework import exceptions
+from rest_framework import authentication, exceptions
 
 from funkwhale_api.users.models import User
 
diff --git a/api/funkwhale_api/subsonic/dynamic_preferences_registry.py b/api/funkwhale_api/subsonic/dynamic_preferences_registry.py
index 1353ce32c0..439d16de39 100644
--- a/api/funkwhale_api/subsonic/dynamic_preferences_registry.py
+++ b/api/funkwhale_api/subsonic/dynamic_preferences_registry.py
@@ -1,7 +1,6 @@
 from dynamic_preferences import types
 from dynamic_preferences.registries import global_preferences_registry
 
-
 subsonic = types.Section("subsonic")
 
 
diff --git a/api/funkwhale_api/subsonic/negotiation.py b/api/funkwhale_api/subsonic/negotiation.py
index 4198756edd..96b41589e0 100644
--- a/api/funkwhale_api/subsonic/negotiation.py
+++ b/api/funkwhale_api/subsonic/negotiation.py
@@ -1,9 +1,7 @@
-from rest_framework import exceptions
-from rest_framework import negotiation
+from rest_framework import exceptions, negotiation
 
 from . import renderers
 
-
 MAPPING = {
     "json": (renderers.SubsonicJSONRenderer(), "application/json"),
     "xml": (renderers.SubsonicXMLRenderer(), "text/xml"),
diff --git a/api/funkwhale_api/subsonic/serializers.py b/api/funkwhale_api/subsonic/serializers.py
index 7735b1a78e..fc21a99f2a 100644
--- a/api/funkwhale_api/subsonic/serializers.py
+++ b/api/funkwhale_api/subsonic/serializers.py
@@ -1,7 +1,6 @@
 import collections
 
-from django.db.models import functions, Count
-
+from django.db.models import Count, functions
 from rest_framework import serializers
 
 from funkwhale_api.history import models as history_models
diff --git a/api/funkwhale_api/subsonic/views.py b/api/funkwhale_api/subsonic/views.py
index e6fc2df712..09cd866372 100644
--- a/api/funkwhale_api/subsonic/views.py
+++ b/api/funkwhale_api/subsonic/views.py
@@ -2,12 +2,9 @@ import datetime
 
 from django.conf import settings
 from django.utils import timezone
-
 from rest_framework import exceptions
 from rest_framework import permissions as rest_permissions
-from rest_framework import renderers
-from rest_framework import response
-from rest_framework import viewsets
+from rest_framework import renderers, response, viewsets
 from rest_framework.decorators import list_route
 from rest_framework.serializers import ValidationError
 
@@ -19,10 +16,7 @@ from funkwhale_api.music import utils
 from funkwhale_api.music import views as music_views
 from funkwhale_api.playlists import models as playlists_models
 
-from . import authentication
-from . import filters
-from . import negotiation
-from . import serializers
+from . import authentication, filters, negotiation, serializers
 
 
 def find_object(queryset, model_field="pk", field="id", cast=int):
diff --git a/api/funkwhale_api/taskapp/celery.py b/api/funkwhale_api/taskapp/celery.py
index 80fb1a60e7..98e980f072 100644
--- a/api/funkwhale_api/taskapp/celery.py
+++ b/api/funkwhale_api/taskapp/celery.py
@@ -1,13 +1,13 @@
 
 from __future__ import absolute_import
-import os
+
 import functools
+import os
 
 from celery import Celery
 from django.apps import AppConfig
 from django.conf import settings
 
-
 if not settings.configured:
     # set the default Django settings module for the 'celery' program.
     os.environ.setdefault(
diff --git a/api/funkwhale_api/users/adapters.py b/api/funkwhale_api/users/adapters.py
index 6916975703..6d8c365d52 100644
--- a/api/funkwhale_api/users/adapters.py
+++ b/api/funkwhale_api/users/adapters.py
@@ -1,6 +1,5 @@
-from django.conf import settings
-
 from allauth.account.adapter import DefaultAccountAdapter
+from django.conf import settings
 from dynamic_preferences.registries import global_preferences_registry
 
 
diff --git a/api/funkwhale_api/users/api_urls.py b/api/funkwhale_api/users/api_urls.py
index dacb091f1d..267ee2d69a 100644
--- a/api/funkwhale_api/users/api_urls.py
+++ b/api/funkwhale_api/users/api_urls.py
@@ -1,4 +1,5 @@
 from rest_framework import routers
+
 from . import views
 
 router = routers.SimpleRouter()
diff --git a/api/funkwhale_api/users/factories.py b/api/funkwhale_api/users/factories.py
index 949bfdfe40..eed8c7175a 100644
--- a/api/funkwhale_api/users/factories.py
+++ b/api/funkwhale_api/users/factories.py
@@ -1,8 +1,8 @@
 import factory
-
-from funkwhale_api.factories import registry, ManyToManyFromList
 from django.contrib.auth.models import Permission
 
+from funkwhale_api.factories import ManyToManyFromList, registry
+
 
 @registry.register
 class GroupFactory(factory.django.DjangoModelFactory):
diff --git a/api/funkwhale_api/users/models.py b/api/funkwhale_api/users/models.py
index 30320e14b9..d198ff9a6a 100644
--- a/api/funkwhale_api/users/models.py
+++ b/api/funkwhale_api/users/models.py
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-from __future__ import unicode_literals, absolute_import
+from __future__ import absolute_import, unicode_literals
 
 import binascii
 import os
@@ -7,13 +7,12 @@ import uuid
 
 from django.conf import settings
 from django.contrib.auth.models import AbstractUser
-from django.urls import reverse
 from django.db import models
+from django.urls import reverse
 from django.utils.encoding import python_2_unicode_compatible
 from django.utils.translation import ugettext_lazy as _
 
-from funkwhale_api.common import fields
-from funkwhale_api.common import preferences
+from funkwhale_api.common import fields, preferences
 
 
 def get_token():
diff --git a/api/funkwhale_api/users/rest_auth_urls.py b/api/funkwhale_api/users/rest_auth_urls.py
index f5015ecbda..732a3bbbce 100644
--- a/api/funkwhale_api/users/rest_auth_urls.py
+++ b/api/funkwhale_api/users/rest_auth_urls.py
@@ -1,12 +1,10 @@
-from django.views.generic import TemplateView
 from django.conf.urls import url
-
-from rest_auth.registration import views as registration_views
+from django.views.generic import TemplateView
 from rest_auth import views as rest_auth_views
+from rest_auth.registration import views as registration_views
 
 from . import views
 
-
 urlpatterns = [
     url(r"^$", views.RegisterView.as_view(), name="rest_register"),
     url(
diff --git a/api/funkwhale_api/users/serializers.py b/api/funkwhale_api/users/serializers.py
index ab289bc515..b3bd431c72 100644
--- a/api/funkwhale_api/users/serializers.py
+++ b/api/funkwhale_api/users/serializers.py
@@ -1,7 +1,7 @@
 from django.conf import settings
-
-from rest_framework import serializers
 from rest_auth.serializers import PasswordResetSerializer as PRS
+from rest_framework import serializers
+
 from funkwhale_api.activity import serializers as activity_serializers
 
 from . import models
diff --git a/api/funkwhale_api/users/views.py b/api/funkwhale_api/users/views.py
index dfb71dd058..69e69d26e6 100644
--- a/api/funkwhale_api/users/views.py
+++ b/api/funkwhale_api/users/views.py
@@ -1,15 +1,12 @@
-from rest_framework.response import Response
-from rest_framework import mixins
-from rest_framework import viewsets
-from rest_framework.decorators import detail_route, list_route
-
-from rest_auth.registration.views import RegisterView as BaseRegisterView
 from allauth.account.adapter import get_adapter
+from rest_auth.registration.views import RegisterView as BaseRegisterView
+from rest_framework import mixins, viewsets
+from rest_framework.decorators import detail_route, list_route
+from rest_framework.response import Response
 
 from funkwhale_api.common import preferences
 
-from . import models
-from . import serializers
+from . import models, serializers
 
 
 class RegisterView(BaseRegisterView):
diff --git a/api/setup.cfg b/api/setup.cfg
index b1267c904c..53e08c41f4 100644
--- a/api/setup.cfg
+++ b/api/setup.cfg
@@ -2,6 +2,9 @@
 max-line-length = 120
 exclude = .tox,.git,*/migrations/*,*/static/CACHE/*,docs,node_modules
 
+[isort]
+skip_glob = .tox,.git,*/migrations/*,*/static/CACHE/*,docs,node_modules
+
 [pep8]
 max-line-length = 120
 exclude=.tox,.git,*/migrations/*,*/static/CACHE/*,docs,node_modules
diff --git a/api/tests/activity/test_views.py b/api/tests/activity/test_views.py
index 6f13c82871..be0ee73927 100644
--- a/api/tests/activity/test_views.py
+++ b/api/tests/activity/test_views.py
@@ -1,7 +1,6 @@
 from django.urls import reverse
 
-from funkwhale_api.activity import serializers
-from funkwhale_api.activity import utils
+from funkwhale_api.activity import serializers, utils
 
 
 def test_activity_view(factories, api_client, preferences, anonymous_user):
diff --git a/api/tests/channels/test_auth.py b/api/tests/channels/test_auth.py
index 19bdebe682..505bef1c07 100644
--- a/api/tests/channels/test_auth.py
+++ b/api/tests/channels/test_auth.py
@@ -1,5 +1,4 @@
 import pytest
-
 from rest_framework_jwt.settings import api_settings
 
 from funkwhale_api.common.auth import TokenAuthMiddleware
diff --git a/api/tests/common/test_fields.py b/api/tests/common/test_fields.py
index bd836f840b..d269231485 100644
--- a/api/tests/common/test_fields.py
+++ b/api/tests/common/test_fields.py
@@ -1,5 +1,4 @@
 import pytest
-
 from django.contrib.auth.models import AnonymousUser
 from django.db.models import Q
 
diff --git a/api/tests/common/test_permissions.py b/api/tests/common/test_permissions.py
index 952ec589e7..bf4d8bde5c 100644
--- a/api/tests/common/test_permissions.py
+++ b/api/tests/common/test_permissions.py
@@ -1,8 +1,6 @@
 import pytest
-
-from rest_framework.views import APIView
-
 from django.http import Http404
+from rest_framework.views import APIView
 
 from funkwhale_api.common import permissions
 
diff --git a/api/tests/common/test_preferences.py b/api/tests/common/test_preferences.py
index d9b53b29b9..7f941a4500 100644
--- a/api/tests/common/test_preferences.py
+++ b/api/tests/common/test_preferences.py
@@ -1,6 +1,6 @@
 import pytest
-
 from dynamic_preferences.registries import global_preferences_registry
+
 from funkwhale_api.common import preferences as common_preferences
 
 
diff --git a/api/tests/common/test_scripts.py b/api/tests/common/test_scripts.py
index afedc3e3a3..40d9ea0a7a 100644
--- a/api/tests/common/test_scripts.py
+++ b/api/tests/common/test_scripts.py
@@ -1,7 +1,7 @@
 import pytest
 
-from funkwhale_api.common.management.commands import script
 from funkwhale_api.common import scripts
+from funkwhale_api.common.management.commands import script
 
 
 @pytest.fixture
diff --git a/api/tests/common/test_session.py b/api/tests/common/test_session.py
index eba26dae01..531543455d 100644
--- a/api/tests/common/test_session.py
+++ b/api/tests/common/test_session.py
@@ -1,5 +1,4 @@
 import funkwhale_api
-
 from funkwhale_api.common import session
 
 
diff --git a/api/tests/conftest.py b/api/tests/conftest.py
index 8027ef0ba0..40203ee3d4 100644
--- a/api/tests/conftest.py
+++ b/api/tests/conftest.py
@@ -1,19 +1,16 @@
 import datetime
-import factory
-import pytest
-import requests_mock
 import shutil
 import tempfile
 
+import factory
+import pytest
+import requests_mock
 from django.contrib.auth.models import AnonymousUser
 from django.core.cache import cache as django_cache
 from django.test import client
-
 from dynamic_preferences.registries import global_preferences_registry
-
 from rest_framework import fields as rest_fields
-from rest_framework.test import APIClient
-from rest_framework.test import APIRequestFactory
+from rest_framework.test import APIClient, APIRequestFactory
 
 from funkwhale_api.activity import record
 from funkwhale_api.users.permissions import HasUserPermission
diff --git a/api/tests/favorites/test_activity.py b/api/tests/favorites/test_activity.py
index a6eff99912..ff38daa9c8 100644
--- a/api/tests/favorites/test_activity.py
+++ b/api/tests/favorites/test_activity.py
@@ -1,7 +1,6 @@
-from funkwhale_api.users.serializers import UserActivitySerializer
+from funkwhale_api.favorites import activities, serializers
 from funkwhale_api.music.serializers import TrackActivitySerializer
-from funkwhale_api.favorites import serializers
-from funkwhale_api.favorites import activities
+from funkwhale_api.users.serializers import UserActivitySerializer
 
 
 def test_get_favorite_activity_url(settings, factories):
diff --git a/api/tests/favorites/test_favorites.py b/api/tests/favorites/test_favorites.py
index 8bf7f25b43..cd75b0d26e 100644
--- a/api/tests/favorites/test_favorites.py
+++ b/api/tests/favorites/test_favorites.py
@@ -1,4 +1,5 @@
 import json
+
 import pytest
 from django.urls import reverse
 
diff --git a/api/tests/federation/test_activity.py b/api/tests/federation/test_activity.py
index 78ad389d11..9c7bb70ecc 100644
--- a/api/tests/federation/test_activity.py
+++ b/api/tests/federation/test_activity.py
@@ -1,6 +1,5 @@
 
-from funkwhale_api.federation import activity
-from funkwhale_api.federation import serializers
+from funkwhale_api.federation import activity, serializers
 
 
 def test_deliver(factories, r_mock, mocker, settings):
diff --git a/api/tests/federation/test_actors.py b/api/tests/federation/test_actors.py
index 278b10af21..8206797d3d 100644
--- a/api/tests/federation/test_actors.py
+++ b/api/tests/federation/test_actors.py
@@ -1,15 +1,10 @@
 import arrow
 import pytest
-
 from django.urls import reverse
 from django.utils import timezone
-
 from rest_framework import exceptions
 
-from funkwhale_api.federation import actors
-from funkwhale_api.federation import models
-from funkwhale_api.federation import serializers
-from funkwhale_api.federation import utils
+from funkwhale_api.federation import actors, models, serializers, utils
 from funkwhale_api.music import models as music_models
 from funkwhale_api.music import tasks as music_tasks
 
diff --git a/api/tests/federation/test_authentication.py b/api/tests/federation/test_authentication.py
index ea86b64a4c..95cec5d2ac 100644
--- a/api/tests/federation/test_authentication.py
+++ b/api/tests/federation/test_authentication.py
@@ -1,5 +1,4 @@
-from funkwhale_api.federation import authentication
-from funkwhale_api.federation import keys
+from funkwhale_api.federation import authentication, keys
 
 
 def test_authenticate(factories, mocker, api_request):
diff --git a/api/tests/federation/test_library.py b/api/tests/federation/test_library.py
index 8b2b185004..4e187e4792 100644
--- a/api/tests/federation/test_library.py
+++ b/api/tests/federation/test_library.py
@@ -1,5 +1,4 @@
-from funkwhale_api.federation import library
-from funkwhale_api.federation import serializers
+from funkwhale_api.federation import library, serializers
 
 
 def test_library_scan_from_account_name(mocker, factories):
diff --git a/api/tests/federation/test_models.py b/api/tests/federation/test_models.py
index 08e629ded5..61d0aea96d 100644
--- a/api/tests/federation/test_models.py
+++ b/api/tests/federation/test_models.py
@@ -1,9 +1,7 @@
 import pytest
-
 from django import db
 
 
-
 def test_cannot_duplicate_actor(factories):
     actor = factories["federation.Actor"]()
 
diff --git a/api/tests/federation/test_permissions.py b/api/tests/federation/test_permissions.py
index 15990ca916..75f76077cf 100644
--- a/api/tests/federation/test_permissions.py
+++ b/api/tests/federation/test_permissions.py
@@ -1,7 +1,6 @@
 from rest_framework.views import APIView
 
-from funkwhale_api.federation import actors
-from funkwhale_api.federation import permissions
+from funkwhale_api.federation import actors, permissions
 
 
 def test_library_follower(factories, api_request, anonymous_user, preferences):
diff --git a/api/tests/federation/test_serializers.py b/api/tests/federation/test_serializers.py
index 2d3bad358d..c2d2a2060b 100644
--- a/api/tests/federation/test_serializers.py
+++ b/api/tests/federation/test_serializers.py
@@ -1,12 +1,8 @@
 import arrow
 import pytest
-
 from django.core.paginator import Paginator
 
-from funkwhale_api.federation import actors
-from funkwhale_api.federation import models
-from funkwhale_api.federation import serializers
-from funkwhale_api.federation import utils
+from funkwhale_api.federation import actors, models, serializers, utils
 
 
 def test_actor_serializer_from_ap(db):
diff --git a/api/tests/federation/test_signing.py b/api/tests/federation/test_signing.py
index 611f2d735f..159f31cd96 100644
--- a/api/tests/federation/test_signing.py
+++ b/api/tests/federation/test_signing.py
@@ -1,8 +1,7 @@
 import cryptography.exceptions
 import pytest
 
-from funkwhale_api.federation import signing
-from funkwhale_api.federation import keys
+from funkwhale_api.federation import keys, signing
 
 
 def test_can_sign_and_verify_request(nodb_factories):
diff --git a/api/tests/federation/test_tasks.py b/api/tests/federation/test_tasks.py
index 068578c5ec..772fe61418 100644
--- a/api/tests/federation/test_tasks.py
+++ b/api/tests/federation/test_tasks.py
@@ -5,8 +5,7 @@ import pathlib
 from django.core.paginator import Paginator
 from django.utils import timezone
 
-from funkwhale_api.federation import serializers
-from funkwhale_api.federation import tasks
+from funkwhale_api.federation import serializers, tasks
 
 
 def test_scan_library_does_nothing_if_federation_disabled(mocker, factories):
diff --git a/api/tests/federation/test_views.py b/api/tests/federation/test_views.py
index e277fd0f3d..14ccc64dbc 100644
--- a/api/tests/federation/test_views.py
+++ b/api/tests/federation/test_views.py
@@ -1,16 +1,9 @@
+import pytest
 from django.core.paginator import Paginator
 from django.urls import reverse
 from django.utils import timezone
 
-import pytest
-
-from funkwhale_api.federation import actors
-from funkwhale_api.federation import activity
-from funkwhale_api.federation import models
-from funkwhale_api.federation import serializers
-from funkwhale_api.federation import utils
-from funkwhale_api.federation import views
-from funkwhale_api.federation import webfinger
+from funkwhale_api.federation import activity, actors, models, serializers, utils, views, webfinger
 
 
 @pytest.mark.parametrize(
diff --git a/api/tests/federation/test_webfinger.py b/api/tests/federation/test_webfinger.py
index de6112713f..0608df3e2b 100644
--- a/api/tests/federation/test_webfinger.py
+++ b/api/tests/federation/test_webfinger.py
@@ -1,5 +1,4 @@
 import pytest
-
 from django import forms
 
 from funkwhale_api.federation import webfinger
diff --git a/api/tests/history/test_activity.py b/api/tests/history/test_activity.py
index c3cca5925e..e077870f2b 100644
--- a/api/tests/history/test_activity.py
+++ b/api/tests/history/test_activity.py
@@ -1,7 +1,6 @@
-from funkwhale_api.users.serializers import UserActivitySerializer
+from funkwhale_api.history import activities, serializers
 from funkwhale_api.music.serializers import TrackActivitySerializer
-from funkwhale_api.history import serializers
-from funkwhale_api.history import activities
+from funkwhale_api.users.serializers import UserActivitySerializer
 
 
 def test_get_listening_activity_url(settings, factories):
diff --git a/api/tests/instance/test_nodeinfo.py b/api/tests/instance/test_nodeinfo.py
index 7637ca319f..181ddf2772 100644
--- a/api/tests/instance/test_nodeinfo.py
+++ b/api/tests/instance/test_nodeinfo.py
@@ -1,6 +1,5 @@
 
 import funkwhale_api
-
 from funkwhale_api.instance import nodeinfo
 
 
diff --git a/api/tests/instance/test_preferences.py b/api/tests/instance/test_preferences.py
index cf73c7c805..b465be9d38 100644
--- a/api/tests/instance/test_preferences.py
+++ b/api/tests/instance/test_preferences.py
@@ -1,9 +1,7 @@
 import pytest
-
 from django.urls import reverse
 
 
-
 def test_can_list_settings_via_api(preferences, api_client):
     url = reverse("api:v1:instance:settings")
     all_preferences = preferences.model.objects.all()
diff --git a/api/tests/instance/test_views.py b/api/tests/instance/test_views.py
index dc9de2a8c6..051251cebe 100644
--- a/api/tests/instance/test_views.py
+++ b/api/tests/instance/test_views.py
@@ -1,5 +1,4 @@
 import pytest
-
 from django.urls import reverse
 
 from funkwhale_api.instance import views
diff --git a/api/tests/manage/test_views.py b/api/tests/manage/test_views.py
index aa8347f763..e2bfbf3a81 100644
--- a/api/tests/manage/test_views.py
+++ b/api/tests/manage/test_views.py
@@ -1,9 +1,7 @@
 import pytest
-
 from django.urls import reverse
 
-from funkwhale_api.manage import serializers
-from funkwhale_api.manage import views
+from funkwhale_api.manage import serializers, views
 
 
 @pytest.mark.parametrize(
diff --git a/api/tests/music/conftest.py b/api/tests/music/conftest.py
index 8108b1a499..634fb3371f 100644
--- a/api/tests/music/conftest.py
+++ b/api/tests/music/conftest.py
@@ -1,6 +1,5 @@
 import pytest
 
-
 _artists = {"search": {}, "get": {}}
 
 _artists["search"]["adhesive_wombat"] = {
diff --git a/api/tests/music/test_api.py b/api/tests/music/test_api.py
index 11b3e92732..ac791e3fd5 100644
--- a/api/tests/music/test_api.py
+++ b/api/tests/music/test_api.py
@@ -1,11 +1,10 @@
 import json
 import os
+
 import pytest
 from django.urls import reverse
 
-from funkwhale_api.music import models
-from funkwhale_api.music import tasks
-
+from funkwhale_api.music import models, tasks
 
 DATA_DIR = os.path.dirname(os.path.abspath(__file__))
 
diff --git a/api/tests/music/test_lyrics.py b/api/tests/music/test_lyrics.py
index 81bbbe4810..ad0c6afb8c 100644
--- a/api/tests/music/test_lyrics.py
+++ b/api/tests/music/test_lyrics.py
@@ -1,8 +1,7 @@
 from django.urls import reverse
 
-from funkwhale_api.music import models
-from funkwhale_api.music import tasks
 from funkwhale_api.music import lyrics as lyrics_utils
+from funkwhale_api.music import models, tasks
 
 
 def test_works_import_lyrics_if_any(lyricswiki_content, mocker, factories):
diff --git a/api/tests/music/test_metadata.py b/api/tests/music/test_metadata.py
index f1e03ad128..fbdf5b81fc 100644
--- a/api/tests/music/test_metadata.py
+++ b/api/tests/music/test_metadata.py
@@ -1,8 +1,9 @@
 import datetime
 import os
-import pytest
 import uuid
 
+import pytest
+
 from funkwhale_api.music import metadata
 
 DATA_DIR = os.path.dirname(os.path.abspath(__file__))
diff --git a/api/tests/music/test_models.py b/api/tests/music/test_models.py
index f81dd433fd..444b0c05f3 100644
--- a/api/tests/music/test_models.py
+++ b/api/tests/music/test_models.py
@@ -1,9 +1,8 @@
 import os
+
 import pytest
 
-from funkwhale_api.music import models
-from funkwhale_api.music import importers
-from funkwhale_api.music import tasks
+from funkwhale_api.music import importers, models, tasks
 
 DATA_DIR = os.path.dirname(os.path.abspath(__file__))
 
diff --git a/api/tests/music/test_music.py b/api/tests/music/test_music.py
index 391af26cbf..6700f2ab51 100644
--- a/api/tests/music/test_music.py
+++ b/api/tests/music/test_music.py
@@ -1,6 +1,8 @@
+import datetime
+
 import pytest
+
 from funkwhale_api.music import models
-import datetime
 
 
 def test_can_create_artist_from_api(artists, mocker, db):
diff --git a/api/tests/music/test_tasks.py b/api/tests/music/test_tasks.py
index 01e6d91ac5..455c65ed46 100644
--- a/api/tests/music/test_tasks.py
+++ b/api/tests/music/test_tasks.py
@@ -1,4 +1,5 @@
 import os
+
 import pytest
 
 from funkwhale_api.music import tasks
diff --git a/api/tests/music/test_utils.py b/api/tests/music/test_utils.py
index 276a450d4c..4019e47b45 100644
--- a/api/tests/music/test_utils.py
+++ b/api/tests/music/test_utils.py
@@ -1,4 +1,5 @@
 import os
+
 import pytest
 
 from funkwhale_api.music import utils
diff --git a/api/tests/music/test_views.py b/api/tests/music/test_views.py
index 840dd96663..f2b270a896 100644
--- a/api/tests/music/test_views.py
+++ b/api/tests/music/test_views.py
@@ -1,12 +1,11 @@
 import io
-import pytest
 
+import pytest
 from django.urls import reverse
 from django.utils import timezone
 
-from funkwhale_api.music import serializers
-from funkwhale_api.music import views
 from funkwhale_api.federation import actors
+from funkwhale_api.music import serializers, views
 
 
 @pytest.mark.parametrize(
diff --git a/api/tests/musicbrainz/test_api.py b/api/tests/musicbrainz/test_api.py
index f1f9912c40..0fdaf7ab6c 100644
--- a/api/tests/musicbrainz/test_api.py
+++ b/api/tests/musicbrainz/test_api.py
@@ -1,7 +1,6 @@
 from django.urls import reverse
 
 
-
 def test_can_search_recording_in_musicbrainz_api(
     recordings, db, mocker, logged_in_api_client
 ):
diff --git a/api/tests/playlists/test_models.py b/api/tests/playlists/test_models.py
index 3258e6d10d..1ef03d353b 100644
--- a/api/tests/playlists/test_models.py
+++ b/api/tests/playlists/test_models.py
@@ -1,5 +1,4 @@
 import pytest
-
 from rest_framework import exceptions
 
 
diff --git a/api/tests/playlists/test_serializers.py b/api/tests/playlists/test_serializers.py
index 3a8bb6a229..9bda66d42c 100644
--- a/api/tests/playlists/test_serializers.py
+++ b/api/tests/playlists/test_serializers.py
@@ -1,5 +1,4 @@
-from funkwhale_api.playlists import models
-from funkwhale_api.playlists import serializers
+from funkwhale_api.playlists import models, serializers
 
 
 def test_cannot_max_500_tracks_per_playlist(factories, preferences):
diff --git a/api/tests/playlists/test_views.py b/api/tests/playlists/test_views.py
index a675993e72..18f5bb6703 100644
--- a/api/tests/playlists/test_views.py
+++ b/api/tests/playlists/test_views.py
@@ -1,9 +1,7 @@
 import pytest
-
 from django.urls import reverse
 
-from funkwhale_api.playlists import models
-from funkwhale_api.playlists import serializers
+from funkwhale_api.playlists import models, serializers
 
 
 def test_can_create_playlist_via_api(logged_in_api_client):
diff --git a/api/tests/radios/test_api.py b/api/tests/radios/test_api.py
index 5f19128007..5f542c8806 100644
--- a/api/tests/radios/test_api.py
+++ b/api/tests/radios/test_api.py
@@ -3,8 +3,7 @@ import json
 from django.urls import reverse
 
 from funkwhale_api.music.serializers import TrackSerializer
-from funkwhale_api.radios import filters
-from funkwhale_api.radios import serializers
+from funkwhale_api.radios import filters, serializers
 
 
 def test_can_list_config_options(logged_in_client):
diff --git a/api/tests/radios/test_filters.py b/api/tests/radios/test_filters.py
index 4b91f16384..89bb726aff 100644
--- a/api/tests/radios/test_filters.py
+++ b/api/tests/radios/test_filters.py
@@ -1,5 +1,4 @@
 import pytest
-
 from django.core.exceptions import ValidationError
 
 from funkwhale_api.music.models import Track
diff --git a/api/tests/radios/test_radios.py b/api/tests/radios/test_radios.py
index 95fe58b178..2a785cb9c5 100644
--- a/api/tests/radios/test_radios.py
+++ b/api/tests/radios/test_radios.py
@@ -1,15 +1,12 @@
 import json
 import random
-import pytest
 
-from django.urls import reverse
+import pytest
 from django.core.exceptions import ValidationError
+from django.urls import reverse
 
-
-from funkwhale_api.radios import radios
-from funkwhale_api.radios import models
-from funkwhale_api.radios import serializers
 from funkwhale_api.favorites.models import TrackFavorite
+from funkwhale_api.radios import models, radios, serializers
 
 
 def test_can_pick_track_from_choices():
diff --git a/api/tests/subsonic/test_authentication.py b/api/tests/subsonic/test_authentication.py
index 03a863ca09..3606cff52c 100644
--- a/api/tests/subsonic/test_authentication.py
+++ b/api/tests/subsonic/test_authentication.py
@@ -1,6 +1,6 @@
 import binascii
-import pytest
 
+import pytest
 from rest_framework import exceptions
 
 from funkwhale_api.subsonic import authentication
diff --git a/api/tests/subsonic/test_views.py b/api/tests/subsonic/test_views.py
index ecb43ded11..f823a443ec 100644
--- a/api/tests/subsonic/test_views.py
+++ b/api/tests/subsonic/test_views.py
@@ -1,14 +1,13 @@
 import datetime
 import json
-import pytest
 
-from django.utils import timezone
+import pytest
 from django.urls import reverse
+from django.utils import timezone
 
 from funkwhale_api.music import models as music_models
 from funkwhale_api.music import views as music_views
-from funkwhale_api.subsonic import renderers
-from funkwhale_api.subsonic import serializers
+from funkwhale_api.subsonic import renderers, serializers
 
 
 def render_json(data):
diff --git a/api/tests/test_import_audio_file.py b/api/tests/test_import_audio_file.py
index 38b7d2620e..011fcb7a65 100644
--- a/api/tests/test_import_audio_file.py
+++ b/api/tests/test_import_audio_file.py
@@ -1,7 +1,7 @@
-import pytest
 import datetime
 import os
 
+import pytest
 from django.core.management import call_command
 from django.core.management.base import CommandError
 
diff --git a/api/tests/test_youtube.py b/api/tests/test_youtube.py
index c906c1dedc..aa3b8a0558 100644
--- a/api/tests/test_youtube.py
+++ b/api/tests/test_youtube.py
@@ -1,5 +1,7 @@
 from collections import OrderedDict
+
 from django.urls import reverse
+
 from funkwhale_api.providers.youtube.client import client
 
 from .data import youtube as api_data
diff --git a/api/tests/users/test_jwt.py b/api/tests/users/test_jwt.py
index e4038b1edb..83de757c8b 100644
--- a/api/tests/users/test_jwt.py
+++ b/api/tests/users/test_jwt.py
@@ -1,10 +1,8 @@
 import pytest
-
 from jwt.exceptions import DecodeError
 from rest_framework_jwt.settings import api_settings
 
 
-
 def test_can_invalidate_token_when_changing_user_secret_key(factories):
     user = factories["users.User"]()
     u1 = user.secret_key
diff --git a/api/tests/users/test_views.py b/api/tests/users/test_views.py
index fa5793e9b9..10320f8e8b 100644
--- a/api/tests/users/test_views.py
+++ b/api/tests/users/test_views.py
@@ -1,5 +1,4 @@
 import pytest
-
 from django.urls import reverse
 
 from funkwhale_api.users.models import User
-- 
GitLab