From d07ea6c3af44901289a1044db973e37e9b5a7dee Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Laur=C3=A9line=20Gu=C3=A9rin?= <zebuline@entrouvert.com>
Date: Thu, 17 Mar 2022 17:37:33 +0100
Subject: [PATCH 09/65] misc: fix no-name-in-module pylint error (#62099)

---
 passerelle/apps/api_particulier/models.py     | 3 ++-
 passerelle/apps/arcgis/models.py              | 2 +-
 passerelle/apps/arpege_ecp/models.py          | 2 +-
 passerelle/apps/astech/models.py              | 2 +-
 passerelle/apps/astregs/models.py             | 2 +-
 passerelle/apps/atal/models.py                | 2 +-
 passerelle/apps/atos_genesys/models.py        | 2 +-
 passerelle/apps/base_adresse/models.py        | 2 +-
 passerelle/apps/cartads_cs/models.py          | 2 +-
 passerelle/apps/cmis/models.py                | 2 +-
 passerelle/apps/cryptor/models.py             | 2 +-
 passerelle/apps/opendatasoft/models.py        | 3 ++-
 passerelle/apps/photon/models.py              | 2 +-
 passerelle/apps/vivaticket/models.py          | 2 +-
 passerelle/base/models.py                     | 2 +-
 passerelle/base/signature.py                  | 2 +-
 passerelle/contrib/grenoble_gru/models.py     | 2 +-
 passerelle/contrib/iparapheur/models.py       | 2 +-
 passerelle/contrib/isere_ens/models.py        | 2 +-
 passerelle/contrib/lille_kimoce/models.py     | 3 ++-
 passerelle/contrib/lille_urban_card/models.py | 2 +-
 passerelle/contrib/mdph13/models.py           | 2 +-
 passerelle/contrib/planitech/models.py        | 2 +-
 passerelle/contrib/solis_apa/models.py        | 2 +-
 passerelle/contrib/strasbourg_eu/models.py    | 2 +-
 passerelle/contrib/toulouse_smart/models.py   | 2 +-
 passerelle/utils/__init__.py                  | 2 +-
 passerelle/utils/http_authenticators.py       | 2 +-
 passerelle/utils/sftp.py                      | 2 +-
 passerelle/utils/soap.py                      | 3 ++-
 passerelle/utils/wcs.py                       | 2 +-
 passerelle/views.py                           | 2 +-
 tests/test_base_adresse.py                    | 2 +-
 tests/test_clicrdv.py                         | 3 ++-
 tests/test_cmis.py                            | 2 +-
 tests/test_csv_datasource.py                  | 2 +-
 tests/test_signature.py                       | 3 +--
 tests/test_tcl.py                             | 2 +-
 tests/utils.py                                | 2 +-
 tests/wcs/test_conftest.py                    | 3 ++-
 40 files changed, 46 insertions(+), 41 deletions(-)

diff --git a/passerelle/apps/api_particulier/models.py b/passerelle/apps/api_particulier/models.py
index a11f19cb..c5cb4928 100644
--- a/passerelle/apps/api_particulier/models.py
+++ b/passerelle/apps/api_particulier/models.py
@@ -29,11 +29,12 @@ except ImportError:
     JSONDecodeError = ValueError
 
 
+from urllib import parse
+
 from django.contrib.postgres.fields import ArrayField
 from django.core.cache import cache
 from django.db import models
 from django.utils import six
-from django.utils.six.moves.urllib import parse
 from django.utils.translation import ugettext_lazy as _
 
 from passerelle.base.models import BaseResource
diff --git a/passerelle/apps/arcgis/models.py b/passerelle/apps/arcgis/models.py
index 2761c79f..100e156f 100644
--- a/passerelle/apps/arcgis/models.py
+++ b/passerelle/apps/arcgis/models.py
@@ -15,13 +15,13 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 import string
+from urllib import parse as urlparse
 
 from django.core.exceptions import ValidationError
 from django.db import models
 from django.http import HttpResponse
 from django.shortcuts import get_object_or_404
 from django.urls import reverse
-from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.text import slugify
 from django.utils.translation import ugettext_lazy as _
 
diff --git a/passerelle/apps/arpege_ecp/models.py b/passerelle/apps/arpege_ecp/models.py
index 54227c16..68309d50 100644
--- a/passerelle/apps/arpege_ecp/models.py
+++ b/passerelle/apps/arpege_ecp/models.py
@@ -15,11 +15,11 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 import json
+from urllib import parse as urlparse
 
 from django.db import models
 from django.utils import six, timezone
 from django.utils.dateparse import parse_date, parse_time
-from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.translation import ugettext_lazy as _
 from requests import RequestException
 
diff --git a/passerelle/apps/astech/models.py b/passerelle/apps/astech/models.py
index b7b74abf..722cd39d 100644
--- a/passerelle/apps/astech/models.py
+++ b/passerelle/apps/astech/models.py
@@ -16,10 +16,10 @@
 
 import base64
 from collections import OrderedDict
+from urllib import parse as urlparse
 
 from django.core.cache import cache
 from django.db import models
-from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.translation import ugettext_lazy as _
 from requests.exceptions import ConnectionError
 
diff --git a/passerelle/apps/astregs/models.py b/passerelle/apps/astregs/models.py
index b249bc4c..2a2f8917 100644
--- a/passerelle/apps/astregs/models.py
+++ b/passerelle/apps/astregs/models.py
@@ -15,11 +15,11 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 import base64
+from urllib import parse as urlparse
 
 import zeep
 from django.db import models
 from django.http import Http404
-from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.translation import ugettext_lazy as _
 from zeep.helpers import serialize_object
 
diff --git a/passerelle/apps/atal/models.py b/passerelle/apps/atal/models.py
index 4d141817..8ce614d6 100644
--- a/passerelle/apps/atal/models.py
+++ b/passerelle/apps/atal/models.py
@@ -16,12 +16,12 @@
 
 import base64
 import binascii
+import urllib
 
 import lxml.etree
 from django.db import models
 from django.utils import dateformat, dateparse
 from django.utils.encoding import force_text
-from django.utils.six.moves import urllib
 from django.utils.translation import ugettext_lazy as _
 from zeep import helpers
 from zeep.exceptions import Fault
diff --git a/passerelle/apps/atos_genesys/models.py b/passerelle/apps/atos_genesys/models.py
index bec73049..22ecf1c0 100644
--- a/passerelle/apps/atos_genesys/models.py
+++ b/passerelle/apps/atos_genesys/models.py
@@ -16,12 +16,12 @@
 
 import datetime
 import xml.etree.ElementTree as ET
+from urllib import parse as urlparse
 
 import requests
 from django.contrib.postgres.fields import JSONField
 from django.db import models
 from django.utils import six
-from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.translation import ugettext_lazy as _
 
 from passerelle.base.models import BaseResource, HTTPResource
diff --git a/passerelle/apps/base_adresse/models.py b/passerelle/apps/base_adresse/models.py
index 1f7a1f12..fa51d0cf 100644
--- a/passerelle/apps/base_adresse/models.py
+++ b/passerelle/apps/base_adresse/models.py
@@ -1,5 +1,6 @@
 import datetime
 import gzip
+from urllib import parse as urlparse
 
 from django.contrib.postgres.fields import JSONField
 from django.db import connection, models
@@ -7,7 +8,6 @@ from django.db.models import Q
 from django.utils import six, timezone
 from django.utils.http import urlencode
 from django.utils.six import StringIO
-from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.translation import ugettext_lazy as _
 from requests import RequestException
 
diff --git a/passerelle/apps/cartads_cs/models.py b/passerelle/apps/cartads_cs/models.py
index 93668e2b..2e04fd0a 100644
--- a/passerelle/apps/cartads_cs/models.py
+++ b/passerelle/apps/cartads_cs/models.py
@@ -23,6 +23,7 @@ import random
 import re
 import zipfile
 from ftplib import FTP
+from urllib import parse as urlparse
 from xml.etree import ElementTree as etree
 
 import pdfrw
@@ -38,7 +39,6 @@ from django.db import models
 from django.http import HttpResponse
 from django.urls import reverse
 from django.utils.encoding import force_text
-from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.timezone import now
 from django.utils.translation import ugettext_lazy as _
 
diff --git a/passerelle/apps/cmis/models.py b/passerelle/apps/cmis/models.py
index 71765235..17975f46 100644
--- a/passerelle/apps/cmis/models.py
+++ b/passerelle/apps/cmis/models.py
@@ -19,6 +19,7 @@ import binascii
 import functools
 import re
 from contextlib import contextmanager
+from urllib import error as urllib2
 
 import httplib2
 from cmislib import CmisClient
@@ -32,7 +33,6 @@ from cmislib.exceptions import (
 from django.db import models
 from django.utils.functional import cached_property
 from django.utils.six import BytesIO
-from django.utils.six.moves.urllib import error as urllib2
 from django.utils.translation import ugettext_lazy as _
 
 from passerelle.base.models import BaseResource
diff --git a/passerelle/apps/cryptor/models.py b/passerelle/apps/cryptor/models.py
index ada3a6c3..bd5df306 100644
--- a/passerelle/apps/cryptor/models.py
+++ b/passerelle/apps/cryptor/models.py
@@ -18,6 +18,7 @@ import base64
 import binascii
 import json
 import os
+from urllib.parse import urljoin
 from uuid import uuid4
 
 from Cryptodome.Cipher import AES, PKCS1_OAEP
@@ -28,7 +29,6 @@ from django.core.exceptions import ValidationError
 from django.core.files.storage import default_storage
 from django.db import models
 from django.http import HttpResponse
-from django.utils.six.moves.urllib_parse import urljoin
 from django.utils.translation import ugettext_lazy as _
 
 from passerelle.base.models import BaseResource
diff --git a/passerelle/apps/opendatasoft/models.py b/passerelle/apps/opendatasoft/models.py
index b88bb402..de5f3a12 100644
--- a/passerelle/apps/opendatasoft/models.py
+++ b/passerelle/apps/opendatasoft/models.py
@@ -14,10 +14,11 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from urllib import parse as urlparse
+
 from django.db import models
 from django.shortcuts import get_object_or_404
 from django.urls import reverse
-from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.translation import ugettext_lazy as _
 from requests import RequestException
 
diff --git a/passerelle/apps/photon/models.py b/passerelle/apps/photon/models.py
index f12630aa..bc1d375a 100644
--- a/passerelle/apps/photon/models.py
+++ b/passerelle/apps/photon/models.py
@@ -16,12 +16,12 @@
 
 import hashlib
 import json
+from urllib import parse as urlparse
 
 from django.contrib.postgres.fields import JSONField
 from django.db import models
 from django.utils.encoding import force_bytes
 from django.utils.http import urlencode
-from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.translation import ugettext_lazy as _
 from requests import RequestException
 
diff --git a/passerelle/apps/vivaticket/models.py b/passerelle/apps/vivaticket/models.py
index 71ec0735..49d8b97d 100644
--- a/passerelle/apps/vivaticket/models.py
+++ b/passerelle/apps/vivaticket/models.py
@@ -15,10 +15,10 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 import hashlib
+from urllib import parse as urlparse
 
 from django.core.cache import cache
 from django.db import models
-from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.translation import ugettext_lazy as _
 
 from passerelle.base.models import BaseResource
diff --git a/passerelle/base/models.py b/passerelle/base/models.py
index 3b0675c2..d4b892b2 100644
--- a/passerelle/base/models.py
+++ b/passerelle/base/models.py
@@ -11,6 +11,7 @@ import sys
 import traceback
 import uuid
 from contextlib import contextmanager
+from urllib.parse import urlparse
 
 from django.apps import apps
 from django.conf import settings
@@ -28,7 +29,6 @@ from django.urls import reverse
 from django.utils import six, timezone
 from django.utils.encoding import force_text
 from django.utils.log import AdminEmailHandler
-from django.utils.six.moves.urllib.parse import urlparse
 from django.utils.text import slugify
 from django.utils.timezone import now
 from django.utils.translation import ugettext_lazy as _
diff --git a/passerelle/base/signature.py b/passerelle/base/signature.py
index 63b4a126..53d688b6 100644
--- a/passerelle/base/signature.py
+++ b/passerelle/base/signature.py
@@ -3,11 +3,11 @@ import datetime
 import hashlib
 import hmac
 import random
+from urllib import parse as urlparse
 
 from django.utils import six
 from django.utils.encoding import smart_bytes
 from django.utils.http import quote, urlencode
-from django.utils.six.moves.urllib import parse as urlparse
 
 '''Simple signature scheme for query strings'''
 # from http://git.entrouvert.org/hobo.git/tree/hobo/signature.py
diff --git a/passerelle/contrib/grenoble_gru/models.py b/passerelle/contrib/grenoble_gru/models.py
index 29028a20..8b491455 100644
--- a/passerelle/contrib/grenoble_gru/models.py
+++ b/passerelle/contrib/grenoble_gru/models.py
@@ -15,12 +15,12 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 import re
+from urllib import parse as urlparse
 
 from django.core.cache import cache
 from django.db import models
 from django.utils import dateparse
 from django.utils.http import urlencode
-from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.text import slugify
 from django.utils.translation import ugettext_lazy as _
 from lxml import etree
diff --git a/passerelle/contrib/iparapheur/models.py b/passerelle/contrib/iparapheur/models.py
index ef63427a..6908e39d 100644
--- a/passerelle/contrib/iparapheur/models.py
+++ b/passerelle/contrib/iparapheur/models.py
@@ -14,11 +14,11 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 import base64
+from urllib import parse
 
 from django.db import models
 from django.http import Http404, HttpResponse
 from django.utils.encoding import force_text
-from django.utils.six.moves.urllib import parse
 from django.utils.text import slugify
 from django.utils.translation import ugettext_lazy as _
 from requests.exceptions import ConnectionError
diff --git a/passerelle/contrib/isere_ens/models.py b/passerelle/contrib/isere_ens/models.py
index 8e71e117..10837825 100644
--- a/passerelle/contrib/isere_ens/models.py
+++ b/passerelle/contrib/isere_ens/models.py
@@ -16,11 +16,11 @@
 
 import datetime
 from collections import OrderedDict
+from urllib import parse as urlparse
 
 from django.core.cache import cache
 from django.db import models
 from django.utils.formats import date_format
-from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.translation import ugettext_lazy as _
 
 from passerelle.base.models import BaseResource, HTTPResource
diff --git a/passerelle/contrib/lille_kimoce/models.py b/passerelle/contrib/lille_kimoce/models.py
index ba873fc4..c46ee63c 100644
--- a/passerelle/contrib/lille_kimoce/models.py
+++ b/passerelle/contrib/lille_kimoce/models.py
@@ -15,9 +15,10 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
+from urllib.parse import urljoin
+
 from django.core.cache import cache
 from django.db import models
-from django.utils.six.moves.urllib_parse import urljoin
 from django.utils.translation import ugettext_lazy as _
 
 from passerelle.base.models import BaseResource
diff --git a/passerelle/contrib/lille_urban_card/models.py b/passerelle/contrib/lille_urban_card/models.py
index 2d7e0699..d65b9c46 100644
--- a/passerelle/contrib/lille_urban_card/models.py
+++ b/passerelle/contrib/lille_urban_card/models.py
@@ -17,9 +17,9 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 import re
+from urllib.parse import urljoin
 
 from django.db import models
-from django.utils.six.moves.urllib_parse import urljoin
 from django.utils.translation import ugettext_lazy as _
 
 from passerelle.base.models import BaseResource
diff --git a/passerelle/contrib/mdph13/models.py b/passerelle/contrib/mdph13/models.py
index d5e1233a..17873d19 100644
--- a/passerelle/contrib/mdph13/models.py
+++ b/passerelle/contrib/mdph13/models.py
@@ -18,11 +18,11 @@
 import base64
 import datetime
 import re
+from urllib import parse as urlparse
 
 import requests
 from django.db import models, transaction
 from django.utils import six
-from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.translation import ugettext_lazy as _
 
 from passerelle.base.models import BaseResource, HTTPResource
diff --git a/passerelle/contrib/planitech/models.py b/passerelle/contrib/planitech/models.py
index 46bd5651..89b5a25f 100644
--- a/passerelle/contrib/planitech/models.py
+++ b/passerelle/contrib/planitech/models.py
@@ -20,13 +20,13 @@ import json
 import re
 import uuid
 from datetime import date, datetime, time, timedelta
+from urllib import parse as urlparse
 
 from django.contrib.postgres.fields import JSONField
 from django.core.cache import cache
 from django.db import models, transaction
 from django.utils import dateformat, dateparse
 from django.utils.encoding import force_bytes
-from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.translation import ugettext_lazy as _
 from requests.exceptions import RequestException
 
diff --git a/passerelle/contrib/solis_apa/models.py b/passerelle/contrib/solis_apa/models.py
index e2124333..0b70ab15 100644
--- a/passerelle/contrib/solis_apa/models.py
+++ b/passerelle/contrib/solis_apa/models.py
@@ -16,10 +16,10 @@
 
 import json
 import re
+from urllib import parse as urlparse
 
 from django.core.cache import cache
 from django.db import models
-from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.translation import ugettext_lazy as _
 
 from passerelle.base.models import BaseResource
diff --git a/passerelle/contrib/strasbourg_eu/models.py b/passerelle/contrib/strasbourg_eu/models.py
index 4c676361..1172df0c 100644
--- a/passerelle/contrib/strasbourg_eu/models.py
+++ b/passerelle/contrib/strasbourg_eu/models.py
@@ -15,10 +15,10 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 import datetime
+from urllib import parse as urlparse
 
 from django.db import models
 from django.utils.encoding import force_text
-from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.translation import ugettext_lazy as _
 from requests import RequestException
 
diff --git a/passerelle/contrib/toulouse_smart/models.py b/passerelle/contrib/toulouse_smart/models.py
index 394e4495..a893a42a 100644
--- a/passerelle/contrib/toulouse_smart/models.py
+++ b/passerelle/contrib/toulouse_smart/models.py
@@ -17,6 +17,7 @@
 import base64
 import datetime
 import json
+from urllib import parse as urlparse
 from uuid import uuid4
 
 import lxml.etree as ET
@@ -27,7 +28,6 @@ from django.core.files.base import ContentFile
 from django.db import models
 from django.db.transaction import atomic
 from django.urls import reverse
-from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.text import slugify
 from django.utils.timezone import now
 from django.utils.translation import ugettext_lazy as _
diff --git a/passerelle/utils/__init__.py b/passerelle/utils/__init__.py
index 310fe3a5..8946e333 100644
--- a/passerelle/utils/__init__.py
+++ b/passerelle/utils/__init__.py
@@ -39,9 +39,9 @@ from django.views.generic.detail import SingleObjectMixin
 from requests import Response as RequestResponse
 from requests import Session as RequestSession
 from requests.adapters import HTTPAdapter
-from requests.packages.urllib3.util.retry import Retry
 from requests.structures import CaseInsensitiveDict
 from urllib3.exceptions import InsecureRequestWarning
+from urllib3.util.retry import Retry
 
 from passerelle.base.signature import check_query, check_url
 
diff --git a/passerelle/utils/http_authenticators.py b/passerelle/utils/http_authenticators.py
index a3313eac..3905bd01 100644
--- a/passerelle/utils/http_authenticators.py
+++ b/passerelle/utils/http_authenticators.py
@@ -18,10 +18,10 @@ import base64
 import hashlib
 import hmac
 import time
+from urllib import parse as urlparse
 from uuid import uuid4
 
 from django.utils.encoding import force_bytes, force_text
-from django.utils.six.moves.urllib import parse as urlparse
 from requests.auth import AuthBase
 
 
diff --git a/passerelle/utils/sftp.py b/passerelle/utils/sftp.py
index ca256fa0..0fb62c74 100644
--- a/passerelle/utils/sftp.py
+++ b/passerelle/utils/sftp.py
@@ -21,6 +21,7 @@ import io
 import json
 import os
 import re
+from urllib import parse as urlparse
 
 import paramiko
 from django import forms
@@ -28,7 +29,6 @@ from django.core import validators
 from django.db import models
 from django.utils import six
 from django.utils.encoding import force_bytes, force_text
-from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.translation import ugettext_lazy as _
 from paramiko.dsskey import DSSKey
 from paramiko.ecdsakey import ECDSAKey
diff --git a/passerelle/utils/soap.py b/passerelle/utils/soap.py
index a84b32a0..338fe860 100644
--- a/passerelle/utils/soap.py
+++ b/passerelle/utils/soap.py
@@ -14,7 +14,8 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-from django.utils.six.moves.urllib import parse as urlparse
+from urllib import parse as urlparse
+
 from requests import RequestException
 from zeep import Client
 from zeep.cache import InMemoryCache
diff --git a/passerelle/utils/wcs.py b/passerelle/utils/wcs.py
index cb16f104..efc67e1e 100644
--- a/passerelle/utils/wcs.py
+++ b/passerelle/utils/wcs.py
@@ -23,6 +23,7 @@ import copy
 import datetime
 import json
 import logging
+from urllib import parse as urlparse
 
 import isodate
 import requests
@@ -31,7 +32,6 @@ from django.conf import settings
 from django.core.cache import cache
 from django.db import models
 from django.utils import six
-from django.utils.six.moves.urllib import parse as urlparse
 
 from passerelle.base import signature
 
diff --git a/passerelle/views.py b/passerelle/views.py
index 91be751e..9031f46a 100644
--- a/passerelle/views.py
+++ b/passerelle/views.py
@@ -20,6 +20,7 @@ import inspect
 import json
 import logging
 import uuid
+from urllib.parse import quote
 
 from dateutil import parser as date_parser
 from django.apps import apps
@@ -35,7 +36,6 @@ from django.http import Http404, HttpResponse, HttpResponseRedirect
 from django.shortcuts import resolve_url
 from django.urls import reverse
 from django.utils.encoding import force_bytes, force_text
-from django.utils.six.moves.urllib.parse import quote
 from django.utils.timezone import is_naive, make_aware
 from django.utils.translation import ugettext_lazy as _
 from django.views.decorators.csrf import csrf_exempt
diff --git a/tests/test_base_adresse.py b/tests/test_base_adresse.py
index a0b6b111..9579308f 100644
--- a/tests/test_base_adresse.py
+++ b/tests/test_base_adresse.py
@@ -3,12 +3,12 @@
 import datetime
 import json
 import os
+from urllib.parse import urljoin
 
 import mock
 import pytest
 from django.core.management import call_command
 from django.core.management.base import CommandError
-from django.utils.six.moves.urllib.parse import urljoin
 from requests.exceptions import ConnectionError, HTTPError
 
 import tests.utils
diff --git a/tests/test_clicrdv.py b/tests/test_clicrdv.py
index a0a44077..5dd2d62d 100644
--- a/tests/test_clicrdv.py
+++ b/tests/test_clicrdv.py
@@ -1,7 +1,8 @@
+from urllib import parse as urlparse
+
 import mock
 import pytest
 from django.contrib.contenttypes.models import ContentType
-from django.utils.six.moves.urllib import parse as urlparse
 from requests.exceptions import HTTPError
 
 from passerelle.apps.clicrdv.models import ClicRdv
diff --git a/tests/test_cmis.py b/tests/test_cmis.py
index ef1e88de..eb3b1dab 100644
--- a/tests/test_cmis.py
+++ b/tests/test_cmis.py
@@ -2,6 +2,7 @@ import base64
 import os
 import re
 import xml.etree.ElementTree as ET
+from urllib import error as urllib2
 
 import httplib2
 import mock
@@ -18,7 +19,6 @@ from cmislib.exceptions import (
 from django.contrib.contenttypes.models import ContentType
 from django.urls import reverse
 from django.utils.encoding import force_bytes, force_text
-from django.utils.six.moves.urllib import error as urllib2
 from mock import Mock, call
 
 from passerelle.apps.cmis.models import CmisConnector
diff --git a/tests/test_csv_datasource.py b/tests/test_csv_datasource.py
index 7af94cee..b937929f 100644
--- a/tests/test_csv_datasource.py
+++ b/tests/test_csv_datasource.py
@@ -22,6 +22,7 @@ import time
 import uuid
 from posix import stat_result
 from stat import ST_MTIME
+from urllib.parse import urlencode
 
 import mock
 import pytest
@@ -35,7 +36,6 @@ from django.test import Client, override_settings
 from django.urls import reverse
 from django.utils.encoding import force_bytes, force_str, force_text
 from django.utils.six import StringIO
-from django.utils.six.moves.urllib.parse import urlencode
 from django.utils.timezone import now
 
 from passerelle.apps.csvdatasource.models import CsvDataSource, Query, TableRow, upload_to
diff --git a/tests/test_signature.py b/tests/test_signature.py
index 10b0248d..5aaf895e 100644
--- a/tests/test_signature.py
+++ b/tests/test_signature.py
@@ -1,6 +1,5 @@
 import datetime
-
-from django.utils.six.moves.urllib import parse as urllib
+from urllib import parse as urllib
 
 from passerelle.base import signature
 
diff --git a/tests/test_tcl.py b/tests/test_tcl.py
index 1b4ba1dc..305ef7f9 100644
--- a/tests/test_tcl.py
+++ b/tests/test_tcl.py
@@ -1,8 +1,8 @@
 import copy
+from urllib import parse as urlparse
 
 import mock
 import pytest
-from django.utils.six.moves.urllib import parse as urlparse
 
 import tests.utils
 from passerelle.contrib.tcl.models import Line, Stop, Tcl
diff --git a/tests/utils.py b/tests/utils.py
index 147de4b2..2ef9d3e7 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -1,10 +1,10 @@
 import json
+from urllib import parse as urlparse
 
 import httmock
 import mock
 from django.contrib.contenttypes.models import ContentType
 from django.urls import reverse
-from django.utils.six.moves.urllib import parse as urlparse
 
 from passerelle.base.models import AccessRight, ApiUser
 from passerelle.compat import json_loads
diff --git a/tests/wcs/test_conftest.py b/tests/wcs/test_conftest.py
index 28ee5e4e..5f6aedef 100644
--- a/tests/wcs/test_conftest.py
+++ b/tests/wcs/test_conftest.py
@@ -15,9 +15,10 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from urllib import parse as urlparse
+
 import pytest
 import requests
-from django.utils.six.moves.urllib import parse as urlparse
 
 
 def test_wcs_fixture(wcs_host):
-- 
2.34.1

