diff --git a/radicale/app/__init__.py b/radicale/app/__init__.py
index bb46b3c..2f87efa 100644
--- a/radicale/app/__init__.py
+++ b/radicale/app/__init__.py
@@ -29,7 +29,6 @@ import datetime
import io
import logging
import pkg_resources
-import posixpath
import pprint
import random
import time
@@ -52,6 +51,8 @@ from radicale.app.put import ApplicationPutMixin
from radicale.app.report import ApplicationReportMixin
from radicale.log import logger
+import posixpath # isort:skip
+
VERSION = pkg_resources.get_distribution("radicale").version
diff --git a/radicale/app/get.py b/radicale/app/get.py
index 7b58a8b..71e4d51 100644
--- a/radicale/app/get.py
+++ b/radicale/app/get.py
@@ -17,13 +17,14 @@
# You should have received a copy of the GNU General Public License
# along with Radicale. If not, see .
-import posixpath
from http import client
from urllib.parse import quote
from radicale import httputils, pathutils, storage, xmlutils
from radicale.log import logger
+import posixpath # isort:skip
+
def propose_filename(collection):
"""Propose a filename for a collection."""
diff --git a/radicale/app/mkcalendar.py b/radicale/app/mkcalendar.py
index 42de870..a0b0048 100644
--- a/radicale/app/mkcalendar.py
+++ b/radicale/app/mkcalendar.py
@@ -17,7 +17,6 @@
# You should have received a copy of the GNU General Public License
# along with Radicale. If not, see .
-import posixpath
import socket
from http import client
@@ -26,6 +25,8 @@ from radicale import item as radicale_item
from radicale import pathutils, storage, xmlutils
from radicale.log import logger
+import posixpath # isort:skip
+
class ApplicationMkcalendarMixin:
def do_MKCALENDAR(self, environ, base_prefix, path, user):
diff --git a/radicale/app/mkcol.py b/radicale/app/mkcol.py
index 43e3945..0a7cdd4 100644
--- a/radicale/app/mkcol.py
+++ b/radicale/app/mkcol.py
@@ -17,7 +17,6 @@
# You should have received a copy of the GNU General Public License
# along with Radicale. If not, see .
-import posixpath
import socket
from http import client
@@ -26,6 +25,8 @@ from radicale import item as radicale_item
from radicale import pathutils, storage, xmlutils
from radicale.log import logger
+import posixpath # isort:skip
+
class ApplicationMkcolMixin:
def do_MKCOL(self, environ, base_prefix, path, user):
diff --git a/radicale/app/move.py b/radicale/app/move.py
index 79155b5..3e20df1 100644
--- a/radicale/app/move.py
+++ b/radicale/app/move.py
@@ -17,13 +17,14 @@
# You should have received a copy of the GNU General Public License
# along with Radicale. If not, see .
-import posixpath
from http import client
from urllib.parse import urlparse
from radicale import httputils, pathutils, storage
from radicale.log import logger
+import posixpath # isort:skip
+
class ApplicationMoveMixin:
def do_MOVE(self, environ, base_prefix, path, user):
diff --git a/radicale/app/propfind.py b/radicale/app/propfind.py
index f7bec9d..770772f 100644
--- a/radicale/app/propfind.py
+++ b/radicale/app/propfind.py
@@ -18,7 +18,6 @@
# along with Radicale. If not, see .
import itertools
-import posixpath
import socket
from http import client
from xml.etree import ElementTree as ET
@@ -26,6 +25,8 @@ from xml.etree import ElementTree as ET
from radicale import httputils, pathutils, rights, storage, xmlutils
from radicale.log import logger
+import posixpath # isort:skip
+
def xml_propfind(base_prefix, path, xml_request, allowed_items, user):
"""Read and answer PROPFIND requests.
diff --git a/radicale/app/put.py b/radicale/app/put.py
index 2938a25..25bad32 100644
--- a/radicale/app/put.py
+++ b/radicale/app/put.py
@@ -18,7 +18,6 @@
# along with Radicale. If not, see .
import itertools
-import posixpath
import socket
import sys
from http import client
@@ -30,6 +29,8 @@ from radicale import item as radicale_item
from radicale import pathutils, storage, xmlutils
from radicale.log import logger
+import posixpath # isort:skip
+
class ApplicationPutMixin:
def do_PUT(self, environ, base_prefix, path, user):
diff --git a/radicale/app/report.py b/radicale/app/report.py
index b6f6745..1f6abc8 100644
--- a/radicale/app/report.py
+++ b/radicale/app/report.py
@@ -18,7 +18,6 @@
# along with Radicale. If not, see .
import contextlib
-import posixpath
import socket
from http import client
from urllib.parse import unquote, urlparse
@@ -28,6 +27,8 @@ from radicale import httputils, pathutils, storage, xmlutils
from radicale.item import filter as radicale_filter
from radicale.log import logger
+import posixpath # isort:skip
+
def xml_report(base_prefix, path, xml_request, collection, unlock_storage_fn):
"""Read and answer REPORT requests.
diff --git a/radicale/pathutils.py b/radicale/pathutils.py
index 5faaa90..eee3e6d 100644
--- a/radicale/pathutils.py
+++ b/radicale/pathutils.py
@@ -18,9 +18,10 @@
import contextlib
import os
-import posixpath
import threading
+import posixpath # isort:skip
+
if os.name == "nt":
import ctypes
import ctypes.wintypes
diff --git a/radicale/storage/multifilesystem/discover.py b/radicale/storage/multifilesystem/discover.py
index e2992bf..f41cf35 100644
--- a/radicale/storage/multifilesystem/discover.py
+++ b/radicale/storage/multifilesystem/discover.py
@@ -18,11 +18,12 @@
import contextlib
import os
-import posixpath
from radicale import pathutils
from radicale.log import logger
+import posixpath # isort:skip
+
class CollectionDiscoverMixin:
@classmethod
diff --git a/radicale/tests/test_auth.py b/radicale/tests/test_auth.py
index 521e5d5..4aae5b7 100644
--- a/radicale/tests/test_auth.py
+++ b/radicale/tests/test_auth.py
@@ -26,12 +26,12 @@ import os
import shutil
import tempfile
-import pytest
-
from radicale import Application, config
from .test_base import BaseTest
+import pytest # isort:skip
+
class TestBaseAuthRequests(BaseTest):
"""Tests basic requests with auth.
diff --git a/radicale/tests/test_base.py b/radicale/tests/test_base.py
index 7749732..996a0f7 100644
--- a/radicale/tests/test_base.py
+++ b/radicale/tests/test_base.py
@@ -22,20 +22,21 @@ Radicale tests with simple requests.
import base64
import os
-import posixpath
import shutil
import sys
import tempfile
import xml.etree.ElementTree as ET
from functools import partial
-import pytest
-
from radicale import Application, config
from . import BaseTest
from .helpers import get_file_content
+import posixpath # isort:skip
+
+import pytest # isort:skip
+
class BaseRequestsMixIn:
"""Tests with simple requests."""
diff --git a/radicale/web/internal.py b/radicale/web/internal.py
index 7c9fa4a..de8b6ed 100644
--- a/radicale/web/internal.py
+++ b/radicale/web/internal.py
@@ -15,7 +15,6 @@
# along with Radicale. If not, see .
import os
-import posixpath
import time
from http import client
@@ -24,6 +23,8 @@ import pkg_resources
from radicale import httputils, pathutils, web
from radicale.log import logger
+import posixpath # isort:skip
+
MIMETYPES = {
".css": "text/css",
".eot": "application/vnd.ms-fontobject",