From 87253d5ab95f3dd627d3b7cbfb8b0e60e8251e57 Mon Sep 17 00:00:00 2001
From: Bastien Abadie <bastien@nextcairn.com>
Date: Thu, 29 Oct 2020 09:41:54 +0000
Subject: [PATCH] Apply isort through pre-commit

---
 .isort.cfg                                    |  11 ++
 .pre-commit-config.yaml                       |   8 ++
 arkindex/dataimport/admin.py                  |   3 +-
 arkindex/dataimport/api.py                    |  76 +++++++-----
 arkindex/dataimport/apps.py                   |   2 +-
 .../management/commands/import_s3.py          |  10 +-
 .../commands/update_repositories_hooks.py     |   4 +-
 .../dataimport/migrations/0001_initial.py     |  13 +-
 .../dataimport/migrations/0002_initial.py     |   2 +-
 .../dataimport/migrations/0003_initial.py     |   2 +-
 .../migrations/0006_revision_state.py         |   2 +-
 .../migrations/0007_worker_workerversion.py   |   8 +-
 .../dataimport/migrations/0008_add_gitref.py  |   8 +-
 .../0010_workerversion_docker_image.py        |   2 +-
 .../0011_refactor_payload_dataimport.py       |   3 +-
 .../migrations/0012_move_revision_state.py    |   5 +-
 .../migrations/0013_create_model_workerrun.py |   8 +-
 .../migrations/0014_dataimport_selection.py   |   5 +-
 .../migrations/0015_clear_payload.py          |   3 +-
 .../migrations/0019_repository_type.py        |   5 +-
 .../0020_null_corpus_repo_dataimport.py       |   2 +-
 .../0023_workerversion_constraint.py          |   1 +
 arkindex/dataimport/models.py                 |  27 ++--
 arkindex/dataimport/providers.py              |  15 +--
 arkindex/dataimport/serializers/files.py      |   5 +-
 arkindex/dataimport/serializers/git.py        |   3 +-
 arkindex/dataimport/serializers/imports.py    |  16 +--
 arkindex/dataimport/serializers/workers.py    |   8 +-
 arkindex/dataimport/signals.py                |   3 +-
 .../dataimport/tests/test_datafile_api.py     |   6 +-
 arkindex/dataimport/tests/test_files.py       |   8 +-
 .../dataimport/tests/test_gitlab_provider.py  |  24 ++--
 arkindex/dataimport/tests/test_import_s3.py   |   5 +-
 arkindex/dataimport/tests/test_imports.py     |  12 +-
 .../dataimport/tests/test_process_elements.py |   7 +-
 arkindex/dataimport/tests/test_providers.py   |   4 +-
 arkindex/dataimport/tests/test_repos.py       |   9 +-
 arkindex/dataimport/tests/test_signals.py     |   9 +-
 .../tests/test_transkribus_import.py          |  14 ++-
 arkindex/dataimport/tests/test_workerruns.py  |   8 +-
 arkindex/dataimport/tests/test_workers.py     |   5 +-
 .../dataimport/tests/test_workflows_api.py    |  11 +-
 arkindex/documents/admin.py                   |  20 ++-
 arkindex/documents/api/admin.py               |   5 +-
 arkindex/documents/api/elements.py            |  62 ++++++----
 arkindex/documents/api/entities.py            |  40 ++++--
 arkindex/documents/api/iiif.py                |  13 +-
 arkindex/documents/api/ml.py                  |  57 ++++++---
 arkindex/documents/api/search.py              |  14 ++-
 arkindex/documents/consumers.py               |  20 ++-
 arkindex/documents/date_parser.py             |   7 +-
 arkindex/documents/dates.py                   |   3 +-
 arkindex/documents/indexer.py                 |  12 +-
 .../management/commands/build_fixtures.py     |  20 +--
 .../documents/management/commands/delete.py   |   6 +-
 .../documents/management/commands/gunicorn.py |  10 +-
 .../management/commands/merge_types.py        |   3 +-
 .../documents/management/commands/reindex.py  |  10 +-
 .../documents/management/commands/telegraf.py |  12 +-
 arkindex/documents/managers.py                |   6 +-
 arkindex/documents/migrations/0001_initial.py |  12 +-
 arkindex/documents/migrations/0002_initial.py |   4 +-
 .../migrations/0005_element_source.py         |   2 +-
 .../migrations/0011_auto_20200403_1456.py     |   2 +-
 .../0012_add_created_updated_corpus.py        |   2 +-
 .../migrations/0013_datasource_type_length.py |   5 +-
 .../0014_nullable_transcription_zone.py       |   2 +-
 .../0015_elementtype_allowed_transcription.py |   5 +-
 .../documents/migrations/0016_selection.py    |   5 +-
 .../0018_worker_version_attributes.py         |   2 +-
 .../migrations/0019_corpus_repository.py      |   5 +-
 .../migrations/0021_move_transcriptions.py    |   1 +
 arkindex/documents/models.py                  |  26 ++--
 arkindex/documents/search.py                  |   6 +-
 arkindex/documents/serializers/admin.py       |   3 +-
 arkindex/documents/serializers/elements.py    |  25 ++--
 arkindex/documents/serializers/entities.py    |   6 +-
 .../documents/serializers/iiif/__init__.py    |   2 +-
 .../documents/serializers/iiif/annotations.py |   4 +-
 .../documents/serializers/iiif/manifests.py   |  11 +-
 arkindex/documents/serializers/light.py       |  11 +-
 arkindex/documents/serializers/ml.py          |  21 +++-
 arkindex/documents/serializers/search.py      |  10 +-
 arkindex/documents/signals.py                 |  18 ++-
 .../tests/commands/test_merge_types.py        |   5 +-
 .../documents/tests/commands/test_reindex.py  |  12 +-
 .../documents/tests/commands/test_telegraf.py |   8 +-
 .../tests/consumers/test_corpus_consumer.py   |  11 +-
 .../consumers/test_ml_results_consumer.py     |  12 +-
 .../tests/consumers/test_reindex_consumer.py  |  12 +-
 arkindex/documents/tests/test_admin_api.py    |   8 +-
 .../documents/tests/test_annotation_list.py   |   1 +
 .../tests/test_bulk_classification.py         |   7 +-
 .../tests/test_bulk_element_transcriptions.py |  14 ++-
 .../documents/tests/test_bulk_elements.py     |   5 +-
 .../tests/test_bulk_transcriptions.py         |   5 +-
 .../documents/tests/test_children_elements.py |   6 +-
 arkindex/documents/tests/test_classes.py      |   8 +-
 arkindex/documents/tests/test_corpus.py       |   7 +-
 .../tests/test_corpus_authorized_users.py     |   2 +-
 .../documents/tests/test_corpus_elements.py   |   8 +-
 .../documents/tests/test_create_elements.py   |   3 +-
 .../tests/test_create_transcriptions.py       |  14 ++-
 arkindex/documents/tests/test_datasource.py   |   3 +-
 arkindex/documents/tests/test_date_parser.py  |  14 ++-
 .../documents/tests/test_destroy_elements.py  |   1 +
 .../documents/tests/test_edit_elementpath.py  |   5 +-
 .../tests/test_edit_transcriptions.py         |   8 +-
 .../documents/tests/test_element_manager.py   |   2 +-
 .../documents/tests/test_element_paths_api.py |   3 +-
 arkindex/documents/tests/test_element_type.py |   3 +-
 arkindex/documents/tests/test_entities.py     |   6 +-
 arkindex/documents/tests/test_entities_api.py |  28 +++--
 arkindex/documents/tests/test_indexer.py      |   8 +-
 .../documents/tests/test_interpreted_date.py  |   3 +-
 arkindex/documents/tests/test_manifest.py     |   9 +-
 arkindex/documents/tests/test_metadata.py     |  16 +--
 arkindex/documents/tests/test_ml_results.py   |   8 +-
 arkindex/documents/tests/test_moderation.py   |  11 +-
 arkindex/documents/tests/test_neighbors.py    |   5 +-
 .../documents/tests/test_parents_elements.py  |   8 +-
 .../documents/tests/test_patch_elements.py    |   8 +-
 .../documents/tests/test_retrieve_elements.py |   8 +-
 arkindex/documents/tests/test_search.py       |  12 +-
 arkindex/documents/tests/test_search_api.py   |   6 +-
 .../documents/tests/test_selection_api.py     |   1 +
 .../documents/tests/test_transcriptions.py    |   7 +-
 arkindex/images/admin.py                      |   5 +-
 arkindex/images/api.py                        |  17 ++-
 .../management/commands/check_images.py       |   8 +-
 .../management/commands/deduplicate_zones.py  |   1 +
 arkindex/images/migrations/0001_initial.py    |  10 +-
 .../migrations/0002_checked_dimensions.py     |   3 +-
 .../images/migrations/0004_polygon_postgis.py |   5 +-
 .../images/migrations/0005_polygon_index.py   |   3 +-
 arkindex/images/models.py                     |  18 +--
 arkindex/images/serializers.py                |  14 ++-
 arkindex/images/tests/test_admin.py           |   3 +-
 arkindex/images/tests/test_check_images.py    |   8 +-
 arkindex/images/tests/test_image.py           |  10 +-
 arkindex/images/tests/test_image_api.py       |  16 +--
 arkindex/images/tests/test_image_elements.py  |   1 +
 arkindex/images/tests/test_imageserver.py     |   5 +-
 arkindex/images/tests/test_perform_check.py   |   8 +-
 arkindex/images/tests/test_thumbnail.py       |   6 +-
 arkindex/images/tests/test_zone.py            |   1 +
 arkindex/images/views.py                      |   5 +-
 arkindex/project/api_v1.py                    | 115 ++++++++++++++----
 arkindex/project/argparse.py                  |   5 +-
 arkindex/project/asgi.py                      |   1 +
 arkindex/project/aws.py                       |   9 +-
 arkindex/project/checks.py                    |   6 +-
 arkindex/project/config.py                    |   3 +-
 arkindex/project/default_corpus.py            |   1 -
 arkindex/project/elastic.py                   |   6 +-
 arkindex/project/fields.py                    |  10 +-
 arkindex/project/filters.py                   |   2 +-
 arkindex/project/gis.py                       |   8 +-
 arkindex/project/mixins.py                    |   3 +-
 arkindex/project/models.py                    |   3 +-
 arkindex/project/openapi/__init__.py          |   2 +-
 arkindex/project/openapi/generators.py        |   3 +-
 arkindex/project/openapi/schemas.py           |   3 +-
 arkindex/project/pagination.py                |   1 +
 arkindex/project/routing.py                   |   7 +-
 arkindex/project/serializer_fields.py         |   8 +-
 arkindex/project/settings.py                  |   6 +-
 arkindex/project/tests/__init__.py            |   1 +
 .../project/tests/openapi/test_generators.py  |   4 +-
 .../project/tests/openapi/test_schemas.py     |   8 +-
 arkindex/project/tests/openapi/test_view.py   |   4 +-
 arkindex/project/tests/test_argparse.py       |   5 +-
 arkindex/project/tests/test_aws_mixin.py      |   6 +-
 arkindex/project/tests/test_checks.py         |  13 +-
 arkindex/project/tests/test_config.py         |  10 +-
 .../tests/test_drf_linear_ring_field.py       |   6 +-
 arkindex/project/tests/test_elastic.py        |   9 +-
 arkindex/project/tests/test_gis.py            |   7 +-
 arkindex/project/tests/test_ponos_view.py     |   6 +-
 arkindex/project/tools.py                     |   4 +-
 arkindex/project/triggers.py                  |   4 +-
 arkindex/project/urls.py                      |   5 +-
 arkindex/project/views.py                     |   5 +-
 arkindex/users/admin.py                       |   4 +-
 arkindex/users/api.py                         |  49 +++++---
 arkindex/users/migrations/0001_initial.py     |  10 +-
 arkindex/users/migrations/0002_userscope.py   |   7 +-
 .../users/migrations/0004_internal_bool.py    |   2 +-
 arkindex/users/models.py                      |  10 +-
 arkindex/users/providers.py                   |   9 +-
 arkindex/users/serializers.py                 |  12 +-
 arkindex/users/tests/test_acl.py              |   3 +-
 arkindex/users/tests/test_credentials.py      |   1 +
 arkindex/users/tests/test_gitlab_oauth.py     |  10 +-
 arkindex/users/tests/test_password_reset.py   |   4 +-
 arkindex/users/tests/test_providers.py        |   4 +-
 arkindex/users/tests/test_registration.py     |  16 +--
 .../tests/test_update_transkribus_email.py    |   6 +-
 setup.py                                      |   3 +-
 199 files changed, 1156 insertions(+), 663 deletions(-)
 create mode 100644 .isort.cfg

diff --git a/.isort.cfg b/.isort.cfg
new file mode 100644
index 0000000000..54ca8ae31b
--- /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 b99ec0aed3..091bc17058 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 8e42617913..dd3089cc2e 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 cf0dc554d0..bff4120c4d 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 aea7c4df74..477837c0cd 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 d3b8e18ece..7f6731b5e7 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 f48ca97a44..0907f8db7c 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 e89683990c..d07191e968 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 610d158035..0d5e072952 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 5f52398b83..fa63754d93 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 e4ecf456c7..091e7bd490 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 66c9a2231b..0f7d0fc81d 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 1ab9b71b2f..1db18f4026 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 152e2ac3de..0ab7dd3c2b 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 886879af08..f81b77aeeb 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 38e6e22d03..2318d0dddc 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 a35b628db0..fde2aab956 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 7f50aa3e6e..49d2ca100e 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 477d48b6c8..7a55e51d44 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 a8583bbede..f7a5dba012 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 d7ef690ed1..a6360f51aa 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 374008d295..77c5077d08 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 19f703e1c3..21449e3f3a 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 dfe6de1ecc..b5e4e8f89f 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 90b68538cd..e353854a0e 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 e93ad96265..c232c37979 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 2b9d070e97..ffa1425acf 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 71d4405fb0..8033ca88c2 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 e5b50ca266..0c4ebad5ff 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 3b38fa9059..9c459904ba 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 9eb2458163..f2f708375c 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 0ce7da9fb8..779ac9ce89 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 3608bf4935..4e618aee22 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 a4327feeea..33fe9ab543 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 f0ad9808c2..c0bc419ebe 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 e67d56fbff..e93467fa36 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 282d4c5511..60b79b4426 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 783bc27d88..821c646a80 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 80cd348f10..ea8f869f6d 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 347e0eb84c..1528ca7309 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 0fe294824d..47754685d4 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 b43afb03ba..575f3364e5 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 7a42a6b9f3..17a0074e12 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 d951e80477..b08091dbfb 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 9a8bab749e..1d4993c36b 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 8a5f54a135..a4bd581e6a 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 230a5e6cae..5989b2a4e7 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 fd3820662c..5af95a01ff 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 436536e2a9..a5e36b77f8 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 d418884202..a29b81e4ea 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 4c300ba464..2f5635eca1 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 cc115abf53..18eb0244a9 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 ccc158a5af..e015bf1bc3 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 24bd321d0c..8873d20619 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 60091e292b..44c22f0d6b 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 1d3f4f6388..f7b94dbfa2 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 94ee533d24..3ec934d006 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 3632b44ac0..1b515b2f74 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 ebe490dbdc..53907b9f12 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 4888f5a8f2..6cae09fb32 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 914968e4ff..dcfbbe0782 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 6158dd2a58..fdafe7182b 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 06ca9da976..f29467f574 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 7795aef534..de7be88dc8 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 3f04474928..45ba4088ab 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 ea7be04414..93ff7fdd96 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 cf5fd62add..b85d8fd846 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 afd2a9bb5c..f29d0e89d6 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 74d14ab703..8f90a4ef6a 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 9d1973bb33..40cc88e89f 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 d4d393217f..fb14e5b85c 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 728be9aa5f..848eaeb99d 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 9f4386df43..2e454de3da 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 6c69a9713c..b96cb85edc 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 0377d233a1..42a605b8d4 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 b73d48845d..4afac14db2 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 21a0c6034b..8deca6f31a 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 3ed47c337b..0e9a7c7c35 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 0fdbb9fa99..a32a9129e9 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 a08f43f87f..094185915b 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 e2eda15d73..49f446ae6f 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 7fa83582f1..d172eea291 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 3b6a6dfce0..ef15692f1f 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 61d8498454..446c6f9c13 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 2486524d11..67d8eaf8e0 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 dfa0b73023..0531056f53 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 a9b4f9c2cd..f5ea443597 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 e677e2c4f2..af38dcf620 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 1612370bff..9d2af78941 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 bd5acb8496..c91253ffb6 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 63a1ec2c16..aa8c3f2ab6 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 d29f75add3..ac11c3bb92 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 9f6faa953d..1ab1261240 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 94f66aad33..a7b94ec640 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 935e6b3759..9d552e2f7e 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 12cb09e2b5..6d37196112 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 f46f6faeec..e78f7a0028 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 a6c2dfa5ea..6136b229d9 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 f46df8feb0..b816b02bd7 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 6d7ae7e261..a0efc0799d 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 2a348376ff..36b44551a8 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 232ce91875..607bbfbcb5 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 f3415b7063..80570f2470 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 b82c315706..2730d7ccaa 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 e4f2fdd5b6..cf148a8b3d 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 4ead708b08..a4e43612a3 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 ae344749ef..1c1ea24019 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 d2f0678a06..acd17b370b 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 85ef5adfeb..4c2908c6a7 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 6957cb0a3f..3df661dc6d 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 08e1c4acde..e756e189e2 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 bd8d6ab612..ba6efbf003 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 b6e201e63a..e081c5ce3c 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 1697c26932..52a7d9a9a2 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 8314bb3851..df3b490095 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 ca6133ccac..659e5d3517 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 57d4d05e64..9212a3bbe2 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 fa8ddd48c8..d16776edf1 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 e991bc8013..ead4c22466 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 1949e1ccaf..59cd2322cd 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 b3f3a5e5b5..6ad84a8a18 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 5ad5ea1f7d..0f89d059c3 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 3d7baaef44..aae92d1a99 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 26839b442a..dd001a2ef4 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 6345304c03..a0dab458ea 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 a3c18a0fbe..eadc93f9c2 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 e1d08bc7e2..45ab00b5b4 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 69d491dfe6..213d09ed4a 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 89ee53ab19..38ccf38a65 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 f0f13aa459..a2be73a1cf 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 ede6c2aa16..b260534834 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 26965253d5..383cecc5ad 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 2c5633b075..cca62ee91a 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 e2f38c687c..611952623c 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 9cd2b46f70..d1bbd3bd70 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 84661d312b..b66f923aac 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 60cf04785a..326e86e6e3 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 f33313eb31..c522cefa11 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 84c2f33ae5..f6a4a20d40 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 669997c6e8..2f6b8b7fb1 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 2cace6d16a..e3321c0c0a 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 1aeb63f827..94de6dbb1a 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 f2f1addd9a..83aa6afa1f 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 5a933aaa94..27beab081c 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 1ba75758c3..9854734867 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 da3e8a9b42..822cf2a36a 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 ecbda126d7..6715f4e82c 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 25a7b3cfa9..9ad8c723ee 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 8c096cb322..a05f27f255 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 1935930d65..a188f2de85 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 2e293084d0..245d8fb18d 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 805c1eb05b..c45297d03f 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 741710eaad..ef5c648631 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 0f47677f99..fa0cc889d2 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 b92db343c8..f5bb37c2f3 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 e4065e4ad5..1303a10dea 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 3a3f7245f1..c3c8e69f96 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 5e5de4e073..ce8f872f60 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 94c5d0b982..9cdd5994f4 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 f02672ba3f..4d3709b24b 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 389596710e..594bca8ae0 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 fa4f1ed7be..1b04022807 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 0c5b04720e..ae8c9c3e0c 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 14929b2bae..68c696a598 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 4fd1c1d76b..841bcbba29 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 4199a71d5a..c2409d620c 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 70d60dd8a2..17898cf5df 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 26beee4bfd..4f676e1da8 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 873220084f..46b40f9be4 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 bd682401b2..dc34385c80 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 8060fd6263..cc26bf2ba7 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 56ec4bc71e..20fefbec77 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 e8c8afa95e..a357fc7be1 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 78dc4690bc..c1a249e297 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 355f507446..cf5030d106 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 3a33b5a6b9..91c1dbe650 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 9f38e1d749..4407d5866e 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 1d3a1962d5..04f9486aec 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 7205e7427f..28e66f133f 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 144153e504..cefd52d86f 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 b326db6a7e..2b69e9a921 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 323122cfec..3bae5bdfff 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 12bd2baff7..384c5596b5 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 d01704db6f..0b240e09f5 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 252b1a6d4e..516d6f4eb7 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 12b9188053..f376013b9c 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 09e37d18b2..d5cd0afdfa 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 05d297e041..d9b9495ee7 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 f4b1f7409c..dd01d6d03c 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 2929f21297..6bfbfc895a 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 860616e07e..1eaf15817c 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 11a0a3de0f..3ca5d24736 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 320a72b994..ea59b03f9d 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 04805eb8be..5a85cfd4b7 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 a5e1ad9ac3..10d4a9ae76 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 82d47d48a7..7aad0e5406 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 e689aeca77..cb804ec43b 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 be59af9771..8bb9d2c618 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 c1700ef178..fbb3eb848f 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):
-- 
GitLab