From 7e7d91625d2c19f95501848cc567e7f07f53ce87 Mon Sep 17 00:00:00 2001 From: Stefano Rivera Date: Sat, 12 Nov 2022 21:42:04 +0200 Subject: [PATCH 1/3] Import setup from setuptools setuptools 60 uses its own bundled version of distutils, by default. It injects this into sys.modules, at import time. So we need to make sure that it is imported, before anything else imports distutils, to ensure everything is using the same distutils version. This change in setuptools is to prepare for Python 3.12, which will drop distutils. In this case, the best way to deal with the problem is to just use setuptools' setup(). Fixes: https://bugs.debian.org/1022482 and https://bugs.debian.org/1022538 --- packages/mbed-greentea/setup.py | 3 +-- packages/mbed-host-tests/setup.py | 3 +-- packages/mbed-ls/setup.py | 3 +-- setup.py | 3 +-- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/packages/mbed-greentea/setup.py b/packages/mbed-greentea/setup.py index a7248a6785..7835608eb6 100644 --- a/packages/mbed-greentea/setup.py +++ b/packages/mbed-greentea/setup.py @@ -24,8 +24,7 @@ import os from io import open -from distutils.core import setup -from setuptools import find_packages +from setuptools import find_packages, setup DESCRIPTION = "mbed 3.0 onwards test suite, codename Greentea. The test suite is a collection of tools that enable automated testing on mbed-enabled platforms" OWNER_NAMES = 'Anna Bridge, Qinghao Shi' diff --git a/packages/mbed-host-tests/setup.py b/packages/mbed-host-tests/setup.py index 8b0723d429..bbc059fbc5 100644 --- a/packages/mbed-host-tests/setup.py +++ b/packages/mbed-host-tests/setup.py @@ -23,9 +23,8 @@ """ import os -from distutils.core import setup from io import open -from setuptools import find_packages +from setuptools import find_packages, setup DESCRIPTION = "mbed tools used to flash, reset and supervise test execution for mbed-enabled devices" OWNER_NAMES = 'Qinghao Shi' diff --git a/packages/mbed-ls/setup.py b/packages/mbed-ls/setup.py index daa1bd1a2a..76b13d13a3 100644 --- a/packages/mbed-ls/setup.py +++ b/packages/mbed-ls/setup.py @@ -20,9 +20,8 @@ """ import os -from distutils.core import setup from io import open -from setuptools import find_packages +from setuptools import find_packages, setup DESCRIPTION = "mbed-ls is a Python module that detects and lists mbed-enabled devices connected to the host computer" OWNER_NAMES = 'Graham Hammond, Mark Edgeworth' diff --git a/setup.py b/setup.py index bd3d968422..ea6d1cb2a2 100644 --- a/setup.py +++ b/setup.py @@ -15,8 +15,7 @@ import os import sys -from distutils.core import setup -from setuptools import find_packages +from setuptools import find_packages, setup DESCRIPTION = "The tools to build, test, and work with Mbed OS" OWNER_NAMES = "Jimmy Brisson, Brian Daniels" From 131cec6ff2d68da3fa6db82a95b8849c550049c8 Mon Sep 17 00:00:00 2001 From: Tobias Jaster Date: Sun, 9 Jun 2024 13:17:11 +0200 Subject: [PATCH 2/3] Update requirements.txt for higher python versions --- requirements.txt | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/requirements.txt b/requirements.txt index ac6be4592e..18d75744ff 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,15 +1,23 @@ -PySerial>=3.0,<4.0 -requests>=2.0,<3.0 -intelhex>=2.0,<3.0 +PySerial>=3.0,<4.0; python_version <= '3.7' +PySerial; python_version > '3.7' +requests>=2.0,<3.0; python_version <= '3.7' +requests; python_version > '3.7' +intelhex>=2.0,<3.0; python_version <= '3.7' +intelhex; python_version > '3.7' future PrettyTable<=1.0.1; python_version < '3.6' -prettytable>=2.0,<3.0; python_version >= '3.6' +prettytable>=2.0,<3.0; python_version == '3.7' +prettytable; python_version > '3.7' fasteners -appdirs>=1.4,<2.0 -junit-xml>=1.0,<2.0 +appdirs>=1.4,<2.0; python_version <= '3.7' +appdirs; python_version > '3.7' +junit-xml>=1.0,<2.0; python_version <= '3.7' +junit-xml; python_version > '3.7' lockfile -six>=1.0,<2.0 -colorama>=0.3,<0.5 +six>=1.0,<2.0; python_version <= '3.7' +six; python_version > '3.7' +colorama>=0.3,<0.5; python_version <= '3.7' +colorama; python_version > '3.7' # When using beautiful soup, the XML parser needs to be installed independently. It is only needed on macOs though. beautifulsoup4 lxml; sys_platform == 'darwin' From acdfd4ff27596d93ef080bff42b2f5a3ec034c63 Mon Sep 17 00:00:00 2001 From: Tobias Jaster Date: Sun, 9 Jun 2024 13:21:48 +0200 Subject: [PATCH 3/3] Replace imp with importlib for python3.12 --- .../mbed_greentea/mbed_greentea_cli.py | 4 ++-- packages/mbed-greentea/requirements.txt | 6 ++++-- packages/mbed-greentea/test_requirements.txt | 3 ++- packages/mbed-host-tests/requirements.txt | 3 ++- .../test/conn_primitive_remote.py | 6 +++--- packages/mbed-host-tests/test_requirements.txt | 3 ++- packages/mbed-ls/requirements.txt | 6 ++++-- packages/mbed-ls/test_requirements.txt | 6 ++++-- requirements.txt | 8 ++++++-- src/mbed_os_tools/test/__init__.py | 4 ++-- test/test/conn_primitive_remote.py | 6 +++--- test_requirements.txt | 18 ++++++++++++------ 12 files changed, 46 insertions(+), 27 deletions(-) diff --git a/packages/mbed-greentea/mbed_greentea/mbed_greentea_cli.py b/packages/mbed-greentea/mbed_greentea/mbed_greentea_cli.py index 2fbd6c568e..59eeba86ae 100644 --- a/packages/mbed-greentea/mbed_greentea/mbed_greentea_cli.py +++ b/packages/mbed-greentea/mbed_greentea/mbed_greentea_cli.py @@ -22,7 +22,7 @@ import sys import random import optparse -import imp +import importlib import io from time import time try: @@ -187,7 +187,7 @@ def main(): # Show --fm option only if "fm_agent" module installed try: - imp.find_module('fm_agent') + importlib.util.find_spec('fm_agent') except ImportError: fm_help=optparse.SUPPRESS_HELP else: diff --git a/packages/mbed-greentea/requirements.txt b/packages/mbed-greentea/requirements.txt index edc685077e..ba8b5e02fc 100644 --- a/packages/mbed-greentea/requirements.txt +++ b/packages/mbed-greentea/requirements.txt @@ -1,2 +1,4 @@ -mbed-os-tools>=0.0.9 -mbed-host-tests>=1.5.0,<2 +mbed-os-tools>=0.0.9; python_version <= '3.7' +mbed-os-tools; python_version > '3.7' +mbed-host-tests>=1.5.0,<2; python_version <= '3.7' +mbed-host-tests; python_version > '3.7' diff --git a/packages/mbed-greentea/test_requirements.txt b/packages/mbed-greentea/test_requirements.txt index 429709a2d2..4a0b7cf48a 100644 --- a/packages/mbed-greentea/test_requirements.txt +++ b/packages/mbed-greentea/test_requirements.txt @@ -1,3 +1,4 @@ -mock>=2 +mock>=2; python_version <= '3.7' +mock; python_version > '3.7' coverage coveralls diff --git a/packages/mbed-host-tests/requirements.txt b/packages/mbed-host-tests/requirements.txt index 68e2449ffc..0c130cb17b 100644 --- a/packages/mbed-host-tests/requirements.txt +++ b/packages/mbed-host-tests/requirements.txt @@ -1 +1,2 @@ -mbed-os-tools>=0.0.9 +mbed-os-tools>=0.0.9; python_version <= '3.7' +mbed-os-tools; python_version > '3.7' diff --git a/packages/mbed-host-tests/test/conn_primitive_remote.py b/packages/mbed-host-tests/test/conn_primitive_remote.py index b5365f4e93..0dd707ab46 100644 --- a/packages/mbed-host-tests/test/conn_primitive_remote.py +++ b/packages/mbed-host-tests/test/conn_primitive_remote.py @@ -80,7 +80,7 @@ def setUp(self): def test_constructor(self): self.importer.assert_called_once_with("RemoteModuleMock") - self.remote.client.get_resources.called_once() + self.remote.client.get_resources.assert_called_once() self.assertEqual(self.remote.remote_module, RemoteModuleMock) self.assertIsInstance(self.remote.client, RemoteModuleMock) self.assertIsInstance(self.remote.selected_resource, RemoteResourceMock) @@ -93,10 +93,10 @@ def test_constructor(self): 'tags': {"a": True, "b": True}}) # flash is called - self.remote.selected_resource.open_connection.called_once_with("test.bin") + # self.remote.selected_resource.open_connection.called_once_with("test.bin") # open_connection is called - self.remote.selected_resource.open_connection.called_once() + self.remote.selected_resource.open_connection.assert_called_once() connect = self.remote.selected_resource.open_connection.call_args[1] self.assertEqual(connect["parameters"].baudrate, 9600) diff --git a/packages/mbed-host-tests/test_requirements.txt b/packages/mbed-host-tests/test_requirements.txt index 429709a2d2..4a0b7cf48a 100644 --- a/packages/mbed-host-tests/test_requirements.txt +++ b/packages/mbed-host-tests/test_requirements.txt @@ -1,3 +1,4 @@ -mock>=2 +mock>=2; python_version <= '3.7' +mock; python_version > '3.7' coverage coveralls diff --git a/packages/mbed-ls/requirements.txt b/packages/mbed-ls/requirements.txt index 2aeb86552c..d4a6ec736d 100644 --- a/packages/mbed-ls/requirements.txt +++ b/packages/mbed-ls/requirements.txt @@ -1,3 +1,5 @@ PrettyTable<=1.0.1; python_version < '3.6' -prettytable>=2.0,<3.0; python_version >= '3.6' -mbed-os-tools>=0.0.9 +prettytable>=2.0,<3.0; python_version == '3.7' +prettytable; python_version > '3.7' +mbed-os-tools>=0.0.9; python_version <= '3.7' +mbed-os-tools; python_version > '3.7' diff --git a/packages/mbed-ls/test_requirements.txt b/packages/mbed-ls/test_requirements.txt index c02522629e..632abc88e4 100644 --- a/packages/mbed-ls/test_requirements.txt +++ b/packages/mbed-ls/test_requirements.txt @@ -1,4 +1,6 @@ -mock>=2 -pytest>=3 +mock>=2; python_version <= '3.7' +mock; python_version > '3.7' +pytest>=3; python_version <= '3.7' +pytest; python_version > '3.7' coverage coveralls diff --git a/requirements.txt b/requirements.txt index 18d75744ff..9984cd7912 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,7 +5,7 @@ requests; python_version > '3.7' intelhex>=2.0,<3.0; python_version <= '3.7' intelhex; python_version > '3.7' future -PrettyTable<=1.0.1; python_version < '3.6' +PrettyTable<=1.0.1; python_version <= '3.6' prettytable>=2.0,<3.0; python_version == '3.7' prettytable; python_version > '3.7' fasteners @@ -19,5 +19,9 @@ six; python_version > '3.7' colorama>=0.3,<0.5; python_version <= '3.7' colorama; python_version > '3.7' # When using beautiful soup, the XML parser needs to be installed independently. It is only needed on macOs though. -beautifulsoup4 +beautifulsoup4<4.13.0; python_version <= '3.6' #__future__ added +beautifulsoup4; python_version >= '3.7' +soupsieve<2.4; python_version <= '3.7' #__future__ added +soupsieve; python_version > '3.7' lxml; sys_platform == 'darwin' +setuptools; python_version >= '3.12' diff --git a/src/mbed_os_tools/test/__init__.py b/src/mbed_os_tools/test/__init__.py index eca1fec65d..aa8ff3f6ee 100644 --- a/src/mbed_os_tools/test/__init__.py +++ b/src/mbed_os_tools/test/__init__.py @@ -22,7 +22,7 @@ """ -import imp +import importlib import sys from optparse import OptionParser from optparse import SUPPRESS_HELP @@ -245,7 +245,7 @@ def init_host_test_cli_params(): # Show --fm option only if "fm_agent" module installed try: - imp.find_module("fm_agent") + importlib.util.find_spec("fm_agent") except ImportError: fm_help = SUPPRESS_HELP else: diff --git a/test/test/conn_primitive_remote.py b/test/test/conn_primitive_remote.py index aaca449638..7b2e5850a5 100644 --- a/test/test/conn_primitive_remote.py +++ b/test/test/conn_primitive_remote.py @@ -78,7 +78,7 @@ def setUp(self): def test_constructor(self): self.importer.assert_called_once_with("RemoteModuleMock") - self.remote.client.get_resources.called_once() + self.remote.client.get_resources.assert_called_once() self.assertEqual(self.remote.remote_module, RemoteModuleMock) self.assertIsInstance(self.remote.client, RemoteModuleMock) self.assertIsInstance(self.remote.selected_resource, RemoteResourceMock) @@ -91,10 +91,10 @@ def test_constructor(self): 'tags': {"a": True, "b": True}}) # flash is called - self.remote.selected_resource.open_connection.called_once_with("test.bin") + ## self.remote.selected_resource.open_connection.called_once_with("test.bin") # open_connection is called - self.remote.selected_resource.open_connection.called_once() + self.remote.selected_resource.open_connection.assert_called_once() connect = self.remote.selected_resource.open_connection.call_args[1] self.assertEqual(connect["parameters"].baudrate, 9600) diff --git a/test_requirements.txt b/test_requirements.txt index d5200c286f..e9d60e7654 100644 --- a/test_requirements.txt +++ b/test_requirements.txt @@ -1,6 +1,12 @@ -coverage>=4,<5 -coveralls>=1,<2 -mock>=2,<4 -pytest>=3,<5 -wheel>=0.34 -setuptools-scm>=4.1 +coverage>=4,<5; python_version <= '3.7' +coverage; python_version > '3.7' +coveralls>=1,<2; python_version <= '3.7' +coveralls; python_version > '3.7' +mock>=2,<4; python_version <= '3.7' +mock; python_version > '3.7' +pytest>=3,<5; python_version <= '3.7' +pytest; python_version > '3.7' +wheel>=0.34; python_version <= '3.7' +wheel; python_version > '3.7' +setuptools-scm>=4.1; python_version <= '3.7' +setuptools-scm; python_version > '3.7'