get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/140060/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 140060,
    "url": "http://patches.dpdk.org/api/patches/140060/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20240514120502.1955468-2-luca.vizzarro@arm.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20240514120502.1955468-2-luca.vizzarro@arm.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20240514120502.1955468-2-luca.vizzarro@arm.com",
    "date": "2024-05-14T12:05:00",
    "name": "[v4,1/3] dts: update mypy static checker",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "79a3c73fdaf2aedb5b9fcf0d723f370a7cd051b5",
    "submitter": {
        "id": 3197,
        "url": "http://patches.dpdk.org/api/people/3197/?format=api",
        "name": "Luca Vizzarro",
        "email": "luca.vizzarro@arm.com"
    },
    "delegate": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20240514120502.1955468-2-luca.vizzarro@arm.com/mbox/",
    "series": [
        {
            "id": 31923,
            "url": "http://patches.dpdk.org/api/series/31923/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=31923",
            "date": "2024-05-14T12:04:59",
            "name": "error and usage improvements",
            "version": 4,
            "mbox": "http://patches.dpdk.org/series/31923/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/140060/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/140060/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 4FE434402B;\n\tTue, 14 May 2024 14:05:17 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 104C54064C;\n\tTue, 14 May 2024 14:05:13 +0200 (CEST)",
            "from foss.arm.com (foss.arm.com [217.140.110.172])\n by mails.dpdk.org (Postfix) with ESMTP id 19A9A40156\n for <dev@dpdk.org>; Tue, 14 May 2024 14:05:11 +0200 (CEST)",
            "from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])\n by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 8876C1007;\n Tue, 14 May 2024 05:05:35 -0700 (PDT)",
            "from localhost.localdomain (unknown [10.57.4.224])\n by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 606E33F641;\n Tue, 14 May 2024 05:05:09 -0700 (PDT)"
        ],
        "From": "Luca Vizzarro <luca.vizzarro@arm.com>",
        "To": "dev@dpdk.org",
        "Cc": "=?utf-8?q?Juraj_Linke=C5=A1?= <juraj.linkes@pantheon.tech>,\n Jeremy Spewock <jspewock@iol.unh.edu>, Luca Vizzarro <luca.vizzarro@arm.com>,\n Paul Szczepanek <paul.szczepanek@arm.com>",
        "Subject": "[PATCH v4 1/3] dts: update mypy static checker",
        "Date": "Tue, 14 May 2024 13:05:00 +0100",
        "Message-Id": "<20240514120502.1955468-2-luca.vizzarro@arm.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20240514120502.1955468-1-luca.vizzarro@arm.com>",
        "References": "<20240122182611.1904974-1-luca.vizzarro@arm.com>\n <20240514120502.1955468-1-luca.vizzarro@arm.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "Update the mypy static checker to the latest version and fix all the\nreported errors.\n\nBugzilla ID: 1433\n\nSigned-off-by: Luca Vizzarro <luca.vizzarro@arm.com>\nReviewed-by: Paul Szczepanek <paul.szczepanek@arm.com>\n---\n dts/framework/config/__init__.py              |  2 +-\n dts/framework/logger.py                       |  4 +-\n .../interactive_remote_session.py             |  4 +-\n .../remote_session/interactive_shell.py       |  2 +-\n dts/framework/remote_session/ssh_session.py   |  6 +-\n dts/framework/runner.py                       | 14 +--\n dts/framework/test_result.py                  |  4 +-\n dts/framework/test_suite.py                   |  6 +-\n dts/framework/testbed_model/tg_node.py        |  2 +-\n .../capturing_traffic_generator.py            |  4 +-\n .../testbed_model/traffic_generator/scapy.py  |  6 +-\n .../traffic_generator/traffic_generator.py    |  2 +-\n dts/framework/utils.py                        |  2 +-\n dts/poetry.lock                               | 86 +++++++++++--------\n dts/pyproject.toml                            |  2 +-\n dts/tests/TestSuite_os_udp.py                 |  4 +-\n dts/tests/TestSuite_pmd_buffer_scatter.py     |  8 +-\n 17 files changed, 87 insertions(+), 71 deletions(-)",
    "diff": "diff --git a/dts/framework/config/__init__.py b/dts/framework/config/__init__.py\nindex 4cb5c74059..6b2ad2b16d 100644\n--- a/dts/framework/config/__init__.py\n+++ b/dts/framework/config/__init__.py\n@@ -40,7 +40,7 @@\n from pathlib import Path\n from typing import Union\n \n-import warlock  # type: ignore[import]\n+import warlock  # type: ignore[import-untyped]\n import yaml\n \n from framework.config.types import (\ndiff --git a/dts/framework/logger.py b/dts/framework/logger.py\nindex fc6c50c983..5b88725481 100644\n--- a/dts/framework/logger.py\n+++ b/dts/framework/logger.py\n@@ -79,7 +79,7 @@ def makeRecord(self, *args, **kwargs) -> logging.LogRecord:\n             record: The generated record with the stage information.\n         \"\"\"\n         record = super().makeRecord(*args, **kwargs)\n-        record.stage = DTSLogger._stage  # type: ignore[attr-defined]\n+        record.stage = DTSLogger._stage\n         return record\n \n     def add_dts_root_logger_handlers(self, verbose: bool, output_dir: str) -> None:\n@@ -178,7 +178,7 @@ def _remove_extra_file_handlers(self) -> None:\n             self._extra_file_handlers = []\n \n \n-def get_dts_logger(name: str = None) -> DTSLogger:\n+def get_dts_logger(name: str | None = None) -> DTSLogger:\n     \"\"\"Return a DTS logger instance identified by `name`.\n \n     Args:\ndiff --git a/dts/framework/remote_session/interactive_remote_session.py b/dts/framework/remote_session/interactive_remote_session.py\nindex c50790db79..97194e6af8 100644\n--- a/dts/framework/remote_session/interactive_remote_session.py\n+++ b/dts/framework/remote_session/interactive_remote_session.py\n@@ -6,8 +6,8 @@\n import socket\n import traceback\n \n-from paramiko import AutoAddPolicy, SSHClient, Transport  # type: ignore[import]\n-from paramiko.ssh_exception import (  # type: ignore[import]\n+from paramiko import AutoAddPolicy, SSHClient, Transport  # type: ignore[import-untyped]\n+from paramiko.ssh_exception import (  # type: ignore[import-untyped]\n     AuthenticationException,\n     BadHostKeyException,\n     NoValidConnectionsError,\ndiff --git a/dts/framework/remote_session/interactive_shell.py b/dts/framework/remote_session/interactive_shell.py\nindex 5cfe202e15..074a541279 100644\n--- a/dts/framework/remote_session/interactive_shell.py\n+++ b/dts/framework/remote_session/interactive_shell.py\n@@ -18,7 +18,7 @@\n from pathlib import PurePath\n from typing import Callable, ClassVar\n \n-from paramiko import Channel, SSHClient, channel  # type: ignore[import]\n+from paramiko import Channel, SSHClient, channel  # type: ignore[import-untyped]\n \n from framework.logger import DTSLogger\n from framework.settings import SETTINGS\ndiff --git a/dts/framework/remote_session/ssh_session.py b/dts/framework/remote_session/ssh_session.py\nindex 782220092c..216bd25aed 100644\n--- a/dts/framework/remote_session/ssh_session.py\n+++ b/dts/framework/remote_session/ssh_session.py\n@@ -7,13 +7,13 @@\n import traceback\n from pathlib import PurePath\n \n-from fabric import Connection  # type: ignore[import]\n-from invoke.exceptions import (  # type: ignore[import]\n+from fabric import Connection  # type: ignore[import-untyped]\n+from invoke.exceptions import (  # type: ignore[import-untyped]\n     CommandTimedOut,\n     ThreadException,\n     UnexpectedExit,\n )\n-from paramiko.ssh_exception import (  # type: ignore[import]\n+from paramiko.ssh_exception import (  # type: ignore[import-untyped]\n     AuthenticationException,\n     BadHostKeyException,\n     NoValidConnectionsError,\ndiff --git a/dts/framework/runner.py b/dts/framework/runner.py\nindex db8e3ba96b..d74f1871db 100644\n--- a/dts/framework/runner.py\n+++ b/dts/framework/runner.py\n@@ -23,7 +23,7 @@\n import re\n import sys\n from pathlib import Path\n-from types import MethodType\n+from types import FunctionType\n from typing import Iterable, Sequence\n \n from .config import (\n@@ -132,8 +132,8 @@ def run(self):\n         the :option:`--test-suite` command line argument or\n         the :envvar:`DTS_TESTCASES` environment variable.\n         \"\"\"\n-        sut_nodes: dict[str, SutNode] = {}\n-        tg_nodes: dict[str, TGNode] = {}\n+        sut_nodes = {}\n+        tg_nodes = {}\n         try:\n             # check the python version of the server that runs dts\n             self._check_dts_python_version()\n@@ -305,7 +305,7 @@ def is_test_suite(object) -> bool:\n \n     def _filter_test_cases(\n         self, test_suite_class: type[TestSuite], test_cases_to_run: Sequence[str]\n-    ) -> tuple[list[MethodType], list[MethodType]]:\n+    ) -> tuple[list[FunctionType], list[FunctionType]]:\n         \"\"\"Filter `test_cases_to_run` from `test_suite_class`.\n \n         There are two rounds of filtering if `test_cases_to_run` is not empty.\n@@ -593,7 +593,7 @@ def _run_test_suite(\n     def _execute_test_suite(\n         self,\n         test_suite: TestSuite,\n-        test_cases: Iterable[MethodType],\n+        test_cases: Iterable[FunctionType],\n         test_suite_result: TestSuiteResult,\n     ) -> None:\n         \"\"\"Execute all `test_cases` in `test_suite`.\n@@ -626,7 +626,7 @@ def _execute_test_suite(\n     def _run_test_case(\n         self,\n         test_suite: TestSuite,\n-        test_case_method: MethodType,\n+        test_case_method: FunctionType,\n         test_case_result: TestCaseResult,\n     ) -> None:\n         \"\"\"Setup, execute and teardown `test_case_method` from `test_suite`.\n@@ -672,7 +672,7 @@ def _run_test_case(\n     def _execute_test_case(\n         self,\n         test_suite: TestSuite,\n-        test_case_method: MethodType,\n+        test_case_method: FunctionType,\n         test_case_result: TestCaseResult,\n     ) -> None:\n         \"\"\"Execute `test_case_method` from `test_suite`, record the result and handle failures.\ndiff --git a/dts/framework/test_result.py b/dts/framework/test_result.py\nindex 28f84fd793..d8d0fe2b2b 100644\n--- a/dts/framework/test_result.py\n+++ b/dts/framework/test_result.py\n@@ -27,7 +27,7 @@\n from collections.abc import MutableSequence\n from dataclasses import dataclass\n from enum import Enum, auto\n-from types import MethodType\n+from types import FunctionType\n from typing import Union\n \n from .config import (\n@@ -63,7 +63,7 @@ class is to hold a subset of test cases (which could be all test cases) because\n     \"\"\"\n \n     test_suite_class: type[TestSuite]\n-    test_cases: list[MethodType]\n+    test_cases: list[FunctionType]\n \n     def create_config(self) -> TestSuiteConfig:\n         \"\"\"Generate a :class:`TestSuiteConfig` from the stored test suite with test cases.\ndiff --git a/dts/framework/test_suite.py b/dts/framework/test_suite.py\nindex 9c3b516002..8768f756a6 100644\n--- a/dts/framework/test_suite.py\n+++ b/dts/framework/test_suite.py\n@@ -16,9 +16,9 @@\n from ipaddress import IPv4Interface, IPv6Interface, ip_interface\n from typing import ClassVar, Union\n \n-from scapy.layers.inet import IP  # type: ignore[import]\n-from scapy.layers.l2 import Ether  # type: ignore[import]\n-from scapy.packet import Packet, Padding  # type: ignore[import]\n+from scapy.layers.inet import IP  # type: ignore[import-untyped]\n+from scapy.layers.l2 import Ether  # type: ignore[import-untyped]\n+from scapy.packet import Packet, Padding  # type: ignore[import-untyped]\n \n from .exception import TestCaseVerifyError\n from .logger import DTSLogger, get_dts_logger\ndiff --git a/dts/framework/testbed_model/tg_node.py b/dts/framework/testbed_model/tg_node.py\nindex d3206e87e0..164f790383 100644\n--- a/dts/framework/testbed_model/tg_node.py\n+++ b/dts/framework/testbed_model/tg_node.py\n@@ -9,7 +9,7 @@\n A TG node is where the TG runs.\n \"\"\"\n \n-from scapy.packet import Packet  # type: ignore[import]\n+from scapy.packet import Packet  # type: ignore[import-untyped]\n \n from framework.config import TGNodeConfiguration\n \ndiff --git a/dts/framework/testbed_model/traffic_generator/capturing_traffic_generator.py b/dts/framework/testbed_model/traffic_generator/capturing_traffic_generator.py\nindex e5a1560e90..c8380b7d57 100644\n--- a/dts/framework/testbed_model/traffic_generator/capturing_traffic_generator.py\n+++ b/dts/framework/testbed_model/traffic_generator/capturing_traffic_generator.py\n@@ -13,8 +13,8 @@\n from abc import abstractmethod\n from dataclasses import dataclass\n \n-import scapy.utils  # type: ignore[import]\n-from scapy.packet import Packet  # type: ignore[import]\n+import scapy.utils  # type: ignore[import-untyped]\n+from scapy.packet import Packet  # type: ignore[import-untyped]\n \n from framework.settings import SETTINGS\n from framework.testbed_model.port import Port\ndiff --git a/dts/framework/testbed_model/traffic_generator/scapy.py b/dts/framework/testbed_model/traffic_generator/scapy.py\nindex df3069d516..ed5467d825 100644\n--- a/dts/framework/testbed_model/traffic_generator/scapy.py\n+++ b/dts/framework/testbed_model/traffic_generator/scapy.py\n@@ -20,9 +20,9 @@\n import xmlrpc.client\n from xmlrpc.server import SimpleXMLRPCServer\n \n-import scapy.all  # type: ignore[import]\n-from scapy.layers.l2 import Ether  # type: ignore[import]\n-from scapy.packet import Packet  # type: ignore[import]\n+import scapy.all  # type: ignore[import-untyped]\n+from scapy.layers.l2 import Ether  # type: ignore[import-untyped]\n+from scapy.packet import Packet  # type: ignore[import-untyped]\n \n from framework.config import OS, ScapyTrafficGeneratorConfig\n from framework.remote_session import PythonShell\ndiff --git a/dts/framework/testbed_model/traffic_generator/traffic_generator.py b/dts/framework/testbed_model/traffic_generator/traffic_generator.py\nindex d86d7fb532..4ce1148706 100644\n--- a/dts/framework/testbed_model/traffic_generator/traffic_generator.py\n+++ b/dts/framework/testbed_model/traffic_generator/traffic_generator.py\n@@ -10,7 +10,7 @@\n \n from abc import ABC, abstractmethod\n \n-from scapy.packet import Packet  # type: ignore[import]\n+from scapy.packet import Packet  # type: ignore[import-untyped]\n \n from framework.config import TrafficGeneratorConfig\n from framework.logger import DTSLogger, get_dts_logger\ndiff --git a/dts/framework/utils.py b/dts/framework/utils.py\nindex cc5e458cc8..74a11f1aaf 100644\n--- a/dts/framework/utils.py\n+++ b/dts/framework/utils.py\n@@ -21,7 +21,7 @@\n from pathlib import Path\n from subprocess import SubprocessError\n \n-from scapy.packet import Packet  # type: ignore[import]\n+from scapy.packet import Packet  # type: ignore[import-untyped]\n \n from .exception import ConfigurationError\n \ndiff --git a/dts/poetry.lock b/dts/poetry.lock\nindex a734fa71f0..df9cecb7e0 100644\n--- a/dts/poetry.lock\n+++ b/dts/poetry.lock\n@@ -1,4 +1,4 @@\n-# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand.\n+# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand.\n \n [[package]]\n name = \"attrs\"\n@@ -353,44 +353,49 @@ files = [\n \n [[package]]\n name = \"mypy\"\n-version = \"0.961\"\n+version = \"1.10.0\"\n description = \"Optional static typing for Python\"\n optional = false\n-python-versions = \">=3.6\"\n+python-versions = \">=3.8\"\n files = [\n-    {file = \"mypy-0.961-cp310-cp310-macosx_10_9_universal2.whl\", hash = \"sha256:697540876638ce349b01b6786bc6094ccdaba88af446a9abb967293ce6eaa2b0\"},\n-    {file = \"mypy-0.961-cp310-cp310-macosx_10_9_x86_64.whl\", hash = \"sha256:b117650592e1782819829605a193360a08aa99f1fc23d1d71e1a75a142dc7e15\"},\n-    {file = \"mypy-0.961-cp310-cp310-macosx_11_0_arm64.whl\", hash = \"sha256:bdd5ca340beffb8c44cb9dc26697628d1b88c6bddf5c2f6eb308c46f269bb6f3\"},\n-    {file = \"mypy-0.961-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl\", hash = \"sha256:3e09f1f983a71d0672bbc97ae33ee3709d10c779beb613febc36805a6e28bb4e\"},\n-    {file = \"mypy-0.961-cp310-cp310-win_amd64.whl\", hash = \"sha256:e999229b9f3198c0c880d5e269f9f8129c8862451ce53a011326cad38b9ccd24\"},\n-    {file = \"mypy-0.961-cp36-cp36m-macosx_10_9_x86_64.whl\", hash = \"sha256:b24be97351084b11582fef18d79004b3e4db572219deee0212078f7cf6352723\"},\n-    {file = \"mypy-0.961-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl\", hash = \"sha256:f4a21d01fc0ba4e31d82f0fff195682e29f9401a8bdb7173891070eb260aeb3b\"},\n-    {file = \"mypy-0.961-cp36-cp36m-win_amd64.whl\", hash = \"sha256:439c726a3b3da7ca84a0199a8ab444cd8896d95012c4a6c4a0d808e3147abf5d\"},\n-    {file = \"mypy-0.961-cp37-cp37m-macosx_10_9_x86_64.whl\", hash = \"sha256:5a0b53747f713f490affdceef835d8f0cb7285187a6a44c33821b6d1f46ed813\"},\n-    {file = \"mypy-0.961-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl\", hash = \"sha256:0e9f70df36405c25cc530a86eeda1e0867863d9471fe76d1273c783df3d35c2e\"},\n-    {file = \"mypy-0.961-cp37-cp37m-win_amd64.whl\", hash = \"sha256:b88f784e9e35dcaa075519096dc947a388319cb86811b6af621e3523980f1c8a\"},\n-    {file = \"mypy-0.961-cp38-cp38-macosx_10_9_universal2.whl\", hash = \"sha256:d5aaf1edaa7692490f72bdb9fbd941fbf2e201713523bdb3f4038be0af8846c6\"},\n-    {file = \"mypy-0.961-cp38-cp38-macosx_10_9_x86_64.whl\", hash = \"sha256:9f5f5a74085d9a81a1f9c78081d60a0040c3efb3f28e5c9912b900adf59a16e6\"},\n-    {file = \"mypy-0.961-cp38-cp38-macosx_11_0_arm64.whl\", hash = \"sha256:f4b794db44168a4fc886e3450201365c9526a522c46ba089b55e1f11c163750d\"},\n-    {file = \"mypy-0.961-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl\", hash = \"sha256:64759a273d590040a592e0f4186539858c948302c653c2eac840c7a3cd29e51b\"},\n-    {file = \"mypy-0.961-cp38-cp38-win_amd64.whl\", hash = \"sha256:63e85a03770ebf403291ec50097954cc5caf2a9205c888ce3a61bd3f82e17569\"},\n-    {file = \"mypy-0.961-cp39-cp39-macosx_10_9_universal2.whl\", hash = \"sha256:5f1332964963d4832a94bebc10f13d3279be3ce8f6c64da563d6ee6e2eeda932\"},\n-    {file = \"mypy-0.961-cp39-cp39-macosx_10_9_x86_64.whl\", hash = \"sha256:006be38474216b833eca29ff6b73e143386f352e10e9c2fbe76aa8549e5554f5\"},\n-    {file = \"mypy-0.961-cp39-cp39-macosx_11_0_arm64.whl\", hash = \"sha256:9940e6916ed9371809b35b2154baf1f684acba935cd09928952310fbddaba648\"},\n-    {file = \"mypy-0.961-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl\", hash = \"sha256:a5ea0875a049de1b63b972456542f04643daf320d27dc592d7c3d9cd5d9bf950\"},\n-    {file = \"mypy-0.961-cp39-cp39-win_amd64.whl\", hash = \"sha256:1ece702f29270ec6af25db8cf6185c04c02311c6bb21a69f423d40e527b75c56\"},\n-    {file = \"mypy-0.961-py3-none-any.whl\", hash = \"sha256:03c6cc893e7563e7b2949b969e63f02c000b32502a1b4d1314cabe391aa87d66\"},\n-    {file = \"mypy-0.961.tar.gz\", hash = \"sha256:f730d56cb924d371c26b8eaddeea3cc07d78ff51c521c6d04899ac6904b75492\"},\n+    {file = \"mypy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl\", hash = \"sha256:da1cbf08fb3b851ab3b9523a884c232774008267b1f83371ace57f412fe308c2\"},\n+    {file = \"mypy-1.10.0-cp310-cp310-macosx_11_0_arm64.whl\", hash = \"sha256:12b6bfc1b1a66095ab413160a6e520e1dc076a28f3e22f7fb25ba3b000b4ef99\"},\n+    {file = \"mypy-1.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\", hash = \"sha256:9e36fb078cce9904c7989b9693e41cb9711e0600139ce3970c6ef814b6ebc2b2\"},\n+    {file = \"mypy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl\", hash = \"sha256:2b0695d605ddcd3eb2f736cd8b4e388288c21e7de85001e9f85df9187f2b50f9\"},\n+    {file = \"mypy-1.10.0-cp310-cp310-win_amd64.whl\", hash = \"sha256:cd777b780312ddb135bceb9bc8722a73ec95e042f911cc279e2ec3c667076051\"},\n+    {file = \"mypy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl\", hash = \"sha256:3be66771aa5c97602f382230165b856c231d1277c511c9a8dd058be4784472e1\"},\n+    {file = \"mypy-1.10.0-cp311-cp311-macosx_11_0_arm64.whl\", hash = \"sha256:8b2cbaca148d0754a54d44121b5825ae71868c7592a53b7292eeb0f3fdae95ee\"},\n+    {file = \"mypy-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\", hash = \"sha256:1ec404a7cbe9fc0e92cb0e67f55ce0c025014e26d33e54d9e506a0f2d07fe5de\"},\n+    {file = \"mypy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl\", hash = \"sha256:e22e1527dc3d4aa94311d246b59e47f6455b8729f4968765ac1eacf9a4760bc7\"},\n+    {file = \"mypy-1.10.0-cp311-cp311-win_amd64.whl\", hash = \"sha256:a87dbfa85971e8d59c9cc1fcf534efe664d8949e4c0b6b44e8ca548e746a8d53\"},\n+    {file = \"mypy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl\", hash = \"sha256:a781f6ad4bab20eef8b65174a57e5203f4be627b46291f4589879bf4e257b97b\"},\n+    {file = \"mypy-1.10.0-cp312-cp312-macosx_11_0_arm64.whl\", hash = \"sha256:b808e12113505b97d9023b0b5e0c0705a90571c6feefc6f215c1df9381256e30\"},\n+    {file = \"mypy-1.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\", hash = \"sha256:8f55583b12156c399dce2df7d16f8a5095291354f1e839c252ec6c0611e86e2e\"},\n+    {file = \"mypy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl\", hash = \"sha256:4cf18f9d0efa1b16478c4c129eabec36148032575391095f73cae2e722fcf9d5\"},\n+    {file = \"mypy-1.10.0-cp312-cp312-win_amd64.whl\", hash = \"sha256:bc6ac273b23c6b82da3bb25f4136c4fd42665f17f2cd850771cb600bdd2ebeda\"},\n+    {file = \"mypy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl\", hash = \"sha256:9fd50226364cd2737351c79807775136b0abe084433b55b2e29181a4c3c878c0\"},\n+    {file = \"mypy-1.10.0-cp38-cp38-macosx_11_0_arm64.whl\", hash = \"sha256:f90cff89eea89273727d8783fef5d4a934be2fdca11b47def50cf5d311aff727\"},\n+    {file = \"mypy-1.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\", hash = \"sha256:fcfc70599efde5c67862a07a1aaf50e55bce629ace26bb19dc17cece5dd31ca4\"},\n+    {file = \"mypy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl\", hash = \"sha256:075cbf81f3e134eadaf247de187bd604748171d6b79736fa9b6c9685b4083061\"},\n+    {file = \"mypy-1.10.0-cp38-cp38-win_amd64.whl\", hash = \"sha256:3f298531bca95ff615b6e9f2fc0333aae27fa48052903a0ac90215021cdcfa4f\"},\n+    {file = \"mypy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl\", hash = \"sha256:fa7ef5244615a2523b56c034becde4e9e3f9b034854c93639adb667ec9ec2976\"},\n+    {file = \"mypy-1.10.0-cp39-cp39-macosx_11_0_arm64.whl\", hash = \"sha256:3236a4c8f535a0631f85f5fcdffba71c7feeef76a6002fcba7c1a8e57c8be1ec\"},\n+    {file = \"mypy-1.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\", hash = \"sha256:4a2b5cdbb5dd35aa08ea9114436e0d79aceb2f38e32c21684dcf8e24e1e92821\"},\n+    {file = \"mypy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl\", hash = \"sha256:92f93b21c0fe73dc00abf91022234c79d793318b8a96faac147cd579c1671746\"},\n+    {file = \"mypy-1.10.0-cp39-cp39-win_amd64.whl\", hash = \"sha256:28d0e038361b45f099cc086d9dd99c15ff14d0188f44ac883010e172ce86c38a\"},\n+    {file = \"mypy-1.10.0-py3-none-any.whl\", hash = \"sha256:f8c083976eb530019175aabadb60921e73b4f45736760826aa1689dda8208aee\"},\n+    {file = \"mypy-1.10.0.tar.gz\", hash = \"sha256:3d087fcbec056c4ee34974da493a826ce316947485cef3901f511848e687c131\"},\n ]\n \n [package.dependencies]\n-mypy-extensions = \">=0.4.3\"\n+mypy-extensions = \">=1.0.0\"\n tomli = {version = \">=1.1.0\", markers = \"python_version < \\\"3.11\\\"\"}\n-typing-extensions = \">=3.10\"\n+typing-extensions = \">=4.1.0\"\n \n [package.extras]\n dmypy = [\"psutil (>=4.0)\"]\n-python2 = [\"typed-ast (>=1.4.0,<2)\"]\n+install-types = [\"pip\"]\n+mypyc = [\"setuptools (>=50)\"]\n reports = [\"lxml\"]\n \n [[package]]\n@@ -580,6 +585,7 @@ files = [\n     {file = \"PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\", hash = \"sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938\"},\n     {file = \"PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl\", hash = \"sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d\"},\n     {file = \"PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\", hash = \"sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515\"},\n+    {file = \"PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl\", hash = \"sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290\"},\n     {file = \"PyYAML-6.0.1-cp310-cp310-win32.whl\", hash = \"sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924\"},\n     {file = \"PyYAML-6.0.1-cp310-cp310-win_amd64.whl\", hash = \"sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d\"},\n     {file = \"PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl\", hash = \"sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007\"},\n@@ -587,8 +593,16 @@ files = [\n     {file = \"PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\", hash = \"sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d\"},\n     {file = \"PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\", hash = \"sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc\"},\n     {file = \"PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\", hash = \"sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673\"},\n+    {file = \"PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl\", hash = \"sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b\"},\n     {file = \"PyYAML-6.0.1-cp311-cp311-win32.whl\", hash = \"sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741\"},\n     {file = \"PyYAML-6.0.1-cp311-cp311-win_amd64.whl\", hash = \"sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34\"},\n+    {file = \"PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl\", hash = \"sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28\"},\n+    {file = \"PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl\", hash = \"sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9\"},\n+    {file = \"PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\", hash = \"sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef\"},\n+    {file = \"PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\", hash = \"sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0\"},\n+    {file = \"PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl\", hash = \"sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4\"},\n+    {file = \"PyYAML-6.0.1-cp312-cp312-win32.whl\", hash = \"sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54\"},\n+    {file = \"PyYAML-6.0.1-cp312-cp312-win_amd64.whl\", hash = \"sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df\"},\n     {file = \"PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl\", hash = \"sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47\"},\n     {file = \"PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\", hash = \"sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98\"},\n     {file = \"PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl\", hash = \"sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c\"},\n@@ -605,6 +619,7 @@ files = [\n     {file = \"PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\", hash = \"sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5\"},\n     {file = \"PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl\", hash = \"sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696\"},\n     {file = \"PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\", hash = \"sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735\"},\n+    {file = \"PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl\", hash = \"sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6\"},\n     {file = \"PyYAML-6.0.1-cp38-cp38-win32.whl\", hash = \"sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206\"},\n     {file = \"PyYAML-6.0.1-cp38-cp38-win_amd64.whl\", hash = \"sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62\"},\n     {file = \"PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl\", hash = \"sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8\"},\n@@ -612,6 +627,7 @@ files = [\n     {file = \"PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\", hash = \"sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6\"},\n     {file = \"PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl\", hash = \"sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0\"},\n     {file = \"PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\", hash = \"sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c\"},\n+    {file = \"PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl\", hash = \"sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5\"},\n     {file = \"PyYAML-6.0.1-cp39-cp39-win32.whl\", hash = \"sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c\"},\n     {file = \"PyYAML-6.0.1-cp39-cp39-win_amd64.whl\", hash = \"sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486\"},\n     {file = \"PyYAML-6.0.1.tar.gz\", hash = \"sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43\"},\n@@ -810,13 +826,13 @@ files = [\n \n [[package]]\n name = \"typing-extensions\"\n-version = \"4.7.1\"\n-description = \"Backported and Experimental Type Hints for Python 3.7+\"\n+version = \"4.11.0\"\n+description = \"Backported and Experimental Type Hints for Python 3.8+\"\n optional = false\n-python-versions = \">=3.7\"\n+python-versions = \">=3.8\"\n files = [\n-    {file = \"typing_extensions-4.7.1-py3-none-any.whl\", hash = \"sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36\"},\n-    {file = \"typing_extensions-4.7.1.tar.gz\", hash = \"sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2\"},\n+    {file = \"typing_extensions-4.11.0-py3-none-any.whl\", hash = \"sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a\"},\n+    {file = \"typing_extensions-4.11.0.tar.gz\", hash = \"sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0\"},\n ]\n \n [[package]]\n@@ -837,4 +853,4 @@ jsonschema = \">=4,<5\"\n [metadata]\n lock-version = \"2.0\"\n python-versions = \"^3.10\"\n-content-hash = \"3501e97b3dadc19fe8ae179fe21b1edd2488001da9a8e86ff2bca0b86b99b89b\"\n+content-hash = \"1572cb14f0bf88cddc6b6b225312ad468d01916b32067d17a7776af76c6d466c\"\ndiff --git a/dts/pyproject.toml b/dts/pyproject.toml\nindex a81e46fc07..05c91ef9be 100644\n--- a/dts/pyproject.toml\n+++ b/dts/pyproject.toml\n@@ -28,7 +28,7 @@ scapy = \"^2.5.0\"\n pydocstyle = \"6.1.1\"\n \n [tool.poetry.group.dev.dependencies]\n-mypy = \"^0.961\"\n+mypy = \"^1.10.0\"\n black = \"^22.6.0\"\n isort = \"^5.10.1\"\n pylama = \"^8.4.1\"\ndiff --git a/dts/tests/TestSuite_os_udp.py b/dts/tests/TestSuite_os_udp.py\nindex b4784dd95e..a78bd74139 100644\n--- a/dts/tests/TestSuite_os_udp.py\n+++ b/dts/tests/TestSuite_os_udp.py\n@@ -7,8 +7,8 @@\n Send a packet to the SUT node, verify it comes back on the second port on the TG node.\n \"\"\"\n \n-from scapy.layers.inet import IP, UDP  # type: ignore[import]\n-from scapy.layers.l2 import Ether  # type: ignore[import]\n+from scapy.layers.inet import IP, UDP  # type: ignore[import-untyped]\n+from scapy.layers.l2 import Ether  # type: ignore[import-untyped]\n \n from framework.test_suite import TestSuite\n \ndiff --git a/dts/tests/TestSuite_pmd_buffer_scatter.py b/dts/tests/TestSuite_pmd_buffer_scatter.py\nindex 3701c47408..a020682e8d 100644\n--- a/dts/tests/TestSuite_pmd_buffer_scatter.py\n+++ b/dts/tests/TestSuite_pmd_buffer_scatter.py\n@@ -17,10 +17,10 @@\n \n import struct\n \n-from scapy.layers.inet import IP  # type: ignore[import]\n-from scapy.layers.l2 import Ether  # type: ignore[import]\n-from scapy.packet import Raw  # type: ignore[import]\n-from scapy.utils import hexstr  # type: ignore[import]\n+from scapy.layers.inet import IP  # type: ignore[import-untyped]\n+from scapy.layers.l2 import Ether  # type: ignore[import-untyped]\n+from scapy.packet import Raw  # type: ignore[import-untyped]\n+from scapy.utils import hexstr  # type: ignore[import-untyped]\n \n from framework.remote_session.testpmd_shell import TestPmdForwardingModes, TestPmdShell\n from framework.test_suite import TestSuite\n",
    "prefixes": [
        "v4",
        "1/3"
    ]
}