# HG changeset patch
# User Vincent Hatakeyama <vincent.hatakeyama@xcg-consulting.fr>
# Date 1643106223 -3600
#      Tue Jan 25 11:23:43 2022 +0100
# Node ID a467c19eedbf8ce0bbaeee53be4e5f0888b42160
# Parent  9de0f87075a693b76b55f8cbcb3cc56499dc8760
📝 make isort and flake8 work for odoo15

diff --git a/odoo_scripts/do_tests.py b/odoo_scripts/do_tests.py
--- a/odoo_scripts/do_tests.py
+++ b/odoo_scripts/do_tests.py
@@ -246,7 +246,7 @@
             args.append(dbport)
 
     apply_flake8(nmspc, odoo_type)
-    apply_isort(nmspc)
+    apply_isort(nmspc, odoo_type)
     if nmspc.log_handler:
         for lh in nmspc.log_handler:
             args.append("--log-handler")
diff --git a/odoo_scripts/docker_dev_start.py b/odoo_scripts/docker_dev_start.py
--- a/odoo_scripts/docker_dev_start.py
+++ b/odoo_scripts/docker_dev_start.py
@@ -793,7 +793,7 @@
         arg.append(",".join(all_addons_dir))
 
     apply_flake8(nmspc, odoo_type)
-    apply_isort(nmspc)
+    apply_isort(nmspc, odoo_type)
 
     # developer mode options
     if dev:
diff --git a/odoo_scripts/docker_flake8.py b/odoo_scripts/docker_flake8.py
--- a/odoo_scripts/docker_flake8.py
+++ b/odoo_scripts/docker_flake8.py
@@ -12,9 +12,9 @@
 from .docker_client import DockerClient
 from .parsing import apply, basic_parser
 
-__version__ = "1.0.0"
+__version__ = "1.1.0"
 __date__ = "2020-09-10"
-__updated__ = "2020-09-10"
+__updated__ = "2022-01-25"
 
 _logger = logging.getLogger(__name__)
 
@@ -48,7 +48,7 @@
 
 def parser_add_flake8_group(parser: argparse.ArgumentParser):
     """Add flake8 option (--flake8/--no-flake8) to the given parser.
-    Defaults to not using flake8."""
+    Defaults to not running flake8."""
     flake8_group = parser.add_mutually_exclusive_group()
     flake8_group.add_argument(
         "--flake8",
@@ -82,18 +82,27 @@
     return flake8(odoo_type)
 
 
-def flake8(odoo_type: str):
+def flake8(odoo_type: str, pull: bool = True):
     """Run flake8"""
     client = DockerClient.client
-    repository = "xcgd/flake8"
+
+    # determine image to use based on odoo version
+    repository = "quay.orus.io/odoo/odoo"
     if odoo_type in ("odoo7", "odoo8", "odoo9", "odoo10"):
+        repository = "xcgd/flake8"
         tag = "2"
-        _logger.info("Running flake8 for Python 2")
+    elif odoo_type == "odoo15":
+        tag = "15.0"
     else:
+        repository = "xcgd/flake8"
         tag = "3"
-        _logger.info("Running flake8 for Python 3")
-    client.images.pull(repository, tag)
-    image = "{}:{}".format(repository, tag)
+    image = f"{repository}:{tag}"
+
+    if pull:
+        _logger.info("Pulling flake8 (%s)", image)
+        client.images.pull(repository, tag)
+
+    _logger.info("Running flake8 (%s)", image)
     container = None
 
     # XXX When pressing ctrl-c during the container creating, the container
@@ -117,6 +126,7 @@
     # of being None
     container = client.containers.create(
         image,
+        entrypoint="flake8",
         command=["."],
         volumes={os.environ["PWD"]: {"bind": "/mnt", "mode": "ro"}},
         working_dir="/mnt",
diff --git a/odoo_scripts/docker_isort.py b/odoo_scripts/docker_isort.py
--- a/odoo_scripts/docker_isort.py
+++ b/odoo_scripts/docker_isort.py
@@ -10,12 +10,13 @@
 
 import docker
 
+from .config import Config
 from .docker_client import DockerClient
 from .parsing import apply, basic_parser
 
-__version__ = "1.0.1"
+__version__ = "1.1.0"
 __date__ = "2020-09-10"
-__updated__ = "2021-10-21"
+__updated__ = "2022-01-25"
 
 _logger = logging.getLogger(__name__)
 
@@ -67,10 +68,10 @@
     )
 
 
-def apply_isort(namespace: argparse.Namespace):
+def apply_isort(namespace: argparse.Namespace, odoo_type: str):
     """Run isort if the option was set."""
     if namespace.isort:
-        isort()
+        isort(odoo_type)
 
 
 def main(argv=None):
@@ -78,24 +79,41 @@
     parser = __parser()
     nmspc = parser.parse_args(argv)
     apply(nmspc)
-    isort()
-    return 0
+    c = Config()
+    odoo_type = c.odoo_type
+    return isort(odoo_type)
 
 
-def isort(pull=True):
+def isort(odoo_type: str, pull: bool = True):
     """Run isort"""
     client = DockerClient.client
+
+    # determine image to use based on odoo version
+    repository = "quay.orus.io/odoo/odoo"
+    command = ["--check", "."]
+    if odoo_type == "odoo15":
+        tag = "15.0"
+    elif odoo_type == "odoo13":
+        tag = "13.0"
+        command = ["--check"]
+    else:
+        repository = "xcgd/isort"
+        tag = "odoo"
+        command = ["--check"]
+    image = f"{repository}:{tag}"
+
     if pull:
-        _logger.info("Pulling isort")
+        _logger.info("Pulling isort (%s)", image)
         # TODO find a better way to avoid error when pulling without a
         #  connection
         try:
-            client.images.pull(repository="xcgd/isort", tag="odoo")
+            client.images.pull(repository=repository, tag=tag)
         except docker.errors.APIError:
             _logger.warning(
                 "No connection to server, using existing version, if any"
             )
-    _logger.info("Running isort for Odoo")
+
+    _logger.info("Running isort for Odoo (%s)", image)
     container = None
 
     # XXX When pressing ctrl-c during the container creating, the container
@@ -118,8 +136,9 @@
     # split create and start so in case of SIGTERM, container has fewer chances
     # of being None
     container = client.containers.create(
-        "xcgd/isort:odoo",
-        command=["isort", "--check"],
+        image,
+        entrypoint="isort",
+        command=command,
         volumes={os.environ["PWD"]: {"bind": "/mnt", "mode": "ro"}},
         working_dir="/mnt",
         detach=True,