diff --git a/api/funkwhale_api/activity/views.py b/api/funkwhale_api/activity/views.py
index f2f747d4d8f22b6df5423a5e898e807f102220b2..701dd04b8cfbacc1f0b5fc75ab65597c87a99b55 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 83738a3e948a90eb340c2dd389983eec5281dd4d..7717c836babb4940902593185416c6a6430949ed 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 9ddc06a3be445899a85041d8afbe15e95d4cd422..10bf36613f7e7cb99a20e26184dca552cc7eed44 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 32a8876dceea5da860080fa9d99a47862c2a30c7..47a666f0540fe15a7a472478b9d75516d8706ef4 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 de3ee37e5841616dbd265b853758ae367fa5af4a..190576efa688db2d5d9748841791b76531749136 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 0671645427e688a9b69f44c4f4642cf166985361..8f391a70c16f825e1d0b7498ec577b69853ccc00 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 9b8f12e85645a2ac27e74aea8c2f90ebd52900d6..acda9a90c31882a32c043edf9d3c8e44d2ea7c3e 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 1c207238518fba92506d06770ac22160a0c2cf17..48144f8ea7f737a39d94a1f1b96573557109300d 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 871fc4c219fec71fc8c5aacd65bd9942a09f5444..4d5d0bb60be9c009455069bbf1b76d99f1d6eb3a 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 f2ea52a8c5ae70c13e9966605ff1cc256f50ea41..221d2336b753322e5f40ad028c15fe157d218a00 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 41ae7299582a43f9e5b3326da1e0262188de3bac..f2b7568cc5e992a4407edd86100cb73c15100587 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 d9d546335bd89720abf019ac46f4c14ced999e3b..294194e061614a338137a3519aa547823a2d1cf0 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 797c135ef0d99af99f7850246ca0e041bc43d13f..d96ef1c15180c3c5d425585a3f2d562db015f139 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 69bc01f651f4ebff3448e6f2b0c91ecd7eb454b6..28d0c867667d24c7daa8cd090b670e2060e5d147 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 6210ea2cf5b9cc7546c59e0d1316cf630337245a..4d1c1e756af1bf5ca01345ad0fba172c316ac152 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 d42ea575f43b62d389dc5e7e45a8353575035c18..f0b6b0986ca0b2fc596f8741532283751be6daaa 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 a12d510346ede03e7a873a813fe35b944f9eb518..f32c78ff30f00079d822bbf2921d2c4845fff5fc 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 52a5e8b54da6036a7a74985d6ee6d007aa99251c..7370ebd77d73694178a326ede77a2d0269ed16e6 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 bc9416fb85d5e385a9323e8a425607cb6c7d2388..e7c30c50aefc866e4ad74b6ef18a2ebaab89cb10 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 28bb9a762a4448202c135f45aa9a051e9cb6c3d6..e1587f2a8e4fae3fdddbaff938424aafc0bc5a66 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 398ab23c4dec1100ca26d33043b831c9d7439f35..979b0674a94848dd7c0edb79f041900951629494 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 c1a39a6902c69702609f76727a97568c4f63fed8..a08d57e5f354dc6dd77e8ef3a477b5886a9cbde1 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 91ad2eb971dd7c47d1ba97e77d05e50883349315..a70632461798f0dbda9642323ffaa66c560e7c85 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 bb02f042b43945359adb3530d0bb13f21ef31502..15525b3e513b2ccc861cbf34b693b30aa0850d29 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 596755e3b36b6a2c58e2c58badf1b905a9975a8f..d1b5b7bd21b4a588008bf531003c25e666cd3313 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 3cd4cb73292475f7ed4fdfd09a8618c4b8ce3e3a..2594f554992779a5eef5c286fee4ba96e3f6393f 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 84cd27db67f33b594c4f1c0ff76af01d17bb6cd3..67b274687483a04c17fb02f042fd981243f53e42 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 fd06d8d5640a093b129f6ac9cf28a68aca0f2250..b899fe20725ec929e8a81088e8e1600d9124678e 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 3e8556ce55425767cf0b31a91566c003f7311baf..b63de1f26fc7ccc256365d1b4aa63178956101da 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 5a72ee449507a6e395dd666d4d05c2fe2944ea64..8da4e67cd5a508a6778886c1a5d0f898db4e115c 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 2c6209757d8e7297ec6ee4a23b46619373666892..707e95cd7d3056ced030a6f52b584456134c19e3 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 db45cec6925e2bf0c59effeb39794799b3ceea1a..e104a2aa3dc44f3c538bc747df63a6e5d630f10d 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 618bd8ea4d69d81af8b5e22a0fd92e0a3e9568b4..0edb94482d0bb090ed15b79156b565e9ea33c1f7 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 9077a34bc889e0afba9b3b13fec326a7f4afd51d..0b8f4b3cecc5d456637b20d051550e48a160834f 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 35432d4889fb08912344561b50c71b1dd66225cd..ea6311033333ad0603a1f88d52fd51bda44ceeaa 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 38ed7d1c99b6bc152aa0100098332f39528f8369..60853034f0a0552c01b67b6a0354158691d49783 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 77581acf0e4537106240fdb5809fe5fbc9f25358..8511732c96b287e7c2c82da799dc864c7a455e6a 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 6e2e6a1155b6c6a3e95c3eabef2d9f3c8629f003..2dd4ba3038593cc2bb2c60610735caeb7f61bc8f 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 6e1e4df09d117fa7d0441d6ae4204056fc993297..1f73fc9b0638df2d15520f5522fb13c013989de0 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 2cf1cff75af7c7d3aed8543cc1350de4e5c5e1ed..6d5f20e44d54320db9ebc4fb5b344de6585ba6cf 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 c494b05abd4b83d252a2078ebb85aa3f4fbd46d4..c462f683f419b9ac199f83de943bf5cf86f71373 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 3a43521c580428736b90690f432f3d81ab3f9749..d2534f6b241ad3e7b6cc98fa8e1e0c49f41f0450 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 95056738fca67b7556b9482d98f6b49120d0af93..c4c3d0fc219c34bc6db2c5dc1a04ab2daba65f62 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 ab35337ec53b8cd09d37bf6b9cd48f84b26f1adc..dc589b5dde4b3dbbd7c720cc73684d1b648497e4 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 d39891aca1a137d29202c0e131e5b78a6120ad77..c34970d0b5cbcf29155c7b008c0ba4acd6246f1c 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 dd321e4dd75be0ef2678bba277ac65be97819b07..788ef5dabcde7c1a0d165f7a9f45414404219e27 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 9b300ac2a4281a917b809e346cba4b670571e88f..3080c1c6c056b84aa29842d1040087d3f0492ad6 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 1bb169f53f170d0e2988c2237fedb2af6e3182dd..92512a0e67f8aa8497fdbb50804aadf629dbbc7a 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 b3749a93b39bcb6a7a33973f6eec8c7fca4d8643..deae0672fdd994c3914149d18a561f96ad2a77ac 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 07271def2d572eb4aed549466a1d4f4a81dbd474..b6f009dca7531dd932f9d5c32c6e3ae1f65cb03e 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 65ba763237b26829bdca9f615297f88cd4e8ad8d..e9df4624de9b32d9ef45a1599f545f3cccf72e98 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 94247611db36b3e26f5154975fdea903063bec18..17cc06b10bdab8f17fb4f3cc246a5e5e26d12fab 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 2b4075ec97109aa671a9a9613ba51c619319b9d0..d5d19df74b66289c0230c38633dc591c19200bb1 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 2e5a35f0db60cf7ad1b898ada7bfba91bcc7e382..2411de86add2154645f670491fd0377996ef216c 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 45b428790f373e9635237dc35634700ecd79128c..de2560d3c8d064a0bddd93208de82e0b7d3c99ca 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 a4426a0093b857109d76cb473b8c7008556b03c1..624e068c3c5ec234f7938e34131ea355f0ceccc0 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 94df35166060d68d7e8a287adeecca62c2b72458..2235fcdc83a994ea0da1024962e9d6bd45704184 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 42b54b5350e2c9c2bd8a3cfb6e5072cbea68c024..2d950eb6b202f1f728b4f345733488e689261695 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 710eabcac79dc7bb6e29293998898fd261609fbe..d9687ac9f8f0e1af94eef00868ce7c64dbe3d406 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 012b1825d5620b0e0cbf0e6e5c899755c4d9d712..5e1982f48e80ca5722c5ebbb712151cd12a02eb2 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 72e18caf54d4f539b9b462c1748c4cc1795ae0e0..158bf578b4554ad9b786b86c5da234a4491f705f 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 69f13f9f4608813f0929cb8923406874a3714989..d0c3d1716a4efb3d2698054646abf0db04535b10 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 7e3c1ab5ad3ecaf8f5bfcdb7b287388d8585f1ed..c7c361de9df143074867882caf7068a498b9a0b7 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 be60bbc3e5cfad69c124ef1a05cf54e58978f6e7..9bffbf5b9cd3ce0c04100dcf3a68de008964b416 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 66c6f37e8eb882feba6bfdb712a6c97130e0cce3..8b9fd52c8a440d7ec41a8afa1e703f8b2a823143 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 4fdd192e62ee352070aefbef1636af2aa202513b..77df238e11006c211544573c3deed9206391d89d 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 309eba7cdd3633b9ac28304858fadaf3bac6d3cb..403a0953bac9fa4d822466ccc9a286477d57b89b 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 ad8b000d27babeec15246ff55b0ee1d409a72757..4a06dea1b754f35f830b8cad488fa34ea04e28be 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 650d502407ee013665577ce4191787523f9879c6..a24086d7a695c59e94acc55d76981d486222c2dd 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 e940c7896fba47c6149e432b4d9ba32c8cc8a1d7..96d8c89279333b442a7afade7bf53f2022769cd6 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 808e5e5ec3a3c2a84c2806027723ca77a5549d39..a573a109249972e5a1e693d2c84edfe66efd0f46 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 1353ce32c002a5012b6e6c47c441cbacf46c3fe5..439d16de39b4eec8cbe3168505e8f11be1bf20b9 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 4198756eddb04ef8486f8070e01f4c09643e5296..96b41589e0aea74ad4eef8be4fe9c21f2d89d5cc 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 7735b1a78ecffb4471b9b4b2b3d932acf650fcf4..fc21a99f2aa540024754810d96865638d2a1eb28 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 e6fc2df712fa2f5e563f4519d075c0aeaccb779f..09cd86637277a0b8c09eea16efc5b6162514128c 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 80fb1a60e770f8a209aad24f08694adcb771ef92..98e980f07273c640c08871bf8de0c42abcd344a1 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 6916975703ce2bb0a264e3b50ee1a7b57a4df938..6d8c365d52be08db4551dc05044dd6cbb63cfa06 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 dacb091f1d76d1a100b47eb44a020fcaf2fa3c71..267ee2d69ad6dc1dd9d1b874072e415a9bdda41d 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 949bfdfe40365dba112e55fa7932440bfa7f5280..eed8c7175a2dacdb65404aaf827c2bee04582dbb 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 30320e14b9ca2860e3b65de96ecdc578ea393918..d198ff9a6a3abd83dbabb919506691ee176090f1 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 f5015ecbda49030cc71046f0421161e61955822f..732a3bbbcead15c5603f16872a97c6703dcbecca 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 ab289bc5155e3c8ffc42d6d07a67db6d37bce6a2..b3bd431c722fc5f8e4751270a9b1690973119de2 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 dfb71dd0585847c3015eea42ac27b6bc482492bf..69e69d26e6b987426ef59a450d07e3d6458f6ab2 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 b1267c904cc94dc623dddf93c9af1293ec869122..53e08c41f4514675975b372f9bc0b4c277e27290 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 6f13c828710fd7255c06be542efdd6510a7ed7cc..be0ee73927f4e792f99ce513f888c23a0fb400ce 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 19bdebe6824d26bd1d39548ce7ab709bb1a91bfd..505bef1c0761cd972f40f7b4cf09e14cd1fcb627 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 bd836f840bd85fdd43ea286e1bc952b67087de0a..d2692314854c3c6761974789ed82f96132beb9dd 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 952ec589e7abc00165de5cf46ef627a2f9f687b8..bf4d8bde5cd3b918030befd43bca81402ce72abd 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 d9b53b29b9fcbefde642ccd509f859ea19233880..7f941a45006be86550c8622bde019be61ebb0abc 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 afedc3e3a38a5892d48345897c6300fa2a2deb55..40d9ea0a7aae1f18611a74e956bcd2ac5d77dbdd 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 eba26dae012e58a7f31cbe60122e966d736b3eb0..531543455d43cb92268ea196f15c1fcdd9472d6f 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 8027ef0ba069a4cbffe45f7f14572644583491ad..40203ee3d472693d7304d92ab68094949535fab9 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 a6eff99912d7ad69d030349ec31e812af886b4bb..ff38daa9c8573c1542ea22368fcf8042b8367b0b 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 8bf7f25b43c4924d6414a96ad9be17276b8e5c43..cd75b0d26e3bf77a866eea745105a41642bcf828 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 78ad389d1162b39a8013b3f5678d02699f159ab1..9c7bb70ecc43400215119a2cef9f8403c6a02783 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 278b10af21329ff9486301a072b3adf952b11b56..8206797d3dbfcc0e7273a4bb91bb369f02e7f60c 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 ea86b64a4c47050416d167395e8bb283c00f3a62..95cec5d2ac80d94a7b04de1dd5121c3d270b883b 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 8b2b1850046bd0220ea6b452ebc6d42a37a15fe7..4e187e4792005e82cfe18cf9a066d31a10f8bbd3 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 08e629ded52f79ffdcb6b301bd33f584f07382e4..61d0aea96dc9c66a3a96ce47230d62ceef6e5e57 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 15990ca9168cfa42114cf025e1f33c61ba12da68..75f76077cf4828049245e82a553f61e11e1e496b 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 2d3bad358d3f1834b5a02c8812c7a7bf18bad440..c2d2a2060b109002a23e7209e6be3f839678f728 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 611f2d735ff88ad9b93abda67cc977771cc5829e..159f31cd96fdce747cd48120d4999940de5dd66c 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 068578c5ecc98430e8731250834f98b06d5aba99..772fe61418140eda87462777495dc2353e908718 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 e277fd0f3dfeb9ad2e3bfb9814f9b1f5bb0ff6c8..14ccc64dbc23dd2daab146e2f7d769268d80f3bd 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 de6112713f385f0ad9b28eccd390805ac93c9cf2..0608df3e2b38ffecc00d016c99c226da9d8b2705 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 c3cca5925e3526e36df1b9bd0ae4dca68746c772..e077870f2b4dbf2e3997e69873344d0bc2764b4c 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 7637ca319f716c9136ee0c49b96927abc3ec7b3c..181ddf2772f3af2cb838e84ebf7718c8cb82eddd 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 cf73c7c8055244c6cb03cf4e2cde3fce34ea731b..b465be9d38571bef6513204922001b6c3dd869b1 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 dc9de2a8c636e92b747fddae04ad71d600e27e34..051251cebe996d1fcbc50e5625cefe6156b6c069 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 aa8347f763aa9b14e1b491650b10a7c5f2bbd39b..e2bfbf3a81511dbf313cd630e1d1353840e38b83 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 8108b1a49944695544cddfca02d7035ab582c8d4..634fb3371ffa41733916578e690ee5c2a126a64c 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 11b3e92732f221421e456d9d2fbbdd75bfa9c93f..ac791e3fd59eec138d469cc68c66c8d531962fc0 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 81bbbe4810370030b404c5ebacb09f39c06d77dd..ad0c6afb8c59ceb51332167adb9b0c5919f182e9 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 f1e03ad12846244831951528e173c2d6158a3aa7..fbdf5b81fcbca1532c6716466a5bade62c776d0a 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 f81dd433fdc58f60863046aac9fe2f96581b7602..444b0c05f3f42bd55444955aa1f9635b0c8fb131 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 391af26cbf74eade10a163a0701184e52528a830..6700f2ab51dc9bb45db755d5fd13fb4c99c1ff04 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 01e6d91ac5489752198adc7fb2663c1a6c1f3806..455c65ed462c3e48fca83e8d8ddee66fe6742695 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 276a450d4c3d466a7687075629470a5f145d9000..4019e47b4537d44b07677725bc4b0d3cb11ae7aa 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 840dd966633bd6d6cf4169739d39a1ed8e49f042..f2b270a89634132d163e4e6462789db989540b80 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 f1f9912c40c5b3b27f129c63180c385d31c6534a..0fdaf7ab6cadf4ee67ed4d7c9783fa69f58f4e89 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 3258e6d10dc7dd0f7800d322259f33215654a4ea..1ef03d353b06815c2437369b23b0aae52f61c687 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 3a8bb6a22951dbac115114b01416c591765e7f61..9bda66d42cb6188975540101a5185712582882c3 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 a675993e72daa370367c63faf2ef26a70c410387..18f5bb6703dc248754131f80bfa55a9b6a209b02 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 5f19128007615165b78c374b6f426c94fbde47c9..5f542c88061333a9b6d2a39005e7a35cc1676273 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 4b91f16384c18bf13820a3d32ae4cb3925cfa270..89bb726aff643c7365b759b510f763b738c738d0 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 95fe58b178f38293fa0e3255ce1b3bc62c21c2bb..2a785cb9c5784f05ed88d120c8ee771cf5262cc4 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 03a863ca09164fa25aed2aa2eb5efc2b8068c390..3606cff52c1d3c2233c4b042d340639d12880e30 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 ecb43ded11196a82ae3890a6643619ac9902861e..f823a443ec4dec2c41bc138714a11cf1179fdc56 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 38b7d2620e72aa916d7b03d6bbfb3c309cbb0d53..011fcb7a659f915c68a2e452468e494054e07d67 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 c906c1dedcc42ab43e40b33f510805e49fbb9e6b..aa3b8a05585ae70d3a8c4748e96ddb6182922c18 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 e4038b1edbc8602810b90a5022ecd2059c7fce5c..83de757c8b1d49570f680f2673aebefb3e0803e5 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 fa5793e9b9a8dfb11c97654af60512fa26fcf590..10320f8e8b15713a5ff5a219e3f4c3476cb237c7 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