diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_LmdpdGxhYi1jaS55bWw=..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_LmdpdGxhYi1jaS55bWw= 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -28,6 +28,14 @@
   variables:
     PYLINT_FILES: odoo_scripts doc tests
 
+mypy:
+  needs:
+    - job: build-docker-image
+  image: $TEMP_IMAGE
+  script:
+    - python3 -m pip install mypy types-PyYAML types-psycopg2 types-python-dateutil types-requests
+    - mypy odoo_scripts tests
+
 unittest:
   needs: []
   stage: test
diff --git a/Dockerfile b/Dockerfile
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_RG9ja2VyZmlsZQ==..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_RG9ja2VyZmlsZQ== 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -12,6 +12,6 @@
 RUN set -x ;\
     apk add --no-cache --update zsh rsync postgresql-libs mercurial && \
     apk add --no-cache --virtual .build-deps gcc musl-dev postgresql-dev git && \
-    python3 -m pip install /usr/src/odoo_scripts[import_sql,conf2reST,source_control] && \
+    python3 -m pip install /usr/src/odoo_scripts[import_sql,conf2reST,source_control,import_base_import] && \
     apk --purge del .build-deps && \
     rm -rf /usr/src/odoo_scripts
diff --git a/NEWS.rst b/NEWS.rst
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_TkVXUy5yc3Q=..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_TkVXUy5yc3Q= 100644
--- a/NEWS.rst
+++ b/NEWS.rst
@@ -17,6 +17,10 @@
 
 Prettier is in Odoo 11 image, update docker_prettier accordingly.
 
+import_base_import is a new section as the base import is broken in recent version of Odoo due to the inability to get a CRCF token.
+
+Use mypy to check code type and help detect issues.
+
 16.10.0
 -------
 
diff --git a/README.rst b/README.rst
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_UkVBRE1FLnJzdA==..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_UkVBRE1FLnJzdA== 100644
--- a/README.rst
+++ b/README.rst
@@ -169,6 +169,8 @@
 
 import_jsonrpc tries to find an ``import.yaml`` file alongside any imported file. It will use the delimiter indicated in the file if it finds one and will add the context key to the context used in the jsonrpc calls.
 
+import_base_import is in the import_base_import section.
+
 import_sql
 ----------
 
diff --git a/odoo_scripts/__init__.py b/odoo_scripts/__init__.py
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_b2Rvb19zY3JpcHRzL19faW5pdF9fLnB5..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_b2Rvb19zY3JpcHRzL19faW5pdF9fLnB5 100644
--- a/odoo_scripts/__init__.py
+++ b/odoo_scripts/__init__.py
@@ -3,8 +3,11 @@
     # python 3.8+
     from importlib.metadata import PackageNotFoundError, version
 except ModuleNotFoundError:
-    from importlib_metadata import PackageNotFoundError, version
+    from importlib_metadata import (  # type: ignore[import,no-redef]
+        PackageNotFoundError,
+        version,
+    )
 
 try:
     __version__ = version("odoo-scripts")
 except PackageNotFoundError:
@@ -7,9 +10,9 @@
 
 try:
     __version__ = version("odoo-scripts")
 except PackageNotFoundError:
-    # package is not installed, default to something
-    __version__ = "16.10.0"
+    # package is not installed, default to the version maintained by bump2version
+    __version__ = "16.10.0.dev"
 
 __author__ = "XCG Consulting"
 
diff --git a/odoo_scripts/conf2reST.py b/odoo_scripts/conf2reST.py
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_b2Rvb19zY3JpcHRzL2NvbmYycmVTVC5weQ==..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_b2Rvb19zY3JpcHRzL2NvbmYycmVTVC5weQ== 100755
--- a/odoo_scripts/conf2reST.py
+++ b/odoo_scripts/conf2reST.py
@@ -6,6 +6,7 @@
 import os
 import subprocess
 import sys
+from typing import Dict
 
 import yaml
 
@@ -14,5 +15,5 @@
 
 _logger = logging.getLogger(__name__)
 
-__version__ = "1.1.0"
+__version__ = "1.1.1"
 __date__ = "2016-07-15"
@@ -18,5 +19,5 @@
 __date__ = "2016-07-15"
-__updated__ = "2022-01-28"
+__updated__ = "2022-12-16"
 
 
 def main(argv=None):  # IGNORE:C0111
@@ -84,7 +85,7 @@
             library, version = lib_and_version
         reqs[library] = {"version": version}
 
-    rst = {
+    rst: Dict[str, Dict[str, Dict[str, str]]] = {
         "python": reqs,
         "tools": {},
         "modules": {},
@@ -101,7 +102,7 @@
         for section in parser.sections():
             layout = parser.get(section, "layout")
             if layout == "odoo_scripts":
-                group = "tools"
+                group: str = "tools"
             elif any(layout == addon_dir for addon_dir in addon_dirs):
                 group = "group of modules"
             elif any(layout.startswith(addon_dir) for addon_dir in addon_dirs):
diff --git a/odoo_scripts/config.py b/odoo_scripts/config.py
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_b2Rvb19zY3JpcHRzL2NvbmZpZy5weQ==..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_b2Rvb19zY3JpcHRzL2NvbmZpZy5weQ== 100644
--- a/odoo_scripts/config.py
+++ b/odoo_scripts/config.py
@@ -7,7 +7,7 @@
 import sys
 from collections import defaultdict
 from glob import glob
-from typing import List, Optional
+from typing import Any, Dict, List, Optional, Union
 
 SECTION = "odoo_scripts"
 OTHER_SOURCES_KEY = "other_sources"
@@ -40,13 +40,13 @@
 
     def __init__(
         self,
-        path: str = None,
-        blacklist: str = None,
-        read: str = None,
-        parent_configuration=None,
-        registry: str = None,
+        path: str = ".",
+        blacklist: Optional[str] = None,
+        read: Optional[str] = None,
+        parent_configuration: Optional["Configuration"] = None,
+        registry: Optional[str] = None,
     ):
         """
         :param registry: use the provided registry instead of the one in the
         configuration file
         """
@@ -48,11 +48,11 @@
     ):
         """
         :param registry: use the provided registry instead of the one in the
         configuration file
         """
-        self._expanded_configuration = {}
-        self.path = path
-        setup_path = "setup.cfg"
+        self._expanded_configuration: Dict[Any, Configuration] = {}
+        self.path: str = path
+        setup_path: str = "setup.cfg"
         if path:
             setup_path = os.path.join(path, setup_path)
         config_parser = configparser.ConfigParser()
@@ -60,6 +60,8 @@
             _logger.warning("Missing %s", setup_path)
         else:
             config_parser.read(setup_path)
-        section = config_parser[SECTION] if SECTION in config_parser else {}
+        section: Union[configparser.SectionProxy, dict] = (
+            config_parser[SECTION] if SECTION in config_parser else {}
+        )
 
         # read expanded configurations information
@@ -64,6 +66,6 @@
 
         # read expanded configurations information
-        expanded_info = defaultdict(dict)
+        expanded_info: defaultdict[Any, Dict] = defaultdict(dict)
         for key in section:
             if key.startswith("expand."):
                 remaining_key = key.split(".")[1:]
@@ -127,6 +129,9 @@
             return True
 
         # those keys are path to files (glob compatible)
+        self.modules: List[str]
+        self.dependencies: List[str]
+        self.other_sources: List[str]
         for key in ("modules", "dependencies", OTHER_SOURCES_KEY):
             set_values = set()
             if toread(key):
@@ -149,4 +154,7 @@
             return a_key.replace("-", "_").replace(".", "_")
 
         # those keys are list of values
+        self.module_list: List[str]
+        self.module_list_tests: List[str]
+        self.pg_extensions: List[str]
         for key in ("module_list", "module_list_tests", "pg.extensions"):
@@ -152,6 +160,6 @@
         for key in ("module_list", "module_list_tests", "pg.extensions"):
-            value = []
+            value_list: List[str] = []
             formatted_key = key_format(key)
             if toread(key):
                 # add any expanded values
                 for config in self._expanded_configuration.values():
@@ -154,6 +162,6 @@
             formatted_key = key_format(key)
             if toread(key):
                 # add any expanded values
                 for config in self._expanded_configuration.values():
-                    value.extend(getattr(config, formatted_key))
+                    value_list.extend(getattr(config, formatted_key))
                 # add local values
@@ -159,3 +167,3 @@
                 # add local values
-                value.extend(section.get(key, "").split())
+                value_list.extend(section.get(key, "").split())
             # then set it
@@ -161,5 +169,5 @@
             # then set it
-            setattr(self, formatted_key, value)
+            setattr(self, formatted_key, value_list)
 
         # those keys are single string values, no expand
 
@@ -163,6 +171,11 @@
 
         # those keys are single string values, no expand
 
+        self.db_user: str
+        self.db_password: str
+        self.load_language: str
+        self.duplicate_repo: str
+        self.marabunta_migration_file: str
         for key in (
             "db_user",
             "db_password",
@@ -198,7 +211,7 @@
             if toread(key):
                 setattr(self, key, value)
 
-        self.registry = (
+        self.registry: Optional[str] = (
             section.get("registry", "registry.xcg.io") if registry is None else registry
         )
         project_path = os.path.realpath(".")
@@ -202,6 +215,6 @@
             section.get("registry", "registry.xcg.io") if registry is None else registry
         )
         project_path = os.path.realpath(".")
-        self.image = section.get("image", os.path.basename(project_path))
-        self.repository = f"{self.registry}/{self.image}"
+        self.image: str = section.get("image", os.path.basename(project_path))
+        self.repository: str = f"{self.registry}/{self.image}"
         """Registry and image name combination, read from the configuration file"""
@@ -207,4 +220,4 @@
         """Registry and image name combination, read from the configuration file"""
-        self.local_tag = "dev"
+        self.local_tag: str = "dev"
         """Tag used for local operations"""
         # Does not use repository as it is not meant to be pushed
@@ -209,6 +222,6 @@
         """Tag used for local operations"""
         # Does not use repository as it is not meant to be pushed
-        self.local_image = self.image
-        self.local_image_name = f"{self.local_image}:{self.local_tag}"
+        self.local_image: str = self.image
+        self.local_image_name: str = f"{self.local_image}:{self.local_tag}"
         """Full image name used for local operations (locally built, used for test and
         running)"""
@@ -213,9 +226,10 @@
         """Full image name used for local operations (locally built, used for test and
         running)"""
-        read_expanded("odoo_type", "odoo7")
+        self.odoo_type: str
+        read_expanded("odoo_type", ODOO_7)
         if not hasattr(self, "odoo_type"):
             # if path is set, odoo_type might not be in the values to read
             # so no message
             if not path:
                 _logger.warning("Missing odoo_type")
         elif self.odoo_type not in (
@@ -216,14 +230,14 @@
         if not hasattr(self, "odoo_type"):
             # if path is set, odoo_type might not be in the values to read
             # so no message
             if not path:
                 _logger.warning("Missing odoo_type")
         elif self.odoo_type not in (
-            "odoo7",
-            "odoo8",
-            "odoo10",
-            "odoo11",
-            "odoo13",
+            ODOO_7,
+            ODOO_8,
+            ODOO_10,
+            ODOO_11,
+            ODOO_13,
             ODOO_15,
         ):
             if path:
@@ -234,4 +248,5 @@
                 )
             else:
                 _logger.warning("Unexpected odoo_type: %s", self.odoo_type)
+        self.postgresql_version: str
         read_expanded("postgresql_version", "9.6")
@@ -237,6 +252,6 @@
         read_expanded("postgresql_version", "9.6")
-        self.start_py3o = section.get("start_py3o", "no") in ("yes", "true")
-        self.start_rednerd = section.get("start_rednerd", "no") in (
+        self.start_py3o: bool = section.get("start_py3o", "no") in ("yes", "true")
+        self.start_rednerd: bool = section.get("start_rednerd", "no") in (
             "yes",
             "true",
         )
@@ -240,4 +255,5 @@
             "yes",
             "true",
         )
+        self.rednerd_version: str
         read_expanded("rednerd_version", "latest")
@@ -243,4 +259,5 @@
         read_expanded("rednerd_version", "latest")
+        self.rednerd_repository: Optional[str]
         read_expanded("rednerd_repository", None)
 
 
@@ -249,7 +266,7 @@
     https://stackoverflow.com/questions/6760685/creating-a-singleton-in-python
     """
 
-    _instances = {}
+    _instances: Dict = {}
 
     def __call__(cls, *args, **kwargs):
         if cls not in cls._instances:
diff --git a/odoo_scripts/do_tests.py b/odoo_scripts/do_tests.py
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_b2Rvb19zY3JpcHRzL2RvX3Rlc3RzLnB5..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_b2Rvb19zY3JpcHRzL2RvX3Rlc3RzLnB5 100755
--- a/odoo_scripts/do_tests.py
+++ b/odoo_scripts/do_tests.py
@@ -22,5 +22,5 @@
 
 _logger = logging.getLogger(__name__)
 
-__version__ = "4.1.0"
+__version__ = "4.1.1"
 __date__ = "2018-04-13"
@@ -26,5 +26,5 @@
 __date__ = "2018-04-13"
-__updated__ = "2022-04-12"
+__updated__ = "2022-12-16"
 
 
 def main(argv=None):  # IGNORE:C0111
@@ -241,7 +241,7 @@
             args.append(dbport)
 
     apply_flake8(nmspc, odoo_type)
-    apply_isort(nmspc, odoo_type)
+    apply_isort(nmspc, config)
     if nmspc.log_handler:
         for lh in nmspc.log_handler:
             args.append("--log-handler")
diff --git a/odoo_scripts/docker_build.py b/odoo_scripts/docker_build.py
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_b2Rvb19zY3JpcHRzL2RvY2tlcl9idWlsZC5weQ==..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_b2Rvb19zY3JpcHRzL2RvY2tlcl9idWlsZC5weQ== 100644
--- a/odoo_scripts/docker_build.py
+++ b/odoo_scripts/docker_build.py
@@ -10,6 +10,7 @@
 import signal
 import sys
 from subprocess import call, check_output
+from typing import List
 
 from .config import Config
 from .docker_build_clean import clean
@@ -19,5 +20,5 @@
 
 _logger = logging.getLogger(__name__)
 
-__version__ = "1.2.0"
+__version__ = "1.2.1"
 __date__ = "2018-04-04"
@@ -23,5 +24,5 @@
 __date__ = "2018-04-04"
-__updated__ = "2022-01-27"
+__updated__ = "2022-12-16"
 
 
 def add_build_options(parser: argparse.ArgumentParser):
@@ -143,7 +144,7 @@
     signal.signal(signal.SIGTERM, signal_handler)
 
     # used to retag
-    tags = []
+    tags: List[str] = []
 
     buildargs = {}
     if os.path.exists(".hg"):
@@ -147,11 +148,11 @@
 
     buildargs = {}
     if os.path.exists(".hg"):
-        tags = check_output(["hg", "identify", "--tags"]).decode()
-        buildargs["VERSION"] = tags
-        buildargs["SENTRY_RELEASE"] = tags
-        if tags:
-            tags = tags.split()
+        tags_string = check_output(["hg", "identify", "--tags"]).decode()
+        buildargs["VERSION"] = tags_string
+        buildargs["SENTRY_RELEASE"] = tags_string
+        if tags_string:
+            tags = tags_string.split()
         buildargs["VCS_URL"] = check_output(["hg", "paths", "default"]).decode()
         buildargs["VCS_REF"] = check_output(["hg", "identify", "--id"]).decode()
     buildargs["BUILD_DATE"] = datetime.datetime.now().isoformat()
diff --git a/odoo_scripts/docker_build_doc.py b/odoo_scripts/docker_build_doc.py
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_b2Rvb19zY3JpcHRzL2RvY2tlcl9idWlsZF9kb2MucHk=..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_b2Rvb19zY3JpcHRzL2RvY2tlcl9idWlsZF9kb2MucHk= 100644
--- a/odoo_scripts/docker_build_doc.py
+++ b/odoo_scripts/docker_build_doc.py
@@ -5,6 +5,7 @@
 import logging
 import os
 import sys
+from typing import Optional
 
 from .config import Config
 from .docker_build import add_build_options, build_local_image, get_build_options
@@ -12,5 +13,5 @@
 from .docker_prettier import get_volumes
 from .parsing import apply, basic_parser
 
-__version__ = "1.0.0"
+__version__ = "1.0.1"
 __date__ = "2022-11-10"
@@ -16,5 +17,5 @@
 __date__ = "2022-11-10"
-__updated__ = "2022-11-10"
+__updated__ = "2022-12-05"
 
 _logger = logging.getLogger(__name__)
 
@@ -58,7 +59,7 @@
     )
 
 
-def apply_build_doc(namespace: argparse.Namespace, config: Config = None):
+def apply_build_doc(namespace: argparse.Namespace, config: Optional[Config] = None):
     """Run isort if the option was set."""
     if _DIR_DEST in namespace:
         return build_doc(
@@ -68,7 +69,7 @@
     return 0
 
 
-def build_doc(directory: str = "", config: Config = None):
+def build_doc(directory: str = "", config: Optional[Config] = None):
     """Run isort"""
     if config is None:
         config = Config()
diff --git a/odoo_scripts/docker_client.py b/odoo_scripts/docker_client.py
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_b2Rvb19zY3JpcHRzL2RvY2tlcl9jbGllbnQucHk=..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_b2Rvb19zY3JpcHRzL2RvY2tlcl9jbGllbnQucHk= 100644
--- a/odoo_scripts/docker_client.py
+++ b/odoo_scripts/docker_client.py
@@ -5,5 +5,5 @@
 import re
 import tarfile
 from multiprocessing import Process
-from typing import Any, Dict, List, Mapping, Optional, Pattern, Tuple
+from typing import Any, Collection, Dict, List, Mapping, Optional, Pattern, Tuple
 
@@ -9,8 +9,8 @@
 
-import docker
-import dockerpty
-from docker.models.containers import Container
-from docker.types import Mount
+import docker  # type: ignore[import]
+import dockerpty  # type: ignore[import]
+from docker.models.containers import Container  # type: ignore[import]
+from docker.types import Mount  # type: ignore[import]
 
 _logger = logging.getLogger(__name__)
 if docker.__version__ < "3.4.0":
@@ -26,7 +26,7 @@
 
     @classmethod
     def create_volume(
-        cls, volume_name: str, extra_labels: Dict[str, str] = None
+        cls, volume_name: str, extra_labels: Optional[Dict[str, str]] = None
     ) -> Tuple[docker.models.volumes.Volume, bool]:
         """Return the volume passed in parameter, creating it if it does not exist.
         :param volume_name: name of the volume to create
@@ -236,7 +236,7 @@
     return mount_list, mount_dict
 
 
-def anthem_mounts(project_path: str, pythons: Tuple[str]) -> List[Mount]:
+def anthem_mounts(project_path: str, pythons: Collection[str]) -> List[Mount]:
     """Return a list of monts for all the anthem songs present in the super project."""
     mounts: List[Mount] = []
     # also mount songs for anthem to avoid having to rebuild the image when they
diff --git a/odoo_scripts/docker_dev_start.py b/odoo_scripts/docker_dev_start.py
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_b2Rvb19zY3JpcHRzL2RvY2tlcl9kZXZfc3RhcnQucHk=..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_b2Rvb19zY3JpcHRzL2RvY2tlcl9kZXZfc3RhcnQucHk= 100755
--- a/odoo_scripts/docker_dev_start.py
+++ b/odoo_scripts/docker_dev_start.py
@@ -16,9 +16,9 @@
 from subprocess import call, check_output
 from typing import List
 
-import dockerpty
-from docker.errors import APIError
-from docker.types import Mount
+import dockerpty  # type: ignore[import]
+from docker.errors import APIError  # type: ignore[import]
+from docker.types import Mount  # type: ignore[import]
 from psycopg2 import OperationalError, connect
 from psycopg2.errors import DuplicateDatabase, DuplicateObject
 
@@ -47,5 +47,5 @@
 
 _logger = logging.getLogger(__name__)
 
-__version__ = "3.7.0"
+__version__ = "3.7.1"
 __date__ = "2017-08-11"
@@ -51,5 +51,5 @@
 __date__ = "2017-08-11"
-__updated__ = "2022-10-27"
+__updated__ = "2022-12-16"
 
 
 def __parser(project_name: str) -> ArgumentParser:
@@ -608,7 +608,7 @@
     else:
         local_ip = None
         try:
-            from netifaces import AF_INET, ifaddresses  # apt python3-netifaces
+            from netifaces import AF_INET, ifaddresses  # type: ignore[import]
 
             iface_name = "docker0"
             addresses = [
@@ -707,7 +707,7 @@
         )
         filestore_volume_name = "{}{}".format(base_data_volume_name, "_filestore")
         client.create_volume(filestore_volume_name, {"mounted in": target})
-        mounts.append(target, filestore_volume_name)
+        mounts.append(Mount(target, filestore_volume_name))
     else:
         data_volume_path = "/var/lib/data"
         mounts.append(Mount(data_volume_path, base_data_volume_name))
@@ -801,7 +801,7 @@
             if dbport:
                 _logger.warning("Ignoring given db_port when starting postgres")
             db_host = "/var/run/postgresql"
-            dbport = 5432
+            dbport = "5432"
             # Use socket rather than export port (avoid having to find a
             # free port number)
             pg, _stop_postgresql, socket_path = docker_run_postgresql(
@@ -1011,7 +1011,7 @@
                 dict(
                     user="postgres",
                     host=db_host,
-                    port=5432,
+                    port="5432",
                     password=POSTGRES_PASSWORD,
                 )
             )
@@ -1044,6 +1044,9 @@
             with connection.cursor() as cursor:
                 _logger.info("Creating extension hstore if necessary")
                 cursor.execute("CREATE EXTENSION IF NOT EXISTS hstore")
+        if config.rednerd_repository is None:
+            _logger.fatal("Missing rednerd image repository in configuration")
+            return 81
         redner_docker = DockerRednerd(
             DockerClient.client,
             project_name,
@@ -1108,7 +1111,7 @@
             arg.append(",".join(all_addons_dir))
 
     apply_flake8(nmspc, odoo_type)
-    apply_isort(nmspc, odoo_type)
+    apply_isort(nmspc, config)
     apply_pylint(nmspc)
 
     # developer mode options
diff --git a/odoo_scripts/docker_isort.py b/odoo_scripts/docker_isort.py
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_b2Rvb19zY3JpcHRzL2RvY2tlcl9pc29ydC5weQ==..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_b2Rvb19zY3JpcHRzL2RvY2tlcl9pc29ydC5weQ== 100644
--- a/odoo_scripts/docker_isort.py
+++ b/odoo_scripts/docker_isort.py
@@ -6,6 +6,7 @@
 import logging
 import os
 import sys
+from typing import Optional
 
 from .config import ODOO_7, ODOO_8, ODOO_9, ODOO_10, ODOO_11, ODOO_12, ODOO_13, Config
 from .docker_build import add_build_options, build_local_image, get_build_options
@@ -13,5 +14,5 @@
 from .docker_prettier import get_volumes
 from .parsing import apply, basic_parser
 
-__version__ = "3.0.0"
+__version__ = "3.0.1"
 __date__ = "2020-09-10"
@@ -17,5 +18,5 @@
 __date__ = "2020-09-10"
-__updated__ = "2022-11-02"
+__updated__ = "2022-12-05"
 
 _logger = logging.getLogger(__name__)
 _ISORT_DEST = "isort"
@@ -117,7 +118,7 @@
     )
 
 
-def apply_isort(namespace: argparse.Namespace, config: Config = None):
+def apply_isort(namespace: argparse.Namespace, config: Optional[Config] = None):
     """Run isort if the option was set."""
     if _ISORT_DEST in namespace and getattr(namespace, _ISORT_DEST):
         return isort(
@@ -141,7 +142,7 @@
     return apply_isort(nmspc, config=config)
 
 
-def isort(mode: str, directory: str = "", config: Config = None):
+def isort(mode: str, directory: str = "", config: Optional[Config] = None):
     """Run isort"""
     if config is None:
         config = Config()
diff --git a/odoo_scripts/docker_postgresql.py b/odoo_scripts/docker_postgresql.py
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_b2Rvb19zY3JpcHRzL2RvY2tlcl9wb3N0Z3Jlc3FsLnB5..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_b2Rvb19zY3JpcHRzL2RvY2tlcl9wb3N0Z3Jlc3FsLnB5 100644
--- a/odoo_scripts/docker_postgresql.py
+++ b/odoo_scripts/docker_postgresql.py
@@ -10,5 +10,5 @@
 import tempfile
 import time
 from functools import partial
-from typing import Callable, Tuple
+from typing import Callable, Optional, Tuple
 
@@ -14,5 +14,5 @@
 
-import docker
+import docker  # type: ignore[import]
 
 from .config import Config
 from .docker_client import DockerClient
@@ -20,5 +20,5 @@
 
 _logger = logging.getLogger(__name__)
 
-__version__ = "1.0.0"
+__version__ = "1.0.1"
 __date__ = "2020-11-09"
@@ -24,5 +24,5 @@
 __date__ = "2020-11-09"
-__updated__ = "2020-11-10"
+__updated__ = "2022-12-16"
 
 POSTGRES_PASSWORD = "this-could-be-anything"
 PSQL = "psql"
@@ -36,7 +36,7 @@
     postgresql_version: str,
     host_pg_port=None,
     stop_at_exit: bool = True,
-) -> Tuple[docker.models.containers.Container, Callable, str]:
+) -> Tuple[docker.models.containers.Container, Callable, Optional[str]]:
     """
 
     :param project_name:
@@ -54,9 +54,8 @@
     # need to pull otherwise the containers.create might fail
     docker_client.images.pull(repository=pg_repository, tag=version)
     pg_data_volume_name = "postgresql_{}-{}".format(postgresql_version, project_name)
-    path: str = None
-    env = {}
-    env["POSTGRES_PASSWORD"] = POSTGRES_PASSWORD
+    path: Optional[str] = None
+    env = {"POSTGRES_PASSWORD": POSTGRES_PASSWORD}
 
     def stop_postgresql(pg_container: docker.models.containers.Container):
         # TODO test if still exists
@@ -76,6 +75,5 @@
     for container in docker_client.containers.list():
         if name == container.name:
             _logger.info("Postgresql Container already running")
-            source = None
             for mount_dict in container.attrs["Mounts"]:
                 if mount_dict["Destination"] == "/var/run/postgresql":
@@ -80,7 +78,8 @@
             for mount_dict in container.attrs["Mounts"]:
                 if mount_dict["Destination"] == "/var/run/postgresql":
-                    source = mount_dict["Source"]
-            return container, partial(stop_postgresql, container), source
+                    path = str(mount_dict["Source"])
+            return container, partial(stop_postgresql, container), path
+
     volumes = {
         pg_data_volume_name: {
             "bind": "/var/lib/postgresql/data",
diff --git a/odoo_scripts/docker_pylint.py b/odoo_scripts/docker_pylint.py
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_b2Rvb19zY3JpcHRzL2RvY2tlcl9weWxpbnQucHk=..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_b2Rvb19zY3JpcHRzL2RvY2tlcl9weWxpbnQucHk= 100644
--- a/odoo_scripts/docker_pylint.py
+++ b/odoo_scripts/docker_pylint.py
@@ -6,5 +6,5 @@
 import logging
 import os
 import sys
-from typing import Dict, List
+from typing import Dict, List, Tuple
 
@@ -10,5 +10,5 @@
 
-from docker.types import Mount
+from docker.types import Mount  # type: ignore[import]
 
 from .config import ODOO_7, ODOO_8, ODOO_10, ODOO_11, ODOO_13, ODOO_15, Config
 from .docker_build import add_build_options, build_local_image, get_build_options
@@ -86,6 +86,7 @@
     environment = {}
     target_source_dict: Dict[str, str] = {}
 
+    pythons: Tuple
     # odoo configuration is not read so put the modules in the path
     if odoo_type in (ODOO_10, ODOO_11, ODOO_13, ODOO_15):
         if odoo_type == ODOO_10:
diff --git a/odoo_scripts/docker_rednerd.py b/odoo_scripts/docker_rednerd.py
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_b2Rvb19zY3JpcHRzL2RvY2tlcl9yZWRuZXJkLnB5..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_b2Rvb19zY3JpcHRzL2RvY2tlcl9yZWRuZXJkLnB5 100644
--- a/odoo_scripts/docker_rednerd.py
+++ b/odoo_scripts/docker_rednerd.py
@@ -11,6 +11,6 @@
 import tempfile
 import time
 from multiprocessing import Process
-from typing import Optional
+from typing import Dict, List, Optional
 from urllib.parse import quote
 
@@ -15,4 +15,4 @@
 from urllib.parse import quote
 
-import docker
+import docker  # type: ignore[import]
 import requests
@@ -18,6 +18,6 @@
 import requests
-import requests_unixsocket
-from docker.types import Mount
+import requests_unixsocket  # type: ignore[import]
+from docker.types import Mount  # type: ignore[import]
 
 from .config import Config
 from .docker_client import DockerClient
@@ -88,7 +88,7 @@
         # db_password can be none, in that case expect that any password would work
         super().__init__()
         self.name = f"rednerd_{project_name}"
-        self.repository = repository
+        self.repository: str = repository
         self.version = version
         self.attach = attach
         self.base_image = f"{self.repository}:{self.version}"
@@ -128,7 +128,7 @@
         self.force_pull = force_pull
         self.api_key = None
         """Store the API key"""
-        self._log_process = None
+        self._log_process: Optional[Process] = None
 
     def start(self):
         """Start rednerd container"""
@@ -141,5 +141,8 @@
             # stop and remove
             self.stop_and_remove()
         # base parameters for container creation
+        ports: Dict[str, str] = {}
+        volumes: Dict[str, Dict[str, str]] = {}
+        mounts: List[Mount] = []
         create_param = dict(
             name=self.name,
@@ -144,4 +147,4 @@
         create_param = dict(
             name=self.name,
-            ports=dict(),
+            ports=ports,
             environment=self.environment,
@@ -147,6 +150,6 @@
             environment=self.environment,
-            volumes=dict(),
-            mounts=[],
+            volumes=volumes,
+            mounts=mounts,
             network_mode="host",
         )
         if self.db_is_socket_path:
@@ -150,7 +153,7 @@
             network_mode="host",
         )
         if self.db_is_socket_path:
-            create_param["mounts"].append(Mount(self.db_host, self.db_host, "bind"))
+            mounts.append(Mount(self.db_host, self.db_host, "bind"))
         # migrate
         _logger.info("migrate")
         DockerClient.run(
@@ -170,6 +173,6 @@
             )
         # serve
         create_param["image"] = self.base_image
-        create_param["command"] = [SERVE, "--token-secret", self.name]
+        command = [SERVE, "--token-secret", self.name]
         schemes = []
         if hasattr(self, "redner_port"):
@@ -174,5 +177,5 @@
         schemes = []
         if hasattr(self, "redner_port"):
-            create_param["command"].extend(["--port", str(self.redner_port)])
+            command.extend(["--port", str(self.redner_port)])
             schemes.append("http")
         if hasattr(self, "socket_path"):
@@ -177,6 +180,6 @@
             schemes.append("http")
         if hasattr(self, "socket_path"):
-            create_param["command"].extend(["--socket-path", self.socket_path])
+            command.extend(["--socket-path", self.socket_path])
             schemes.append("unix")
             _logger.info("Using socket %s", self.socket_path)
         if schemes:
@@ -180,6 +183,7 @@
             schemes.append("unix")
             _logger.info("Using socket %s", self.socket_path)
         if schemes:
-            create_param["command"].extend(["--scheme", ",".join(schemes)])
+            command.extend(["--scheme", ",".join(schemes)])
+        create_param["command"] = command
         if hasattr(self, "redner_port"):
             # useless when using --network=host
@@ -184,5 +188,5 @@
         if hasattr(self, "redner_port"):
             # useless when using --network=host
-            create_param["ports"][f"{self.redner_port}/tcp"] = self.redner_port
+            ports[f"{self.redner_port}/tcp"] = self.redner_port
             _logger.info("Using port %d", self.redner_port)
         if hasattr(self, "socket_dir"):
@@ -187,6 +191,6 @@
             _logger.info("Using port %d", self.redner_port)
         if hasattr(self, "socket_dir"):
-            create_param["volumes"][self.socket_dir] = {
+            volumes[self.socket_dir] = {
                 "bind": self.socket_dir,
                 "mode": "rw",
             }
@@ -194,8 +198,8 @@
         _logger.info("Starting container %s", self.name)
         _logger.debug(create_param)
         self.container.start()
-        session = None
-        base_url = None
+        session: requests.sessions.Session
+        base_url: str
         if hasattr(self, "socket_path"):
             session = requests_unixsocket.Session()
             base_url = "http+unix://{}".format(quote(self.socket_path, safe=""))
@@ -471,6 +475,9 @@
     rednerd_version = config.rednerd_version
     rednerd_repository = config.rednerd_repository
 
+    if rednerd_repository is None:
+        _logger.fatal("Missing repository name for rednerd image")
+        return 81
     # Instantiate docker rednerd
     docker_rednerd = DockerRednerd(
         DockerClient.client,
diff --git a/odoo_scripts/import_base_import.py b/odoo_scripts/import_base_import.py
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_b2Rvb19zY3JpcHRzL2ltcG9ydF9iYXNlX2ltcG9ydC5weQ==..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_b2Rvb19zY3JpcHRzL2ltcG9ydF9iYXNlX2ltcG9ydC5weQ== 100755
--- a/odoo_scripts/import_base_import.py
+++ b/odoo_scripts/import_base_import.py
@@ -8,7 +8,7 @@
 from datetime import datetime
 from typing import Dict, List
 
-from requests_toolbelt import MultipartEncoder
+from requests_toolbelt import MultipartEncoder  # type: ignore[import]
 
 from . import odoo_connect_parser, odoo_login
 from .importing import add_importing_file_parsing, extract_model_lang_from_parsed
diff --git a/odoo_scripts/import_jsonrpc.py b/odoo_scripts/import_jsonrpc.py
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_b2Rvb19zY3JpcHRzL2ltcG9ydF9qc29ucnBjLnB5..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_b2Rvb19zY3JpcHRzL2ltcG9ydF9qc29ucnBjLnB5 100644
--- a/odoo_scripts/import_jsonrpc.py
+++ b/odoo_scripts/import_jsonrpc.py
@@ -5,7 +5,7 @@
 import logging
 import sys
 from os import path
-from typing import Callable, Dict, List, Tuple, Union
+from typing import Any, Callable, Dict, List, Optional, Tuple, Union
 
 import yaml
 from dateutil.parser import isoparse
@@ -9,7 +9,7 @@
 
 import yaml
 from dateutil.parser import isoparse
-from odoorpc.error import RPCError
+from odoorpc.error import RPCError  # type: ignore[import]
 
 from .importing import add_importing_file_parsing, extract_model_lang_from_parsed
 from .odoo import odoo_connect_parser, odoo_login
@@ -17,5 +17,5 @@
 
 _logger = logging.getLogger(__name__)
 
-__version__ = "1.2.1"
+__version__ = "1.2.2"
 __date__ = "2020-02-17"
@@ -21,5 +21,5 @@
 __date__ = "2020-02-17"
-__updated__ = "2022-01-25"
+__updated__ = "2022-12-16"
 
 
 def import_with_jsonrpc(
@@ -32,7 +32,7 @@
     timeout: int,
     model_filenames: List[Dict[str, str]],
     delimiter: str = ",",
-    extra_context: Dict[str, str] = None,
+    extra_context: Optional[Dict[str, str]] = None,
     allow_import_errors: bool = False,
     allow_missing_refs: bool = False,
 ) -> int:
@@ -192,7 +192,7 @@
             )
             # stored in this dict is the name of the odoo field and
             # a conversion method for data
-            headers: Dict[str, Tuple[str, Callable]] = {}
+            headers: Dict[str, Tuple[str, Callable[[Any], Any]]] = {}
             for row in reader:
                 if not headers:
                     _logger.debug("Reading from headers")
@@ -210,6 +210,7 @@
                                 odoo_field_name,
                                 ttype,
                             )
+                            converter: Callable[[Any], Any]
                             if ttype == "boolean":
                                 converter = _convert_bool
                             elif ttype in (
diff --git a/odoo_scripts/import_sql.py b/odoo_scripts/import_sql.py
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_b2Rvb19zY3JpcHRzL2ltcG9ydF9zcWwucHk=..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_b2Rvb19zY3JpcHRzL2ltcG9ydF9zcWwucHk= 100644
--- a/odoo_scripts/import_sql.py
+++ b/odoo_scripts/import_sql.py
@@ -4,10 +4,10 @@
 import csv
 import logging
 import sys
-from typing import List, Tuple
+from typing import Dict, List
 
 from .importing import add_importing_file_parsing, extract_model_table_from_parsed
 from .postgres import postgres_apply, postgres_connect_parser
 
 _logger = logging.getLogger(__name__)
 
@@ -8,8 +8,8 @@
 
 from .importing import add_importing_file_parsing, extract_model_table_from_parsed
 from .postgres import postgres_apply, postgres_connect_parser
 
 _logger = logging.getLogger(__name__)
 
-__version__ = "1.1.0"
+__version__ = "1.1.1"
 __date__ = "2020-06-08"
@@ -15,5 +15,5 @@
 __date__ = "2020-06-08"
-__updated__ = "2022-01-18"
+__updated__ = "2022-12-16"
 
 
 def _execute(cursor, query, parameters):
@@ -34,8 +34,8 @@
 
 
 def sql_import(
-    connection, table_filenames: List[Tuple[str, str]], delimiter: str
+    connection, table_filenames: List[Dict[str, str]], delimiter: str
 ) -> None:
     # quick check to fail quicker
     with connection.cursor() as cur:
         for element in table_filenames:
@@ -38,8 +38,8 @@
 ) -> None:
     # quick check to fail quicker
     with connection.cursor() as cur:
         for element in table_filenames:
-            model = element["model"]
+            model: str = element["model"]
             csv_file = element["filename"]
             if "table" in element and element["table"]:
                 table = element["table"]
diff --git a/odoo_scripts/importing.py b/odoo_scripts/importing.py
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_b2Rvb19zY3JpcHRzL2ltcG9ydGluZy5weQ==..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_b2Rvb19zY3JpcHRzL2ltcG9ydGluZy5weQ== 100644
--- a/odoo_scripts/importing.py
+++ b/odoo_scripts/importing.py
@@ -4,7 +4,7 @@
 import logging
 import os
 import re
-from typing import Dict, List
+from typing import Dict, List, Optional
 
 _logger = logging.getLogger(__name__)
 
@@ -18,7 +18,7 @@
 
 
 def extract_model_lang_from_parsed(
-    namespace: argparse.Namespace, expected_filenames: str = None
+    namespace: argparse.Namespace, expected_filenames: Optional[str] = None
 ) -> List[Dict[str, str]]:
     pattern = re.compile(
         r"(?P<filename>"
diff --git a/odoo_scripts/list_modules.py b/odoo_scripts/list_modules.py
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_b2Rvb19zY3JpcHRzL2xpc3RfbW9kdWxlcy5weQ==..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_b2Rvb19zY3JpcHRzL2xpc3RfbW9kdWxlcy5weQ== 100644
--- a/odoo_scripts/list_modules.py
+++ b/odoo_scripts/list_modules.py
@@ -1,9 +1,5 @@
 #!/usr/bin/env python3
 """Create the file odoo_modules_list from setup.cfg
 """
-# vim: set shiftwidth=4 softtabstop=4:
-#
-# template version 2.7
-
 import logging
 import sys
@@ -8,5 +4,6 @@
 import logging
 import sys
+from typing import List
 
 from .config import Config
 from .parsing import apply, basic_parser
@@ -15,5 +12,5 @@
 
 _logger = logging.getLogger(__name__)
 
-__version__ = "1.0.3"
+__version__ = "1.0.4"
 __date__ = "2020-02-26"
@@ -19,4 +16,4 @@
 __date__ = "2020-02-26"
-__updated__ = "2020-09-11"
+__updated__ = "2022-12-16"
 
 
@@ -21,4 +18,4 @@
 
 
-def main(argv=None):  # IGNORE:C0111
+def main(argv: List[str]) -> int:  # IGNORE:C0111
     """Parse arguments and launch conversion"""
@@ -24,9 +21,4 @@
     """Parse arguments and launch conversion"""
-    if argv is None:
-        argv = sys.argv
-    else:
-        sys.argv.extend(argv)
-
     program_version = __version__
     program_build_date = str(__updated__)
     program_version_message = "%%(prog)s %s (%s)" % (
@@ -37,7 +29,7 @@
     program_license = """%s
 
   Created by Hugo Monnerie on %s.
-  Copyright 2020 XCG Consulting. All rights reserved.
+  Copyright 2020, 2022 XCG Consulting. All rights reserved.
 
   Licensed under the MIT License
 
@@ -53,6 +45,7 @@
     parser = basic_parser(program_license, program_version_message)
     nmspc = parser.parse_args()
     apply(nmspc)
-    list_modules(None)
+    list_modules("")
+    return 0
 
 
@@ -57,6 +50,6 @@
 
 
-def list_modules(filename: str = MODULES_LIST_FILE):
+def list_modules(filename: str = MODULES_LIST_FILE) -> None:
     output = ",".join(Config().module_list)
     if filename:
         with open(filename, "w") as f:
@@ -66,4 +59,4 @@
 
 
 if __name__ == "__main__":
-    main()
+    sys.exit(main(sys.argv[1:]))
diff --git a/odoo_scripts/odoo.py b/odoo_scripts/odoo.py
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_b2Rvb19zY3JpcHRzL29kb28ucHk=..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_b2Rvb19zY3JpcHRzL29kb28ucHk= 100644
--- a/odoo_scripts/odoo.py
+++ b/odoo_scripts/odoo.py
@@ -5,7 +5,7 @@
 import logging
 from typing import Optional, Tuple
 
-import odoorpc
+import odoorpc  # type: ignore[import]
 
 from .parsing import basic_parser
 
diff --git a/odoo_scripts/odoo_conf_inject_env_var.py b/odoo_scripts/odoo_conf_inject_env_var.py
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_b2Rvb19zY3JpcHRzL29kb29fY29uZl9pbmplY3RfZW52X3Zhci5weQ==..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_b2Rvb19zY3JpcHRzL29kb29fY29uZl9pbmplY3RfZW52X3Zhci5weQ== 100644
--- a/odoo_scripts/odoo_conf_inject_env_var.py
+++ b/odoo_scripts/odoo_conf_inject_env_var.py
@@ -4,7 +4,7 @@
 import os.path
 import sys
 from configparser import ConfigParser
-from typing import Collection, Optional, Tuple
+from typing import Collection, Optional, Sequence, Tuple
 
 from .parsing import apply, basic_parser
 
@@ -8,5 +8,5 @@
 
 from .parsing import apply, basic_parser
 
-__version__ = "1.0.0"
+__version__ = "1.0.1"
 __date__ = "2022-02-22"
@@ -12,5 +12,5 @@
 __date__ = "2022-02-22"
-__updated__ = "2022-02-23"
+__updated__ = "2022-12-16"
 
 # tuple with environment variable nome, section and option
 _environment_variables: Collection[Tuple[str, str, str]] = (
@@ -51,7 +51,7 @@
         config_parser.write(file)
 
 
-def main(args: Optional[Collection[str]] = None) -> int:
+def main(args: Optional[Sequence[str]] = None) -> int:
     """Parse arguments and launch injection"""
     if args is None:
         args = []
diff --git a/odoo_scripts/parsing.py b/odoo_scripts/parsing.py
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_b2Rvb19zY3JpcHRzL3BhcnNpbmcucHk=..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_b2Rvb19zY3JpcHRzL3BhcnNpbmcucHk= 100644
--- a/odoo_scripts/parsing.py
+++ b/odoo_scripts/parsing.py
@@ -4,7 +4,7 @@
 import logging
 from typing import Optional
 
-import coloredlogs
+import coloredlogs  # type: ignore[import]
 
 from . import __version__
 
diff --git a/odoo_scripts/update_duplicate_sources.py b/odoo_scripts/update_duplicate_sources.py
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_b2Rvb19zY3JpcHRzL3VwZGF0ZV9kdXBsaWNhdGVfc291cmNlcy5weQ==..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_b2Rvb19zY3JpcHRzL3VwZGF0ZV9kdXBsaWNhdGVfc291cmNlcy5weQ== 100644
--- a/odoo_scripts/update_duplicate_sources.py
+++ b/odoo_scripts/update_duplicate_sources.py
@@ -8,7 +8,7 @@
 import sys
 from subprocess import call
 
-import hglib
+import hglib  # type: ignore[import]
 
 from .config import Config
 from .parsing import apply, basic_parser
diff --git a/odoo_scripts/which.py b/odoo_scripts/which.py
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_b2Rvb19zY3JpcHRzL3doaWNoLnB5..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_b2Rvb19zY3JpcHRzL3doaWNoLnB5 100644
--- a/odoo_scripts/which.py
+++ b/odoo_scripts/which.py
@@ -2,6 +2,6 @@
 """Function to help find a program path
 """
 import os
-from typing import AnyStr, Optional
+from typing import Optional
 
 
@@ -6,6 +6,6 @@
 
 
-def which(program: AnyStr) -> Optional[AnyStr]:
+def which(program: str) -> Optional[str]:
     """Return path of program if it exists
     from:
     https://stackoverflow.com/questions/377017/test-if-executable-exists-in-python/377028#377028
diff --git a/pyproject.toml b/pyproject.toml
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_cHlwcm9qZWN0LnRvbWw=..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_cHlwcm9qZWN0LnRvbWw= 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -19,7 +19,6 @@
   "odoorpc>=0.8.0",
   "odoorpc==0.8.0; python_version=='3.6'",
   "odoorpc>=0.9.0; python_version>='3.10'",
-  "requests_toolbelt==0.8.0",
   "python-dateutil>=2.7.0",
   "coloredlogs",
   "PyYAML",
@@ -35,6 +34,7 @@
 conf2reST = []
 docker = [
   "docker >=3.4",
+  "docker < 6.0.0; python_version<'3.7'",
   "dockerpty",
   # used in docker_rednerd
   "requests_unixsocket",
@@ -46,5 +46,6 @@
   "mercurial >=5.2",
   "python-hglib",
 ]
+import_base_import = ["requests-toolbelt>=0.8.0"]
 
 [project.scripts]
@@ -49,6 +50,6 @@
 
 [project.scripts]
-import_base_import = "odoo_scripts.import_base_import:main"
+import_base_import = "odoo_scripts.import_base_import:main [import_base_import]"
 import_jsonrpc= "odoo_scripts.import_jsonrpc:main"
 import_sql="odoo_scripts.import_sql:main [import_sql]"
 docker_dev_start="odoo_scripts.docker_dev_start:main [docker]"
diff --git a/tests/test_odoo_conf_inject_env_var.py b/tests/test_odoo_conf_inject_env_var.py
index 616c3230c8192fac4acf7751bbcc57108ed5fa1e_dGVzdHMvdGVzdF9vZG9vX2NvbmZfaW5qZWN0X2Vudl92YXIucHk=..f83034f2a696ca0c3b0ffcce5e6e21bc2c200cc9_dGVzdHMvdGVzdF9vZG9vX2NvbmZfaW5qZWN0X2Vudl92YXIucHk= 100644
--- a/tests/test_odoo_conf_inject_env_var.py
+++ b/tests/test_odoo_conf_inject_env_var.py
@@ -29,6 +29,8 @@
 class OdooConfTestCase(unittest.TestCase):
     """Tests of the Odoo conf env var class"""
 
+    conf_path = "odoo.conf"
+
     @classmethod
     def setUpClass(cls) -> None:
         """Create the conf file used in the tests"""
@@ -32,7 +34,6 @@
     @classmethod
     def setUpClass(cls) -> None:
         """Create the conf file used in the tests"""
-        cls.conf_path = "odoo.conf"
         with open(cls.conf_path, "w", encoding="UTF-8") as file_io:
             file_io.write(
                 """# This is a test file similar to an Odoo configuration file