diff --git a/.isort.cfg b/.isort.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..54ca8ae31bdf9613765ae83d72a39cff4ecf4e69
--- /dev/null
+++ b/.isort.cfg
@@ -0,0 +1,11 @@
+[settings]
+# Compatible with black
+multi_line_output = 3
+include_trailing_comma = True
+force_grid_wrap = 0
+use_parentheses = True
+line_length = 120
+
+default_section=FIRSTPARTY
+known_first_party = arkindex_common,ponos,transkribus
+known_third_party = asgiref,boto3,botocore,channels,corsheaders,django,django_admin_hstore_widget,elasticsearch,elasticsearch_dsl,enumfields,gitlab,mock,psycopg2,requests,responses,rest_framework,sentry_sdk,setuptools,tenacity,tripoli,yaml
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index b99ec0aed3e205824c175d66ae8edef1917ff388..091bc1705824abe02af7363881e8f92d533a4db5 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,4 +1,12 @@
 repos:
+  - repo: https://github.com/asottile/seed-isort-config
+    rev: v2.2.0
+    hooks:
+      - id: seed-isort-config
+  - repo: https://github.com/pre-commit/mirrors-isort
+    rev: v4.3.21
+    hooks:
+      - id: isort
   - repo: https://gitlab.com/pycqa/flake8
     rev: 3.8.3
     hooks:
diff --git a/arkindex/dataimport/admin.py b/arkindex/dataimport/admin.py
index 8e4261791396de38695d1ab81e507e2dfbb59146..dd3089cc2ec54a4cd1759a89286a1d77d049fcd0 100644
--- a/arkindex/dataimport/admin.py
+++ b/arkindex/dataimport/admin.py
@@ -1,7 +1,8 @@
 from django.contrib import admin
 from django.db.models import Max
 from enumfields.admin import EnumFieldListFilter
-from arkindex.dataimport.models import DataImport, DataFile, Repository, Revision, Worker, WorkerVersion
+
+from arkindex.dataimport.models import DataFile, DataImport, Repository, Revision, Worker, WorkerVersion
 
 
 class DataFileInline(admin.StackedInline):
diff --git a/arkindex/dataimport/api.py b/arkindex/dataimport/api.py
index cf0dc554d03c862eb898cc74ff64f20d2586f110..bff4120c4d99459802453153997a3dae703827e6 100644
--- a/arkindex/dataimport/api.py
+++ b/arkindex/dataimport/api.py
@@ -1,41 +1,61 @@
+import logging
+from uuid import UUID
+
+from django.conf import settings
+from django.core.exceptions import PermissionDenied
 from django.db import transaction
-from django.db.models import Max, Q, F
+from django.db.models import F, Max, Q
 from django.http.response import Http404
 from django.shortcuts import get_object_or_404
-from django.core.exceptions import PermissionDenied
-from django.conf import settings
+from rest_framework import status
+from rest_framework.exceptions import ValidationError
 from rest_framework.generics import (
-    GenericAPIView, ListAPIView, CreateAPIView, RetrieveAPIView,
-    ListCreateAPIView, RetrieveUpdateDestroyAPIView, RetrieveDestroyAPIView,
-    RetrieveUpdateAPIView
+    CreateAPIView,
+    GenericAPIView,
+    ListAPIView,
+    ListCreateAPIView,
+    RetrieveAPIView,
+    RetrieveDestroyAPIView,
+    RetrieveUpdateAPIView,
+    RetrieveUpdateDestroyAPIView,
 )
-from rest_framework.views import APIView
 from rest_framework.response import Response
-from rest_framework import status
-from rest_framework.exceptions import ValidationError
-from arkindex.project.mixins import CorpusACLMixin, SelectionMixin, DeprecatedMixin, CustomPaginationViewMixin
-from arkindex.project.permissions import IsVerified
-from arkindex.project.openapi import AutoSchema
-from arkindex.documents.models import Corpus, ElementType, Element, ClassificationState
-from arkindex.documents.api.elements import ElementsListMixin
-from arkindex.dataimport.models import \
-    DataImport, DataFile, Repository, RepositoryType, Revision, Worker, WorkerVersion, WorkerRun
-from arkindex.dataimport.serializers.files import DataFileSerializer, DataFileCreateSerializer
-from arkindex.dataimport.serializers.git import \
-    ExternalRepositorySerializer, RevisionSerializer
+from rest_framework.views import APIView
+
+from arkindex.dataimport.models import (
+    DataFile,
+    DataImport,
+    Repository,
+    RepositoryType,
+    Revision,
+    Worker,
+    WorkerRun,
+    WorkerVersion,
+)
+from arkindex.dataimport.serializers.files import DataFileCreateSerializer, DataFileSerializer
+from arkindex.dataimport.serializers.git import ExternalRepositorySerializer, RevisionSerializer
 from arkindex.dataimport.serializers.imports import (
-    DataImportLightSerializer, DataImportSerializer,
-    DataImportFromFilesSerializer, ElementsWorkflowSerializer, WorkerRunLightSerializer, WorkerRunSerializer,
-    ImportTranskribusSerializer, StartProcessSerializer, ElementLightSerializer
+    DataImportFromFilesSerializer,
+    DataImportLightSerializer,
+    DataImportSerializer,
+    ElementLightSerializer,
+    ElementsWorkflowSerializer,
+    ImportTranskribusSerializer,
+    StartProcessSerializer,
+    WorkerRunLightSerializer,
+    WorkerRunSerializer,
 )
-from arkindex.dataimport.serializers.workers import WorkerSerializer, WorkerVersionSerializer, RepositorySerializer
-from arkindex.users.models import OAuthCredentials, User
+from arkindex.dataimport.serializers.workers import RepositorySerializer, WorkerSerializer, WorkerVersionSerializer
+from arkindex.documents.api.elements import ElementsListMixin
+from arkindex.documents.models import ClassificationState, Corpus, Element, ElementType
 from arkindex.project.fields import ArrayRemove
-from arkindex_common.ml_tool import MLToolType
+from arkindex.project.mixins import CorpusACLMixin, CustomPaginationViewMixin, DeprecatedMixin, SelectionMixin
+from arkindex.project.openapi import AutoSchema
+from arkindex.project.permissions import IsVerified
+from arkindex.users.models import OAuthCredentials, User
 from arkindex_common.enums import DataImportMode
-from ponos.models import State, STATES_ORDERING
-from uuid import UUID
-import logging
+from arkindex_common.ml_tool import MLToolType
+from ponos.models import STATES_ORDERING, State
 
 logger = logging.getLogger(__name__)
 
diff --git a/arkindex/dataimport/apps.py b/arkindex/dataimport/apps.py
index aea7c4df742961cd3113787f6140978aded61942..477837c0cd27af176598fd38f8c144281e6bc5ff 100644
--- a/arkindex/dataimport/apps.py
+++ b/arkindex/dataimport/apps.py
@@ -5,4 +5,4 @@ class DataImportConfig(AppConfig):
     name = 'arkindex.dataimport'
 
     def ready(self):
-        from arkindex.dataimport import signals  # noqa
\ No newline at end of file
+        from arkindex.dataimport import signals  # noqa
diff --git a/arkindex/dataimport/management/commands/import_s3.py b/arkindex/dataimport/management/commands/import_s3.py
index d3b8e18ecebb29d92de2560a903a68443c18c9ab..7f6731b5e786cdeafcb02e2770e3a169837d9a6c 100644
--- a/arkindex/dataimport/management/commands/import_s3.py
+++ b/arkindex/dataimport/management/commands/import_s3.py
@@ -1,13 +1,15 @@
 #!/usr/bin/env python3
+import logging
+
+import yaml
 from django.conf import settings
 from django.core.management.base import BaseCommand, CommandError
-from arkindex_common.enums import DataImportMode
+
 from arkindex.dataimport.models import DataImport
-from arkindex.users.models import User
 from arkindex.project.argparse import CorpusArgument
+from arkindex.users.models import User
+from arkindex_common.enums import DataImportMode
 from ponos.models import Workflow
-import logging
-import yaml
 
 logging.basicConfig(
     level=logging.INFO,
diff --git a/arkindex/dataimport/management/commands/update_repositories_hooks.py b/arkindex/dataimport/management/commands/update_repositories_hooks.py
index f48ca97a44e3a10a436df3c8a4a3e3090eb1dbbe..0907f8db7c796a36ff49a754b235dadc8f92da2c 100644
--- a/arkindex/dataimport/management/commands/update_repositories_hooks.py
+++ b/arkindex/dataimport/management/commands/update_repositories_hooks.py
@@ -1,8 +1,8 @@
-from arkindex.dataimport.models import Repository
+import logging
 
 from django.core.management.base import BaseCommand
 
-import logging
+from arkindex.dataimport.models import Repository
 
 logging.basicConfig(
     level=logging.INFO,
diff --git a/arkindex/dataimport/migrations/0001_initial.py b/arkindex/dataimport/migrations/0001_initial.py
index e89683990c0afa1859ff2f1f86171ac3d9af4499..d07191e9686c0c7036cf206d2ba57c5b6ea9bc59 100644
--- a/arkindex/dataimport/migrations/0001_initial.py
+++ b/arkindex/dataimport/migrations/0001_initial.py
@@ -1,14 +1,17 @@
 # Generated by Django 2.2.9 on 2020-01-17 15:39
 
+import uuid
+
+import django.contrib.postgres.fields.jsonb
+import enumfields.fields
+from django.db import migrations, models
+from enumfields import Enum
+
 import arkindex.dataimport.models
 import arkindex.project.aws
 import arkindex.project.fields
 import arkindex_common.enums
-import django.contrib.postgres.fields.jsonb
-from django.db import migrations, models
-import enumfields.fields
-from enumfields import Enum
-import uuid
+
 
 class EventType(Enum):
     Addition = 'A'
diff --git a/arkindex/dataimport/migrations/0002_initial.py b/arkindex/dataimport/migrations/0002_initial.py
index 610d1580352aff717f4fda74d1844a5645629e46..0d5e072952b84560bb7703541b9aefc96a60c545 100644
--- a/arkindex/dataimport/migrations/0002_initial.py
+++ b/arkindex/dataimport/migrations/0002_initial.py
@@ -1,7 +1,7 @@
 # Generated by Django 2.2.9 on 2020-01-17 15:39
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/arkindex/dataimport/migrations/0003_initial.py b/arkindex/dataimport/migrations/0003_initial.py
index 5f52398b83539fe8f36a78a476559beb771bf995..fa63754d93174eec77890f4c5ab549e29e1eb056 100644
--- a/arkindex/dataimport/migrations/0003_initial.py
+++ b/arkindex/dataimport/migrations/0003_initial.py
@@ -1,8 +1,8 @@
 # Generated by Django 2.2.9 on 2020-01-17 15:39
 
+import django.db.models.deletion
 from django.conf import settings
 from django.db import migrations, models
-import django.db.models.deletion
 
 
 class Migration(migrations.Migration):
diff --git a/arkindex/dataimport/migrations/0006_revision_state.py b/arkindex/dataimport/migrations/0006_revision_state.py
index e4ecf456c7ed888488782c55139debd7609ff52a..091e7bd4909ea4ba085c115be7b9f65ae49c6020 100644
--- a/arkindex/dataimport/migrations/0006_revision_state.py
+++ b/arkindex/dataimport/migrations/0006_revision_state.py
@@ -1,7 +1,7 @@
 # Generated by Django 2.2.11 on 2020-04-30 11:00
 
-from django.db import migrations
 import enumfields.fields
+from django.db import migrations
 
 
 class RevisionState(enumfields.fields.Enum):
diff --git a/arkindex/dataimport/migrations/0007_worker_workerversion.py b/arkindex/dataimport/migrations/0007_worker_workerversion.py
index 66c9a2231b46a71c22800e9069f9e5588d4c00fd..0f7d0fc81d823be5224e1b3fe4ce4ff29a59336a 100644
--- a/arkindex/dataimport/migrations/0007_worker_workerversion.py
+++ b/arkindex/dataimport/migrations/0007_worker_workerversion.py
@@ -1,11 +1,13 @@
 # Generated by Django 2.2.11 on 2020-05-19 14:55
 
-import arkindex_common.ml_tool
+import uuid
+
 import django.contrib.postgres.fields.jsonb
-from django.db import migrations, models
 import django.db.models.deletion
 import enumfields.fields
-import uuid
+from django.db import migrations, models
+
+import arkindex_common.ml_tool
 
 
 class Migration(migrations.Migration):
diff --git a/arkindex/dataimport/migrations/0008_add_gitref.py b/arkindex/dataimport/migrations/0008_add_gitref.py
index 1ab9b71b2ffa0da13a4d2bb00c7c575d9eb687f3..1db18f4026294e911a6f23109019b28d4e1170f9 100644
--- a/arkindex/dataimport/migrations/0008_add_gitref.py
+++ b/arkindex/dataimport/migrations/0008_add_gitref.py
@@ -1,10 +1,12 @@
 # Generated by Django 2.2.11 on 2020-05-21 15:34
 
-import arkindex.dataimport.models
-from django.db import migrations, models
+import uuid
+
 import django.db.models.deletion
 import enumfields.fields
-import uuid
+from django.db import migrations, models
+
+import arkindex.dataimport.models
 
 
 def migrate_git_refs(apps, schema_editor):
diff --git a/arkindex/dataimport/migrations/0010_workerversion_docker_image.py b/arkindex/dataimport/migrations/0010_workerversion_docker_image.py
index 152e2ac3de4fabecbcf70bc4aaff7b4c8cf646bd..0ab7dd3c2b33f003822347fd45dd98f48a3fdbd0 100644
--- a/arkindex/dataimport/migrations/0010_workerversion_docker_image.py
+++ b/arkindex/dataimport/migrations/0010_workerversion_docker_image.py
@@ -1,7 +1,7 @@
 # Generated by Django 2.2.13 on 2020-06-18 12:52
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/arkindex/dataimport/migrations/0011_refactor_payload_dataimport.py b/arkindex/dataimport/migrations/0011_refactor_payload_dataimport.py
index 886879af08639c4feaae5dc6799b92f6a9640102..f81b77aeeb07afe1fa366081bf5276b66a102893 100644
--- a/arkindex/dataimport/migrations/0011_refactor_payload_dataimport.py
+++ b/arkindex/dataimport/migrations/0011_refactor_payload_dataimport.py
@@ -1,7 +1,8 @@
 # Generated by Django 2.2.13 on 2020-06-24 09:39
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
+
 import arkindex_common
 
 
diff --git a/arkindex/dataimport/migrations/0012_move_revision_state.py b/arkindex/dataimport/migrations/0012_move_revision_state.py
index 38e6e22d0317eaeabc70192b04849d0aa54671fc..2318d0dddcc10ddd8eebc452efde28f7134fdab8 100644
--- a/arkindex/dataimport/migrations/0012_move_revision_state.py
+++ b/arkindex/dataimport/migrations/0012_move_revision_state.py
@@ -1,9 +1,10 @@
 # Generated by Django 2.2.13 on 2020-06-25 09:40
 
-import arkindex.dataimport.models
-from django.db import migrations, models
 import django.db.models.deletion
 import enumfields.fields
+from django.db import migrations, models
+
+import arkindex.dataimport.models
 
 
 class Migration(migrations.Migration):
diff --git a/arkindex/dataimport/migrations/0013_create_model_workerrun.py b/arkindex/dataimport/migrations/0013_create_model_workerrun.py
index a35b628db08041b76a3d3f1ab86bb15906eca57f..fde2aab95639ff2a1653fa90ba3eaf15324379c2 100644
--- a/arkindex/dataimport/migrations/0013_create_model_workerrun.py
+++ b/arkindex/dataimport/migrations/0013_create_model_workerrun.py
@@ -1,10 +1,12 @@
 # Generated by Django 2.2.13 on 2020-06-29 13:18
 
-import arkindex.project.fields
-from django.db import migrations, models
-import django.db.models.deletion
 import uuid
 
+import django.db.models.deletion
+from django.db import migrations, models
+
+import arkindex.project.fields
+
 
 class Migration(migrations.Migration):
 
diff --git a/arkindex/dataimport/migrations/0014_dataimport_selection.py b/arkindex/dataimport/migrations/0014_dataimport_selection.py
index 7f50aa3e6e4216a9f56c351ad2cd6e5dd281ca0b..49d2ca100eff5774e4d1efe01a273a39bab4633c 100644
--- a/arkindex/dataimport/migrations/0014_dataimport_selection.py
+++ b/arkindex/dataimport/migrations/0014_dataimport_selection.py
@@ -1,9 +1,10 @@
 # Generated by Django 2.2.13 on 2020-07-03 13:16
 
-from django.db import migrations, models
-import django.db.models.deletion
 import uuid
 
+import django.db.models.deletion
+from django.db import migrations, models
+
 
 class Migration(migrations.Migration):
 
diff --git a/arkindex/dataimport/migrations/0015_clear_payload.py b/arkindex/dataimport/migrations/0015_clear_payload.py
index 477d48b6c872d965340107304f93043bd2766300..7a55e51d445cdb78959692e11bf848e80e2a766d 100644
--- a/arkindex/dataimport/migrations/0015_clear_payload.py
+++ b/arkindex/dataimport/migrations/0015_clear_payload.py
@@ -1,8 +1,7 @@
 # Generated by Django 2.2.13 on 2020-07-07 13:49
 
-from django.db import migrations, models
 import django.db.models.deletion
-
+from django.db import migrations, models
 
 # Converts DataImport payloads to fields, from all the keys found in existing payloads:
 # element_type → dataimport.element_type
diff --git a/arkindex/dataimport/migrations/0019_repository_type.py b/arkindex/dataimport/migrations/0019_repository_type.py
index a8583bbede435a0c6bb3d27cefc461b6c17399e1..f7a5dba012441ba2f44ccba6ae03664d3c770c13 100644
--- a/arkindex/dataimport/migrations/0019_repository_type.py
+++ b/arkindex/dataimport/migrations/0019_repository_type.py
@@ -1,8 +1,9 @@
 # Generated by Django 3.1 on 2020-09-09 15:26
 
-import arkindex.dataimport.models
-from django.db import migrations
 import enumfields.fields
+from django.db import migrations
+
+import arkindex.dataimport.models
 
 WORKER_REPO_PREFIX = 'https://gitlab.com/teklia/workers/'
 
diff --git a/arkindex/dataimport/migrations/0020_null_corpus_repo_dataimport.py b/arkindex/dataimport/migrations/0020_null_corpus_repo_dataimport.py
index d7ef690ed193dd04e5359804336d708cffb43aa3..a6360f51aae46500ee5830ca60e3a52bbafa767e 100644
--- a/arkindex/dataimport/migrations/0020_null_corpus_repo_dataimport.py
+++ b/arkindex/dataimport/migrations/0020_null_corpus_repo_dataimport.py
@@ -1,7 +1,7 @@
 # Generated by Django 3.1.1 on 2020-09-11 14:19
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/arkindex/dataimport/migrations/0023_workerversion_constraint.py b/arkindex/dataimport/migrations/0023_workerversion_constraint.py
index 374008d29585f49553918bcd303675e2f8d9e009..77c5077d080858e5c7e8e9f47a8b38d2300ca366 100644
--- a/arkindex/dataimport/migrations/0023_workerversion_constraint.py
+++ b/arkindex/dataimport/migrations/0023_workerversion_constraint.py
@@ -1,6 +1,7 @@
 # Generated by Django 3.1.1 on 2020-09-24 10:57
 
 from django.db import migrations, models
+
 from arkindex.dataimport.models import WorkerVersionState
 
 
diff --git a/arkindex/dataimport/models.py b/arkindex/dataimport/models.py
index 19f703e1c3393d920dfc09a4bc7120aa4d3f71c8..21449e3f3aafde23ed75261289bcb77e81d8a0bb 100644
--- a/arkindex/dataimport/models.py
+++ b/arkindex/dataimport/models.py
@@ -1,21 +1,22 @@
-from django.db import models
+import shlex
+import urllib.parse
+import uuid
+from os import path
+
+import yaml
 from django.conf import settings
+from django.db import models
 from django.utils.functional import cached_property
+from enumfields import Enum, EnumField
 from rest_framework.exceptions import ValidationError
-from enumfields import EnumField, Enum
-from ponos.models import Artifact
-from arkindex_common.enums import DataImportMode
-from arkindex_common.ml_tool import MLToolType
+
+from arkindex.dataimport.providers import get_provider, git_providers
 from arkindex.project.aws import S3FileMixin, S3FileStatus
-from arkindex.project.models import IndexableModel
 from arkindex.project.fields import ArrayField
-from arkindex.dataimport.providers import git_providers, get_provider
-from ponos.models import Workflow, State
-from os import path
-import shlex
-import yaml
-import uuid
-import urllib.parse
+from arkindex.project.models import IndexableModel
+from arkindex_common.enums import DataImportMode
+from arkindex_common.ml_tool import MLToolType
+from ponos.models import Artifact, State, Workflow
 
 
 class DataImport(IndexableModel):
diff --git a/arkindex/dataimport/providers.py b/arkindex/dataimport/providers.py
index dfe6de1ecc6f441a049d93466267a9980116b752..b5e4e8f89f7b042fc7a6d5bdb30c70877d1495d2 100644
--- a/arkindex/dataimport/providers.py
+++ b/arkindex/dataimport/providers.py
@@ -1,13 +1,14 @@
-from abc import ABC, abstractmethod
-from django.urls import reverse
-from django.conf import settings
-from rest_framework.exceptions import NotAuthenticated, AuthenticationFailed, APIException, ValidationError
-from gitlab import Gitlab, GitlabGetError, GitlabCreateError
-import urllib.parse
 import base64
-import uuid
 import logging
+import urllib.parse
+import uuid
+from abc import ABC, abstractmethod
+
 import yaml
+from django.conf import settings
+from django.urls import reverse
+from gitlab import Gitlab, GitlabCreateError, GitlabGetError
+from rest_framework.exceptions import APIException, AuthenticationFailed, NotAuthenticated, ValidationError
 from yaml.parser import ParserError
 
 logger = logging.getLogger(__name__)
diff --git a/arkindex/dataimport/serializers/files.py b/arkindex/dataimport/serializers/files.py
index 90b68538cd725768d28dc7ed40b0f36f66896a6f..e353854a0e3c6477dc4d0d41a5d327ea8bc667df 100644
--- a/arkindex/dataimport/serializers/files.py
+++ b/arkindex/dataimport/serializers/files.py
@@ -1,8 +1,9 @@
 from rest_framework import serializers
-from arkindex.project.serializer_fields import EnumField
-from arkindex.project.aws import S3FileStatus
+
 from arkindex.dataimport.models import DataFile
 from arkindex.documents.models import Corpus
+from arkindex.project.aws import S3FileStatus
+from arkindex.project.serializer_fields import EnumField
 
 
 class DataFileSerializer(serializers.ModelSerializer):
diff --git a/arkindex/dataimport/serializers/git.py b/arkindex/dataimport/serializers/git.py
index e93ad96265ac840c8a4be436e285f309852c97c3..c232c37979341ea64bbd8f69b7f47be62125cfbd 100644
--- a/arkindex/dataimport/serializers/git.py
+++ b/arkindex/dataimport/serializers/git.py
@@ -1,6 +1,7 @@
 from rest_framework import serializers
+
+from arkindex.dataimport.models import GitRef, GitRefType, Revision, WorkerVersionState
 from arkindex.project.serializer_fields import EnumField
-from arkindex.dataimport.models import Revision, GitRef, GitRefType, WorkerVersionState
 
 
 class GitRefSerializer(serializers.ModelSerializer):
diff --git a/arkindex/dataimport/serializers/imports.py b/arkindex/dataimport/serializers/imports.py
index 2b9d070e97b850d199042229c579701bf02a73dd..ffa1425acf30d9497c3073819f6aa575c2d6b7b8 100644
--- a/arkindex/dataimport/serializers/imports.py
+++ b/arkindex/dataimport/serializers/imports.py
@@ -1,14 +1,16 @@
 from uuid import UUID
-from rest_framework import serializers
+
 from django.conf import settings
 from django.db.models import Q
-from ponos.models import State
-from arkindex_common.enums import DataImportMode
-from arkindex.project.serializer_fields import EnumField, BestClassField
-from arkindex.documents.models import Corpus, Element, ElementType, Classification, ClassificationState
-from arkindex.documents.serializers.elements import ElementSlimSerializer
-from arkindex.dataimport.models import DataImport, DataFile, WorkerRun, WorkerVersion
+from rest_framework import serializers
+
+from arkindex.dataimport.models import DataFile, DataImport, WorkerRun, WorkerVersion
 from arkindex.dataimport.serializers.git import RevisionSerializer
+from arkindex.documents.models import Classification, ClassificationState, Corpus, Element, ElementType
+from arkindex.documents.serializers.elements import ElementSlimSerializer
+from arkindex.project.serializer_fields import BestClassField, EnumField
+from arkindex_common.enums import DataImportMode
+from ponos.models import State
 from transkribus import TranskribusAPI
 
 
diff --git a/arkindex/dataimport/serializers/workers.py b/arkindex/dataimport/serializers/workers.py
index 71d4405fb0dfe70dc1046dd5618838e7acca9cfe..8033ca88c237ccd94d3019ed759e8f4e3e1ffd30 100644
--- a/arkindex/dataimport/serializers/workers.py
+++ b/arkindex/dataimport/serializers/workers.py
@@ -1,10 +1,12 @@
+import urllib
+
 from rest_framework import serializers
 from rest_framework.exceptions import ValidationError
-from arkindex.dataimport.models import Worker, WorkerVersion, WorkerVersionState, Repository, RepositoryType
+
+from arkindex.dataimport.models import Repository, RepositoryType, Worker, WorkerVersion, WorkerVersionState
+from arkindex.dataimport.serializers.git import RevisionWithRefsSerializer
 from arkindex.project.serializer_fields import EnumField
 from arkindex_common.ml_tool import MLToolType
-from arkindex.dataimport.serializers.git import RevisionWithRefsSerializer
-import urllib
 
 
 class WorkerSerializer(serializers.ModelSerializer):
diff --git a/arkindex/dataimport/signals.py b/arkindex/dataimport/signals.py
index e5b50ca26683a1b894d05986f2df0a6fc21b26c3..0c4ebad5ff924ff5640f19e4b588f3be17099ce0 100644
--- a/arkindex/dataimport/signals.py
+++ b/arkindex/dataimport/signals.py
@@ -1,8 +1,9 @@
 from django.db.models.signals import pre_save
 from django.dispatch import receiver
-from arkindex.dataimport.models import WorkerRun
 from rest_framework.exceptions import ValidationError
 
+from arkindex.dataimport.models import WorkerRun
+
 
 def _list_ancestors(graph, parents):
     results = []
diff --git a/arkindex/dataimport/tests/test_datafile_api.py b/arkindex/dataimport/tests/test_datafile_api.py
index 3b38fa9059342d8dfb93ab6af35344055a049ec7..9c459904ba5ada766fbb5f4f9e03ebf3a8f7c019 100644
--- a/arkindex/dataimport/tests/test_datafile_api.py
+++ b/arkindex/dataimport/tests/test_datafile_api.py
@@ -1,10 +1,12 @@
 from unittest.mock import patch
+
 from django.urls import reverse
 from rest_framework import status
-from arkindex.project.tests import FixtureAPITestCase
-from arkindex.project.aws import S3FileStatus
+
 from arkindex.dataimport.models import DataFile
 from arkindex.documents.models import Corpus
+from arkindex.project.aws import S3FileStatus
+from arkindex.project.tests import FixtureAPITestCase
 
 
 class TestDataFileApi(FixtureAPITestCase):
diff --git a/arkindex/dataimport/tests/test_files.py b/arkindex/dataimport/tests/test_files.py
index 9eb24581634e30eef68cfd7bd66da99c9d864d9f..f2f708375c204954e64de50a29a8b7b34f48b657 100644
--- a/arkindex/dataimport/tests/test_files.py
+++ b/arkindex/dataimport/tests/test_files.py
@@ -1,8 +1,10 @@
 from unittest.mock import patch
-from rest_framework import status
-from django.urls import reverse
-from django.test import override_settings
+
 from botocore.exceptions import ClientError
+from django.test import override_settings
+from django.urls import reverse
+from rest_framework import status
+
 from arkindex.dataimport.models import DataFile
 from arkindex.project.tests import FixtureAPITestCase
 
diff --git a/arkindex/dataimport/tests/test_gitlab_provider.py b/arkindex/dataimport/tests/test_gitlab_provider.py
index 0ce7da9fb8a0d7d3ce8675563b0a94215a4ff86a..779ac9ce89a5346587e7b82555908ebd18be6d26 100644
--- a/arkindex/dataimport/tests/test_gitlab_provider.py
+++ b/arkindex/dataimport/tests/test_gitlab_provider.py
@@ -1,12 +1,20 @@
-from unittest.mock import patch, MagicMock
-from rest_framework.exceptions import APIException, NotAuthenticated, AuthenticationFailed, ValidationError
-from gitlab.exceptions import GitlabGetError, GitlabCreateError
-from arkindex.project.tests import FixtureTestCase
-from arkindex.dataimport.providers import GitLabProvider
-from arkindex.dataimport.models import \
-    DataImport, DataImportMode, Revision, WorkerVersionState, GitRefType, RepositoryType
-from django.conf import settings
 from pathlib import Path
+from unittest.mock import MagicMock, patch
+
+from django.conf import settings
+from gitlab.exceptions import GitlabCreateError, GitlabGetError
+from rest_framework.exceptions import APIException, AuthenticationFailed, NotAuthenticated, ValidationError
+
+from arkindex.dataimport.models import (
+    DataImport,
+    DataImportMode,
+    GitRefType,
+    RepositoryType,
+    Revision,
+    WorkerVersionState,
+)
+from arkindex.dataimport.providers import GitLabProvider
+from arkindex.project.tests import FixtureTestCase
 
 SAMPLES = Path(__file__).absolute().parent / 'repository_conf_samples'
 
diff --git a/arkindex/dataimport/tests/test_import_s3.py b/arkindex/dataimport/tests/test_import_s3.py
index 3608bf4935c8883d507922c02847cb2e1eb6f6dd..4e618aee22d0a52bddf1194ca97b973b140ae276 100644
--- a/arkindex/dataimport/tests/test_import_s3.py
+++ b/arkindex/dataimport/tests/test_import_s3.py
@@ -1,10 +1,11 @@
+import yaml
 from django.core.management import call_command
 from django.core.management.base import CommandError
 from django.test import override_settings
+
+from arkindex.dataimport.models import DataImport
 from arkindex.project.tests import FixtureTestCase
 from arkindex_common.enums import DataImportMode
-from arkindex.dataimport.models import DataImport
-import yaml
 
 
 class TestImportS3(FixtureTestCase):
diff --git a/arkindex/dataimport/tests/test_imports.py b/arkindex/dataimport/tests/test_imports.py
index a4327feeea50f17f427ec82c54f9e6a4ef494a2c..33fe9ab54311ffa73e14260be07fe079190ec941 100644
--- a/arkindex/dataimport/tests/test_imports.py
+++ b/arkindex/dataimport/tests/test_imports.py
@@ -1,14 +1,16 @@
+import uuid
+from unittest.mock import MagicMock, patch
+
+import yaml
 from django.urls import reverse
 from rest_framework import status
-from arkindex_common.enums import DataImportMode
-from arkindex.dataimport.models import DataImport, DataFile, RepositoryType
+
+from arkindex.dataimport.models import DataFile, DataImport, RepositoryType
 from arkindex.documents.models import Corpus, ElementType
 from arkindex.project.tests import FixtureAPITestCase
 from arkindex.users.models import User
+from arkindex_common.enums import DataImportMode
 from ponos.models import State, Task, Workflow
-from unittest.mock import patch, MagicMock
-import yaml
-import uuid
 
 RECIPE = '''
 tasks:
diff --git a/arkindex/dataimport/tests/test_process_elements.py b/arkindex/dataimport/tests/test_process_elements.py
index f0ad9808c2c85b169dd4317fe3d9e70b009a57d8..c0bc419ebe8cb06a4a0ed510643be142f394bc7c 100644
--- a/arkindex/dataimport/tests/test_process_elements.py
+++ b/arkindex/dataimport/tests/test_process_elements.py
@@ -1,10 +1,11 @@
+import uuid
+
 from django.urls import reverse
 from rest_framework import status
 
-from arkindex.project.tests import FixtureAPITestCase
-from arkindex.documents.models import Element, Classification, DataSource, MLClass, ClassificationState, Corpus
 from arkindex.dataimport.models import DataImport, DataImportMode
-import uuid
+from arkindex.documents.models import Classification, ClassificationState, Corpus, DataSource, Element, MLClass
+from arkindex.project.tests import FixtureAPITestCase
 
 
 class TestProcessElements(FixtureAPITestCase):
diff --git a/arkindex/dataimport/tests/test_providers.py b/arkindex/dataimport/tests/test_providers.py
index e67d56fbffefae2502325f65a2642bb3c35ad4fa..e93467fa3676886c64bbbc22d1d99201f6c22fe7 100644
--- a/arkindex/dataimport/tests/test_providers.py
+++ b/arkindex/dataimport/tests/test_providers.py
@@ -1,8 +1,10 @@
 from unittest.mock import patch
+
 from django.urls import reverse
 from rest_framework import status
-from arkindex.dataimport.providers import GitProvider, GitLabProvider
+
 from arkindex.dataimport.models import RepositoryType
+from arkindex.dataimport.providers import GitLabProvider, GitProvider
 from arkindex.project.tests import FixtureAPITestCase
 
 
diff --git a/arkindex/dataimport/tests/test_repos.py b/arkindex/dataimport/tests/test_repos.py
index 282d4c55112da2c2432fe4cee717cb15a81ca7b6..60b79b4426385441c11491ae2dc2e590aa3169dc 100644
--- a/arkindex/dataimport/tests/test_repos.py
+++ b/arkindex/dataimport/tests/test_repos.py
@@ -1,13 +1,14 @@
 from django.urls import reverse
+from mock import MagicMock, patch
 from rest_framework import status
 from rest_framework.exceptions import ValidationError
 from rest_framework.serializers import DateTimeField
-from ponos.models import Workflow, State
-from arkindex_common.enums import DataImportMode
+
+from arkindex.dataimport.models import DataImport, Repository, RepositoryType, WorkerVersion, WorkerVersionState
 from arkindex.project.tests import FixtureTestCase
-from arkindex.dataimport.models import Repository, RepositoryType, DataImport, WorkerVersion, WorkerVersionState
 from arkindex.users.models import User
-from mock import patch, MagicMock
+from arkindex_common.enums import DataImportMode
+from ponos.models import State, Workflow
 
 RECIPE = '''
 tasks:
diff --git a/arkindex/dataimport/tests/test_signals.py b/arkindex/dataimport/tests/test_signals.py
index 783bc27d88b00f7bf4f23e840fa2bcbae766767f..821c646a80a54662a162e870da00b614b3372d77 100644
--- a/arkindex/dataimport/tests/test_signals.py
+++ b/arkindex/dataimport/tests/test_signals.py
@@ -1,9 +1,10 @@
-from arkindex_common.ml_tool import MLToolType
-from arkindex_common.enums import DataImportMode
-from arkindex.dataimport.models import Worker, WorkerVersion, WorkerRun, RepositoryType
+from rest_framework.exceptions import ValidationError
+
+from arkindex.dataimport.models import RepositoryType, Worker, WorkerRun, WorkerVersion
 from arkindex.dataimport.signals import _list_ancestors
 from arkindex.project.tests import FixtureAPITestCase
-from rest_framework.exceptions import ValidationError
+from arkindex_common.enums import DataImportMode
+from arkindex_common.ml_tool import MLToolType
 
 
 class TestSignals(FixtureAPITestCase):
diff --git a/arkindex/dataimport/tests/test_transkribus_import.py b/arkindex/dataimport/tests/test_transkribus_import.py
index 80cd348f103c3930df4073b6f8d4a327ca790b32..ea8f869f6dcaca39c64bd86a5fb0ad35d0391023 100644
--- a/arkindex/dataimport/tests/test_transkribus_import.py
+++ b/arkindex/dataimport/tests/test_transkribus_import.py
@@ -1,15 +1,17 @@
 from unittest.mock import patch
-from django.urls import reverse
-from django.test import override_settings
+
+import yaml
 from django.conf import settings
+from django.test import override_settings
+from django.urls import reverse
 from rest_framework import status
-from arkindex_common.enums import DataImportMode
+
 from arkindex.dataimport.models import DataImport
-from arkindex.project.tests import FixtureAPITestCase
 from arkindex.project.default_corpus import DEFAULT_TRANSKRIBUS_TYPES
-from ponos.models import State
+from arkindex.project.tests import FixtureAPITestCase
 from arkindex.users.models import User
-import yaml
+from arkindex_common.enums import DataImportMode
+from ponos.models import State
 
 
 @override_settings(TRANSKRIBUS_EMAIL="arkindex@teklia.com", TRANSKRIBUS_PASSWORD=None)
diff --git a/arkindex/dataimport/tests/test_workerruns.py b/arkindex/dataimport/tests/test_workerruns.py
index 347e0eb84c5675268e23cbccf21f4405a78e0c8b..1528ca7309e763fd2ef09c175a388aa7068ef008 100644
--- a/arkindex/dataimport/tests/test_workerruns.py
+++ b/arkindex/dataimport/tests/test_workerruns.py
@@ -1,11 +1,13 @@
+import uuid
 from unittest.mock import patch
+
 from django.urls import reverse
 from rest_framework import status
+
+from arkindex.dataimport.models import WorkerRun, WorkerVersion
+from arkindex.project.tests import FixtureAPITestCase
 from arkindex_common.enums import DataImportMode
-from arkindex.dataimport.models import WorkerVersion, WorkerRun
 from ponos.models import Workflow
-from arkindex.project.tests import FixtureAPITestCase
-import uuid
 
 RECIPE = '''
 tasks:
diff --git a/arkindex/dataimport/tests/test_workers.py b/arkindex/dataimport/tests/test_workers.py
index 0fe294824d3ca54b0e29cc7779881bb816997aa5..47754685d4cbe019e3824bf96f1ed0e6b86170a7 100644
--- a/arkindex/dataimport/tests/test_workers.py
+++ b/arkindex/dataimport/tests/test_workers.py
@@ -1,8 +1,9 @@
 from django.urls import reverse
 from rest_framework import status
-from arkindex_common.ml_tool import MLToolType
-from arkindex.dataimport.models import Repository, Revision, Worker, WorkerVersion, WorkerVersionState, RepositoryType
+
+from arkindex.dataimport.models import Repository, RepositoryType, Revision, Worker, WorkerVersion, WorkerVersionState
 from arkindex.project.tests import FixtureAPITestCase
+from arkindex_common.ml_tool import MLToolType
 from ponos.models import Workflow
 
 RECIPE = '''
diff --git a/arkindex/dataimport/tests/test_workflows_api.py b/arkindex/dataimport/tests/test_workflows_api.py
index b43afb03ba8ec56e83183d20faa39e8e9492e772..575f3364e51bc5f41fd72517090224af2a9b7625 100644
--- a/arkindex/dataimport/tests/test_workflows_api.py
+++ b/arkindex/dataimport/tests/test_workflows_api.py
@@ -1,12 +1,13 @@
+import yaml
 from django.test import override_settings
-from rest_framework.reverse import reverse
 from rest_framework import status
+from rest_framework.reverse import reverse
+
+from arkindex.dataimport.models import DataImport, RepositoryType, WorkerVersion
+from arkindex.documents.models import Corpus, Element
+from arkindex.project.tests import FixtureAPITestCase
 from arkindex_common.enums import DataImportMode
 from ponos.models import State, Workflow
-from arkindex.dataimport.models import DataImport, WorkerVersion, RepositoryType
-from arkindex.documents.models import Element, Corpus
-from arkindex.project.tests import FixtureAPITestCase
-import yaml
 
 RECIPE = '''
 tasks:
diff --git a/arkindex/documents/admin.py b/arkindex/documents/admin.py
index 7a42a6b9f39ad17c4c081f95a2276f2049144295..17a0074e123272d6ba388a4d8f884affd261f3ba 100644
--- a/arkindex/documents/admin.py
+++ b/arkindex/documents/admin.py
@@ -1,11 +1,23 @@
-from django.contrib import admin
 from django import forms
+from django.contrib import admin
 from django_admin_hstore_widget.forms import HStoreFormField
-from arkindex.documents.models import \
-    Corpus, Element, ElementType, Transcription, MetaData, AllowedMetaData, MLClass, \
-    Classification, DataSource, Entity, EntityRole, EntityLink
 from enumfields.admin import EnumFieldListFilter
 
+from arkindex.documents.models import (
+    AllowedMetaData,
+    Classification,
+    Corpus,
+    DataSource,
+    Element,
+    ElementType,
+    Entity,
+    EntityLink,
+    EntityRole,
+    MetaData,
+    MLClass,
+    Transcription,
+)
+
 
 class ElementTypeInline(admin.TabularInline):
     model = ElementType
diff --git a/arkindex/documents/api/admin.py b/arkindex/documents/api/admin.py
index d951e8047738cd49df8c718d42ef6575f99c4297..b08091dbfb545f3efa2043c23bca3c2a0f6c5aa4 100644
--- a/arkindex/documents/api/admin.py
+++ b/arkindex/documents/api/admin.py
@@ -1,8 +1,9 @@
 from django.conf import settings
-from rest_framework.generics import CreateAPIView
 from rest_framework.exceptions import ValidationError
-from arkindex.project.permissions import IsAdminUser
+from rest_framework.generics import CreateAPIView
+
 from arkindex.documents.serializers.admin import ReindexConfigSerializer
+from arkindex.project.permissions import IsAdminUser
 
 
 class ReindexStart(CreateAPIView):
diff --git a/arkindex/documents/api/elements.py b/arkindex/documents/api/elements.py
index 9a8bab749e0b766863ae55102336f43a8818fe56..1d4993c36bfe1f1df79b118b824e844ede2f1033 100644
--- a/arkindex/documents/api/elements.py
+++ b/arkindex/documents/api/elements.py
@@ -1,43 +1,63 @@
+import email.utils
+import uuid
 from collections import defaultdict
 from datetime import datetime, timezone
-from psycopg2.extras import execute_values
+
 from django.conf import settings
-from django.db import transaction, connection
-from django.db.models import Q, Prefetch, Max, QuerySet, CharField
+from django.db import connection, transaction
+from django.db.models import CharField, Max, Prefetch, Q, QuerySet
 from django.db.models.functions import Cast
 from django.shortcuts import get_object_or_404
 from django.utils.functional import cached_property
-from rest_framework.exceptions import ValidationError, NotFound
+from psycopg2.extras import execute_values
+from rest_framework import serializers, status
+from rest_framework.exceptions import NotFound, ValidationError
 from rest_framework.generics import (
-    ListAPIView, CreateAPIView, RetrieveAPIView, UpdateAPIView, DestroyAPIView,
-    ListCreateAPIView, RetrieveUpdateDestroyAPIView,
+    CreateAPIView,
+    DestroyAPIView,
+    ListAPIView,
+    ListCreateAPIView,
+    RetrieveAPIView,
+    RetrieveUpdateDestroyAPIView,
+    UpdateAPIView,
 )
-from rest_framework import status, serializers
 from rest_framework.response import Response
-from arkindex_common.enums import TranscriptionType
+
+from arkindex.dataimport.models import WorkerVersion
 from arkindex.documents.models import (
-    Corpus, Element, ElementPath, Right, MetaData, AllowedMetaData,
-    Classification, ClassificationState, Transcription, ElementType
+    AllowedMetaData,
+    Classification,
+    ClassificationState,
+    Corpus,
+    Element,
+    ElementPath,
+    ElementType,
+    MetaData,
+    Right,
+    Transcription,
 )
 from arkindex.documents.serializers.elements import (
-    CorpusSerializer, ElementSerializer, ElementSlimSerializer, ElementListSerializer,
-    ElementCreateSerializer, ElementNeighborsSerializer, ElementParentSerializer,
-    MetaDataUpdateSerializer, ElementTypeSerializer, ElementBulkSerializer,
+    CorpusSerializer,
+    ElementBulkSerializer,
+    ElementCreateSerializer,
+    ElementListSerializer,
+    ElementNeighborsSerializer,
+    ElementParentSerializer,
+    ElementSerializer,
+    ElementSlimSerializer,
+    ElementTypeSerializer,
+    MetaDataUpdateSerializer,
 )
 from arkindex.documents.serializers.light import CorpusAllowedMetaDataSerializer, ElementTypeLightSerializer
 from arkindex.documents.serializers.ml import ElementTranscriptionSerializer
-from arkindex.dataimport.models import WorkerVersion
 from arkindex.images.models import Zone
+from arkindex.project.mixins import CorpusACLMixin, DeprecatedMixin, SelectionMixin
 from arkindex.project.openapi import AutoSchema
-from arkindex.project.mixins import CorpusACLMixin, SelectionMixin, DeprecatedMixin
 from arkindex.project.pagination import PageNumberPagination
-from arkindex.project.permissions import IsVerified, IsVerifiedOrReadOnly, IsAuthenticated
-from arkindex.project.triggers import corpus_delete
+from arkindex.project.permissions import IsAuthenticated, IsVerified, IsVerifiedOrReadOnly
 from arkindex.project.tools import BulkMap
-
-import email.utils
-import uuid
-
+from arkindex.project.triggers import corpus_delete
+from arkindex_common.enums import TranscriptionType
 
 classifications_queryset = Classification.objects.select_related('ml_class', 'source').order_by('-confidence')
 
diff --git a/arkindex/documents/api/entities.py b/arkindex/documents/api/entities.py
index 8a5f54a13563fd210fe352683508988ccb2a7b67..a4bd581e6afaa8b9895fbe84168347471ec27668 100644
--- a/arkindex/documents/api/entities.py
+++ b/arkindex/documents/api/entities.py
@@ -1,25 +1,45 @@
 from uuid import UUID
-from django.core.exceptions import ValidationError
+
 from django.conf import settings
+from django.core.exceptions import ValidationError
 from django.db.models import Q
 from elasticsearch.exceptions import NotFoundError
 from rest_framework import serializers, status
-from rest_framework.generics import \
-    ListAPIView, ListCreateAPIView, RetrieveAPIView, CreateAPIView, RetrieveUpdateDestroyAPIView
 from rest_framework.exceptions import NotFound
+from rest_framework.generics import (
+    CreateAPIView,
+    ListAPIView,
+    ListCreateAPIView,
+    RetrieveAPIView,
+    RetrieveUpdateDestroyAPIView,
+)
 from rest_framework.response import Response
-from arkindex.documents.models import \
-    Corpus, Right, Element, Transcription, TranscriptionEntity, Entity, EntityLink, EntityRole
+
+from arkindex.dataimport.models import WorkerVersion
+from arkindex.documents.models import (
+    Corpus,
+    Element,
+    Entity,
+    EntityLink,
+    EntityRole,
+    Right,
+    Transcription,
+    TranscriptionEntity,
+)
+from arkindex.documents.serializers.elements import ElementEntitiesSerializer, ElementSlimSerializer
 from arkindex.documents.serializers.entities import (
-    EntityRoleSerializer, EntitySerializer, EntityCreateSerializer, EntityLinkCreateSerializer,
-    TranscriptionEntitySerializer, TranscriptionEntityDetailsSerializer, EntityLinkSerializer,
+    EntityCreateSerializer,
+    EntityLinkCreateSerializer,
+    EntityLinkSerializer,
+    EntityRoleSerializer,
+    EntitySerializer,
+    TranscriptionEntityDetailsSerializer,
+    TranscriptionEntitySerializer,
 )
-from arkindex.documents.serializers.elements import ElementSlimSerializer, ElementEntitiesSerializer
-from arkindex.dataimport.models import WorkerVersion
+from arkindex.project.elastic import ESEntity
 from arkindex.project.mixins import CorpusACLMixin
 from arkindex.project.permissions import IsVerified
 from arkindex.project.triggers import reindex_start
-from arkindex.project.elastic import ESEntity
 
 
 class CorpusRoles(CorpusACLMixin, ListCreateAPIView):
diff --git a/arkindex/documents/api/iiif.py b/arkindex/documents/api/iiif.py
index 230a5e6cae17d4de5a9d638f51844ffa6f9c2370..5989b2a4e77b204b15141a1a766f973b80a470b9 100644
--- a/arkindex/documents/api/iiif.py
+++ b/arkindex/documents/api/iiif.py
@@ -1,18 +1,19 @@
 from django.utils.decorators import method_decorator
 from django.views.decorators.cache import cache_page
-from rest_framework.generics import RetrieveAPIView
 from rest_framework.exceptions import PermissionDenied
-from arkindex_common.enums import TranscriptionType
-from arkindex.documents.models import Element, Corpus
-from arkindex.documents.serializers.search import IIIFSearchQuerySerializer
+from rest_framework.generics import RetrieveAPIView
+
+from arkindex.documents.models import Corpus, Element
+from arkindex.documents.search import search_transcriptions_filter_post
 from arkindex.documents.serializers.iiif import (
-    FolderManifestSerializer,
     ElementAnnotationListSerializer,
+    FolderManifestSerializer,
     TranscriptionSearchAnnotationListSerializer,
 )
-from arkindex.documents.search import search_transcriptions_filter_post
+from arkindex.documents.serializers.search import IIIFSearchQuerySerializer
 from arkindex.project.elastic import ESTranscription
 from arkindex.project.mixins import SearchAPIMixin
+from arkindex_common.enums import TranscriptionType
 
 
 class FolderManifest(RetrieveAPIView):
diff --git a/arkindex/documents/api/ml.py b/arkindex/documents/api/ml.py
index fd3820662c7628a825f2c85591808c2715d593e2..5af95a01ff1ac827c7a2eb5ea786a7d615584344 100644
--- a/arkindex/documents/api/ml.py
+++ b/arkindex/documents/api/ml.py
@@ -1,30 +1,53 @@
+import logging
+import uuid
 from collections import defaultdict
+
 from django.db import transaction
-from django.db.models import Q, Count
+from django.db.models import Count, Q
 from rest_framework import status
+from rest_framework.exceptions import PermissionDenied, ValidationError
 from rest_framework.generics import (
-    GenericAPIView, ListAPIView, ListCreateAPIView, CreateAPIView,
-    RetrieveDestroyAPIView, RetrieveUpdateDestroyAPIView
+    CreateAPIView,
+    GenericAPIView,
+    ListAPIView,
+    ListCreateAPIView,
+    RetrieveDestroyAPIView,
+    RetrieveUpdateDestroyAPIView,
 )
-from rest_framework.exceptions import PermissionDenied, ValidationError
 from rest_framework.response import Response
-from arkindex.documents.models import \
-    Corpus, Element, ElementPath, DataSource, Classification, ClassificationState, Transcription, Entity, Right, MLClass
-from arkindex_common.ml_tool import MLToolType
+
+from arkindex.documents.models import (
+    Classification,
+    ClassificationState,
+    Corpus,
+    DataSource,
+    Element,
+    ElementPath,
+    Entity,
+    MLClass,
+    Right,
+    Transcription,
+)
 from arkindex.documents.serializers.ml import (
-    ClassificationsSerializer, ClassificationCreateSerializer, ClassificationSerializer,
-    ClassificationsSelectionSerializer, ClassificationMode,
-    TranscriptionSerializer, TranscriptionCreateSerializer, TranscriptionBulkSerializer,
-    ElementTranscriptionsBulkSerializer, AnnotatedElementSerializer,
-    DataSourceStatsSerializer, CountMLClassSerializer
+    AnnotatedElementSerializer,
+    ClassificationCreateSerializer,
+    ClassificationMode,
+    ClassificationSerializer,
+    ClassificationsSelectionSerializer,
+    ClassificationsSerializer,
+    CountMLClassSerializer,
+    DataSourceStatsSerializer,
+    ElementTranscriptionsBulkSerializer,
+    TranscriptionBulkSerializer,
+    TranscriptionCreateSerializer,
+    TranscriptionSerializer,
 )
 from arkindex.images.models import Zone
 from arkindex.project.filters import SafeSearchFilter
-from arkindex.project.mixins import SelectionMixin, CorpusACLMixin, DeprecatedMixin
-from arkindex.project.permissions import IsVerified, IsVerifiedOrReadOnly, IsAdminUser
-from arkindex.project.triggers import reindex_start, ml_results_delete
-import uuid
-import logging
+from arkindex.project.mixins import CorpusACLMixin, DeprecatedMixin, SelectionMixin
+from arkindex.project.permissions import IsAdminUser, IsVerified, IsVerifiedOrReadOnly
+from arkindex.project.triggers import ml_results_delete, reindex_start
+from arkindex_common.ml_tool import MLToolType
 
 logger = logging.getLogger(__name__)
 
diff --git a/arkindex/documents/api/search.py b/arkindex/documents/api/search.py
index 436536e2a9c300ef145e3c1abf60666b3ffe6e6d..a5e36b77f874a04db4dbf370d92ca53e56880177 100644
--- a/arkindex/documents/api/search.py
+++ b/arkindex/documents/api/search.py
@@ -1,12 +1,16 @@
 from django.conf import settings
+from elasticsearch_dsl.function import FieldValueFactor
+from elasticsearch_dsl.query import FunctionScore, Nested, Q
 from rest_framework.generics import ListAPIView
-from arkindex.documents.serializers.search import \
-    ElementSearchResultSerializer, EntitySearchResultSerializer, EntitySearchQuerySerializer
+
 from arkindex.documents.search import search_elements_post, search_entities_post
-from arkindex.project.mixins import SearchAPIMixin
+from arkindex.documents.serializers.search import (
+    ElementSearchResultSerializer,
+    EntitySearchQuerySerializer,
+    EntitySearchResultSerializer,
+)
 from arkindex.project.elastic import ESElement, ESEntity
-from elasticsearch_dsl.query import Q, Nested, FunctionScore
-from elasticsearch_dsl.function import FieldValueFactor
+from arkindex.project.mixins import SearchAPIMixin
 
 
 class SearchAPIView(SearchAPIMixin, ListAPIView):
diff --git a/arkindex/documents/consumers.py b/arkindex/documents/consumers.py
index d41888420276a0d66417b25707f324f7992bc492..a29b81e4ea09d50099f6d02a8e4990e222622c61 100644
--- a/arkindex/documents/consumers.py
+++ b/arkindex/documents/consumers.py
@@ -1,18 +1,28 @@
+import logging
 from math import ceil
+
 from channels.consumer import SyncConsumer
 from django.db.models import Q
 from django.db.models.deletion import Collector
 from django.db.models.signals import pre_delete
-from arkindex.project.tools import disconnect_signal
-from arkindex.project.triggers import reindex_start
+
 from arkindex.dataimport.models import DataImportElement
 from arkindex.documents.indexer import Indexer
 from arkindex.documents.models import (
-    Corpus, Element, ElementPath, MetaData, Transcription, TranscriptionEntity, Entity,
-    EntityLink, Classification, Selection
+    Classification,
+    Corpus,
+    Element,
+    ElementPath,
+    Entity,
+    EntityLink,
+    MetaData,
+    Selection,
+    Transcription,
+    TranscriptionEntity,
 )
 from arkindex.documents.signals import pre_delete_handler
-import logging
+from arkindex.project.tools import disconnect_signal
+from arkindex.project.triggers import reindex_start
 
 logger = logging.getLogger(__name__)
 
diff --git a/arkindex/documents/date_parser.py b/arkindex/documents/date_parser.py
index 4c300ba464f48c9c1193613f12bb53b9cbd5e4b0..2f5635eca1c59df24317ead46df61e0f54563f82 100644
--- a/arkindex/documents/date_parser.py
+++ b/arkindex/documents/date_parser.py
@@ -1,7 +1,8 @@
-from arkindex.documents.dates import InterpretedDate, DateType
-import unicodedata
-import re
 import logging
+import re
+import unicodedata
+
+from arkindex.documents.dates import DateType, InterpretedDate
 
 logger = logging.getLogger(__name__)
 
diff --git a/arkindex/documents/dates.py b/arkindex/documents/dates.py
index cc115abf5317a403f2be090d5f995380fb309efc..18eb0244a96ed4c391a926f68eae222f14918d1c 100644
--- a/arkindex/documents/dates.py
+++ b/arkindex/documents/dates.py
@@ -1,6 +1,7 @@
-from enumfields import Enum
 from datetime import datetime
 
+from enumfields import Enum
+
 
 class DateType(Enum):
     Exact = 'exact'
diff --git a/arkindex/documents/indexer.py b/arkindex/documents/indexer.py
index ccc158a5afda9b24b30ab448ede83680caff9e4f..e015bf1bc3684fbf0cedce5e2df7f550d2029608 100644
--- a/arkindex/documents/indexer.py
+++ b/arkindex/documents/indexer.py
@@ -1,12 +1,14 @@
+import datetime
+import logging
+import time
+
 from django.conf import settings
 from django.db.models import QuerySet
 from elasticsearch import Elasticsearch
-from elasticsearch.helpers import bulk as es_bulk
 from elasticsearch.exceptions import NotFoundError
-from arkindex.project.elastic import ESTranscription, ESElement, ESEntity
-import logging
-import time
-import datetime
+from elasticsearch.helpers import bulk as es_bulk
+
+from arkindex.project.elastic import ESElement, ESEntity, ESTranscription
 
 logger = logging.getLogger(__name__)
 
diff --git a/arkindex/documents/management/commands/build_fixtures.py b/arkindex/documents/management/commands/build_fixtures.py
index 24bd321d0c783f18c968b3643fd6f507547ae292..8873d20619e2c133ab22704d9365e3005fbfa462 100644
--- a/arkindex/documents/management/commands/build_fixtures.py
+++ b/arkindex/documents/management/commands/build_fixtures.py
@@ -1,16 +1,18 @@
 #!/usr/bin/env python3
+from datetime import datetime, timezone
+from unittest.mock import patch
+
+from django.contrib.gis.geos import LinearRing
 from django.core.management.base import BaseCommand
-from arkindex_common.ml_tool import MLToolType
-from arkindex_common.enums import TranscriptionType, MetaType
-from arkindex.documents.models import Corpus, Element, DataSource, MetaData
+from django.utils import timezone as DjangoTimeZone
+
 from arkindex.dataimport.models import RepositoryType, WorkerVersion, WorkerVersionState, Workflow
-from arkindex.images.models import ImageServer, Image, Zone
-from arkindex.users.models import User, CorpusRight
+from arkindex.documents.models import Corpus, DataSource, Element, MetaData
+from arkindex.images.models import Image, ImageServer, Zone
+from arkindex.users.models import CorpusRight, User
+from arkindex_common.enums import MetaType, TranscriptionType
+from arkindex_common.ml_tool import MLToolType
 from ponos.models import State
-from django.contrib.gis.geos import LinearRing
-from django.utils import timezone as DjangoTimeZone
-from unittest.mock import patch
-from datetime import datetime, timezone
 
 
 def fake_now():
diff --git a/arkindex/documents/management/commands/delete.py b/arkindex/documents/management/commands/delete.py
index 60091e292bf59aa74e4d158ec02709b9099c019a..44c22f0d6b823fafe18bb714995cac653557ca9d 100644
--- a/arkindex/documents/management/commands/delete.py
+++ b/arkindex/documents/management/commands/delete.py
@@ -1,9 +1,11 @@
 #!/usr/bin/env python3
-from django.core.management.base import BaseCommand
-from arkindex.documents.models import Element
 import logging
 import uuid
 
+from django.core.management.base import BaseCommand
+
+from arkindex.documents.models import Element
+
 logging.basicConfig(
     level=logging.INFO,
     format='[%(levelname)s] %(message)s',
diff --git a/arkindex/documents/management/commands/gunicorn.py b/arkindex/documents/management/commands/gunicorn.py
index 1d3f4f638856973de6db1631f897d9294b4f9dfe..f7b94dbfa24bc3469aef3448d873033e8e2814f1 100644
--- a/arkindex/documents/management/commands/gunicorn.py
+++ b/arkindex/documents/management/commands/gunicorn.py
@@ -1,10 +1,10 @@
-from django.core.management.base import BaseCommand, CommandError
-import sys
-import os
+import logging
 import multiprocessing
-from django.core.wsgi import get_wsgi_application
+import os
+import sys
 
-import logging
+from django.core.management.base import BaseCommand, CommandError
+from django.core.wsgi import get_wsgi_application
 
 logging.basicConfig(
     level=logging.INFO,
diff --git a/arkindex/documents/management/commands/merge_types.py b/arkindex/documents/management/commands/merge_types.py
index 94ee533d24a287d9999ff1cd77f37898455cb2d4..3ec934d00689167aa01888305d6705cf4d2e9dfc 100644
--- a/arkindex/documents/management/commands/merge_types.py
+++ b/arkindex/documents/management/commands/merge_types.py
@@ -1,8 +1,9 @@
 #!/usr/bin/env python3
 from django.core.management.base import BaseCommand, CommandError
 from django.db import transaction
-from arkindex.project.argparse import CorpusArgument
+
 from arkindex.documents.models import ElementType
+from arkindex.project.argparse import CorpusArgument
 
 
 class Command(BaseCommand):
diff --git a/arkindex/documents/management/commands/reindex.py b/arkindex/documents/management/commands/reindex.py
index 3632b44ac042bef105467e2efd6eba012e944d88..1b515b2f74b3e4ce88d9127e13a29c1988c1fc64 100644
--- a/arkindex/documents/management/commands/reindex.py
+++ b/arkindex/documents/management/commands/reindex.py
@@ -1,10 +1,12 @@
 #!/usr/bin/env python3
-from django.core.management.base import BaseCommand, CommandError
+import logging
+
 from django.conf import settings
-from arkindex.project.argparse import CorpusArgument, ElementArgument
+from django.core.management.base import BaseCommand, CommandError
+
 from arkindex.documents.indexer import Indexer
-from arkindex.documents.models import Element, Transcription, Entity
-import logging
+from arkindex.documents.models import Element, Entity, Transcription
+from arkindex.project.argparse import CorpusArgument, ElementArgument
 
 logging.basicConfig(
     level=logging.INFO,
diff --git a/arkindex/documents/management/commands/telegraf.py b/arkindex/documents/management/commands/telegraf.py
index ebe490dbdc245e452de09b6e5eca507c193765a7..53907b9f126109bfa8f8061e410d18e2c8c3068e 100644
--- a/arkindex/documents/management/commands/telegraf.py
+++ b/arkindex/documents/management/commands/telegraf.py
@@ -1,12 +1,14 @@
 #!/usr/bin/env python3
-from django.core.management.base import BaseCommand
+import time
+from urllib.parse import urljoin
+
+import requests
 from django.conf import settings
+from django.core.management.base import BaseCommand
 from django.db.models import Count
-from arkindex.images.models import ImageServer, Image
+
+from arkindex.images.models import Image, ImageServer
 from arkindex.project.aws import S3FileStatus
-from urllib.parse import urljoin
-import time
-import requests
 
 
 class Command(BaseCommand):
diff --git a/arkindex/documents/managers.py b/arkindex/documents/managers.py
index 4888f5a8f2578e2e73883bd5cea00c7d123a443a..6cae09fb32d6b8c1659bfce2698921418e0d6759 100644
--- a/arkindex/documents/managers.py
+++ b/arkindex/documents/managers.py
@@ -1,7 +1,9 @@
+import uuid
+from itertools import chain, groupby
+
 from django.db import models
-from itertools import groupby, chain
+
 from arkindex.project.fields import Unnest
-import uuid
 
 
 class ElementManager(models.Manager):
diff --git a/arkindex/documents/migrations/0001_initial.py b/arkindex/documents/migrations/0001_initial.py
index 914968e4ff6ff510425502fc2fb3126d2ef30479..dcfbbe07822fe30461df520f7553bc00a3e67f2d 100644
--- a/arkindex/documents/migrations/0001_initial.py
+++ b/arkindex/documents/migrations/0001_initial.py
@@ -1,15 +1,17 @@
 # Generated by Django 2.2.9 on 2020-01-17 15:39
 
+import uuid
+
+import django.contrib.postgres.fields.hstore
+import django.db.models.deletion
+import enumfields.fields
+from django.db import migrations, models
+
 import arkindex.documents.dates
 import arkindex.documents.models
 import arkindex.project.fields
 import arkindex_common.enums
 import arkindex_common.ml_tool
-import django.contrib.postgres.fields.hstore
-from django.db import migrations, models
-import django.db.models.deletion
-import enumfields.fields
-import uuid
 
 
 class Migration(migrations.Migration):
diff --git a/arkindex/documents/migrations/0002_initial.py b/arkindex/documents/migrations/0002_initial.py
index 6158dd2a58e8f095c14342a2f78ccb786c9c94ad..fdafe7182bb8b496cb121a736ecc629c22c995a7 100644
--- a/arkindex/documents/migrations/0002_initial.py
+++ b/arkindex/documents/migrations/0002_initial.py
@@ -1,9 +1,9 @@
 # Generated by Django 2.2.9 on 2020-01-17 15:39
 
-from django.conf import settings
 import django.contrib.postgres.indexes
-from django.db import migrations, models
 import django.db.models.deletion
+from django.conf import settings
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/arkindex/documents/migrations/0005_element_source.py b/arkindex/documents/migrations/0005_element_source.py
index 06ca9da976307a3fb9c8864340e41ef2120bc70c..f29467f574da7d6a80a557cadb2cb12bdc917a7b 100644
--- a/arkindex/documents/migrations/0005_element_source.py
+++ b/arkindex/documents/migrations/0005_element_source.py
@@ -1,7 +1,7 @@
 # Generated by Django 2.2.10 on 2020-03-10 10:17
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/arkindex/documents/migrations/0011_auto_20200403_1456.py b/arkindex/documents/migrations/0011_auto_20200403_1456.py
index 7795aef534845cfbd49f7e6711bcfe150e19fc35..de7be88dc8759b64e9a1b714fc81c14c47fd6481 100644
--- a/arkindex/documents/migrations/0011_auto_20200403_1456.py
+++ b/arkindex/documents/migrations/0011_auto_20200403_1456.py
@@ -1,7 +1,7 @@
 # Generated by Django 2.2.10 on 2020-04-03 14:56
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/arkindex/documents/migrations/0012_add_created_updated_corpus.py b/arkindex/documents/migrations/0012_add_created_updated_corpus.py
index 3f04474928d8b89d9ff1cb13e44a056676be64c4..45ba4088ab9b6e03fbf81a127b2e3b75f31131d5 100644
--- a/arkindex/documents/migrations/0012_add_created_updated_corpus.py
+++ b/arkindex/documents/migrations/0012_add_created_updated_corpus.py
@@ -1,7 +1,7 @@
 # Generated by Django 2.2.11 on 2020-05-08 07:51
 
-from django.db import migrations, models
 import django.utils.timezone
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/arkindex/documents/migrations/0013_datasource_type_length.py b/arkindex/documents/migrations/0013_datasource_type_length.py
index ea7be044146fbab3625e1f1c1001694543e115a2..93ff7fdd966d3062dcb1e8f9c6cd04a4b233cd72 100644
--- a/arkindex/documents/migrations/0013_datasource_type_length.py
+++ b/arkindex/documents/migrations/0013_datasource_type_length.py
@@ -1,8 +1,9 @@
 # Generated by Django 2.2.10 on 2020-05-19 14:59
 
-import arkindex_common.ml_tool
-from django.db import migrations
 import enumfields.fields
+from django.db import migrations
+
+import arkindex_common.ml_tool
 
 
 class Migration(migrations.Migration):
diff --git a/arkindex/documents/migrations/0014_nullable_transcription_zone.py b/arkindex/documents/migrations/0014_nullable_transcription_zone.py
index cf5fd62adde42830f15b4822482faab45cc5305a..b85d8fd846fbdfe76eb052af3cb1c5800d784430 100644
--- a/arkindex/documents/migrations/0014_nullable_transcription_zone.py
+++ b/arkindex/documents/migrations/0014_nullable_transcription_zone.py
@@ -1,7 +1,7 @@
 # Generated by Django 2.2.9 on 2020-05-27 09:03
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/arkindex/documents/migrations/0015_elementtype_allowed_transcription.py b/arkindex/documents/migrations/0015_elementtype_allowed_transcription.py
index afd2a9bb5cc2614f8f4da106eca4e30e00e86094..f29d0e89d66f0e6172f9da3b8b1fd2b6f6a13a67 100644
--- a/arkindex/documents/migrations/0015_elementtype_allowed_transcription.py
+++ b/arkindex/documents/migrations/0015_elementtype_allowed_transcription.py
@@ -1,8 +1,9 @@
 # Generated by Django 2.2.9 on 2020-06-03 13:26
 
-import arkindex_common.enums
-from django.db import migrations
 import enumfields.fields
+from django.db import migrations
+
+import arkindex_common.enums
 
 
 class Migration(migrations.Migration):
diff --git a/arkindex/documents/migrations/0016_selection.py b/arkindex/documents/migrations/0016_selection.py
index 74d14ab7034b31534da0b44649385a729a1922d5..8f90a4ef6a37de4ce75c7c3d43921b2222f85f64 100644
--- a/arkindex/documents/migrations/0016_selection.py
+++ b/arkindex/documents/migrations/0016_selection.py
@@ -1,9 +1,10 @@
 # Generated by Django 2.2.13 on 2020-06-23 14:07
 
+import uuid
+
+import django.db.models.deletion
 from django.conf import settings
 from django.db import migrations, models
-import django.db.models.deletion
-import uuid
 
 
 class Migration(migrations.Migration):
diff --git a/arkindex/documents/migrations/0018_worker_version_attributes.py b/arkindex/documents/migrations/0018_worker_version_attributes.py
index 9d1973bb339c142585309c13852f6c188caf5ce8..40cc88e89fed997f59308474ecd90b7515b1b254 100644
--- a/arkindex/documents/migrations/0018_worker_version_attributes.py
+++ b/arkindex/documents/migrations/0018_worker_version_attributes.py
@@ -1,7 +1,7 @@
 # Generated by Django 2.2.13 on 2020-08-10 10:00
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/arkindex/documents/migrations/0019_corpus_repository.py b/arkindex/documents/migrations/0019_corpus_repository.py
index d4d393217f037cc008a9b12154386ec58a264481..fb14e5b85c6ded6bf1310e9ec790b86bfcee88a6 100644
--- a/arkindex/documents/migrations/0019_corpus_repository.py
+++ b/arkindex/documents/migrations/0019_corpus_repository.py
@@ -1,8 +1,9 @@
 # Generated by Django 3.1 on 2020-09-11 07:26
 
-import arkindex.dataimport.models
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
+
+import arkindex.dataimport.models
 
 
 def copy_repository_corpus(apps, schema_editor):
diff --git a/arkindex/documents/migrations/0021_move_transcriptions.py b/arkindex/documents/migrations/0021_move_transcriptions.py
index 728be9aa5f17ccaa1c2a1ec864d7b02660c3925e..848eaeb99d36354ee1408cebb6af642c167fc3ee 100644
--- a/arkindex/documents/migrations/0021_move_transcriptions.py
+++ b/arkindex/documents/migrations/0021_move_transcriptions.py
@@ -1,6 +1,7 @@
 # Generated by Django 3.1 on 2020-09-01 07:48
 
 from django.db import migrations, models
+
 from arkindex_common.enums import TranscriptionType
 
 
diff --git a/arkindex/documents/models.py b/arkindex/documents/models.py
index 9f4386df43feb4289c556b49773abf7684f1c12a..2e454de3da023b1fb1d41b0451c15d6a7b271839 100644
--- a/arkindex/documents/models.py
+++ b/arkindex/documents/models.py
@@ -1,21 +1,23 @@
-from django.db import models, transaction
+import logging
+import uuid
+
 from django.conf import settings
-from django.contrib.postgres.indexes import GinIndex
 from django.contrib.postgres.fields import HStoreField
+from django.contrib.postgres.indexes import GinIndex
+from django.core.exceptions import ValidationError
+from django.db import models, transaction
 from django.db.models import Q
 from django.utils.functional import cached_property
-from django.core.exceptions import ValidationError
-from enumfields import EnumField, Enum
-from arkindex_common.enums import TranscriptionType, MetaType, EntityType
-from arkindex_common.ml_tool import MLToolType
+from enumfields import Enum, EnumField
+
+from arkindex.documents.dates import InterpretedDateMixin
+from arkindex.documents.managers import CorpusManager, ElementManager
 from arkindex.project.default_corpus import DEFAULT_CORPUS_TYPES, DEFAULT_TRANSKRIBUS_TYPES
-from arkindex.project.models import IndexableModel
+from arkindex.project.elastic import ESElement, ESEntity, ESTranscription
 from arkindex.project.fields import ArrayField
-from arkindex.project.elastic import ESTranscription, ESElement, ESEntity
-from arkindex.documents.managers import ElementManager, CorpusManager
-from arkindex.documents.dates import InterpretedDateMixin
-import uuid
-import logging
+from arkindex.project.models import IndexableModel
+from arkindex_common.enums import EntityType, MetaType, TranscriptionType
+from arkindex_common.ml_tool import MLToolType
 
 logger = logging.getLogger(__name__)
 
diff --git a/arkindex/documents/search.py b/arkindex/documents/search.py
index 6c69a9713cd353ed392abc38e152b6ecbd0432d1..b96cb85edc327fab13e537bbce93453de867e1c7 100644
--- a/arkindex/documents/search.py
+++ b/arkindex/documents/search.py
@@ -1,7 +1,9 @@
+import uuid
 from itertools import chain
+
 from django.db.models import prefetch_related_objects
-from arkindex.documents.models import Transcription, Element, Entity
-import uuid
+
+from arkindex.documents.models import Element, Entity, Transcription
 
 
 def search_transcriptions_post(data):
diff --git a/arkindex/documents/serializers/admin.py b/arkindex/documents/serializers/admin.py
index 0377d233a19d6c2c61b650f416d79839aca77e55..42a605b8d442f1be0e8648048f153739afc333de 100644
--- a/arkindex/documents/serializers/admin.py
+++ b/arkindex/documents/serializers/admin.py
@@ -1,6 +1,7 @@
 from rest_framework import serializers
-from arkindex.project.triggers import reindex_start
+
 from arkindex.documents.models import Corpus, Element
+from arkindex.project.triggers import reindex_start
 
 
 class ReindexConfigSerializer(serializers.Serializer):
diff --git a/arkindex/documents/serializers/elements.py b/arkindex/documents/serializers/elements.py
index b73d48845d47bc76bc987d7c04183aa567250e0d..4afac14db2e5b777ea0ceafef1a869c63297ee43 100644
--- a/arkindex/documents/serializers/elements.py
+++ b/arkindex/documents/serializers/elements.py
@@ -1,23 +1,34 @@
 from collections import defaultdict
 from uuid import UUID
+
 from django.contrib.gis.geos import LinearRing
 from django.utils.functional import cached_property
 from rest_framework import serializers
 from rest_framework.exceptions import ValidationError
-from arkindex_common.enums import MetaType
+
 from arkindex.dataimport.models import WorkerVersion
-from arkindex.images.serializers import ZoneSerializer
-from arkindex.images.models import Image, Zone
 from arkindex.documents.models import (
-    Corpus, Element, ElementPath, ElementType, MetaData,
-    Entity, Transcription, TranscriptionEntity,
+    Corpus,
+    Element,
+    ElementPath,
+    ElementType,
+    Entity,
+    MetaData,
+    Transcription,
+    TranscriptionEntity,
 )
+from arkindex.documents.serializers.entities import BaseEntitySerializer, TranscriptionEntityDetailsSerializer
 from arkindex.documents.serializers.light import (
-    CorpusLightSerializer, ElementLightSerializer, ElementTypeLightSerializer, MetaDataLightSerializer
+    CorpusLightSerializer,
+    ElementLightSerializer,
+    ElementTypeLightSerializer,
+    MetaDataLightSerializer,
 )
-from arkindex.documents.serializers.entities import BaseEntitySerializer, TranscriptionEntityDetailsSerializer
 from arkindex.documents.serializers.ml import ClassificationSerializer, DataSourceSerializer
+from arkindex.images.models import Image, Zone
+from arkindex.images.serializers import ZoneSerializer
 from arkindex.project.serializer_fields import LinearRingField
+from arkindex_common.enums import MetaType
 
 
 class MetaDataSerializer(MetaDataLightSerializer):
diff --git a/arkindex/documents/serializers/entities.py b/arkindex/documents/serializers/entities.py
index 21a0c6034b35921a8fd887f3598bd6eaadcd01da..8deca6f31a77e086a55011faa5bc15ebeb6223e5 100644
--- a/arkindex/documents/serializers/entities.py
+++ b/arkindex/documents/serializers/entities.py
@@ -1,12 +1,12 @@
 from rest_framework import serializers
+
 from arkindex.dataimport.models import WorkerVersion
-from arkindex.documents.models import \
-    Corpus, Entity, EntityLink, EntityRole, TranscriptionEntity
-from arkindex_common.enums import EntityType
+from arkindex.documents.models import Corpus, Entity, EntityLink, EntityRole, TranscriptionEntity
 from arkindex.documents.serializers.light import CorpusLightSerializer, InterpretedDateSerializer
 from arkindex.documents.serializers.ml import DataSourceSerializer
 from arkindex.project.serializer_fields import EnumField
 from arkindex.project.triggers import reindex_start
+from arkindex_common.enums import EntityType
 
 
 class BaseEntitySerializer(serializers.ModelSerializer):
diff --git a/arkindex/documents/serializers/iiif/__init__.py b/arkindex/documents/serializers/iiif/__init__.py
index 3ed47c337bfec5240e5d51287102666599d41043..0e9a7c7c35775493724ee12ea9e96c3ebf40e9eb 100644
--- a/arkindex/documents/serializers/iiif/__init__.py
+++ b/arkindex/documents/serializers/iiif/__init__.py
@@ -1,5 +1,5 @@
-from arkindex.documents.serializers.iiif.manifests import FolderManifestSerializer  # noqa: F401
 from arkindex.documents.serializers.iiif.annotations import (  # noqa: F401
     ElementAnnotationListSerializer,
     TranscriptionSearchAnnotationListSerializer,
 )
+from arkindex.documents.serializers.iiif.manifests import FolderManifestSerializer  # noqa: F401
diff --git a/arkindex/documents/serializers/iiif/annotations.py b/arkindex/documents/serializers/iiif/annotations.py
index 0fdbb9fa99bf3dbfbc2efc970caddb1e421e2d51..a32a9129e91dd3b9c336e80bc2eb405486f70043 100644
--- a/arkindex/documents/serializers/iiif/annotations.py
+++ b/arkindex/documents/serializers/iiif/annotations.py
@@ -1,9 +1,11 @@
 from abc import ABC, abstractmethod
+
 from django.conf import settings
 from django.db.models import Q
 from rest_framework import serializers
+
 from arkindex.documents.models import Element, Transcription
-from arkindex.project.tools import build_absolute_url, bounding_box
+from arkindex.project.tools import bounding_box, build_absolute_url
 
 
 class AnnotationSerializer(ABC, serializers.BaseSerializer):
diff --git a/arkindex/documents/serializers/iiif/manifests.py b/arkindex/documents/serializers/iiif/manifests.py
index a08f43f87f63021638ca4af108e9ee5e31ddbee0..094185915b70f0d2a2c669626e76c2e8136e7a08 100644
--- a/arkindex/documents/serializers/iiif/manifests.py
+++ b/arkindex/documents/serializers/iiif/manifests.py
@@ -1,11 +1,12 @@
 from django.conf import settings
-from django.db.models import Prefetch, Subquery, OuterRef, Value, F, CharField
-from django.db.models.functions import Concat, Ceil
+from django.db.models import CharField, F, OuterRef, Prefetch, Subquery, Value
+from django.db.models.functions import Ceil, Concat
 from rest_framework import serializers
-from arkindex_common.enums import MetaType
-from arkindex.documents.models import Element, MetaData, Classification
+
+from arkindex.documents.models import Classification, Element, MetaData
 from arkindex.images.models import Image, Zone
-from arkindex.project.tools import build_absolute_url, bounding_box
+from arkindex.project.tools import bounding_box, build_absolute_url
+from arkindex_common.enums import MetaType
 
 
 class ImageResourceManifestSerializer(serializers.BaseSerializer):
diff --git a/arkindex/documents/serializers/light.py b/arkindex/documents/serializers/light.py
index e2eda15d7378d1e746575f4007fb5bb9082f41ff..49f446ae6f895e3615d4aff6f7c8d99045bd0527 100644
--- a/arkindex/documents/serializers/light.py
+++ b/arkindex/documents/serializers/light.py
@@ -1,13 +1,14 @@
-from rest_framework import serializers
-from rest_framework.exceptions import ValidationError, APIException
 from django.db.models import Max
-from arkindex.documents.models import Element, ElementType, Corpus, MetaData, AllowedMetaData
-from arkindex_common.enums import MetaType, TranscriptionType
+from rest_framework import serializers
+from rest_framework.exceptions import APIException, ValidationError
+
+from arkindex.dataimport.serializers.git import RevisionSerializer
 from arkindex.documents.dates import DateType
+from arkindex.documents.models import AllowedMetaData, Corpus, Element, ElementType, MetaData
 from arkindex.images.serializers import ZoneLightSerializer
-from arkindex.dataimport.serializers.git import RevisionSerializer
 from arkindex.project.serializer_fields import EnumField
 from arkindex.project.triggers import reindex_start
+from arkindex_common.enums import MetaType, TranscriptionType
 
 
 class InterpretedDateSerializer(serializers.Serializer):
diff --git a/arkindex/documents/serializers/ml.py b/arkindex/documents/serializers/ml.py
index 7fa83582f15925d1019ed82bf5b321362eaf925d..d172eea291fc5490f780de4f6d19657b89aaae0f 100644
--- a/arkindex/documents/serializers/ml.py
+++ b/arkindex/documents/serializers/ml.py
@@ -1,17 +1,26 @@
+import uuid
 from enum import Enum
+
 from django.conf import settings
 from rest_framework import serializers
-from rest_framework.validators import UniqueTogetherValidator
 from rest_framework.exceptions import ValidationError
-from arkindex_common.ml_tool import MLToolType
-from arkindex_common.enums import TranscriptionType
+from rest_framework.validators import UniqueTogetherValidator
+
 from arkindex.dataimport.models import WorkerVersion
 from arkindex.documents.models import (
-    Corpus, Element, ElementType, Transcription, DataSource, MLClass, Classification, ClassificationState
+    Classification,
+    ClassificationState,
+    Corpus,
+    DataSource,
+    Element,
+    ElementType,
+    MLClass,
+    Transcription,
 )
-from arkindex.project.serializer_fields import EnumField, LinearRingField
 from arkindex.documents.serializers.light import ElementZoneSerializer
-import uuid
+from arkindex.project.serializer_fields import EnumField, LinearRingField
+from arkindex_common.enums import TranscriptionType
+from arkindex_common.ml_tool import MLToolType
 
 
 class ClassificationMode(Enum):
diff --git a/arkindex/documents/serializers/search.py b/arkindex/documents/serializers/search.py
index 3b6a6dfce020d6f07a9e5a34ab92a170b1a486a2..ef15692f1f437e358b7bec55a7dacac69278da72 100644
--- a/arkindex/documents/serializers/search.py
+++ b/arkindex/documents/serializers/search.py
@@ -1,13 +1,15 @@
+import math
+
 from django.conf import settings
 from rest_framework import serializers
-from arkindex_common.enums import EntityType, TranscriptionType
-from arkindex.project.serializer_fields import EnumField
-from arkindex.images.serializers import ZoneSerializer
+
 from arkindex.documents.date_parser import parse_date
 from arkindex.documents.models import Element, ElementType, Entity
 from arkindex.documents.serializers.light import CorpusLightSerializer, ElementLightSerializer
 from arkindex.documents.serializers.ml import TranscriptionSerializer
-import math
+from arkindex.images.serializers import ZoneSerializer
+from arkindex.project.serializer_fields import EnumField
+from arkindex_common.enums import EntityType, TranscriptionType
 
 
 class SearchQuerySerializer(serializers.Serializer):
diff --git a/arkindex/documents/signals.py b/arkindex/documents/signals.py
index 61d8498454f14d7ba303aff8ef09ac919f8c722a..446c6f9c13456f4d5c92e181cf7d1a4398261577 100644
--- a/arkindex/documents/signals.py
+++ b/arkindex/documents/signals.py
@@ -1,9 +1,19 @@
+import logging
+
+from django.db.models import Q
 from django.db.models.signals import pre_delete
 from django.dispatch import receiver
-from django.db.models import Q
-from arkindex.documents.models import Element, ElementPath, Transcription, Classification, MetaData, Selection, TranscriptionEntity
-from arkindex.dataimport.models import DataImportElement, DataImport
-import logging
+
+from arkindex.dataimport.models import DataImport, DataImportElement
+from arkindex.documents.models import (
+    Classification,
+    Element,
+    ElementPath,
+    MetaData,
+    Selection,
+    Transcription,
+    TranscriptionEntity,
+)
 
 logger = logging.getLogger(__name__)
 
diff --git a/arkindex/documents/tests/commands/test_merge_types.py b/arkindex/documents/tests/commands/test_merge_types.py
index 2486524d1180ae4cee02a30487baba710a780772..67d8eaf8e03e5c38df3e292b6e2cb063f92b8193 100644
--- a/arkindex/documents/tests/commands/test_merge_types.py
+++ b/arkindex/documents/tests/commands/test_merge_types.py
@@ -1,6 +1,7 @@
-from django.core.management import call_command, CommandError
-from arkindex.project.tests import FixtureTestCase
+from django.core.management import CommandError, call_command
+
 from arkindex.documents.models import ElementType
+from arkindex.project.tests import FixtureTestCase
 
 
 class TestMergeTypesCommand(FixtureTestCase):
diff --git a/arkindex/documents/tests/commands/test_reindex.py b/arkindex/documents/tests/commands/test_reindex.py
index dfa0b730233e09acd6bfd00af53365c02f057f82..0531056f530328711ffc2904d8ae94c9a07ec4de 100644
--- a/arkindex/documents/tests/commands/test_reindex.py
+++ b/arkindex/documents/tests/commands/test_reindex.py
@@ -1,10 +1,12 @@
-from unittest.mock import patch, call
-from django.core.management import call_command, CommandError
+from unittest.mock import call, patch
+
+from django.core.management import CommandError, call_command
 from django.test import override_settings
-from arkindex_common.enums import MetaType
+
+from arkindex.documents.models import DataSource, Element, Entity, EntityType, MLToolType, Transcription
+from arkindex.project.elastic import ESElement, ESEntity, ESTranscription
 from arkindex.project.tests import FixtureTestCase
-from arkindex.project.elastic import ESTranscription, ESElement, ESEntity
-from arkindex.documents.models import Element, Transcription, Entity, EntityType, DataSource, MLToolType
+from arkindex_common.enums import MetaType
 
 
 class TestReindexCommand(FixtureTestCase):
diff --git a/arkindex/documents/tests/commands/test_telegraf.py b/arkindex/documents/tests/commands/test_telegraf.py
index a9b4f9c2cd1c6b2585cf4a00d88cb61a799b3e61..f5ea443597aae02b94e695ee221a6d5b252f7a09 100644
--- a/arkindex/documents/tests/commands/test_telegraf.py
+++ b/arkindex/documents/tests/commands/test_telegraf.py
@@ -1,8 +1,10 @@
-from django.core.management import call_command
-from arkindex.project.tests import FixtureTestCase
-from unittest.mock import patch
 import io
 import re
+from unittest.mock import patch
+
+from django.core.management import call_command
+
+from arkindex.project.tests import FixtureTestCase
 
 
 class TestTelegraf(FixtureTestCase):
diff --git a/arkindex/documents/tests/consumers/test_corpus_consumer.py b/arkindex/documents/tests/consumers/test_corpus_consumer.py
index e677e2c4f2e0159452c97502bf2adf9674592f7e..af38dcf620bc3f7c2f112d1134aa8fd2db67f9fd 100644
--- a/arkindex/documents/tests/consumers/test_corpus_consumer.py
+++ b/arkindex/documents/tests/consumers/test_corpus_consumer.py
@@ -1,10 +1,11 @@
 from django.db.models.signals import pre_delete
-from arkindex_common.enums import TranscriptionType, MetaType, DataImportMode
-from arkindex_common.ml_tool import MLToolType
-from arkindex.project.tests import FixtureTestCase
+
+from arkindex.dataimport.models import Repository, RepositoryType
 from arkindex.documents.consumers import CorpusConsumer
-from arkindex.documents.models import Corpus, Element, DataSource, MLClass
-from arkindex.dataimport.models import RepositoryType, Repository
+from arkindex.documents.models import Corpus, DataSource, Element, MLClass
+from arkindex.project.tests import FixtureTestCase
+from arkindex_common.enums import DataImportMode, MetaType, TranscriptionType
+from arkindex_common.ml_tool import MLToolType
 
 
 class TestDeleteCorpus(FixtureTestCase):
diff --git a/arkindex/documents/tests/consumers/test_ml_results_consumer.py b/arkindex/documents/tests/consumers/test_ml_results_consumer.py
index 1612370bffddb3ab3ec5ffcfe28271acef3ed7fe..9d2af789418714cb054d932e586b8f9e9ea2f030 100644
--- a/arkindex/documents/tests/consumers/test_ml_results_consumer.py
+++ b/arkindex/documents/tests/consumers/test_ml_results_consumer.py
@@ -1,11 +1,13 @@
-from arkindex_common.ml_tool import MLToolType
 from unittest.mock import patch
-from mock import AsyncMock
+
 from django.test import override_settings
-from arkindex_common.enums import TranscriptionType, MetaType, EntityType
-from arkindex.project.tests import FixtureTestCase
+from mock import AsyncMock
+
 from arkindex.documents.consumers import MLResultsConsumer
-from arkindex.documents.models import Element, Transcription, Entity, Classification, DataSource
+from arkindex.documents.models import Classification, DataSource, Element, Entity, Transcription
+from arkindex.project.tests import FixtureTestCase
+from arkindex_common.enums import EntityType, MetaType, TranscriptionType
+from arkindex_common.ml_tool import MLToolType
 
 
 class TestMLResultsConsumer(FixtureTestCase):
diff --git a/arkindex/documents/tests/consumers/test_reindex_consumer.py b/arkindex/documents/tests/consumers/test_reindex_consumer.py
index bd5acb84965ae98a8863ccf9d870e9c0dcbab796..c91253ffb668177c0cf640523f333e1ec744e1b5 100644
--- a/arkindex/documents/tests/consumers/test_reindex_consumer.py
+++ b/arkindex/documents/tests/consumers/test_reindex_consumer.py
@@ -1,11 +1,13 @@
-from arkindex_common.ml_tool import MLToolType
 from unittest.mock import patch
-from django.db.models import Q
-from arkindex_common.enums import TranscriptionType, MetaType, EntityType
-from arkindex.project.tests import FixtureTestCase
+
 from django.contrib.gis.geos import LinearRing
+from django.db.models import Q
+
 from arkindex.documents.consumers import ReindexConsumer
-from arkindex.documents.models import Corpus, Element, Transcription, Entity, DataSource
+from arkindex.documents.models import Corpus, DataSource, Element, Entity, Transcription
+from arkindex.project.tests import FixtureTestCase
+from arkindex_common.enums import EntityType, MetaType, TranscriptionType
+from arkindex_common.ml_tool import MLToolType
 
 
 @patch('arkindex.documents.consumers.Indexer')
diff --git a/arkindex/documents/tests/test_admin_api.py b/arkindex/documents/tests/test_admin_api.py
index 63a1ec2c160194839e4371b93a41bcbde96f9bfd..aa8c3f2ab64089ac86ac2edeb0fd7be8294ff4c5 100644
--- a/arkindex/documents/tests/test_admin_api.py
+++ b/arkindex/documents/tests/test_admin_api.py
@@ -1,10 +1,12 @@
 from unittest.mock import patch
-from mock import AsyncMock
-from django.urls import reverse
+
 from django.test import override_settings
+from django.urls import reverse
+from mock import AsyncMock
 from rest_framework import status
-from arkindex.project.tests import FixtureTestCase
+
 from arkindex.documents.models import Corpus
+from arkindex.project.tests import FixtureTestCase
 
 
 class TestAdminAPI(FixtureTestCase):
diff --git a/arkindex/documents/tests/test_annotation_list.py b/arkindex/documents/tests/test_annotation_list.py
index d29f75add3b178f6651c7b175cf28a213c84977e..ac11c3bb92934b785047fa6e69bb6997bc782eb6 100644
--- a/arkindex/documents/tests/test_annotation_list.py
+++ b/arkindex/documents/tests/test_annotation_list.py
@@ -1,5 +1,6 @@
 from django.urls import reverse
 from rest_framework import status
+
 from arkindex.project.tests import FixtureAPITestCase
 
 
diff --git a/arkindex/documents/tests/test_bulk_classification.py b/arkindex/documents/tests/test_bulk_classification.py
index 9f6faa953d97197a02ee84343d05f5309c5eba2e..1ab1261240e0640884bf469c3fea29b11c3439f0 100644
--- a/arkindex/documents/tests/test_bulk_classification.py
+++ b/arkindex/documents/tests/test_bulk_classification.py
@@ -1,9 +1,10 @@
 from django.urls import reverse
-from arkindex_common.ml_tool import MLToolType
 from rest_framework import status
-from arkindex.project.tests import FixtureAPITestCase
-from arkindex.documents.models import Corpus, DataSource, MLClass
+
 from arkindex.dataimport.models import WorkerVersion
+from arkindex.documents.models import Corpus, DataSource, MLClass
+from arkindex.project.tests import FixtureAPITestCase
+from arkindex_common.ml_tool import MLToolType
 
 
 class TestBulkClassification(FixtureAPITestCase):
diff --git a/arkindex/documents/tests/test_bulk_element_transcriptions.py b/arkindex/documents/tests/test_bulk_element_transcriptions.py
index 94f66aad33c783b9dc76f58881729142098f0df5..a7b94ec6404bb72ece4849e0989679cb5c7dd41c 100644
--- a/arkindex/documents/tests/test_bulk_element_transcriptions.py
+++ b/arkindex/documents/tests/test_bulk_element_transcriptions.py
@@ -1,14 +1,16 @@
-from django.urls import reverse
-from django.test import override_settings
-from django.db.models import Count
+import uuid
 from unittest.mock import patch
+
+from django.db.models import Count
+from django.test import override_settings
+from django.urls import reverse
 from mock import AsyncMock
 from rest_framework import status
+
+from arkindex.dataimport.models import WorkerVersion
+from arkindex.documents.models import Corpus, Element
 from arkindex.project.tests import FixtureAPITestCase
 from arkindex_common.enums import TranscriptionType
-from arkindex.dataimport.models import WorkerVersion
-from arkindex.documents.models import Element, Corpus
-import uuid
 
 
 class TestBulkElementTranscriptions(FixtureAPITestCase):
diff --git a/arkindex/documents/tests/test_bulk_elements.py b/arkindex/documents/tests/test_bulk_elements.py
index 935e6b375957ad117e5eb9e25b4f2a3580a34334..9d552e2f7ec1ac4521232b211425982e9d8aaf9b 100644
--- a/arkindex/documents/tests/test_bulk_elements.py
+++ b/arkindex/documents/tests/test_bulk_elements.py
@@ -1,8 +1,9 @@
 from django.urls import reverse
 from rest_framework import status
-from arkindex.project.tests import FixtureAPITestCase
-from arkindex.documents.models import Element, ElementPath
+
 from arkindex.dataimport.models import WorkerVersion
+from arkindex.documents.models import Element, ElementPath
+from arkindex.project.tests import FixtureAPITestCase
 
 
 class TestBulkElements(FixtureAPITestCase):
diff --git a/arkindex/documents/tests/test_bulk_transcriptions.py b/arkindex/documents/tests/test_bulk_transcriptions.py
index 12cb09e2b5175e8d211731c22621be6a7e0c95e0..6d371961127acdca386369e53cce217145749096 100644
--- a/arkindex/documents/tests/test_bulk_transcriptions.py
+++ b/arkindex/documents/tests/test_bulk_transcriptions.py
@@ -1,8 +1,9 @@
 from django.urls import reverse
 from rest_framework import status
-from arkindex_common.enums import TranscriptionType
-from arkindex.project.tests import FixtureAPITestCase
+
 from arkindex.dataimport.models import WorkerVersion
+from arkindex.project.tests import FixtureAPITestCase
+from arkindex_common.enums import TranscriptionType
 
 
 class TestBulkTranscriptions(FixtureAPITestCase):
diff --git a/arkindex/documents/tests/test_children_elements.py b/arkindex/documents/tests/test_children_elements.py
index f46f6faeec64a92bb7c80c43317a931156937814..e78f7a002885642f939cebd711c2b15ca3b6045e 100644
--- a/arkindex/documents/tests/test_children_elements.py
+++ b/arkindex/documents/tests/test_children_elements.py
@@ -1,9 +1,11 @@
+import uuid
+
 from django.urls import reverse
 from rest_framework import status
-from arkindex.documents.models import Element
+
 from arkindex.dataimport.models import WorkerVersion
+from arkindex.documents.models import Element
 from arkindex.project.tests import FixtureAPITestCase
-import uuid
 
 
 class TestChildrenElements(FixtureAPITestCase):
diff --git a/arkindex/documents/tests/test_classes.py b/arkindex/documents/tests/test_classes.py
index a6c2dfa5ea5ab0bade5a8a1be100598bb0a12545..6136b229d95de1e481cfca84914113ea2492a671 100644
--- a/arkindex/documents/tests/test_classes.py
+++ b/arkindex/documents/tests/test_classes.py
@@ -1,10 +1,10 @@
-from django.urls import reverse
 from django.test import override_settings
+from django.urls import reverse
 from rest_framework import status
-from arkindex.documents.models import \
-    Corpus, Element, Classification, ClassificationState, DataSource, MLClass
-from arkindex_common.ml_tool import MLToolType
+
+from arkindex.documents.models import Classification, ClassificationState, Corpus, DataSource, Element, MLClass
 from arkindex.project.tests import FixtureAPITestCase
+from arkindex_common.ml_tool import MLToolType
 
 
 class TestClasses(FixtureAPITestCase):
diff --git a/arkindex/documents/tests/test_corpus.py b/arkindex/documents/tests/test_corpus.py
index f46df8feb0d0725726e25ae427be00902775a4fb..b816b02bd7c55a42a4b49d6869b8986dceb660e9 100644
--- a/arkindex/documents/tests/test_corpus.py
+++ b/arkindex/documents/tests/test_corpus.py
@@ -1,15 +1,16 @@
-from mock import AsyncMock
+import datetime
 from unittest.mock import patch
+
+import mock
 from django.contrib.auth.models import AnonymousUser
 from django.db.models import Model, ProtectedError
 from django.urls import reverse
+from mock import AsyncMock
 from rest_framework import status
 
 from arkindex.documents.models import Corpus, Element, Right
 from arkindex.project.default_corpus import DEFAULT_CORPUS_TYPES
 from arkindex.project.tests import FixtureAPITestCase
-import datetime
-import mock
 
 FAKE_NOW = datetime.datetime.now()
 # Fake DB fixtures creation date
diff --git a/arkindex/documents/tests/test_corpus_authorized_users.py b/arkindex/documents/tests/test_corpus_authorized_users.py
index 6d7ae7e261e63f40f1497d7a848678256aafa0a6..a0efc0799d1ab96997d5856656025e584af55114 100644
--- a/arkindex/documents/tests/test_corpus_authorized_users.py
+++ b/arkindex/documents/tests/test_corpus_authorized_users.py
@@ -2,8 +2,8 @@ from django.urls import reverse
 from rest_framework import status
 
 from arkindex.documents.models import Corpus
-from arkindex.users.models import User
 from arkindex.project.tests import FixtureAPITestCase
+from arkindex.users.models import User
 
 
 class TestCorpusAuthorizedUsers(FixtureAPITestCase):
diff --git a/arkindex/documents/tests/test_corpus_elements.py b/arkindex/documents/tests/test_corpus_elements.py
index 2a348376fff5294d6d1ad2e78919a92107b63a4a..36b44551a865d0e2130462ef83c86405673289ca 100644
--- a/arkindex/documents/tests/test_corpus_elements.py
+++ b/arkindex/documents/tests/test_corpus_elements.py
@@ -1,10 +1,12 @@
-from django.urls import reverse
+import uuid
+
 from django.db.models.sql.constants import LOUTER
+from django.urls import reverse
 from rest_framework import status
-from arkindex.documents.models import Corpus
+
 from arkindex.dataimport.models import WorkerVersion
+from arkindex.documents.models import Corpus
 from arkindex.project.tests import FixtureAPITestCase
-import uuid
 
 
 class TestListElements(FixtureAPITestCase):
diff --git a/arkindex/documents/tests/test_create_elements.py b/arkindex/documents/tests/test_create_elements.py
index 232ce91875cb9852b4d2f10cd6274b2278aa97f3..607bbfbcb5409084bf54fdce845a251593a5c904 100644
--- a/arkindex/documents/tests/test_create_elements.py
+++ b/arkindex/documents/tests/test_create_elements.py
@@ -1,7 +1,8 @@
 from django.urls import reverse
 from rest_framework import status
+
 from arkindex.dataimport.models import WorkerVersion
-from arkindex.documents.models import Element, Corpus
+from arkindex.documents.models import Corpus, Element
 from arkindex.images.models import ImageServer
 from arkindex.project.aws import S3FileStatus
 from arkindex.project.tests import FixtureAPITestCase
diff --git a/arkindex/documents/tests/test_create_transcriptions.py b/arkindex/documents/tests/test_create_transcriptions.py
index f3415b7063d5b0b72646971a64def664ae180b57..80570f247072ee817616772f0a9ce359384e90c5 100644
--- a/arkindex/documents/tests/test_create_transcriptions.py
+++ b/arkindex/documents/tests/test_create_transcriptions.py
@@ -1,15 +1,17 @@
-from django.urls import reverse
-from django.test import override_settings
 from unittest.mock import patch
+from uuid import uuid4
+
+from django.test import override_settings
+from django.urls import reverse
 from mock import AsyncMock
 from rest_framework import status
+
+from arkindex.dataimport.models import WorkerVersion
+from arkindex.documents.models import Corpus, DataSource, Transcription
 from arkindex.project.tests import FixtureAPITestCase
+from arkindex.users.models import User
 from arkindex_common.enums import TranscriptionType
 from arkindex_common.ml_tool import MLToolType
-from arkindex.dataimport.models import WorkerVersion
-from arkindex.documents.models import Corpus, Transcription, DataSource
-from arkindex.users.models import User
-from uuid import uuid4
 
 
 class TestTranscriptionCreate(FixtureAPITestCase):
diff --git a/arkindex/documents/tests/test_datasource.py b/arkindex/documents/tests/test_datasource.py
index b82c315706d6cb53491ec096462c45c24a06af33..2730d7ccaac076e894e3dd093f832b5fd61cf3c9 100644
--- a/arkindex/documents/tests/test_datasource.py
+++ b/arkindex/documents/tests/test_datasource.py
@@ -1,6 +1,7 @@
 from django.test import TestCase
-from arkindex_common.ml_tool import MLToolType
+
 from arkindex.documents.models import DataSource
+from arkindex_common.ml_tool import MLToolType
 
 
 class TestDataSource(TestCase):
diff --git a/arkindex/documents/tests/test_date_parser.py b/arkindex/documents/tests/test_date_parser.py
index e4f2fdd5b628a20d7cf7ea751146c1c029908aed..cf148a8b3dbe2e6856c7a6e4b4713033961a5009 100644
--- a/arkindex/documents/tests/test_date_parser.py
+++ b/arkindex/documents/tests/test_date_parser.py
@@ -1,10 +1,18 @@
 from unittest.mock import patch
+
+from django.test import TestCase
+
 from arkindex.documents.date_parser import (
-    parse_date, instanciate_date, year, year_month, year_month_day,
-    year_month_str, year_year, DATE_FUNCTIONS_TABLE,
+    DATE_FUNCTIONS_TABLE,
+    instanciate_date,
+    parse_date,
+    year,
+    year_month,
+    year_month_day,
+    year_month_str,
+    year_year,
 )
 from arkindex.documents.dates import DateType, InterpretedDate
-from django.test import TestCase
 
 
 class TestDateParser(TestCase):
diff --git a/arkindex/documents/tests/test_destroy_elements.py b/arkindex/documents/tests/test_destroy_elements.py
index 4ead708b083b25d1cc482e2ccc4acd196939ab1a..a4e43612a333dc5913c37b2d426419b1b30828da 100644
--- a/arkindex/documents/tests/test_destroy_elements.py
+++ b/arkindex/documents/tests/test_destroy_elements.py
@@ -1,5 +1,6 @@
 from django.urls import reverse
 from rest_framework import status
+
 from arkindex.documents.models import Corpus
 from arkindex.project.tests import FixtureAPITestCase
 
diff --git a/arkindex/documents/tests/test_edit_elementpath.py b/arkindex/documents/tests/test_edit_elementpath.py
index ae344749efe803f5b88974f03eed6671a37d2781..1c1ea24019fe3ca94f8538bb61916f4539c3e9ba 100644
--- a/arkindex/documents/tests/test_edit_elementpath.py
+++ b/arkindex/documents/tests/test_edit_elementpath.py
@@ -1,7 +1,8 @@
+import itertools
+
+from arkindex.documents.models import Element, ElementPath
 from arkindex.project.tests import FixtureTestCase
 from arkindex.project.tools import build_tree
-from arkindex.documents.models import ElementPath, Element
-import itertools
 
 
 class TestEditElementPath(FixtureTestCase):
diff --git a/arkindex/documents/tests/test_edit_transcriptions.py b/arkindex/documents/tests/test_edit_transcriptions.py
index d2f0678a06712a10a25de1f7f20d3799d868fee2..acd17b370b8fc3213450f28804de9c38ec7a9ecd 100644
--- a/arkindex/documents/tests/test_edit_transcriptions.py
+++ b/arkindex/documents/tests/test_edit_transcriptions.py
@@ -1,11 +1,13 @@
+from uuid import uuid4
+
 from django.urls import reverse
 from rest_framework import status
+
+from arkindex.documents.models import Corpus, DataSource, Element, Transcription
 from arkindex.project.tests import FixtureAPITestCase
-from arkindex_common.enums import TranscriptionType
-from arkindex.documents.models import Corpus, Element, Transcription, DataSource
 from arkindex.users.models import User
+from arkindex_common.enums import TranscriptionType
 from arkindex_common.ml_tool import MLToolType
-from uuid import uuid4
 
 
 class TestEditTranscription(FixtureAPITestCase):
diff --git a/arkindex/documents/tests/test_element_manager.py b/arkindex/documents/tests/test_element_manager.py
index 85ef5adfebed50864d8a0a9ee0fac9f2cb8ea344..4c2908c6a7cf20a7cd8008a49c683551dab49969 100644
--- a/arkindex/documents/tests/test_element_manager.py
+++ b/arkindex/documents/tests/test_element_manager.py
@@ -1,5 +1,5 @@
-from arkindex.project.tests import FixtureTestCase
 from arkindex.documents.models import Element
+from arkindex.project.tests import FixtureTestCase
 
 
 class TestElementManager(FixtureTestCase):
diff --git a/arkindex/documents/tests/test_element_paths_api.py b/arkindex/documents/tests/test_element_paths_api.py
index 6957cb0a3f871647d6a949017115019099ce5be6..3df661dc6d6477417133e8923a3945df6ad2db3b 100644
--- a/arkindex/documents/tests/test_element_paths_api.py
+++ b/arkindex/documents/tests/test_element_paths_api.py
@@ -1,6 +1,7 @@
 from django.urls import reverse
 from rest_framework import status
-from arkindex.documents.models import Corpus, ElementPath, Element
+
+from arkindex.documents.models import Corpus, Element, ElementPath
 from arkindex.project.aws import S3FileStatus
 from arkindex.project.tests import FixtureAPITestCase
 
diff --git a/arkindex/documents/tests/test_element_type.py b/arkindex/documents/tests/test_element_type.py
index 08e1c4acde92415bbcef0bf99d4b1ef1ce2d81de..e756e189e25315334c3a7830d260967d93bb4804 100644
--- a/arkindex/documents/tests/test_element_type.py
+++ b/arkindex/documents/tests/test_element_type.py
@@ -1,7 +1,8 @@
 from django.urls import reverse
 from rest_framework import status
+
+from arkindex.documents.models import Corpus, ElementType
 from arkindex.project.tests import FixtureAPITestCase
-from arkindex.documents.models import ElementType, Corpus
 from arkindex.users.models import User
 
 
diff --git a/arkindex/documents/tests/test_entities.py b/arkindex/documents/tests/test_entities.py
index bd8d6ab61230131cf32476d1c77280a9dd4993c9..ba6efbf003e9a86aac35d59d6a2b57f4a7e7e53a 100644
--- a/arkindex/documents/tests/test_entities.py
+++ b/arkindex/documents/tests/test_entities.py
@@ -1,8 +1,8 @@
 from django.core.exceptions import ValidationError
-from arkindex_common.enums import MetaType, EntityType
-from arkindex.documents.models import \
-    Corpus, Entity, EntityRole, EntityLink, MetaData, DataSource, MLToolType
+
+from arkindex.documents.models import Corpus, DataSource, Entity, EntityLink, EntityRole, MetaData, MLToolType
 from arkindex.project.tests import FixtureTestCase
+from arkindex_common.enums import EntityType, MetaType
 
 
 class TestSaveEntities(FixtureTestCase):
diff --git a/arkindex/documents/tests/test_entities_api.py b/arkindex/documents/tests/test_entities_api.py
index b6e201e63a416ad39efeff54091ba853f4d29a8d..e081c5ce3c9f382597c2225915e4815a04784fd7 100644
--- a/arkindex/documents/tests/test_entities_api.py
+++ b/arkindex/documents/tests/test_entities_api.py
@@ -1,17 +1,27 @@
-from django.urls import reverse
+import uuid
+from unittest.mock import Mock, call, patch
+
+from django.contrib.gis.geos import LinearRing
 from django.test import override_settings
-from unittest.mock import Mock, patch, call
+from django.urls import reverse
+from elasticsearch.exceptions import NotFoundError
 from rest_framework import status
-from arkindex_common.enums import MetaType
-from arkindex.project.tests import FixtureAPITestCase
+
 from arkindex.dataimport.models import WorkerVersion
-from django.contrib.gis.geos import LinearRing
 from arkindex.documents.models import (
-    Corpus, Element, TranscriptionType, DataSource, MLToolType,
-    Entity, EntityType, EntityRole, EntityLink, TranscriptionEntity,
+    Corpus,
+    DataSource,
+    Element,
+    Entity,
+    EntityLink,
+    EntityRole,
+    EntityType,
+    MLToolType,
+    TranscriptionEntity,
+    TranscriptionType,
 )
-from elasticsearch.exceptions import NotFoundError
-import uuid
+from arkindex.project.tests import FixtureAPITestCase
+from arkindex_common.enums import MetaType
 
 
 # Mock channels asynchronous triggered tasks
diff --git a/arkindex/documents/tests/test_indexer.py b/arkindex/documents/tests/test_indexer.py
index 1697c269327a7e41c6a1cdc06420650060bc3296..52a7d9a9a25be7670b7650d94ad30673814b2920 100644
--- a/arkindex/documents/tests/test_indexer.py
+++ b/arkindex/documents/tests/test_indexer.py
@@ -1,10 +1,12 @@
-from unittest.mock import patch, call, MagicMock
+from unittest.mock import MagicMock, call, patch
+
 from elasticsearch import Elasticsearch
 from elasticsearch.exceptions import NotFoundError
-from arkindex_common.enums import EntityType
-from arkindex.project.tests import FixtureTestCase
+
 from arkindex.documents.indexer import Indexer
 from arkindex.documents.models import DataSource, MLToolType
+from arkindex.project.tests import FixtureTestCase
+from arkindex_common.enums import EntityType
 
 
 class TestIndexer(FixtureTestCase):
diff --git a/arkindex/documents/tests/test_interpreted_date.py b/arkindex/documents/tests/test_interpreted_date.py
index 8314bb385166abdbcc87e958a16b751dde7b97c5..df3b490095ea741b1d0dc6f79236b659e4bb4174 100644
--- a/arkindex/documents/tests/test_interpreted_date.py
+++ b/arkindex/documents/tests/test_interpreted_date.py
@@ -1,6 +1,7 @@
 from django.test import TestCase
-from arkindex.documents.dates import DateType, InterpretedDate
+
 from arkindex.documents.date_parser import parse_date
+from arkindex.documents.dates import DateType, InterpretedDate
 
 
 class TestInterpretedDate(TestCase):
diff --git a/arkindex/documents/tests/test_manifest.py b/arkindex/documents/tests/test_manifest.py
index ca6133ccac592ada4fb26a8fbbc8a92d1f530db8..659e5d351767a4fa2ad29ada75a8baa61a7316a6 100644
--- a/arkindex/documents/tests/test_manifest.py
+++ b/arkindex/documents/tests/test_manifest.py
@@ -1,12 +1,13 @@
-from django.urls import reverse
 from django.core.cache import cache
 from django.test import override_settings
+from django.urls import reverse
 from rest_framework import status
 from tripoli import IIIFValidator
-from arkindex_common.ml_tool import MLToolType
-from arkindex_common.enums import MetaType
+
+from arkindex.documents.models import DataSource, Element
 from arkindex.project.tests import FixtureAPITestCase
-from arkindex.documents.models import Element, DataSource
+from arkindex_common.enums import MetaType
+from arkindex_common.ml_tool import MLToolType
 
 
 class TestFolderManifestSerializer(FixtureAPITestCase):
diff --git a/arkindex/documents/tests/test_metadata.py b/arkindex/documents/tests/test_metadata.py
index 57d4d05e64c3107fcf17981301a867bf28f182dc..9212a3bbe2b1429c790f8a3dfc18450d661d1938 100644
--- a/arkindex/documents/tests/test_metadata.py
+++ b/arkindex/documents/tests/test_metadata.py
@@ -1,12 +1,14 @@
-from arkindex.documents.models import Corpus, MetaData, AllowedMetaData, DataSource
+from unittest.mock import call, patch
+
+from django.test import override_settings
+from django.urls import reverse
+from rest_framework import status
+
+from arkindex.documents.models import AllowedMetaData, Corpus, DataSource, MetaData
 from arkindex.project.tests import FixtureAPITestCase
-from arkindex_common.enums import MetaType, EntityType
-from arkindex_common.ml_tool import MLToolType
 from arkindex.users.models import User
-from rest_framework import status
-from django.urls import reverse
-from django.test import override_settings
-from unittest.mock import patch, call
+from arkindex_common.enums import EntityType, MetaType
+from arkindex_common.ml_tool import MLToolType
 
 
 class TestMetaData(FixtureAPITestCase):
diff --git a/arkindex/documents/tests/test_ml_results.py b/arkindex/documents/tests/test_ml_results.py
index fa8ddd48c8c181407c65653e0179c291339f4ca0..d16776edf1058b170573ae569108a6ec17ff534f 100644
--- a/arkindex/documents/tests/test_ml_results.py
+++ b/arkindex/documents/tests/test_ml_results.py
@@ -1,10 +1,12 @@
-from mock import AsyncMock
 from unittest.mock import patch
+
 from django.urls import reverse
+from mock import AsyncMock
 from rest_framework import status
-from arkindex_common.enums import MetaType, EntityType
+
+from arkindex.documents.models import DataSource, Entity, Transcription
 from arkindex.project.tests import FixtureTestCase
-from arkindex.documents.models import DataSource, Transcription, Entity
+from arkindex_common.enums import EntityType, MetaType
 
 
 class TestMLResults(FixtureTestCase):
diff --git a/arkindex/documents/tests/test_moderation.py b/arkindex/documents/tests/test_moderation.py
index e991bc80135822935b04a3f4fe9f0ccd4415e1b8..ead4c224667cd96c632bc050fb662f9b5d7e6cea 100644
--- a/arkindex/documents/tests/test_moderation.py
+++ b/arkindex/documents/tests/test_moderation.py
@@ -3,8 +3,15 @@ from django.urls import reverse
 from rest_framework import status
 
 from arkindex.dataimport.models import WorkerVersion
-from arkindex.documents.models import \
-    ClassificationState, DataSource, MLClass, Element, Corpus, Classification, MLToolType
+from arkindex.documents.models import (
+    Classification,
+    ClassificationState,
+    Corpus,
+    DataSource,
+    Element,
+    MLClass,
+    MLToolType,
+)
 from arkindex.project.tests import FixtureAPITestCase
 from arkindex.users.models import User
 
diff --git a/arkindex/documents/tests/test_neighbors.py b/arkindex/documents/tests/test_neighbors.py
index 1949e1ccafaa7ba405a6d506d27fd6a231ebd666..59cd2322cdc674ca15ff6022e5bbbe0b81171b38 100644
--- a/arkindex/documents/tests/test_neighbors.py
+++ b/arkindex/documents/tests/test_neighbors.py
@@ -1,9 +1,10 @@
-from django.urls import reverse
 from django.db.models import F
+from django.urls import reverse
 from rest_framework import status
+
+from arkindex.documents.models import Element, ElementPath
 from arkindex.project.tests import FixtureAPITestCase
 from arkindex.project.tools import build_tree
-from arkindex.documents.models import Element, ElementPath
 
 
 class TestElementNeighbors(FixtureAPITestCase):
diff --git a/arkindex/documents/tests/test_parents_elements.py b/arkindex/documents/tests/test_parents_elements.py
index b3f3a5e5b521960ee25f68cd417a85ce4e223317..6ad84a8a1861ca99e505cedc2ff0cfdd8c989f88 100644
--- a/arkindex/documents/tests/test_parents_elements.py
+++ b/arkindex/documents/tests/test_parents_elements.py
@@ -1,10 +1,12 @@
+import uuid
+
 from django.urls import reverse
 from rest_framework import status
-from arkindex_common.ml_tool import MLToolType
-from arkindex.documents.models import Element, DataSource, Corpus
+
 from arkindex.dataimport.models import WorkerVersion
+from arkindex.documents.models import Corpus, DataSource, Element
 from arkindex.project.tests import FixtureAPITestCase
-import uuid
+from arkindex_common.ml_tool import MLToolType
 
 
 class TestParentsElements(FixtureAPITestCase):
diff --git a/arkindex/documents/tests/test_patch_elements.py b/arkindex/documents/tests/test_patch_elements.py
index 5ad5ea1f7d1823dffa98cbc4700f1626b5a71726..0f89d059c3736cccc011b716a69c31f50d9e5f1d 100644
--- a/arkindex/documents/tests/test_patch_elements.py
+++ b/arkindex/documents/tests/test_patch_elements.py
@@ -1,13 +1,13 @@
 from django.urls import reverse
 from rest_framework import status
-from arkindex_common.ml_tool import MLToolType
-from arkindex_common.enums import TranscriptionType
-from arkindex.documents.models import \
-    Element, DataSource, Corpus
+
+from arkindex.documents.models import Corpus, DataSource, Element
 from arkindex.images.models import ImageServer
 from arkindex.project.aws import S3FileStatus
 from arkindex.project.tests import FixtureAPITestCase
 from arkindex.users.models import User
+from arkindex_common.enums import TranscriptionType
+from arkindex_common.ml_tool import MLToolType
 
 
 class TestPatchElements(FixtureAPITestCase):
diff --git a/arkindex/documents/tests/test_retrieve_elements.py b/arkindex/documents/tests/test_retrieve_elements.py
index 3d7baaef445c7a8e637a120e3f4e0bc524ebcf3e..aae92d1a9945d9f0e75e22eda8995ff8f3658c28 100644
--- a/arkindex/documents/tests/test_retrieve_elements.py
+++ b/arkindex/documents/tests/test_retrieve_elements.py
@@ -1,10 +1,10 @@
 from django.urls import reverse
 from rest_framework import status
-from arkindex_common.enums import MetaType, EntityType
-from arkindex_common.ml_tool import MLToolType
-from arkindex.documents.models import \
-    DataSource, Corpus, Entity, MLClass, Classification, Element
+
+from arkindex.documents.models import Classification, Corpus, DataSource, Element, Entity, MLClass
 from arkindex.project.tests import FixtureAPITestCase
+from arkindex_common.enums import EntityType, MetaType
+from arkindex_common.ml_tool import MLToolType
 
 
 class TestRetrieveElements(FixtureAPITestCase):
diff --git a/arkindex/documents/tests/test_search.py b/arkindex/documents/tests/test_search.py
index 26839b442a56988da09828f9745555876d87f860..dd001a2ef4398a43b9755dd4555a0dffe1c2b52a 100644
--- a/arkindex/documents/tests/test_search.py
+++ b/arkindex/documents/tests/test_search.py
@@ -1,13 +1,15 @@
+import uuid
 from unittest.mock import MagicMock
+
 from django.contrib.auth.models import AnonymousUser
 from django.urls import reverse
-from rest_framework import status
 from elasticsearch_dsl.connections import connections
-from arkindex_common.enums import EntityType, MetaType
-from arkindex.project.tests import FixtureAPITestCase
+from rest_framework import status
+
+from arkindex.documents.models import Corpus, DataSource, Element, MLToolType, Transcription
 from arkindex.project.elastic import ESTranscription
-from arkindex.documents.models import Transcription, Element, Corpus, DataSource, MLToolType
-import uuid
+from arkindex.project.tests import FixtureAPITestCase
+from arkindex_common.enums import EntityType, MetaType
 
 
 class TestSearchAPI(FixtureAPITestCase):
diff --git a/arkindex/documents/tests/test_search_api.py b/arkindex/documents/tests/test_search_api.py
index 6345304c03294e5df671c7fd316ad663a611083b..a0dab458ea2835169fcbbd98cc65b3ebb7bd7336 100644
--- a/arkindex/documents/tests/test_search_api.py
+++ b/arkindex/documents/tests/test_search_api.py
@@ -1,10 +1,12 @@
 from unittest.mock import patch
-from django.urls import reverse
+
 from django.contrib.auth.models import AnonymousUser
 from django.test import override_settings
+from django.urls import reverse
 from rest_framework import status
-from arkindex.project.tests import FixtureAPITestCase
+
 from arkindex.documents.models import Corpus, Element
+from arkindex.project.tests import FixtureAPITestCase
 
 
 class TestSearchApi(FixtureAPITestCase):
diff --git a/arkindex/documents/tests/test_selection_api.py b/arkindex/documents/tests/test_selection_api.py
index a3c18a0fbe492896ad8d634f360b2481e528a259..eadc93f9c20a87048cce8471bb1628cda65b98bf 100644
--- a/arkindex/documents/tests/test_selection_api.py
+++ b/arkindex/documents/tests/test_selection_api.py
@@ -1,6 +1,7 @@
 from django.test import override_settings
 from django.urls import reverse
 from rest_framework import status
+
 from arkindex.documents.models import Corpus, Element
 from arkindex.project.tests import FixtureAPITestCase
 from arkindex.users.models import User
diff --git a/arkindex/documents/tests/test_transcriptions.py b/arkindex/documents/tests/test_transcriptions.py
index e1d08bc7e2a6801ca55e0b7a2f7d94e4535438c2..45ab00b5b441a4b95939c695bf8d23c1fcfe3be2 100644
--- a/arkindex/documents/tests/test_transcriptions.py
+++ b/arkindex/documents/tests/test_transcriptions.py
@@ -1,11 +1,12 @@
 from django.urls import reverse
 from rest_framework import status
+
+from arkindex.dataimport.models import WorkerVersion
+from arkindex.documents.models import Corpus, DataSource
 from arkindex.project.tests import FixtureAPITestCase
+from arkindex.users.models import User
 from arkindex_common.enums import TranscriptionType
 from arkindex_common.ml_tool import MLToolType
-from arkindex.documents.models import Corpus, DataSource
-from arkindex.dataimport.models import WorkerVersion
-from arkindex.users.models import User
 
 
 class TestTranscriptions(FixtureAPITestCase):
diff --git a/arkindex/images/admin.py b/arkindex/images/admin.py
index 69d491dfe6195d4525887e0cd8886153d5d610d4..213d09ed4a59500f48c8a29dff66312f0409f595 100644
--- a/arkindex/images/admin.py
+++ b/arkindex/images/admin.py
@@ -1,9 +1,10 @@
 from django.contrib import admin
 from django.urls import path
-from arkindex.images.models import ImageServer, Image
-from arkindex.images.views import ImageServerMergeView, ImageServerSplitView
 from enumfields.admin import EnumFieldListFilter
 
+from arkindex.images.models import Image, ImageServer
+from arkindex.images.views import ImageServerMergeView, ImageServerSplitView
+
 
 class ImageServerAdmin(admin.ModelAdmin):
     list_display = ('display_name', 'url', 'validated')
diff --git a/arkindex/images/api.py b/arkindex/images/api.py
index 89ee53ab19f6515b1d7e99f7cce7837ae40e94b6..38ccf38a65154cf730b8b02afe21e58d79b74224 100644
--- a/arkindex/images/api.py
+++ b/arkindex/images/api.py
@@ -1,15 +1,20 @@
 from django.db.models import Q
 from rest_framework import status
-from rest_framework.generics import ListAPIView, CreateAPIView, RetrieveUpdateAPIView
+from rest_framework.generics import CreateAPIView, ListAPIView, RetrieveUpdateAPIView
 from rest_framework.response import Response
 from rest_framework.serializers import ValidationError
-from arkindex.project.aws import S3FileStatus
-from arkindex.project.permissions import IsVerified
+
+from arkindex.documents.models import Corpus, Element
 from arkindex.documents.serializers.elements import ElementSlimSerializer
-from arkindex.documents.models import Element, Corpus
 from arkindex.images.models import Image
-from arkindex.images.serializers import \
-    ImageSerializer, IIIFImageSerializer, ImageInformationSerializer, ImageUploadSerializer
+from arkindex.images.serializers import (
+    IIIFImageSerializer,
+    ImageInformationSerializer,
+    ImageSerializer,
+    ImageUploadSerializer,
+)
+from arkindex.project.aws import S3FileStatus
+from arkindex.project.permissions import IsVerified
 from arkindex.users.models import Scope
 
 
diff --git a/arkindex/images/management/commands/check_images.py b/arkindex/images/management/commands/check_images.py
index f0f13aa459d75e2b77ee579998a433830c81ff54..a2be73a1cf45e49124fed89be79ce0f7ef041b97 100644
--- a/arkindex/images/management/commands/check_images.py
+++ b/arkindex/images/management/commands/check_images.py
@@ -1,9 +1,11 @@
-from django.core.management.base import BaseCommand, CommandError
+import logging
+
 from django.conf import settings
+from django.core.management.base import BaseCommand, CommandError
+
+from arkindex.images.models import Image, ImageServer
 from arkindex.project.argparse import CorpusArgument, ElementArgument
 from arkindex.project.aws import S3FileStatus
-from arkindex.images.models import ImageServer, Image
-import logging
 
 logging.basicConfig(
     level=logging.INFO,
diff --git a/arkindex/images/management/commands/deduplicate_zones.py b/arkindex/images/management/commands/deduplicate_zones.py
index ede6c2aa16223968eae522f680b7a245090ac60b..b260534834f56ae7627e452df07cd9b06e11f1a1 100644
--- a/arkindex/images/management/commands/deduplicate_zones.py
+++ b/arkindex/images/management/commands/deduplicate_zones.py
@@ -1,5 +1,6 @@
 from django.core.management.base import BaseCommand
 from django.db import connections, transaction
+
 from arkindex_common.tools import Timer
 
 
diff --git a/arkindex/images/migrations/0001_initial.py b/arkindex/images/migrations/0001_initial.py
index 26965253d5556f3b1a093dc5907d6dd8a8440c40..383cecc5ad9d789d8417aab689fcb9731cd3c12f 100644
--- a/arkindex/images/migrations/0001_initial.py
+++ b/arkindex/images/migrations/0001_initial.py
@@ -1,11 +1,13 @@
 # Generated by Django 2.2.9 on 2020-01-17 15:39
 
-import arkindex.project.aws
-import arkindex.project.fields
-from django.db import migrations, models
+import uuid
+
 import django.db.models.deletion
 import enumfields.fields
-import uuid
+from django.db import migrations, models
+
+import arkindex.project.aws
+import arkindex.project.fields
 
 POLYGON_HASH_FORWARD_SQL = """
 ALTER TABLE images_zone
diff --git a/arkindex/images/migrations/0002_checked_dimensions.py b/arkindex/images/migrations/0002_checked_dimensions.py
index 2c5633b0755ecb260535e9f5f21bc4597b2872b1..cca62ee91a3346028ecaa9ebcec1c5ae301bbfed 100644
--- a/arkindex/images/migrations/0002_checked_dimensions.py
+++ b/arkindex/images/migrations/0002_checked_dimensions.py
@@ -1,8 +1,9 @@
 # Generated by Django 2.2.10 on 2020-05-13 15:17
 
-import arkindex.project.aws
 from django.db import migrations, models
 
+import arkindex.project.aws
+
 
 class Migration(migrations.Migration):
 
diff --git a/arkindex/images/migrations/0004_polygon_postgis.py b/arkindex/images/migrations/0004_polygon_postgis.py
index e2f38c687c8476ec45dce62d6292caac46188415..611952623cd1405d2052362e490b18624702c53a 100644
--- a/arkindex/images/migrations/0004_polygon_postgis.py
+++ b/arkindex/images/migrations/0004_polygon_postgis.py
@@ -1,10 +1,11 @@
 # Generated by Django 2.2.13 on 2020-07-29 12:24
 
-from django.db import migrations
 from django.contrib.postgres.operations import CreateExtension
+from django.db import migrations
+
+from arkindex.images.models import POLYGON_MAX_MEM_SIZE
 from arkindex.project.fields import LinearRingField
 from arkindex.project.gis import SimplifyPreserveTopology
-from arkindex.images.models import POLYGON_MAX_MEM_SIZE
 
 POLYGON_HASH_FORWARD_SQL = """
 DROP INDEX IF EXISTS zone_unique_image_polygon;
diff --git a/arkindex/images/migrations/0005_polygon_index.py b/arkindex/images/migrations/0005_polygon_index.py
index 9cd2b46f703c88aae14433e80b69747862e162a7..d1bbd3bd709799973bdfd33ddc687bf6f3494d7f 100644
--- a/arkindex/images/migrations/0005_polygon_index.py
+++ b/arkindex/images/migrations/0005_polygon_index.py
@@ -1,7 +1,8 @@
 # Generated by Django 2.2.13 on 2020-07-30 13:54
 
-from django.db import migrations, models
 from django.contrib.gis.db.models.functions import SnapToGrid
+from django.db import migrations, models
+
 from arkindex.images.models import POLYGON_MAX_MEM_SIZE
 
 
diff --git a/arkindex/images/models.py b/arkindex/images/models.py
index 84661d312bdc65c38f312aad4911342e2a2dd9a1..b66f923aac51c907c22b21c2138ee309f9095e0b 100644
--- a/arkindex/images/models.py
+++ b/arkindex/images/models.py
@@ -1,22 +1,24 @@
+import logging
+import os
+import urllib.parse
+from json import JSONDecodeError
+
+import requests
 from django.conf import settings
-from django.core.validators import URLValidator
-from django.core.exceptions import ValidationError
 from django.contrib.gis.db.models.functions import Scale, SnapToGrid
+from django.core.exceptions import ValidationError
+from django.core.validators import URLValidator
 from django.db import models
 from django.db.models.functions import Concat, Substr
 from django.utils.functional import cached_property
 from django.utils.text import slugify
 from enumfields import EnumField
-from json import JSONDecodeError
+
 from arkindex.images.managers import ImageServerManager
 from arkindex.project.aws import S3FileMixin, S3FileStatus
-from arkindex.project.fields import StripSlashURLField, LStripTextField, MD5HashField, LinearRingField
+from arkindex.project.fields import LinearRingField, LStripTextField, MD5HashField, StripSlashURLField
 from arkindex.project.models import IndexableModel
 from arkindex.project.tools import bounding_box
-import logging
-import os
-import requests
-import urllib.parse
 
 # Maximum allowed memory size of a polygon.
 # This restriction is caused by B-Tree indexes: they are stored in "database pages" of 8192KB each.
diff --git a/arkindex/images/serializers.py b/arkindex/images/serializers.py
index 60cf04785a731920b81c58a0741108b37f713dd3..326e86e6e305dc8d11a81dbdbcf2a5f45171d1fe 100644
--- a/arkindex/images/serializers.py
+++ b/arkindex/images/serializers.py
@@ -1,12 +1,14 @@
-from arkindex.project.serializer_fields import LinearRingField, EnumField, IIIFPathField
-from arkindex.images.models import ImageServer, Image, Zone
-from arkindex.project.aws import S3FileStatus
-from requests.exceptions import RequestException
-from rest_framework.exceptions import ValidationError, APIException
-from rest_framework import serializers
 import re
 import uuid
 
+from requests.exceptions import RequestException
+from rest_framework import serializers
+from rest_framework.exceptions import APIException, ValidationError
+
+from arkindex.images.models import Image, ImageServer, Zone
+from arkindex.project.aws import S3FileStatus
+from arkindex.project.serializer_fields import EnumField, IIIFPathField, LinearRingField
+
 
 class ImageServerSerializer(serializers.ModelSerializer):
     class Meta:
diff --git a/arkindex/images/tests/test_admin.py b/arkindex/images/tests/test_admin.py
index f33313eb31e96cc1bb93e80e300cfd65cc38156c..c522cefa11c9892c966baa1c311e67d1cd645cc1 100644
--- a/arkindex/images/tests/test_admin.py
+++ b/arkindex/images/tests/test_admin.py
@@ -1,7 +1,8 @@
 from django.urls import reverse
 from rest_framework import status
-from arkindex.project.tests import FixtureTestCase
+
 from arkindex.images.models import ImageServer
+from arkindex.project.tests import FixtureTestCase
 
 
 class TestCustomAdminViews(FixtureTestCase):
diff --git a/arkindex/images/tests/test_check_images.py b/arkindex/images/tests/test_check_images.py
index 84c2f33ae53817fdcfc718829e85d7389f6186b0..f6a4a20d402dcc1f3a9246b89cdc1291603b60f9 100644
--- a/arkindex/images/tests/test_check_images.py
+++ b/arkindex/images/tests/test_check_images.py
@@ -1,8 +1,10 @@
-from arkindex.project.tests import FixtureTestCase
-from arkindex.project.aws import S3FileStatus
+from unittest.mock import patch
+
 from django.core.management import call_command
 from django.core.management.base import CommandError
-from unittest.mock import patch
+
+from arkindex.project.aws import S3FileStatus
+from arkindex.project.tests import FixtureTestCase
 
 
 class TestCheckImages(FixtureTestCase):
diff --git a/arkindex/images/tests/test_image.py b/arkindex/images/tests/test_image.py
index 669997c6e82c179e4ec99c65fce6b0359455abf1..2f6b8b7fb17fb692fe597ee6cd083cdfff604328 100644
--- a/arkindex/images/tests/test_image.py
+++ b/arkindex/images/tests/test_image.py
@@ -1,9 +1,11 @@
-from unittest.mock import patch, call, MagicMock
-from django.test import override_settings
+from unittest.mock import MagicMock, call, patch
+
 from botocore.exceptions import ClientError
-from arkindex.project.tests import FixtureTestCase
-from arkindex.project.aws import S3FileStatus
+from django.test import override_settings
+
 from arkindex.images.models import ImageServer
+from arkindex.project.aws import S3FileStatus
+from arkindex.project.tests import FixtureTestCase
 
 
 @override_settings(LOCAL_IMAGESERVER_ID=1, AWS_REGION=None)
diff --git a/arkindex/images/tests/test_image_api.py b/arkindex/images/tests/test_image_api.py
index 2cace6d16acb06cdae3fa93602afb7414ea3a6fd..e3321c0c0af45ca936090d36dd2f15ca95aa8233 100644
--- a/arkindex/images/tests/test_image_api.py
+++ b/arkindex/images/tests/test_image_api.py
@@ -1,13 +1,15 @@
+import random
+from unittest.mock import call, patch
+
+import responses
+from django.test import override_settings
+from django.urls import reverse
+from rest_framework import status
+
+from arkindex.images.models import Image, ImageServer
 from arkindex.project.aws import S3FileStatus
 from arkindex.project.tests import FixtureAPITestCase
-from arkindex.images.models import Image, ImageServer
 from arkindex.users.models import Scope
-from rest_framework import status
-from django.test import override_settings
-from django.urls import reverse
-from unittest.mock import patch, call
-import random
-import responses
 
 
 class ImageMethods:
diff --git a/arkindex/images/tests/test_image_elements.py b/arkindex/images/tests/test_image_elements.py
index 1aeb63f8276a26a93dbf2c96ab50a1d707aa8987..94de6dbb1a7e464cb78eefed606631227f5bd7dc 100644
--- a/arkindex/images/tests/test_image_elements.py
+++ b/arkindex/images/tests/test_image_elements.py
@@ -1,5 +1,6 @@
 from django.urls import reverse
 from rest_framework import status
+
 from arkindex.project.tests import FixtureTestCase
 
 
diff --git a/arkindex/images/tests/test_imageserver.py b/arkindex/images/tests/test_imageserver.py
index f2f1addd9a3b32f31f257e5a99a4dc9fc96f672e..83aa6afa1f2508ebebc57cf24eefd29994243951 100644
--- a/arkindex/images/tests/test_imageserver.py
+++ b/arkindex/images/tests/test_imageserver.py
@@ -1,7 +1,8 @@
-from django.test import TestCase
 from django.db import IntegrityError
-from arkindex.images.models import ImageServer
+from django.test import TestCase
+
 from arkindex.images.managers import ImageServerManager
+from arkindex.images.models import ImageServer
 
 
 class TestImageServer(TestCase):
diff --git a/arkindex/images/tests/test_perform_check.py b/arkindex/images/tests/test_perform_check.py
index 5a933aaa9465fa555234f86a2b79fc755b36dec5..27beab081c70ad05d1fd83cb84c1ac6ba3483dbc 100644
--- a/arkindex/images/tests/test_perform_check.py
+++ b/arkindex/images/tests/test_perform_check.py
@@ -1,9 +1,11 @@
-from unittest.mock import patch, call
+from unittest.mock import call, patch
+
+import requests
+import responses
 from django.contrib.gis.geos import LinearRing
+
 from arkindex.project.aws import S3FileStatus
 from arkindex.project.tests import FixtureTestCase
-import requests
-import responses
 
 
 class TestImagePerformCheck(FixtureTestCase):
diff --git a/arkindex/images/tests/test_thumbnail.py b/arkindex/images/tests/test_thumbnail.py
index 1ba75758c30c3f0339b81533f93a7dffd4f42676..98547348676c85f78d9764b6e5b5de44f230e91e 100644
--- a/arkindex/images/tests/test_thumbnail.py
+++ b/arkindex/images/tests/test_thumbnail.py
@@ -1,7 +1,9 @@
-from arkindex.project.tests import FixtureTestCase
-from unittest.mock import patch, call
+from unittest.mock import call, patch
+
 from django.test import override_settings
 
+from arkindex.project.tests import FixtureTestCase
+
 
 @override_settings(LOCAL_IMAGESERVER_ID=999, IIIF_DOWNLOAD_TIMEOUT=(13, 37))
 class TestThumbnail(FixtureTestCase):
diff --git a/arkindex/images/tests/test_zone.py b/arkindex/images/tests/test_zone.py
index da3e8a9b428d8327ce1dbb33553d16e47fa40e3c..822cf2a36a22a918b520e1ad78e5ca55aed1d032 100644
--- a/arkindex/images/tests/test_zone.py
+++ b/arkindex/images/tests/test_zone.py
@@ -1,4 +1,5 @@
 from django.db import IntegrityError
+
 from arkindex.project.tests import FixtureTestCase
 
 
diff --git a/arkindex/images/views.py b/arkindex/images/views.py
index ecbda126d7f74defc7edbb318a6c6a645cc18cf2..6715f4e82c3c6a5f02e21207567c9394aae0c13f 100644
--- a/arkindex/images/views.py
+++ b/arkindex/images/views.py
@@ -1,8 +1,9 @@
-from django.views.generic import FormView
 from django.contrib import messages
 from django.urls import reverse
-from arkindex.images.models import ImageServer
+from django.views.generic import FormView
+
 from arkindex.images.forms import ImageServerMergeForm, ImageServerSplitForm
+from arkindex.images.models import ImageServer
 
 
 class ImageServerAdminView(FormView):
diff --git a/arkindex/project/api_v1.py b/arkindex/project/api_v1.py
index 25a7b3cfa9738c6115ca7dfefb400f77313fba9b..9ad8c723eefed23c5587799366de786b4a733b6d 100644
--- a/arkindex/project/api_v1.py
+++ b/arkindex/project/api_v1.py
@@ -1,40 +1,101 @@
+from django.conf import settings
 from django.urls import path
-from django.views.generic.base import RedirectView
 from django.views.decorators.cache import cache_page
-from django.conf import settings
+from django.views.generic.base import RedirectView
 from rest_framework.schemas import get_schema_view
-from arkindex.project.openapi import SchemaGenerator
 
-from arkindex.documents.api.elements import (
-    CorpusElements, ElementsCreate, ElementBulkCreate, ElementRetrieve, ElementTranscriptions, ElementNeighbors,
-    ElementParent, ElementParents, ElementChildren, ElementMetadata, MetadataEdit, ManageSelection,
-    CorpusList, CorpusRetrieve, CorpusAllowedMetaData, ElementTypeCreate, ElementTypeUpdate, DeprecatedElementsList
+from arkindex.dataimport.api import (
+    AvailableRepositoriesList,
+    CorpusWorkflow,
+    DataFileCreate,
+    DataFileList,
+    DataFileRetrieve,
+    DataFileUpload,
+    DataImportDetails,
+    DataImportElements,
+    DataImportFromFiles,
+    DataImportRetry,
+    DataImportsList,
+    GitRepositoryImportHook,
+    ImportTranskribus,
+    ListProcessElements,
+    MLToolList,
+    RepositoryList,
+    RepositoryRetrieve,
+    RevisionRetrieve,
+    StartProcess,
+    WorkerList,
+    WorkerRetrieve,
+    WorkerRunDetails,
+    WorkerRunList,
+    WorkerVersionList,
+    WorkerVersionRetrieve,
 )
-from arkindex.documents.api.search import ElementSearch, EntitySearch
-from arkindex.documents.api.ml import (
-    ClassificationCreate, ClassificationValidate, ClassificationReject, ClassificationBulk, ElementTranscriptionsBulk,
-    TranscriptionCreate, TranscriptionBulk, ElementMLStats, CorpusMLStats,
-    ManageClassificationsSelection, MLClassList, CorpusMLClassList, TranscriptionEdit
+from arkindex.documents.api.admin import ReindexStart
+from arkindex.documents.api.elements import (
+    CorpusAllowedMetaData,
+    CorpusElements,
+    CorpusList,
+    CorpusRetrieve,
+    DeprecatedElementsList,
+    ElementBulkCreate,
+    ElementChildren,
+    ElementMetadata,
+    ElementNeighbors,
+    ElementParent,
+    ElementParents,
+    ElementRetrieve,
+    ElementsCreate,
+    ElementTranscriptions,
+    ElementTypeCreate,
+    ElementTypeUpdate,
+    ManageSelection,
+    MetadataEdit,
 )
 from arkindex.documents.api.entities import (
-    CorpusRoles, EntityDetails, EntityCreate, EntityLinkCreate, EntityElements,
-    TranscriptionEntityCreate, TranscriptionEntities, ElementEntities, ElementLinks
+    CorpusRoles,
+    ElementEntities,
+    ElementLinks,
+    EntityCreate,
+    EntityDetails,
+    EntityElements,
+    EntityLinkCreate,
+    TranscriptionEntities,
+    TranscriptionEntityCreate,
 )
-from arkindex.documents.api.iiif import FolderManifest, ElementAnnotationList, TranscriptionSearchAnnotationList
-from arkindex.documents.api.admin import ReindexStart
-from arkindex.dataimport.api import (
-    DataImportsList, DataImportDetails, DataImportRetry, StartProcess, DataImportElements,
-    DataFileList, DataFileRetrieve, DataFileUpload, DataImportFromFiles,
-    RepositoryList, RepositoryRetrieve, DataFileCreate,
-    GitRepositoryImportHook, AvailableRepositoriesList, RevisionRetrieve,
-    MLToolList, CorpusWorkflow, WorkerList, WorkerVersionList, WorkerVersionRetrieve,
-    WorkerRunList, WorkerRunDetails, ImportTranskribus, WorkerRetrieve, ListProcessElements
+from arkindex.documents.api.iiif import ElementAnnotationList, FolderManifest, TranscriptionSearchAnnotationList
+from arkindex.documents.api.ml import (
+    ClassificationBulk,
+    ClassificationCreate,
+    ClassificationReject,
+    ClassificationValidate,
+    CorpusMLClassList,
+    CorpusMLStats,
+    ElementMLStats,
+    ElementTranscriptionsBulk,
+    ManageClassificationsSelection,
+    MLClassList,
+    TranscriptionBulk,
+    TranscriptionCreate,
+    TranscriptionEdit,
 )
-from arkindex.images.api import ImageCreate, IIIFURLCreate, IIIFInformationCreate, ImageRetrieve, ImageElements
+from arkindex.documents.api.search import ElementSearch, EntitySearch
+from arkindex.images.api import IIIFInformationCreate, IIIFURLCreate, ImageCreate, ImageElements, ImageRetrieve
+from arkindex.project.openapi import SchemaGenerator
 from arkindex.users.api import (
-    ProvidersList, CredentialsList, CredentialsRetrieve, OAuthSignIn, OAuthRetry, OAuthCallback,
-    UserRetrieve, UserCreate, UserEmailLogin, UserEmailVerification, PasswordReset, PasswordResetConfirm,
-    UpdateUserTranskribus
+    CredentialsList,
+    CredentialsRetrieve,
+    OAuthCallback,
+    OAuthRetry,
+    OAuthSignIn,
+    PasswordReset,
+    PasswordResetConfirm,
+    ProvidersList,
+    UpdateUserTranskribus,
+    UserCreate,
+    UserEmailLogin,
+    UserEmailVerification,
+    UserRetrieve,
 )
 
 # Cache the OpenAPI schema view for a day
diff --git a/arkindex/project/argparse.py b/arkindex/project/argparse.py
index 8c096cb3220f6fa320f818821d5a7c5af72b760f..a05f27f255589a5d9ef26bec02775257cc6eb470 100644
--- a/arkindex/project/argparse.py
+++ b/arkindex/project/argparse.py
@@ -1,8 +1,9 @@
-from django.db.models import Model
 from django.core.exceptions import ValidationError
 from django.core.management.base import CommandError
-from arkindex.documents.models import Corpus, Element
+from django.db.models import Model
+
 from arkindex.dataimport.models import DataImport, Repository
+from arkindex.documents.models import Corpus, Element
 
 
 class ModelArgument(object):
diff --git a/arkindex/project/asgi.py b/arkindex/project/asgi.py
index 1935930d65662d5050d88f19fd9ea1532ddb6daa..a188f2de8559daea020d4060d5d78d783489c860 100644
--- a/arkindex/project/asgi.py
+++ b/arkindex/project/asgi.py
@@ -4,6 +4,7 @@ defined in the ASGI_APPLICATION setting.
 """
 
 import os
+
 import django
 from channels.routing import get_default_application
 from sentry_sdk.integrations.asgi import SentryAsgiMiddleware
diff --git a/arkindex/project/aws.py b/arkindex/project/aws.py
index 2e293084d0cb1919e40ac91f7ef9c0f9f434b304..245d8fb18d4ba5da4f73025c41735f284373e53b 100644
--- a/arkindex/project/aws.py
+++ b/arkindex/project/aws.py
@@ -1,12 +1,13 @@
-from django.conf import settings
+import logging
+from io import BytesIO
+
+import boto3.session
 from botocore.config import Config
 from botocore.exceptions import BotoCoreError, ClientError
+from django.conf import settings
 from django.utils.functional import cached_property
 from enumfields import Enum
 from tenacity import retry, retry_if_exception, stop_after_delay
-from io import BytesIO
-import boto3.session
-import logging
 
 logger = logging.getLogger(__name__)
 
diff --git a/arkindex/project/checks.py b/arkindex/project/checks.py
index 805c1eb05b4892cab69f329effcd076dd159f08f..c45297d03f94aa7874583d2ec199659e0171af3e 100644
--- a/arkindex/project/checks.py
+++ b/arkindex/project/checks.py
@@ -1,8 +1,10 @@
-from django.core.checks import register, Warning, Error
-from ponos.recipe import parse_recipe
 import os.path
 import subprocess
+
 import yaml
+from django.core.checks import Error, Warning, register
+
+from ponos.recipe import parse_recipe
 
 
 def only_runserver(func):
diff --git a/arkindex/project/config.py b/arkindex/project/config.py
index 741710eaadb14823a6d5c77828060fdc12035eb5..ef5c64863107a57d232ae05860a3fbff034f8660 100644
--- a/arkindex/project/config.py
+++ b/arkindex/project/config.py
@@ -1,7 +1,8 @@
-from arkindex_common.config_parser import dir_path, ConfigParser, ConfigurationError
 from enum import Enum
 from pathlib import Path
 
+from arkindex_common.config_parser import ConfigParser, ConfigurationError, dir_path
+
 
 class CacheType(Enum):
     Redis = 'redis'
diff --git a/arkindex/project/default_corpus.py b/arkindex/project/default_corpus.py
index 0f47677f99a4504406e4f837eb426addc5397b39..fa0cc889d2b638717bbb2ae8362040b8f2e9ff2f 100644
--- a/arkindex/project/default_corpus.py
+++ b/arkindex/project/default_corpus.py
@@ -1,7 +1,6 @@
 # Default corpus attributes
 from arkindex_common.enums import TranscriptionType
 
-
 # If you edit default types, please update 'DEFAULT_CORPUS_ATTRS' config value in the frontend (at js/config.js)
 DEFAULT_CORPUS_TYPES = [
     {
diff --git a/arkindex/project/elastic.py b/arkindex/project/elastic.py
index b92db343c83548843061d91ca4c15936936069d9..f5bb37c2f3b07cab74fd1e440c9130362ab25626 100644
--- a/arkindex/project/elastic.py
+++ b/arkindex/project/elastic.py
@@ -1,10 +1,12 @@
-from arkindex_common.enums import MetaType
 from collections.abc import Sequence
 from itertools import chain
+
 from django.conf import settings
-from elasticsearch_dsl import Document, InnerDoc, Mapping, Text, Float, Keyword, Nested, Date, DateRange, Search
+from elasticsearch_dsl import Date, DateRange, Document, Float, InnerDoc, Keyword, Mapping, Nested, Search, Text
 from elasticsearch_dsl.connections import connections
 
+from arkindex_common.enums import MetaType
+
 connections.create_connection(hosts=settings.ELASTIC_SEARCH_HOSTS)
 
 
diff --git a/arkindex/project/fields.py b/arkindex/project/fields.py
index e4065e4ad595cd26ba7e8a5a7471b3e995727762..1303a10dea324d66f2fad879f4c40505137768e4 100644
--- a/arkindex/project/fields.py
+++ b/arkindex/project/fields.py
@@ -1,11 +1,13 @@
-from django.contrib.postgres import fields
-from django.contrib.gis.geos import GEOSGeometry, LinearRing
+import re
+
 from django.contrib.gis.db.models import LineStringField
 from django.contrib.gis.db.models.proxy import SpatialProxy
-from django.db.models import Transform, URLField, TextField, CharField, Func
+from django.contrib.gis.geos import GEOSGeometry, LinearRing
+from django.contrib.postgres import fields
 from django.core.validators import RegexValidator
+from django.db.models import CharField, Func, TextField, Transform, URLField
+
 from arkindex.project.gis import ensure_linear_ring
-import re
 
 
 class MD5HashField(CharField):
diff --git a/arkindex/project/filters.py b/arkindex/project/filters.py
index 3a3f7245f16a21fed7b3174fcd1477c68b023171..c3c8e69f969ec325985e9effc29d510fe9467853 100644
--- a/arkindex/project/filters.py
+++ b/arkindex/project/filters.py
@@ -1,6 +1,6 @@
 from django.conf import settings
-from rest_framework.filters import SearchFilter
 from rest_framework.exceptions import ValidationError
+from rest_framework.filters import SearchFilter
 
 
 class SafeSearchFilter(SearchFilter):
diff --git a/arkindex/project/gis.py b/arkindex/project/gis.py
index 5e5de4e0732fcf5990981ea885391baf2da6dcca..ce8f872f60018bb4f97e047420021a6f45ce8605 100644
--- a/arkindex/project/gis.py
+++ b/arkindex/project/gis.py
@@ -1,10 +1,12 @@
 from collections.abc import Iterable
 from itertools import groupby
-from django.contrib.gis.geos import GEOSGeometry, LineString, Polygon
+
 from django.contrib.gis.db.models.fields import BaseSpatialField, LineStringField
-from django.contrib.gis.db.models.functions import GeoFuncMixin, GeomOutputGeoFunc, MemSize as MemSizeFunc
+from django.contrib.gis.db.models.functions import GeoFuncMixin, GeomOutputGeoFunc
+from django.contrib.gis.db.models.functions import MemSize as MemSizeFunc
 from django.contrib.gis.db.models.lookups import EqualsLookup
-from django.db.models import Transform, BooleanField
+from django.contrib.gis.geos import GEOSGeometry, LineString, Polygon
+from django.db.models import BooleanField, Transform
 
 
 def ensure_linear_ring(value):
diff --git a/arkindex/project/mixins.py b/arkindex/project/mixins.py
index 94c5d0b982285a4338402bba2ce1aa0179ba5815..9cdd5994f48f8683ead73650d5bfa16854c1814f 100644
--- a/arkindex/project/mixins.py
+++ b/arkindex/project/mixins.py
@@ -1,9 +1,10 @@
-from django.shortcuts import get_object_or_404
 from django.conf import settings
 from django.core.exceptions import PermissionDenied
+from django.shortcuts import get_object_or_404
 from django.views.decorators.cache import cache_page
 from rest_framework.exceptions import APIException, ValidationError
 from rest_framework.serializers import Serializer
+
 from arkindex.documents.models import Corpus, Right
 from arkindex.documents.serializers.search import SearchQuerySerializer
 from arkindex.project.elastic import ESQuerySet
diff --git a/arkindex/project/models.py b/arkindex/project/models.py
index f02672ba3ffde1e78bde19c23fb6f1876e6cd7e4..4d3709b24b854f58b709e20d9c2f47ca884e775c 100644
--- a/arkindex/project/models.py
+++ b/arkindex/project/models.py
@@ -1,6 +1,7 @@
-from django.db import models
 import uuid
 
+from django.db import models
+
 
 class IndexableModel(models.Model):
     id = models.UUIDField(default=uuid.uuid4, primary_key=True, editable=False)
diff --git a/arkindex/project/openapi/__init__.py b/arkindex/project/openapi/__init__.py
index 389596710e549ffbec362b7c541ad3e78b10801a..594bca8ae0d2853f4a7071c49e3ad666a0a5a19d 100644
--- a/arkindex/project/openapi/__init__.py
+++ b/arkindex/project/openapi/__init__.py
@@ -1,2 +1,2 @@
-from arkindex.project.openapi.schemas import AutoSchema, SearchAutoSchema  # noqa: F401
 from arkindex.project.openapi.generators import SchemaGenerator  # noqa: F401
+from arkindex.project.openapi.schemas import AutoSchema, SearchAutoSchema  # noqa: F401
diff --git a/arkindex/project/openapi/generators.py b/arkindex/project/openapi/generators.py
index fa4f1ed7be22ddf31816488f2d3e385274a97bfc..1b0402280729410164c1d2d547412d4b43c439ed 100644
--- a/arkindex/project/openapi/generators.py
+++ b/arkindex/project/openapi/generators.py
@@ -1,7 +1,8 @@
 from pathlib import Path
-from rest_framework.schemas.openapi import SchemaGenerator as BaseSchemaGenerator
+
 import yaml
 from django.conf import settings
+from rest_framework.schemas.openapi import SchemaGenerator as BaseSchemaGenerator
 
 PATCH_FILE = Path(__file__).absolute().parent / 'patch.yml'
 
diff --git a/arkindex/project/openapi/schemas.py b/arkindex/project/openapi/schemas.py
index 0c5b04720eb9338c3a03300ad8f04896dec76634..ae8c9c3e0c5d816fa4a92da39f49f8d10d007def 100644
--- a/arkindex/project/openapi/schemas.py
+++ b/arkindex/project/openapi/schemas.py
@@ -1,6 +1,7 @@
+import warnings
 from enum import Enum
+
 from rest_framework.schemas.openapi import AutoSchema as BaseAutoSchema
-import warnings
 
 
 class AutoSchema(BaseAutoSchema):
diff --git a/arkindex/project/pagination.py b/arkindex/project/pagination.py
index 14929b2baeb0cf4d265e46e0b7d9325cded3e3cd..68c696a5988ccadfc48d138f968873225a126684 100644
--- a/arkindex/project/pagination.py
+++ b/arkindex/project/pagination.py
@@ -1,4 +1,5 @@
 from collections import OrderedDict
+
 from rest_framework import pagination
 from rest_framework.response import Response
 
diff --git a/arkindex/project/routing.py b/arkindex/project/routing.py
index 4fd1c1d76bf9242b6f227e49017b7923442461fd..841bcbba29ae83860273de3c29dec91a73bbed70 100644
--- a/arkindex/project/routing.py
+++ b/arkindex/project/routing.py
@@ -1,8 +1,9 @@
 from channels.auth import AuthMiddlewareStack
-from channels.routing import ProtocolTypeRouter, URLRouter, ChannelNameRouter
+from channels.routing import ChannelNameRouter, ProtocolTypeRouter, URLRouter
 from channels.security.websocket import AllowedHostsOriginValidator
-from arkindex.project.triggers import REINDEX_CHANNEL, ML_RESULTS_CHANNEL, CORPUS_CHANNEL
-from arkindex.documents.consumers import ReindexConsumer, MLResultsConsumer, CorpusConsumer
+
+from arkindex.documents.consumers import CorpusConsumer, MLResultsConsumer, ReindexConsumer
+from arkindex.project.triggers import CORPUS_CHANNEL, ML_RESULTS_CHANNEL, REINDEX_CHANNEL
 
 application = ProtocolTypeRouter({
     'websocket': AllowedHostsOriginValidator(
diff --git a/arkindex/project/serializer_fields.py b/arkindex/project/serializer_fields.py
index 4199a71d5a0a83b810e13dad92cf5ac12f6c2892..c2409d620cab90d23be5d3f774bcb394bf386faa 100644
--- a/arkindex/project/serializer_fields.py
+++ b/arkindex/project/serializer_fields.py
@@ -1,8 +1,10 @@
-from django.contrib.gis.geos import Point
-from rest_framework import serializers
 from enum import Enum
-from uuid import UUID
 from urllib.parse import quote, unquote
+from uuid import UUID
+
+from django.contrib.gis.geos import Point
+from rest_framework import serializers
+
 from arkindex.project.gis import ensure_linear_ring
 
 
diff --git a/arkindex/project/settings.py b/arkindex/project/settings.py
index 70d60dd8a2333138a71b6792513031c303258041..17898cf5dfe657b38cf1323bc1b45ec400ed7157 100644
--- a/arkindex/project/settings.py
+++ b/arkindex/project/settings.py
@@ -13,10 +13,12 @@ https://docs.djangoproject.com/en/1.11/ref/settings/
 import os
 import sys
 import warnings
-from corsheaders.defaults import default_headers
 from datetime import timedelta
 from pathlib import Path
-from arkindex.project.config import get_settings_parser, CacheType
+
+from corsheaders.defaults import default_headers
+
+from arkindex.project.config import CacheType, get_settings_parser
 
 # Build paths inside the project like this: BASE_DIR / ...
 _base_dir = os.environ.get('BASE_DIR')
diff --git a/arkindex/project/tests/__init__.py b/arkindex/project/tests/__init__.py
index 26beee4bfd08817c03fcec5409b6ee4b31d1fab3..4f676e1da83c1e9c19c5626f5787b3847289fb23 100644
--- a/arkindex/project/tests/__init__.py
+++ b/arkindex/project/tests/__init__.py
@@ -1,6 +1,7 @@
 from django.test import TestCase
 from django.utils.functional import cached_property
 from rest_framework.test import APITestCase
+
 from arkindex.documents.models import Corpus
 from arkindex.images.models import ImageServer
 from arkindex.users.models import User
diff --git a/arkindex/project/tests/openapi/test_generators.py b/arkindex/project/tests/openapi/test_generators.py
index 873220084fa14ae9ea624dc36f075a44a783939b..46b40f9be4ca03836f9d7469c83fdcade8dacfc7 100644
--- a/arkindex/project/tests/openapi/test_generators.py
+++ b/arkindex/project/tests/openapi/test_generators.py
@@ -1,8 +1,10 @@
 from unittest import TestCase
 from unittest.mock import patch
-from arkindex.project.openapi import SchemaGenerator
+
 from django.test import override_settings
 
+from arkindex.project.openapi import SchemaGenerator
+
 
 class TestSchemaGenerator(TestCase):
 
diff --git a/arkindex/project/tests/openapi/test_schemas.py b/arkindex/project/tests/openapi/test_schemas.py
index bd682401b283074892928a1b3d7a56a3436b7e51..dc34385c80e49ac577e62072ecac45cba885ed9a 100644
--- a/arkindex/project/tests/openapi/test_schemas.py
+++ b/arkindex/project/tests/openapi/test_schemas.py
@@ -1,13 +1,15 @@
+import warnings
 from unittest import TestCase
+
 from django.test import RequestFactory
 from rest_framework import serializers
 from rest_framework.request import Request
 from rest_framework.views import APIView
-from arkindex.project.serializer_fields import EnumField
-from arkindex.project.openapi import AutoSchema, SchemaGenerator
+
 from arkindex.project.mixins import DeprecatedAutoSchema
+from arkindex.project.openapi import AutoSchema, SchemaGenerator
+from arkindex.project.serializer_fields import EnumField
 from arkindex_common.enums import DataImportMode
-import warnings
 
 
 # Helper methods taken straight from the DRF test suite
diff --git a/arkindex/project/tests/openapi/test_view.py b/arkindex/project/tests/openapi/test_view.py
index 8060fd626383d1ae536d1ab879341770b6fdbe46..cc26bf2ba749721192a205c406fdef733bfa6443 100644
--- a/arkindex/project/tests/openapi/test_view.py
+++ b/arkindex/project/tests/openapi/test_view.py
@@ -1,9 +1,11 @@
-from arkindex.project.tests import FixtureAPITestCase
 from io import StringIO
+
 from django.core.management import call_command
 from django.urls import reverse
 from rest_framework import status
 
+from arkindex.project.tests import FixtureAPITestCase
+
 
 class TestSchemaView(FixtureAPITestCase):
 
diff --git a/arkindex/project/tests/test_argparse.py b/arkindex/project/tests/test_argparse.py
index 56ec4bc71ec2b2948869be7beeaf4f61d9b0782f..20fefbec77bba5539434fe5b3d86fe1384ec4fbc 100644
--- a/arkindex/project/tests/test_argparse.py
+++ b/arkindex/project/tests/test_argparse.py
@@ -1,7 +1,8 @@
 from django.core.management.base import CommandError
-from arkindex.project.tests import FixtureTestCase
-from arkindex.project.argparse import CorpusArgument, ElementArgument
+
 from arkindex.documents.models import Element
+from arkindex.project.argparse import CorpusArgument, ElementArgument
+from arkindex.project.tests import FixtureTestCase
 
 
 class TestArgparseHelpers(FixtureTestCase):
diff --git a/arkindex/project/tests/test_aws_mixin.py b/arkindex/project/tests/test_aws_mixin.py
index e8c8afa95e66354310f358783c0f3833a70da292..a357fc7be101ec6c75b3cae03eb3be57ee2fa078 100644
--- a/arkindex/project/tests/test_aws_mixin.py
+++ b/arkindex/project/tests/test_aws_mixin.py
@@ -1,8 +1,10 @@
+import importlib
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
+
 from django.test import override_settings
-from unittest.mock import patch, MagicMock
+
 from arkindex.project import aws
-import importlib
 
 AWS_SETTINGS = {
     'AWS_ACCESS_KEY': 'golden_key',
diff --git a/arkindex/project/tests/test_checks.py b/arkindex/project/tests/test_checks.py
index 78dc4690bc6f1a7b02ff396a47017b5bc6d79497..c1a249e2977a7152fd850bf8d7ac00a437aae2d4 100644
--- a/arkindex/project/tests/test_checks.py
+++ b/arkindex/project/tests/test_checks.py
@@ -1,11 +1,12 @@
-from unittest.mock import patch, call
-from django.test import TestCase, override_settings
-from django.conf import settings
-from django.urls import path
-from django.core.checks import Error, Warning
+import subprocess
 from pathlib import Path
 from subprocess import CalledProcessError
-import subprocess
+from unittest.mock import call, patch
+
+from django.conf import settings
+from django.core.checks import Error, Warning
+from django.test import TestCase, override_settings
+from django.urls import path
 
 
 @override_settings(ALL_CHECKS=True)
diff --git a/arkindex/project/tests/test_config.py b/arkindex/project/tests/test_config.py
index 355f507446c50c7916b3e00ab8c10fec4d511013..cf5030d106d96e32314faac80029befb9593c491 100644
--- a/arkindex/project/tests/test_config.py
+++ b/arkindex/project/tests/test_config.py
@@ -1,12 +1,14 @@
-from unittest import TestCase
-from unittest.mock import patch
 from enum import Enum
 from io import StringIO
 from pathlib import Path
-from arkindex_common.config_parser import ConfigurationError, ConfigParser
-from arkindex.project.config import get_settings_parser
+from unittest import TestCase
+from unittest.mock import patch
+
 import yaml
 
+from arkindex.project.config import get_settings_parser
+from arkindex_common.config_parser import ConfigParser, ConfigurationError
+
 SAMPLES = Path(__file__).resolve().parent / 'config_samples'
 
 
diff --git a/arkindex/project/tests/test_drf_linear_ring_field.py b/arkindex/project/tests/test_drf_linear_ring_field.py
index 3a33b5a6b9c5db753ca5775c17c53017170f30e8..91c1dbe65055e40b2a484818bf1ec0945b88d41f 100644
--- a/arkindex/project/tests/test_drf_linear_ring_field.py
+++ b/arkindex/project/tests/test_drf_linear_ring_field.py
@@ -1,8 +1,10 @@
 from unittest import TestCase
-from django.contrib.gis.geos import Point, LinearRing
-from arkindex.project.serializer_fields import PointField, LinearRingField
+
+from django.contrib.gis.geos import LinearRing, Point
 from rest_framework.serializers import ValidationError
 
+from arkindex.project.serializer_fields import LinearRingField, PointField
+
 
 class TestLinearRingSerializerField(TestCase):
 
diff --git a/arkindex/project/tests/test_elastic.py b/arkindex/project/tests/test_elastic.py
index 9f38e1d749192e63b1ad9727f6676f05111c23ff..4407d5866ef687126f6eb1c45796e928c399c070 100644
--- a/arkindex/project/tests/test_elastic.py
+++ b/arkindex/project/tests/test_elastic.py
@@ -1,10 +1,11 @@
 from unittest.mock import patch
+
+from arkindex.documents.dates import DateType, InterpretedDate
+from arkindex.documents.models import DataSource
+from arkindex.project.elastic import ESElement
+from arkindex.project.tests import FixtureAPITestCase
 from arkindex_common.enums import MetaType, TranscriptionType
 from arkindex_common.ml_tool import MLToolType
-from arkindex.project.tests import FixtureAPITestCase
-from arkindex.project.elastic import ESElement
-from arkindex.documents.models import DataSource
-from arkindex.documents.dates import DateType, InterpretedDate
 
 
 class TestESDocuments(FixtureAPITestCase):
diff --git a/arkindex/project/tests/test_gis.py b/arkindex/project/tests/test_gis.py
index 1d3a1962d5704d243cc1245c88646462278f51cf..04f9486aec3b89bddeb6f64f563a3f9e25cd9088 100644
--- a/arkindex/project/tests/test_gis.py
+++ b/arkindex/project/tests/test_gis.py
@@ -1,8 +1,9 @@
+from django.contrib.gis.geos import LinearRing, LineString, Point
 from psycopg2 import Binary
-from django.contrib.gis.geos import Point, LineString, LinearRing
-from arkindex.project.tests import FixtureTestCase
-from arkindex.project.gis import ensure_linear_ring
+
 from arkindex.images.models import Zone
+from arkindex.project.gis import ensure_linear_ring
+from arkindex.project.tests import FixtureTestCase
 
 
 class TestGis(FixtureTestCase):
diff --git a/arkindex/project/tests/test_ponos_view.py b/arkindex/project/tests/test_ponos_view.py
index 7205e7427f9f6f3baf97b6af0eada6bbef16d542..28e66f133fc5728fa69c7888b300325ffb4eb978 100644
--- a/arkindex/project/tests/test_ponos_view.py
+++ b/arkindex/project/tests/test_ponos_view.py
@@ -1,10 +1,12 @@
+import tempfile
+from unittest.mock import patch
+
 from django.test import TestCase, override_settings
 from django.urls import reverse
 from rest_framework import status
+
 from arkindex.users.models import User
 from ponos.models import Secret, encrypt
-from unittest.mock import patch
-import tempfile
 
 
 @override_settings(PONOS_PRIVATE_KEY='staging')
diff --git a/arkindex/project/tools.py b/arkindex/project/tools.py
index 144153e5041e1023b7a02240ba90fecebfcad003..cefd52d86fe410c0e6186bc4a6cf9fad1587347f 100644
--- a/arkindex/project/tools.py
+++ b/arkindex/project/tools.py
@@ -1,5 +1,7 @@
-from collections.abc import Sized, Iterable
+from collections.abc import Iterable, Sized
+
 from django.urls import reverse
+
 from arkindex.documents.models import Element
 
 
diff --git a/arkindex/project/triggers.py b/arkindex/project/triggers.py
index b326db6a7ed6ccd6e3bbc118d5e8c81a8a40c62b..2b69e9a92137665cdec9eaca5995c3635c46b47f 100644
--- a/arkindex/project/triggers.py
+++ b/arkindex/project/triggers.py
@@ -3,10 +3,12 @@ Helper methods to trigger tasks in asynchronous workers
 """
 from typing import Union
 from uuid import UUID
+
 from asgiref.sync import async_to_sync
 from channels.layers import get_channel_layer
 from django.conf import settings
-from arkindex.documents.models import Element, Corpus, Entity
+
+from arkindex.documents.models import Corpus, Element, Entity
 
 REINDEX_CHANNEL = 'reindex'
 ML_RESULTS_CHANNEL = 'ml_results'
diff --git a/arkindex/project/urls.py b/arkindex/project/urls.py
index 323122cfecf0fc9c103ba477d677035667e822d9..3bae5bdfff655dbb457d738262091ed5d54c8c3f 100644
--- a/arkindex/project/urls.py
+++ b/arkindex/project/urls.py
@@ -1,9 +1,10 @@
-from django.urls import path, include, re_path
 from django.conf import settings
 from django.contrib import admin
 from django.contrib.staticfiles.urls import staticfiles_urlpatterns
+from django.urls import include, path, re_path
+
 from arkindex.project.api_v1 import api
-from arkindex.project.views import FrontendView, CdnHome, OpenAPIDocsView, PonosSecretDetails
+from arkindex.project.views import CdnHome, FrontendView, OpenAPIDocsView, PonosSecretDetails
 
 # Fallback to the dummy frontend view when CDN_ASSETS_URL is not set
 frontend_view = FrontendView if settings.CDN_ASSETS_URL is None else CdnHome
diff --git a/arkindex/project/views.py b/arkindex/project/views.py
index 12bd2baff75f0769e1f388e04f7c3467239291fe..384c5596b5a8c49220cbe14431eb481bede9b94c 100644
--- a/arkindex/project/views.py
+++ b/arkindex/project/views.py
@@ -1,7 +1,8 @@
-from django.views.generic import View, TemplateView
 from django.conf import settings
-from arkindex.project.mixins import CachedViewMixin
+from django.views.generic import TemplateView, View
 from rest_framework import permissions
+
+from arkindex.project.mixins import CachedViewMixin
 from ponos.api import SecretDetails
 
 
diff --git a/arkindex/users/admin.py b/arkindex/users/admin.py
index d01704db6feca473ffe3b98946c86c7c3edcf4ae..0b240e09f57f794fb960ce29dd2f947860bfa1af 100644
--- a/arkindex/users/admin.py
+++ b/arkindex/users/admin.py
@@ -1,11 +1,11 @@
 from django import forms
 from django.contrib import admin
-from django.contrib.auth.models import Group
 from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
 from django.contrib.auth.forms import ReadOnlyPasswordHashField
+from django.contrib.auth.models import Group
 from enumfields.admin import EnumFieldListFilter
 
-from arkindex.users.models import User, CorpusRight, UserScope
+from arkindex.users.models import CorpusRight, User, UserScope
 
 
 class UserCreationForm(forms.ModelForm):
diff --git a/arkindex/users/api.py b/arkindex/users/api.py
index 252b1a6d4eb9ff1dcab967957a57e01f0e9d061d..516d6f4eb7a493e1844472f1f3544136bcf67ac6 100644
--- a/arkindex/users/api.py
+++ b/arkindex/users/api.py
@@ -1,31 +1,44 @@
-from django.urls import reverse
-from django.core.mail import send_mail
+import logging
+import urllib.parse
+
 from django.conf import settings
 from django.contrib.auth import login, logout
-from django.contrib.auth.tokens import default_token_generator
-from django.contrib.auth.mixins import UserPassesTestMixin
 from django.contrib.auth.forms import PasswordResetForm
-from django.views.generic import RedirectView
+from django.contrib.auth.mixins import UserPassesTestMixin
+from django.contrib.auth.tokens import default_token_generator
+from django.core.mail import send_mail
 from django.template.loader import render_to_string
+from django.urls import reverse
 from django.utils.http import urlsafe_base64_encode
+from django.views.generic import RedirectView
 from rest_framework import status
-from rest_framework.views import APIView
-from rest_framework.generics import \
-    ListAPIView, RetrieveAPIView, RetrieveDestroyAPIView, RetrieveUpdateDestroyAPIView, CreateAPIView, UpdateAPIView
+from rest_framework.exceptions import AuthenticationFailed, PermissionDenied, ValidationError
+from rest_framework.generics import (
+    CreateAPIView,
+    ListAPIView,
+    RetrieveAPIView,
+    RetrieveDestroyAPIView,
+    RetrieveUpdateDestroyAPIView,
+    UpdateAPIView,
+)
 from rest_framework.response import Response
-from rest_framework.exceptions import AuthenticationFailed, ValidationError, PermissionDenied
-from arkindex.project.permissions import IsAuthenticatedOrReadOnly, IsVerified
+from rest_framework.views import APIView
+
 from arkindex.documents.models import Corpus
-from arkindex.users.providers import oauth_providers, get_provider
-from arkindex.users.models import User, OAuthStatus, UserScope, Scope
+from arkindex.project.permissions import IsAuthenticatedOrReadOnly, IsVerified
+from arkindex.users.models import OAuthStatus, Scope, User, UserScope
+from arkindex.users.providers import get_provider, oauth_providers
 from arkindex.users.serializers import (
-    OAuthCredentialsSerializer, OAuthProviderClassSerializer, OAuthRetrySerializer,
-    UserSerializer, NewUserSerializer, EmailLoginSerializer,
-    PasswordResetSerializer, PasswordResetConfirmSerializer,
-    UpdateUserTranskribusSerializer
+    EmailLoginSerializer,
+    NewUserSerializer,
+    OAuthCredentialsSerializer,
+    OAuthProviderClassSerializer,
+    OAuthRetrySerializer,
+    PasswordResetConfirmSerializer,
+    PasswordResetSerializer,
+    UpdateUserTranskribusSerializer,
+    UserSerializer,
 )
-import urllib.parse
-import logging
 
 logger = logging.getLogger(__name__)
 
diff --git a/arkindex/users/migrations/0001_initial.py b/arkindex/users/migrations/0001_initial.py
index 12b91880531661c9e93b54972515a77002fe3d6e..f376013b9cc186767d0a97539de9f9e3414fb111 100644
--- a/arkindex/users/migrations/0001_initial.py
+++ b/arkindex/users/migrations/0001_initial.py
@@ -1,11 +1,13 @@
 # Generated by Django 2.2.9 on 2020-01-17 15:39
 
-import arkindex.users.models
-from django.conf import settings
-from django.db import migrations, models
+import uuid
+
 import django.db.models.deletion
 import enumfields.fields
-import uuid
+from django.conf import settings
+from django.db import migrations, models
+
+import arkindex.users.models
 
 
 def create_internal_group(apps, schema_editor):
diff --git a/arkindex/users/migrations/0002_userscope.py b/arkindex/users/migrations/0002_userscope.py
index 09e37d18b2984c143d4fee21cf3dea1a556d3652..d5cd0afdfa2b4ae7b875357954d920503ca50c36 100644
--- a/arkindex/users/migrations/0002_userscope.py
+++ b/arkindex/users/migrations/0002_userscope.py
@@ -1,10 +1,11 @@
 # Generated by Django 2.2.10 on 2020-04-30 10:56
 
-from arkindex.users.models import Scope
-from django.conf import settings
-from django.db import migrations, models
 import django.db.models.deletion
 import enumfields.fields
+from django.conf import settings
+from django.db import migrations, models
+
+from arkindex.users.models import Scope
 
 
 def add_scopes(apps, schema_editor):
diff --git a/arkindex/users/migrations/0004_internal_bool.py b/arkindex/users/migrations/0004_internal_bool.py
index 05d297e04123c2b27aaafadf8328021b26c90208..d9b9495ee72537bf14f3053c06eca65ccef4b552 100644
--- a/arkindex/users/migrations/0004_internal_bool.py
+++ b/arkindex/users/migrations/0004_internal_bool.py
@@ -1,7 +1,7 @@
 # Generated by Django 2.2.13 on 2020-07-21 08:00
 
-from django.db import migrations, models
 from django.conf import settings
+from django.db import migrations, models
 
 
 def group_to_bool(apps, schema_editor):
diff --git a/arkindex/users/models.py b/arkindex/users/models.py
index f4b1f7409c4b774f460280294582c078b62da1e1..dd01d6d03c35ddd3584bc881a6f934985fbd16d9 100644
--- a/arkindex/users/models.py
+++ b/arkindex/users/models.py
@@ -1,9 +1,11 @@
-from django.db import models
+import uuid
+
 from django.contrib.auth.models import AbstractBaseUser, Group
+from django.db import models
+from enumfields import Enum, EnumField
+
 from arkindex.users.managers import UserManager
-from arkindex.users.providers import oauth_providers, get_provider
-from enumfields import EnumField, Enum
-import uuid
+from arkindex.users.providers import get_provider, oauth_providers
 
 
 class User(AbstractBaseUser):
diff --git a/arkindex/users/providers.py b/arkindex/users/providers.py
index 2929f21297c5c9f6d105d41a2a0ca5f478244d94..6bfbfc895abc8c66732d4c8435a8d91474b95059 100644
--- a/arkindex/users/providers.py
+++ b/arkindex/users/providers.py
@@ -1,11 +1,12 @@
+import datetime
+import urllib.parse
 from abc import ABC, abstractmethod
+
+import requests
 from django.conf import settings
 from django.urls import reverse
-from rest_framework.exceptions import NotAuthenticated
 from gitlab import Gitlab, GitlabError
-import urllib.parse
-import datetime
-import requests
+from rest_framework.exceptions import NotAuthenticated
 
 
 class OAuthProvider(ABC):
diff --git a/arkindex/users/serializers.py b/arkindex/users/serializers.py
index 860616e07ed0ff7c0ed62ec632935c354035e8fa..1eaf15817cd3062fb3b544786ad57178e1b15c38 100644
--- a/arkindex/users/serializers.py
+++ b/arkindex/users/serializers.py
@@ -1,13 +1,15 @@
-from rest_framework import serializers
+import logging
+
 from django.conf import settings
+from django.contrib.auth.password_validation import validate_password
+from django.contrib.auth.tokens import default_token_generator
 from django.core.exceptions import ValidationError
 from django.utils.http import urlsafe_base64_decode
-from django.contrib.auth.tokens import default_token_generator
-from django.contrib.auth.password_validation import validate_password
-from arkindex.users.models import OAuthCredentials, OAuthStatus, User
+from rest_framework import serializers
+
 from arkindex.project.serializer_fields import EnumField
+from arkindex.users.models import OAuthCredentials, OAuthStatus, User
 from transkribus import TranskribusAPI
-import logging
 
 logging.basicConfig(
     level=logging.INFO,
diff --git a/arkindex/users/tests/test_acl.py b/arkindex/users/tests/test_acl.py
index 11a0a3de0f9719b7d6fe58f64f07381e67b597ce..3ca5d2473698f20a3ddf992c6f3c91458509f55d 100644
--- a/arkindex/users/tests/test_acl.py
+++ b/arkindex/users/tests/test_acl.py
@@ -1,5 +1,6 @@
-from django.test import TestCase
 from django.contrib.auth.models import AnonymousUser
+from django.test import TestCase
+
 from arkindex.documents.models import Corpus
 from arkindex.users.models import User
 
diff --git a/arkindex/users/tests/test_credentials.py b/arkindex/users/tests/test_credentials.py
index 320a72b994cf768af1c37d789fa46279aa7c62d7..ea59b03f9de18a6bdecf00b86b1e91e1607697c4 100644
--- a/arkindex/users/tests/test_credentials.py
+++ b/arkindex/users/tests/test_credentials.py
@@ -1,5 +1,6 @@
 from django.urls import reverse
 from rest_framework import status
+
 from arkindex.project.tests import FixtureTestCase
 from arkindex.users.models import OAuthStatus
 
diff --git a/arkindex/users/tests/test_gitlab_oauth.py b/arkindex/users/tests/test_gitlab_oauth.py
index 04805eb8beb9f5789590dec46021180fd231cebd..5a85cfd4b79caae6a042297b61fca2a202b36bd6 100644
--- a/arkindex/users/tests/test_gitlab_oauth.py
+++ b/arkindex/users/tests/test_gitlab_oauth.py
@@ -1,10 +1,12 @@
+import urllib.parse
+from unittest.mock import MagicMock, patch
+
+from django.http.request import HttpRequest
+from django.urls import reverse
+
 from arkindex.project.tests import FixtureTestCase
 from arkindex.users.models import OAuthStatus
 from arkindex.users.providers import GitLabOAuthProvider
-from django.http.request import HttpRequest
-from django.urls import reverse
-from unittest.mock import patch, MagicMock
-import urllib.parse
 
 
 class TestGitLabOAuthProvider(FixtureTestCase):
diff --git a/arkindex/users/tests/test_password_reset.py b/arkindex/users/tests/test_password_reset.py
index a5e1ad9ac3f0b86c69fd3d3d3ccdc9e9537a5685..10d4a9ae7617d70ce8cb5c36bd5df15a70f8037f 100644
--- a/arkindex/users/tests/test_password_reset.py
+++ b/arkindex/users/tests/test_password_reset.py
@@ -1,8 +1,10 @@
+from unittest.mock import call, patch
+
 from django.core import mail
 from django.urls import reverse
 from django.utils.http import urlsafe_base64_encode
 from rest_framework import status
-from unittest.mock import patch, call
+
 from arkindex.project.tests import FixtureAPITestCase
 
 
diff --git a/arkindex/users/tests/test_providers.py b/arkindex/users/tests/test_providers.py
index 82d47d48a748e1d4c5661f1d9bfe5d4693b84b46..7aad0e540637567873c312c48aab2e1d6e959624 100644
--- a/arkindex/users/tests/test_providers.py
+++ b/arkindex/users/tests/test_providers.py
@@ -1,9 +1,11 @@
+from unittest.mock import MagicMock
+
 from django.urls import reverse
+
 from arkindex.project.tests import FixtureTestCase
 from arkindex.users import providers
 from arkindex.users.models import OAuthStatus
 from arkindex.users.providers import get_provider
-from unittest.mock import MagicMock
 
 
 class TestProviders(FixtureTestCase):
diff --git a/arkindex/users/tests/test_registration.py b/arkindex/users/tests/test_registration.py
index e689aeca776151cc7a6848d5852fa1bae24a07e0..cb804ec43b23aafbbd37b8561758837cf150dea6 100644
--- a/arkindex/users/tests/test_registration.py
+++ b/arkindex/users/tests/test_registration.py
@@ -1,14 +1,16 @@
-from rest_framework import status
-from django.urls import reverse
-from django.core import mail
+import urllib.parse
+
 from django.contrib import auth
 from django.contrib.auth.tokens import default_token_generator
+from django.core import mail
 from django.test import override_settings
-from arkindex.project.tests import FixtureAPITestCase
-from arkindex.project.default_corpus import DEFAULT_CORPUS_TYPES
+from django.urls import reverse
+from rest_framework import status
+
 from arkindex.documents.models import Corpus
-from arkindex.users.models import User, Scope
-import urllib.parse
+from arkindex.project.default_corpus import DEFAULT_CORPUS_TYPES
+from arkindex.project.tests import FixtureAPITestCase
+from arkindex.users.models import Scope, User
 
 
 class TestRegistration(FixtureAPITestCase):
diff --git a/arkindex/users/tests/test_update_transkribus_email.py b/arkindex/users/tests/test_update_transkribus_email.py
index be59af9771d20c597e6f9bf90a840b6b0c216293..8bb9d2c61805d6a18aec1dac690fc8402cdad163 100644
--- a/arkindex/users/tests/test_update_transkribus_email.py
+++ b/arkindex/users/tests/test_update_transkribus_email.py
@@ -1,7 +1,9 @@
 from unittest.mock import patch
-from rest_framework import status
-from django.urls import reverse
+
 from django.test import override_settings
+from django.urls import reverse
+from rest_framework import status
+
 from arkindex.project.tests import FixtureAPITestCase
 
 
diff --git a/setup.py b/setup.py
index c1700ef178c54d08775431d7dd26438d5a9c79f6..fbb3eb848fae6ca81af452df48de9de134f51593 100755
--- a/setup.py
+++ b/setup.py
@@ -1,6 +1,7 @@
 #!/usr/bin/env python
 import os.path
-from setuptools import setup, find_packages
+
+from setuptools import find_packages, setup
 
 
 def _parse_requirement(line):