diff --git a/.github/workflows/basic_checks.yml b/.github/workflows/basic_checks.yml index d58449b6611..ed18658ad3d 100644 --- a/.github/workflows/basic_checks.yml +++ b/.github/workflows/basic_checks.yml @@ -29,6 +29,8 @@ jobs: # detection output format: https://github.com/nexB/scancode-toolkit/releases/tag/v32.0.0 # Need to update Mbed's scripts for the new format. run: | + apt-get update + apt-get install -y libxml2-dev libxslt1-dev pip install -U "scancode-toolkit<32.0" "click>=7,<8" - @@ -169,20 +171,16 @@ jobs: sudo apt-get update sudo apt-get install -y python3-venv - - - name: install dependencies + - name: Install Python packages run: | python3 -m venv venv source venv/bin/activate - pip install -r tools/requirements.txt - pip install -r tools/python/python_tests/requirements.txt + pip install -e ./tools[unit-tests] - - - name: Python Tests + - name: Python Tests run: | source venv/bin/activate - cd tools/python - ./run_python_tests.sh + tools/run_python_tests.sh check-cmsis-mcu-descriptions-matches-target-list: runs-on: ubuntu-latest @@ -195,18 +193,18 @@ jobs: sudo apt-get update sudo apt-get install -y python3-venv - - name: install dependencies + - name: Install Python packages run: | python3 -m venv venv source venv/bin/activate - pip install -r tools/requirements.txt + pip install -e ./tools - name: Verify that cmsis_mcu_descriptions.json5 is in sync with targets.json5 run: | source venv/bin/activate cd tools/python - python -m mbed_tools.cli.main cmsis-mcu-descr find-unused - python -m mbed_tools.cli.main cmsis-mcu-descr check-missing + mbed-tools cmsis-mcu-descr find-unused + mbed-tools cmsis-mcu-descr check-missing pin-validation: diff --git a/.github/workflows/test_building_multiple_executables.yml b/.github/workflows/test_building_multiple_executables.yml index 0397b5ba456..d6ca407a945 100644 --- a/.github/workflows/test_building_multiple_executables.yml +++ b/.github/workflows/test_building_multiple_executables.yml @@ -14,7 +14,14 @@ jobs: # Note: pip>=20.3 is needed to install dependencies of cysecuretools run: | python3 -m pip install --upgrade pip - python3 -m pip install -r tools/requirements.txt + + # Remove mbed-tools package that comes with the docker image, it conflicts with the one we want to install + python3 -m pip uninstall -y mbed-tools + + python3 -m pip install -e ./tools + + # Also install cysecuretools which is not installed automatically + python3 -m pip install 'cysecuretools~=6.0' # Note: For this CI job we use MBED_CREATE_PYTHON_VENV=FALSE so that we can make sure # this mode works. diff --git a/targets/TARGET_Cypress/scripts/mbed_set_post_build_cypress.cmake b/targets/TARGET_Cypress/scripts/mbed_set_post_build_cypress.cmake index 595a398db46..69c24b1ef8e 100644 --- a/targets/TARGET_Cypress/scripts/mbed_set_post_build_cypress.cmake +++ b/targets/TARGET_Cypress/scripts/mbed_set_post_build_cypress.cmake @@ -3,6 +3,12 @@ include(mbed_target_functions) +# Make sure we have the python packages we need +mbed_check_or_install_python_package(HAVE_PYTHON_CYSECURETOOLS cysecuretools "cysecuretools~=6.0") +if(NOT HAVE_PYTHON_CYSECURETOOLS) + message(FATAL_ERROR "Python package required for signing not found.") +endif() + # # Merge Cortex-M4 HEX and a Cortex-M0 HEX. # @@ -63,8 +69,6 @@ macro(mbed_post_build_psoc6_sign_image ) if("${cypress_psoc6_target}" STREQUAL "${MBED_TARGET}") function(mbed_post_build_function target) - find_package(Python3) - set(post_build_command ${Python3_EXECUTABLE} ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/PSOC6.py sign diff --git a/targets/upload_method_cfg/SFE_ARTEMIS.cmake b/targets/upload_method_cfg/SFE_ARTEMIS.cmake index 2f8ff55ee17..b970721e5f5 100644 --- a/targets/upload_method_cfg/SFE_ARTEMIS.cmake +++ b/targets/upload_method_cfg/SFE_ARTEMIS.cmake @@ -6,7 +6,7 @@ # 1. This board does not have an onboard debugger. You must use an external debugger, e.g. a PicoProbe # or J-Link, if you wish to debug code. # 2. Support for this device exists in PyOCD main branch but has not been released yet (as of Jun 2025). -# To use PyOCD, you need to manually install it from the git repository by running (inside the Mbed OS venv): +# This version will be used automatically by Mbed if the python venv is enabled. If not, you need to install it via: # pip install git+https://github.com/pyocd/pyOCD.git set(UPLOAD_METHOD_DEFAULT NONE) diff --git a/tools/cmake/mbed-run-greentea-test.in.cmake b/tools/cmake/mbed-run-greentea-test.in.cmake index e5980564416..392db2b1ee9 100644 --- a/tools/cmake/mbed-run-greentea-test.in.cmake +++ b/tools/cmake/mbed-run-greentea-test.in.cmake @@ -14,9 +14,8 @@ set(MBEDHTRUN_ARGS --skip-flashing @MBED_HTRUN_ARGUMENTS@) # filled in by config # Print out command string(REPLACE ";" " " MBEDHTRUN_ARGS_FOR_DISPLAY "${MBEDHTRUN_ARGS}") -message("Executing: @Python3_EXECUTABLE@ -m mbed_host_tests.mbedhtrun ${MBEDHTRUN_ARGS_FOR_DISPLAY}") +message("Executing: @mbedhtrun@ ${MBEDHTRUN_ARGS_FOR_DISPLAY}") execute_process( - COMMAND @Python3_EXECUTABLE@ -m mbed_host_tests.mbedhtrun ${MBEDHTRUN_ARGS} - WORKING_DIRECTORY "@mbed-os_SOURCE_DIR@/tools/python" + COMMAND @mbedhtrun@ ${MBEDHTRUN_ARGS} COMMAND_ERROR_IS_FATAL ANY) \ No newline at end of file diff --git a/tools/cmake/mbed_generate_configuration.cmake b/tools/cmake/mbed_generate_configuration.cmake index 2cbb6633e78..19a788aa19a 100644 --- a/tools/cmake/mbed_generate_configuration.cmake +++ b/tools/cmake/mbed_generate_configuration.cmake @@ -82,8 +82,7 @@ if(MBED_NEED_TO_RECONFIGURE) # Make sure an old config file doesn't stick around file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/mbed_config.cmake) - set(MBEDTOOLS_CONFIGURE_COMMAND ${Python3_EXECUTABLE} - -m mbed_tools.cli.main + set(MBEDTOOLS_CONFIGURE_COMMAND ${mbed_tools} -v -v # without at least -v, warnings (e.g. "you have tried to override a nonexistent parameter") do not get printed configure -t GCC_ARM # GCC_ARM is currently the only supported toolchain @@ -96,7 +95,6 @@ if(MBED_NEED_TO_RECONFIGURE) execute_process( COMMAND ${MBEDTOOLS_CONFIGURE_COMMAND} - WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/../python RESULT_VARIABLE MBEDTOOLS_CONFIGURE_RESULT OUTPUT_VARIABLE MBEDTOOLS_CONFIGURE_OUTPUT ERROR_VARIABLE MBEDTOOLS_CONFIGURE_ERROR_OUTPUT @@ -106,7 +104,7 @@ if(MBED_NEED_TO_RECONFIGURE) if((NOT MBEDTOOLS_CONFIGURE_RESULT EQUAL 0) OR (NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/mbed_config.cmake)) string(JOIN " " MBEDTOOLS_COMMAND_SPC_SEP ${MBEDTOOLS_CONFIGURE_COMMAND}) - message(FATAL_ERROR "mbedtools configure failed! Cannot build this project. Command was cd ${CMAKE_CURRENT_LIST_DIR}/../python && ${MBEDTOOLS_COMMAND_SPC_SEP}") + message(FATAL_ERROR "mbedtools configure failed! Cannot build this project. Command was ${MBEDTOOLS_COMMAND_SPC_SEP}") endif() endif() diff --git a/tools/cmake/mbed_python_interpreter.cmake b/tools/cmake/mbed_python_interpreter.cmake index 57691a2546b..71a9f377768 100644 --- a/tools/cmake/mbed_python_interpreter.cmake +++ b/tools/cmake/mbed_python_interpreter.cmake @@ -4,8 +4,12 @@ # CMake script to find the Python interpreter and either install or find # Mbed's dependencies. +include(CheckPythonPackage) + option(MBED_CREATE_PYTHON_VENV "If true, Mbed OS will create its own virtual environment (venv) and install its Python packages there. This removes the need to manually install Python packages." TRUE) +get_filename_component(MBED_CE_TOOLS_BASE_DIR "${CMAKE_CURRENT_LIST_DIR}/.." ABSOLUTE) + if(MBED_CREATE_PYTHON_VENV) # Use the venv. @@ -13,23 +17,51 @@ if(MBED_CREATE_PYTHON_VENV) # (not target specific) set(MBED_VENV_LOCATION ${MBED_SOURCE_DIR}/venv) set(VENV_STAMP_FILE ${MBED_VENV_LOCATION}/mbed-venv.stamp) - set(MBED_REQUIREMENTS_TXT_LOCATION "${CMAKE_CURRENT_LIST_DIR}/../requirements.txt") + set(MBED_PYPROJECT_TOML_LOCATION "${MBED_CE_TOOLS_BASE_DIR}/pyproject.toml") - # Make it so modifying requirements.txt will trigger a reconfigure - set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${MBED_REQUIREMENTS_TXT_LOCATION}) + # Make it so modifying pyproject.toml will trigger a reconfigure + set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${MBED_PYPROJECT_TOML_LOCATION}) - # Find Python3, using the venv if it already exists - set (ENV{VIRTUAL_ENV} ${MBED_VENV_LOCATION}) - set (Python3_FIND_VIRTUALENV FIRST) - find_package(Python3 REQUIRED COMPONENTS Interpreter) + # Find Python3 (this will get the one in the venv if we already found it) + set(ENV{VIRTUAL_ENV} ${MBED_VENV_LOCATION}) + set(Python3_FIND_VIRTUALENV FIRST) + find_package(Python3 COMPONENTS Interpreter) include(CheckPythonPackage) set(NEED_TO_CREATE_VENV FALSE) set(NEED_TO_INSTALL_PACKAGES FALSE) - if(NOT EXISTS "${VENV_STAMP_FILE}") + + # Special situation: if we have a cached interpreter location in the venv dir, but Python could be found, + # this means that the venv was deleted or symlinks to a missing python install location. + # So, use the system python and recreate it. + if("${Python3_EXECUTABLE}" MATCHES "${MBED_VENV_LOCATION}" AND NOT Python3_FOUND) + message(STATUS "Python venv deleted or unusable. Recreating using system Python...") + + # Launch a new search for Python3 + unset(Python3_EXECUTABLE) + unset(_Python3_EXECUTABLE CACHE) + unset(_Python3_INTERPRETER_PROPERTIES CACHE) + unset(_Python3_INTERPRETER_SIGNATURE CACHE) + set (Python3_FIND_VIRTUALENV STANDARD) + unset(ENV{VIRTUAL_ENV}) + find_package(Python3 REQUIRED COMPONENTS Interpreter) + + # Reset venv configuration as above + set(Python3_FIND_VIRTUALENV FIRST) + set(ENV{VIRTUAL_ENV} ${MBED_VENV_LOCATION}) + set(NEED_TO_CREATE_VENV TRUE) set(NEED_TO_INSTALL_PACKAGES TRUE) - elseif("${MBED_REQUIREMENTS_TXT_LOCATION}" IS_NEWER_THAN "${VENV_STAMP_FILE}") + elseif(NOT EXISTS "${VENV_STAMP_FILE}") + set(NEED_TO_CREATE_VENV TRUE) + set(NEED_TO_INSTALL_PACKAGES TRUE) + elseif(NOT ("${Python3_EXECUTABLE}" MATCHES "${MBED_VENV_LOCATION}")) + # Alternately if we think we have the venv but FindPython didn't use it, that likely means it's + # missing or corrupted and we need to recreate it + message(STATUS "Python venv deleted or unusable. Recreating using system Python...") + set(NEED_TO_CREATE_VENV TRUE) + set(NEED_TO_INSTALL_PACKAGES TRUE) + elseif("${MBED_PYPROJECT_TOML_LOCATION}" IS_NEWER_THAN "${VENV_STAMP_FILE}") set(NEED_TO_INSTALL_PACKAGES TRUE) endif() @@ -47,7 +79,8 @@ if(MBED_CREATE_PYTHON_VENV) unset(_Python3_EXECUTABLE CACHE) unset(_Python3_INTERPRETER_PROPERTIES CACHE) unset(_Python3_INTERPRETER_SIGNATURE CACHE) - ## Launch a new search for Python3 + + ## Launch a new search for Python3 in the venv find_package (Python3 REQUIRED COMPONENTS Interpreter) endif() @@ -59,7 +92,7 @@ if(MBED_CREATE_PYTHON_VENV) COMMAND_ERROR_IS_FATAL ANY ) execute_process( - COMMAND ${Python3_EXECUTABLE} -m pip install -r ${MBED_REQUIREMENTS_TXT_LOCATION} + COMMAND ${Python3_EXECUTABLE} -m pip install -e ${MBED_CE_TOOLS_BASE_DIR} COMMAND_ERROR_IS_FATAL ANY ) @@ -67,33 +100,72 @@ if(MBED_CREATE_PYTHON_VENV) file(TOUCH ${VENV_STAMP_FILE}) endif() - # We always have the memap deps with the venv - set(HAVE_MEMAP_DEPS TRUE) + # When using the venv, scripts will always be installed to the directory where Python itself is installed + # (venv\Scripts on Windows, venv/bin on Linux/Mac) + get_filename_component(PYTHON3_INTERP_DIR ${Python3_EXECUTABLE} DIRECTORY) + set(PYTHON_SCRIPT_LOC_HINTS ${PYTHON3_INTERP_DIR}) else() find_package(Python3 REQUIRED COMPONENTS Interpreter) - include(CheckPythonPackage) + # The cmsis_mcu_descr module was written from scratch by Mbed CE. + # So, this check will ensure that the user has installed the Mbed CE version of mbed_tools + # and not the PyPI version (which we cannot update because it's owned by ARM) + check_python_package(mbed_tools.cli.cmsis_mcu_descr HAVE_MBED_CE_TOOLS) - # Check python packages - set(PYTHON_PACKAGES_TO_CHECK intelhex prettytable future jinja2) - foreach(PACKAGE_NAME ${PYTHON_PACKAGES_TO_CHECK}) - string(TOUPPER ${PACKAGE_NAME} PACKAGE_NAME_UCASE) # Ucase name needed for CMake variable - string(TOLOWER ${PACKAGE_NAME} PACKAGE_NAME_LCASE) # Lcase name needed for import statement - - check_python_package(${PACKAGE_NAME_LCASE} HAVE_PYTHON_${PACKAGE_NAME_UCASE}) - if(NOT HAVE_PYTHON_${PACKAGE_NAME_UCASE}) - message(WARNING "Missing Python dependency ${PACKAGE_NAME}") - endif() - endforeach() - - # Check deps for memap - if(Python3_FOUND AND HAVE_PYTHON_INTELHEX AND HAVE_PYTHON_PRETTYTABLE) - set(HAVE_MEMAP_DEPS TRUE) - else() - set(HAVE_MEMAP_DEPS FALSE) - message(STATUS "Missing Python dependencies (at least one of: python3, intelhex, prettytable) so the memory map cannot be printed") + if(NOT HAVE_MBED_CE_TOOLS) + message(FATAL_ERROR "Did not detect the Mbed CE Python tools installed into the python interpreter ${Python3_EXECUTABLE}. Install them with a command like: ${Python3_EXECUTABLE} -m pip install -e ${MBED_CE_TOOLS_BASE_DIR}") endif() + # For now, don't supply any hints and assume that the script install dir is correctly on PATH + set(PYTHON_SCRIPT_LOC_HINTS) endif() + +# Find scripts provided by the Python package +find_program(mbed_tools + NAMES mbed-tools + HINTS ${PYTHON_SCRIPT_LOC_HINTS} + DOC "Path to mbed-tools Python script." + REQUIRED) + +find_program(mbedhtrun + NAMES mbedhtrun + HINTS ${PYTHON_SCRIPT_LOC_HINTS} + DOC "Path to mbedhtrun Python script." + REQUIRED) + +find_program(memap + NAMES memap + HINTS ${PYTHON_SCRIPT_LOC_HINTS} + DOC "Path to memap Python script." + REQUIRED) + +# +# Utility function to check for a Python package with the given import name. +# If the package is not found and the Mbed venv is in use, +# then the package will be installed by passing PACKAGE_INSTALL_CONSTRAINT to Pip. +# If the install fails or the venv is not being used, FOUND_VAR will be set to false. +# +function(mbed_check_or_install_python_package FOUND_VAR PACKAGE_IMPORT_NAME PACKAGE_INSTALL_CONSTRAINT) + check_python_package(${PACKAGE_IMPORT_NAME} ${FOUND_VAR}) + + if(NOT ${FOUND_VAR}) + # If we are using the Mbed venv, we can install the package automatically. + if(MBED_CREATE_PYTHON_VENV) + message(STATUS "Mbed: Installing ${PACKAGE_INSTALL_CONSTRAINT} into Mbed's Python virtualenv") + execute_process( + COMMAND ${Python3_EXECUTABLE} -m pip install ${PACKAGE_INSTALL_CONSTRAINT} + RESULT_VARIABLE PIP_INSTALL_RESULT + ) + if(NOT PIP_INSTALL_RESULT EQUAL 0) + message(WARNING "Installation of ${PACKAGE_INSTALL_CONSTRAINT} via pip failed.") + else() + # Redo the check to confirm it's installed + check_python_package(${PACKAGE_IMPORT_NAME} ${FOUND_VAR}) + endif() + else() + message(WARNING "Mbed: ${PACKAGE_IMPORT_NAME} cannot be installed because the Mbed virtualenv is not being used. Please install ${PACKAGE_INSTALL_CONSTRAINT} into Mbed's Python interpeter manually.") + endif() + endif() +endfunction(mbed_check_or_install_python_package) \ No newline at end of file diff --git a/tools/cmake/mbed_target_functions.cmake b/tools/cmake/mbed_target_functions.cmake index 454b9a66a2e..10d1ad484c3 100644 --- a/tools/cmake/mbed_target_functions.cmake +++ b/tools/cmake/mbed_target_functions.cmake @@ -65,12 +65,12 @@ function(mbed_generate_map_file target) TARGET ${target} POST_BUILD - COMMAND ${Python3_EXECUTABLE} -m memap.memap - -t ${MBED_TOOLCHAIN} ${CMAKE_CURRENT_BINARY_DIR}/${target}${CMAKE_EXECUTABLE_SUFFIX}.map + COMMAND ${memap} + -t ${MBED_TOOLCHAIN} ${target}${CMAKE_EXECUTABLE_SUFFIX}.map --depth ${MBED_MEMAP_DEPTH} ${MEMORY_BANKS_ARG} WORKING_DIRECTORY - ${mbed-os_SOURCE_DIR}/tools/python + ${CMAKE_CURRENT_BINARY_DIR} ) # generate json file @@ -79,14 +79,14 @@ function(mbed_generate_map_file target) TARGET ${target} POST_BUILD - COMMAND ${Python3_EXECUTABLE} -m memap.memap - -t ${MBED_TOOLCHAIN} ${CMAKE_CURRENT_BINARY_DIR}/${target}${CMAKE_EXECUTABLE_SUFFIX}.map + COMMAND ${memap} + -t ${MBED_TOOLCHAIN} ${target}${CMAKE_EXECUTABLE_SUFFIX}.map --depth ${MBED_MEMAP_DEPTH} -e json - -o ${CMAKE_CURRENT_BINARY_DIR}/${target}${CMAKE_EXECUTABLE_SUFFIX}.memmap.json + -o ${target}${CMAKE_EXECUTABLE_SUFFIX}.memmap.json ${MEMORY_BANKS_ARG} WORKING_DIRECTORY - ${mbed-os_SOURCE_DIR}/tools/python + ${CMAKE_CURRENT_BINARY_DIR} ) endif() @@ -96,14 +96,14 @@ function(mbed_generate_map_file target) TARGET ${target} POST_BUILD - COMMAND ${Python3_EXECUTABLE} -m memap.memap - -t ${MBED_TOOLCHAIN} ${CMAKE_CURRENT_BINARY_DIR}/${target}${CMAKE_EXECUTABLE_SUFFIX}.map + COMMAND ${memap} + -t ${MBED_TOOLCHAIN} ${target}${CMAKE_EXECUTABLE_SUFFIX}.map --depth ${MBED_MEMAP_DEPTH} -e html - -o ${CMAKE_CURRENT_BINARY_DIR}/${target}${CMAKE_EXECUTABLE_SUFFIX}.memmap.html + -o ${target}${CMAKE_EXECUTABLE_SUFFIX}.memmap.html ${MEMORY_BANKS_ARG} WORKING_DIRECTORY - ${mbed-os_SOURCE_DIR}/tools/python + ${CMAKE_CURRENT_BINARY_DIR} ) endif() endfunction() diff --git a/tools/cmake/upload_methods/UploadMethodPYOCD.cmake b/tools/cmake/upload_methods/UploadMethodPYOCD.cmake index e08f564649d..04949ba2674 100644 --- a/tools/cmake/upload_methods/UploadMethodPYOCD.cmake +++ b/tools/cmake/upload_methods/UploadMethodPYOCD.cmake @@ -9,10 +9,13 @@ set(UPLOAD_SUPPORTS_DEBUG TRUE) -### Check if upload method can be enabled on this machine -include(CheckPythonPackage) -check_python_package(pyocd HAVE_PYOCD) -set(UPLOAD_PYOCD_FOUND ${HAVE_PYOCD}) +### Find PyOCD package + +# Use the Git version so that we get Ambiq Apollo3 support (as that was not included in the latest release +# before PyOCD development stopped, as of Jun 2025) +mbed_check_or_install_python_package(HAVE_PYTHON_PYOCD pyocd git+https://github.com/pyocd/pyOCD.git) + +set(UPLOAD_PYOCD_FOUND ${HAVE_PYTHON_PYOCD}) ### Function to generate upload target set(PYOCD_PROBE_ARGS "" CACHE INTERNAL "" FORCE) diff --git a/tools/pyproject.toml b/tools/pyproject.toml new file mode 100644 index 00000000000..6b026b3c520 --- /dev/null +++ b/tools/pyproject.toml @@ -0,0 +1,89 @@ +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[project] +name = "mbed-ce-tools" +version = "0.0.1" +description = 'Tools for building and testing Mbed OS Community Edition' +requires-python = ">=3.8" +license = "Apache-2.0" +dependencies = [ + # memap dependencies --------------------------------------------------------------------- + "intelhex>=2.3.0,<3.0.0", + + # 3.12.0 both added HRuleStyle and deprecated the old constants in one single release :/ + "prettytable>=2.0,<3.12.0; python_version < '3.9'", + "prettytable>=3.12.0; python_version >= '3.9'", + + # mbed_tools dependencies ---------------------------------------------------------------- + "jinja2>=2.11.3", + "python-dotenv", + "Click>=8.0", # Need at least this version for pathlib.Path support + "GitPython", + "tqdm", + "tabulate", + "requests>=2.20", + "typing-extensions", + "pyserial", + "appdirs", + "pyjson5>=1.6", + "humanize>=4.9.0", + "setuptools>=64.0", + + # Needed for downloading CMSIS MCU descriptions + "cmsis-pack-manager>=0.5.0", + + # USB device detection on Mac + "pywin32; platform_system=='Windows'", + + # USB device detection on Linux + "psutil; platform_system=='Linux'", + "pyudev; platform_system=='Linux'", + + # USB device detection on Mac + "beautifulsoup4; sys_platform == 'darwin'", + "lxml; sys_platform == 'darwin'", + + # mbed_os_tools.test dependencies --------------------------------------------------------- + "junit-xml>=1.0", + "lockfile", + "colorama", + + # mbed_os_tools.detect dependencies ------------------------------------------------------- + "fasteners", + + # needed for signing secure images -------------------------------------------------------- + "cryptography", + "cbor" +] + +[project.optional-dependencies] +unit-tests = [ + "pytest", + "factory_boy", + "requests-mock", + "mock", + "coverage", + + # Even though beautifulsoup4 and lxml are only used by the mac version + # of mbed ls tools, they're needed on all platforms for its unit test. + "beautifulsoup4", + "lxml" +] + +[tool.hatch.build.targets.wheel] +packages = [ + "python/mbed_host_tests", + "python/mbed_lstools", + "python/mbed_os_tools", + "python/mbed_tools", + "python/memap", + "python/scancode_evaluate", +] + +[project.scripts] +mbedhtrun = "mbed_host_tests.mbedhtrun:main" +mbedls = "mbed_lstools.main:mbedls_main" +mbed-tools = "mbed_tools.cli.main:cli" +memap = "memap.memap:main" \ No newline at end of file diff --git a/tools/python/mbed_os_tools/detect/lstools_base.py b/tools/python/mbed_os_tools/detect/lstools_base.py index e7852870ec5..6fdb6a0995a 100644 --- a/tools/python/mbed_os_tools/detect/lstools_base.py +++ b/tools/python/mbed_os_tools/detect/lstools_base.py @@ -14,7 +14,7 @@ # limitations under the License. import re -from abc import ABCMeta, abstractmethod +from abc import ABC, abstractmethod from io import open from json import load from os import listdir @@ -28,7 +28,6 @@ LOCAL_PLATFORM_DATABASE, LOCAL_MOCKS_DATABASE, ) -from future.utils import with_metaclass mbedls_root_logger = logging.getLogger("mbedls") mbedls_root_logger.setLevel(logging.WARNING) @@ -57,7 +56,7 @@ class FSInteraction(object): Never = 3 -class MbedLsToolsBase(with_metaclass(ABCMeta, object)): +class MbedLsToolsBase(ABC): """ Base class for mbed-lstools, defines mbed-ls tools interface for mbed-enabled devices detection for various hosts """ diff --git a/tools/python/mbed_os_tools/test/host_tests/base_host_test.py b/tools/python/mbed_os_tools/test/host_tests/base_host_test.py index 7691ac752e1..4ef229b7c04 100644 --- a/tools/python/mbed_os_tools/test/host_tests/base_host_test.py +++ b/tools/python/mbed_os_tools/test/host_tests/base_host_test.py @@ -14,7 +14,6 @@ # limitations under the License. import inspect -import six from time import time from inspect import isfunction, ismethod @@ -227,7 +226,7 @@ def register_callback(self, key, callback, force=False): # Check if callback has all three required parameters (key, value, timestamp) # When callback is class method should have 4 arguments (self, key, value, timestamp) if ismethod(callback): - arg_count = six.get_function_code(callback).co_argcount + arg_count = callback.__code__.co_argcount if arg_count != 4: err_msg = "callback 'self.%s('%s', ...)' defined with %d arguments"% (callback.__name__, key, arg_count) err_msg += ", should have 4 arguments: self.%s(self, key, value, timestamp)"% callback.__name__ @@ -235,7 +234,7 @@ def register_callback(self, key, callback, force=False): # When callback is just a function should have 3 arguments func(key, value, timestamp) if isfunction(callback): - arg_count = six.get_function_code(callback).co_argcount + arg_count = callback.__code__.co_argcount if arg_count != 3: err_msg = "callback '%s('%s', ...)' defined with %d arguments"% (callback.__name__, key, arg_count) err_msg += ", should have 3 arguments: %s(key, value, timestamp)"% callback.__name__ diff --git a/tools/python/python_tests/requirements.txt b/tools/python/python_tests/requirements.txt deleted file mode 100644 index 629c27196bf..00000000000 --- a/tools/python/python_tests/requirements.txt +++ /dev/null @@ -1,12 +0,0 @@ -# These are the requirements for running the Python package tests. -# They are in addition to the requirements.txt under mbedos/tools/. -pytest -factory_boy -requests-mock -mock -coverage - -# Even though beautifulsoup4 and lxml are only used by the mac version -# of mbed ls tools, they're needed on all platforms for its unit test. -beautifulsoup4 -lxml \ No newline at end of file diff --git a/tools/python/scancode_evaluate/scancode_evaluate.py b/tools/python/scancode_evaluate/scancode_evaluate.py index 3de4c64852e..0c31eb920ff 100644 --- a/tools/python/scancode_evaluate/scancode_evaluate.py +++ b/tools/python/scancode_evaluate/scancode_evaluate.py @@ -212,7 +212,7 @@ def parse_args(): return parser.parse_args() -if __name__ == "__main__": +def main(): init_logger() args = parse_args() if pathlib.Path(args.scancode_output_path).is_file(): @@ -224,3 +224,6 @@ def parse_args(): else: userlog.warning("Could not find the scancode json file") sys.exit(ReturnCode.ERROR.value) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/tools/python/python_tests/__init__.py b/tools/python_tests/__init__.py similarity index 100% rename from tools/python/python_tests/__init__.py rename to tools/python_tests/__init__.py diff --git a/tools/python/python_tests/mbed_host_tests/__init__.py b/tools/python_tests/mbed_host_tests/__init__.py similarity index 100% rename from tools/python/python_tests/mbed_host_tests/__init__.py rename to tools/python_tests/mbed_host_tests/__init__.py diff --git a/tools/python/python_tests/mbed_host_tests/basic.py b/tools/python_tests/mbed_host_tests/basic.py similarity index 100% rename from tools/python/python_tests/mbed_host_tests/basic.py rename to tools/python_tests/mbed_host_tests/basic.py diff --git a/tools/python/python_tests/mbed_host_tests/basic_ht.py b/tools/python_tests/mbed_host_tests/basic_ht.py similarity index 100% rename from tools/python/python_tests/mbed_host_tests/basic_ht.py rename to tools/python_tests/mbed_host_tests/basic_ht.py diff --git a/tools/python/python_tests/mbed_host_tests/conn_primitive_remote.py b/tools/python_tests/mbed_host_tests/conn_primitive_remote.py similarity index 100% rename from tools/python/python_tests/mbed_host_tests/conn_primitive_remote.py rename to tools/python_tests/mbed_host_tests/conn_primitive_remote.py diff --git a/tools/python/python_tests/mbed_host_tests/event_callback_decorator.py b/tools/python_tests/mbed_host_tests/event_callback_decorator.py similarity index 100% rename from tools/python/python_tests/mbed_host_tests/event_callback_decorator.py rename to tools/python_tests/mbed_host_tests/event_callback_decorator.py diff --git a/tools/python/python_tests/mbed_host_tests/host_registry.py b/tools/python_tests/mbed_host_tests/host_registry.py similarity index 100% rename from tools/python/python_tests/mbed_host_tests/host_registry.py rename to tools/python_tests/mbed_host_tests/host_registry.py diff --git a/tools/python/python_tests/mbed_host_tests/host_test_base.py b/tools/python_tests/mbed_host_tests/host_test_base.py similarity index 100% rename from tools/python/python_tests/mbed_host_tests/host_test_base.py rename to tools/python_tests/mbed_host_tests/host_test_base.py diff --git a/tools/python/python_tests/mbed_host_tests/host_test_os_detect.py b/tools/python_tests/mbed_host_tests/host_test_os_detect.py similarity index 100% rename from tools/python/python_tests/mbed_host_tests/host_test_os_detect.py rename to tools/python_tests/mbed_host_tests/host_test_os_detect.py diff --git a/tools/python/python_tests/mbed_host_tests/host_test_scheme.py b/tools/python_tests/mbed_host_tests/host_test_scheme.py similarity index 100% rename from tools/python/python_tests/mbed_host_tests/host_test_scheme.py rename to tools/python_tests/mbed_host_tests/host_test_scheme.py diff --git a/tools/python/python_tests/mbed_host_tests/mps2_copy.py b/tools/python_tests/mbed_host_tests/mps2_copy.py similarity index 100% rename from tools/python/python_tests/mbed_host_tests/mps2_copy.py rename to tools/python_tests/mbed_host_tests/mps2_copy.py diff --git a/tools/python/python_tests/mbed_host_tests/mps2_reset.py b/tools/python_tests/mbed_host_tests/mps2_reset.py similarity index 100% rename from tools/python/python_tests/mbed_host_tests/mps2_reset.py rename to tools/python_tests/mbed_host_tests/mps2_reset.py diff --git a/tools/python/python_tests/mbed_lstools/__init__.py b/tools/python_tests/mbed_lstools/__init__.py similarity index 100% rename from tools/python/python_tests/mbed_lstools/__init__.py rename to tools/python_tests/mbed_lstools/__init__.py diff --git a/tools/python/python_tests/mbed_lstools/base.py b/tools/python_tests/mbed_lstools/base.py similarity index 100% rename from tools/python/python_tests/mbed_lstools/base.py rename to tools/python_tests/mbed_lstools/base.py diff --git a/tools/python/python_tests/mbed_lstools/details_txt.py b/tools/python_tests/mbed_lstools/details_txt.py similarity index 100% rename from tools/python/python_tests/mbed_lstools/details_txt.py rename to tools/python_tests/mbed_lstools/details_txt.py diff --git a/tools/python/python_tests/mbed_lstools/detect_os.py b/tools/python_tests/mbed_lstools/detect_os.py similarity index 100% rename from tools/python/python_tests/mbed_lstools/detect_os.py rename to tools/python_tests/mbed_lstools/detect_os.py diff --git a/tools/python/python_tests/mbed_lstools/mbed_htm.py b/tools/python_tests/mbed_lstools/mbed_htm.py similarity index 100% rename from tools/python/python_tests/mbed_lstools/mbed_htm.py rename to tools/python_tests/mbed_lstools/mbed_htm.py diff --git a/tools/python/python_tests/mbed_lstools/mbedls_toolsbase.py b/tools/python_tests/mbed_lstools/mbedls_toolsbase.py similarity index 100% rename from tools/python/python_tests/mbed_lstools/mbedls_toolsbase.py rename to tools/python_tests/mbed_lstools/mbedls_toolsbase.py diff --git a/tools/python/python_tests/mbed_lstools/os_darwin.py b/tools/python_tests/mbed_lstools/os_darwin.py similarity index 100% rename from tools/python/python_tests/mbed_lstools/os_darwin.py rename to tools/python_tests/mbed_lstools/os_darwin.py diff --git a/tools/python/python_tests/mbed_lstools/os_linux_generic.py b/tools/python_tests/mbed_lstools/os_linux_generic.py similarity index 100% rename from tools/python/python_tests/mbed_lstools/os_linux_generic.py rename to tools/python_tests/mbed_lstools/os_linux_generic.py diff --git a/tools/python/python_tests/mbed_lstools/os_win7.py b/tools/python_tests/mbed_lstools/os_win7.py similarity index 100% rename from tools/python/python_tests/mbed_lstools/os_win7.py rename to tools/python_tests/mbed_lstools/os_win7.py diff --git a/tools/python/python_tests/mbed_lstools/platform_database.py b/tools/python_tests/mbed_lstools/platform_database.py similarity index 100% rename from tools/python/python_tests/mbed_lstools/platform_database.py rename to tools/python_tests/mbed_lstools/platform_database.py diff --git a/tools/python/python_tests/mbed_lstools/platform_detection.py b/tools/python_tests/mbed_lstools/platform_detection.py similarity index 100% rename from tools/python/python_tests/mbed_lstools/platform_detection.py rename to tools/python_tests/mbed_lstools/platform_detection.py diff --git a/tools/python/python_tests/mbed_lstools/test_data/efm32pg_stk3401_jlink/MBED.HTM b/tools/python_tests/mbed_lstools/test_data/efm32pg_stk3401_jlink/MBED.HTM similarity index 100% rename from tools/python/python_tests/mbed_lstools/test_data/efm32pg_stk3401_jlink/MBED.HTM rename to tools/python_tests/mbed_lstools/test_data/efm32pg_stk3401_jlink/MBED.HTM diff --git a/tools/python/python_tests/mbed_lstools/test_data/efm32pg_stk3401_jlink/README.TXT b/tools/python_tests/mbed_lstools/test_data/efm32pg_stk3401_jlink/README.TXT similarity index 100% rename from tools/python/python_tests/mbed_lstools/test_data/efm32pg_stk3401_jlink/README.TXT rename to tools/python_tests/mbed_lstools/test_data/efm32pg_stk3401_jlink/README.TXT diff --git a/tools/python/python_tests/mbed_lstools/test_data/efm32pg_stk3401_jlink/sl_kit.html b/tools/python_tests/mbed_lstools/test_data/efm32pg_stk3401_jlink/sl_kit.html similarity index 100% rename from tools/python/python_tests/mbed_lstools/test_data/efm32pg_stk3401_jlink/sl_kit.html rename to tools/python_tests/mbed_lstools/test_data/efm32pg_stk3401_jlink/sl_kit.html diff --git a/tools/python/python_tests/mbed_lstools/test_data/efm32pg_stk3401_jlink/sl_qsg.html b/tools/python_tests/mbed_lstools/test_data/efm32pg_stk3401_jlink/sl_qsg.html similarity index 100% rename from tools/python/python_tests/mbed_lstools/test_data/efm32pg_stk3401_jlink/sl_qsg.html rename to tools/python_tests/mbed_lstools/test_data/efm32pg_stk3401_jlink/sl_qsg.html diff --git a/tools/python/python_tests/mbed_lstools/test_data/k64f_daplink/DETAILS.TXT b/tools/python_tests/mbed_lstools/test_data/k64f_daplink/DETAILS.TXT similarity index 100% rename from tools/python/python_tests/mbed_lstools/test_data/k64f_daplink/DETAILS.TXT rename to tools/python_tests/mbed_lstools/test_data/k64f_daplink/DETAILS.TXT diff --git a/tools/python/python_tests/mbed_lstools/test_data/k64f_daplink/MBED.HTM b/tools/python_tests/mbed_lstools/test_data/k64f_daplink/MBED.HTM similarity index 100% rename from tools/python/python_tests/mbed_lstools/test_data/k64f_daplink/MBED.HTM rename to tools/python_tests/mbed_lstools/test_data/k64f_daplink/MBED.HTM diff --git a/tools/python/python_tests/mbed_lstools/test_data/lpc1768/MBED.HTM b/tools/python_tests/mbed_lstools/test_data/lpc1768/MBED.HTM similarity index 100% rename from tools/python/python_tests/mbed_lstools/test_data/lpc1768/MBED.HTM rename to tools/python_tests/mbed_lstools/test_data/lpc1768/MBED.HTM diff --git a/tools/python/python_tests/mbed_lstools/test_data/lpc1768/basic.bin b/tools/python_tests/mbed_lstools/test_data/lpc1768/basic.bin similarity index 100% rename from tools/python/python_tests/mbed_lstools/test_data/lpc1768/basic.bin rename to tools/python_tests/mbed_lstools/test_data/lpc1768/basic.bin diff --git a/tools/python/python_tests/mbed_lstools/test_data/lpc1768/dirs.bin b/tools/python_tests/mbed_lstools/test_data/lpc1768/dirs.bin similarity index 100% rename from tools/python/python_tests/mbed_lstools/test_data/lpc1768/dirs.bin rename to tools/python_tests/mbed_lstools/test_data/lpc1768/dirs.bin diff --git a/tools/python/python_tests/mbed_lstools/test_data/nrf51_microbit/DETAILS.TXT b/tools/python_tests/mbed_lstools/test_data/nrf51_microbit/DETAILS.TXT similarity index 100% rename from tools/python/python_tests/mbed_lstools/test_data/nrf51_microbit/DETAILS.TXT rename to tools/python_tests/mbed_lstools/test_data/nrf51_microbit/DETAILS.TXT diff --git a/tools/python/python_tests/mbed_lstools/test_data/nrf51_microbit/MICROBIT.HTM b/tools/python_tests/mbed_lstools/test_data/nrf51_microbit/MICROBIT.HTM similarity index 100% rename from tools/python/python_tests/mbed_lstools/test_data/nrf51_microbit/MICROBIT.HTM rename to tools/python_tests/mbed_lstools/test_data/nrf51_microbit/MICROBIT.HTM diff --git a/tools/python/python_tests/mbed_lstools/test_data/nrf52_dk_daplink/DETAILS.TXT b/tools/python_tests/mbed_lstools/test_data/nrf52_dk_daplink/DETAILS.TXT similarity index 100% rename from tools/python/python_tests/mbed_lstools/test_data/nrf52_dk_daplink/DETAILS.TXT rename to tools/python_tests/mbed_lstools/test_data/nrf52_dk_daplink/DETAILS.TXT diff --git a/tools/python/python_tests/mbed_lstools/test_data/nrf52_dk_daplink/MBED.HTM b/tools/python_tests/mbed_lstools/test_data/nrf52_dk_daplink/MBED.HTM similarity index 100% rename from tools/python/python_tests/mbed_lstools/test_data/nrf52_dk_daplink/MBED.HTM rename to tools/python_tests/mbed_lstools/test_data/nrf52_dk_daplink/MBED.HTM diff --git a/tools/python/python_tests/mbed_lstools/test_data/nrf52_dk_jlink/MBED.HTM b/tools/python_tests/mbed_lstools/test_data/nrf52_dk_jlink/MBED.HTM similarity index 100% rename from tools/python/python_tests/mbed_lstools/test_data/nrf52_dk_jlink/MBED.HTM rename to tools/python_tests/mbed_lstools/test_data/nrf52_dk_jlink/MBED.HTM diff --git a/tools/python/python_tests/mbed_lstools/test_data/nrf52_dk_jlink/README.TXT b/tools/python_tests/mbed_lstools/test_data/nrf52_dk_jlink/README.TXT similarity index 100% rename from tools/python/python_tests/mbed_lstools/test_data/nrf52_dk_jlink/README.TXT rename to tools/python_tests/mbed_lstools/test_data/nrf52_dk_jlink/README.TXT diff --git a/tools/python/python_tests/mbed_lstools/test_data/nrf52_dk_jlink/Segger.html b/tools/python_tests/mbed_lstools/test_data/nrf52_dk_jlink/Segger.html similarity index 100% rename from tools/python/python_tests/mbed_lstools/test_data/nrf52_dk_jlink/Segger.html rename to tools/python_tests/mbed_lstools/test_data/nrf52_dk_jlink/Segger.html diff --git a/tools/python/python_tests/mbed_lstools/test_data/nrf52_dk_jlink/User Guide.html b/tools/python_tests/mbed_lstools/test_data/nrf52_dk_jlink/User Guide.html similarity index 100% rename from tools/python/python_tests/mbed_lstools/test_data/nrf52_dk_jlink/User Guide.html rename to tools/python_tests/mbed_lstools/test_data/nrf52_dk_jlink/User Guide.html diff --git a/tools/python/python_tests/mbed_lstools/test_data/nucleo_f411re_stlink/DETAILS.TXT b/tools/python_tests/mbed_lstools/test_data/nucleo_f411re_stlink/DETAILS.TXT similarity index 100% rename from tools/python/python_tests/mbed_lstools/test_data/nucleo_f411re_stlink/DETAILS.TXT rename to tools/python_tests/mbed_lstools/test_data/nucleo_f411re_stlink/DETAILS.TXT diff --git a/tools/python/python_tests/mbed_lstools/test_data/nucleo_f411re_stlink/MBED.HTM b/tools/python_tests/mbed_lstools/test_data/nucleo_f411re_stlink/MBED.HTM similarity index 100% rename from tools/python/python_tests/mbed_lstools/test_data/nucleo_f411re_stlink/MBED.HTM rename to tools/python_tests/mbed_lstools/test_data/nucleo_f411re_stlink/MBED.HTM diff --git a/tools/python/python_tests/mbed_os_tools/__init__.py b/tools/python_tests/mbed_os_tools/__init__.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/__init__.py rename to tools/python_tests/mbed_os_tools/__init__.py diff --git a/tools/python/python_tests/mbed_os_tools/detect/__init__.py b/tools/python_tests/mbed_os_tools/detect/__init__.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/__init__.py rename to tools/python_tests/mbed_os_tools/detect/__init__.py diff --git a/tools/python/python_tests/mbed_os_tools/detect/details_txt.py b/tools/python_tests/mbed_os_tools/detect/details_txt.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/details_txt.py rename to tools/python_tests/mbed_os_tools/detect/details_txt.py diff --git a/tools/python/python_tests/mbed_os_tools/detect/detect_os.py b/tools/python_tests/mbed_os_tools/detect/detect_os.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/detect_os.py rename to tools/python_tests/mbed_os_tools/detect/detect_os.py diff --git a/tools/python/python_tests/mbed_os_tools/detect/mbed_htm.py b/tools/python_tests/mbed_os_tools/detect/mbed_htm.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/mbed_htm.py rename to tools/python_tests/mbed_os_tools/detect/mbed_htm.py diff --git a/tools/python/python_tests/mbed_os_tools/detect/mbedls_toolsbase.py b/tools/python_tests/mbed_os_tools/detect/mbedls_toolsbase.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/mbedls_toolsbase.py rename to tools/python_tests/mbed_os_tools/detect/mbedls_toolsbase.py diff --git a/tools/python/python_tests/mbed_os_tools/detect/os_darwin.py b/tools/python_tests/mbed_os_tools/detect/os_darwin.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/os_darwin.py rename to tools/python_tests/mbed_os_tools/detect/os_darwin.py diff --git a/tools/python/python_tests/mbed_os_tools/detect/os_linux_generic.py b/tools/python_tests/mbed_os_tools/detect/os_linux_generic.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/os_linux_generic.py rename to tools/python_tests/mbed_os_tools/detect/os_linux_generic.py diff --git a/tools/python/python_tests/mbed_os_tools/detect/os_win7.py b/tools/python_tests/mbed_os_tools/detect/os_win7.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/os_win7.py rename to tools/python_tests/mbed_os_tools/detect/os_win7.py diff --git a/tools/python/python_tests/mbed_os_tools/detect/platform_database.py b/tools/python_tests/mbed_os_tools/detect/platform_database.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/platform_database.py rename to tools/python_tests/mbed_os_tools/detect/platform_database.py diff --git a/tools/python/python_tests/mbed_os_tools/detect/platform_detection.py b/tools/python_tests/mbed_os_tools/detect/platform_detection.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/platform_detection.py rename to tools/python_tests/mbed_os_tools/detect/platform_detection.py diff --git a/tools/python/python_tests/mbed_os_tools/detect/test_data/efm32pg_stk3401_jlink/MBED.HTM b/tools/python_tests/mbed_os_tools/detect/test_data/efm32pg_stk3401_jlink/MBED.HTM similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/test_data/efm32pg_stk3401_jlink/MBED.HTM rename to tools/python_tests/mbed_os_tools/detect/test_data/efm32pg_stk3401_jlink/MBED.HTM diff --git a/tools/python/python_tests/mbed_os_tools/detect/test_data/efm32pg_stk3401_jlink/README.TXT b/tools/python_tests/mbed_os_tools/detect/test_data/efm32pg_stk3401_jlink/README.TXT similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/test_data/efm32pg_stk3401_jlink/README.TXT rename to tools/python_tests/mbed_os_tools/detect/test_data/efm32pg_stk3401_jlink/README.TXT diff --git a/tools/python/python_tests/mbed_os_tools/detect/test_data/efm32pg_stk3401_jlink/sl_kit.html b/tools/python_tests/mbed_os_tools/detect/test_data/efm32pg_stk3401_jlink/sl_kit.html similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/test_data/efm32pg_stk3401_jlink/sl_kit.html rename to tools/python_tests/mbed_os_tools/detect/test_data/efm32pg_stk3401_jlink/sl_kit.html diff --git a/tools/python/python_tests/mbed_os_tools/detect/test_data/efm32pg_stk3401_jlink/sl_qsg.html b/tools/python_tests/mbed_os_tools/detect/test_data/efm32pg_stk3401_jlink/sl_qsg.html similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/test_data/efm32pg_stk3401_jlink/sl_qsg.html rename to tools/python_tests/mbed_os_tools/detect/test_data/efm32pg_stk3401_jlink/sl_qsg.html diff --git a/tools/python/python_tests/mbed_os_tools/detect/test_data/k64f_daplink/DETAILS.TXT b/tools/python_tests/mbed_os_tools/detect/test_data/k64f_daplink/DETAILS.TXT similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/test_data/k64f_daplink/DETAILS.TXT rename to tools/python_tests/mbed_os_tools/detect/test_data/k64f_daplink/DETAILS.TXT diff --git a/tools/python/python_tests/mbed_os_tools/detect/test_data/k64f_daplink/MBED.HTM b/tools/python_tests/mbed_os_tools/detect/test_data/k64f_daplink/MBED.HTM similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/test_data/k64f_daplink/MBED.HTM rename to tools/python_tests/mbed_os_tools/detect/test_data/k64f_daplink/MBED.HTM diff --git a/tools/python/python_tests/mbed_os_tools/detect/test_data/lpc1768/MBED.HTM b/tools/python_tests/mbed_os_tools/detect/test_data/lpc1768/MBED.HTM similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/test_data/lpc1768/MBED.HTM rename to tools/python_tests/mbed_os_tools/detect/test_data/lpc1768/MBED.HTM diff --git a/tools/python/python_tests/mbed_os_tools/detect/test_data/lpc1768/basic.bin b/tools/python_tests/mbed_os_tools/detect/test_data/lpc1768/basic.bin similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/test_data/lpc1768/basic.bin rename to tools/python_tests/mbed_os_tools/detect/test_data/lpc1768/basic.bin diff --git a/tools/python/python_tests/mbed_os_tools/detect/test_data/lpc1768/dirs.bin b/tools/python_tests/mbed_os_tools/detect/test_data/lpc1768/dirs.bin similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/test_data/lpc1768/dirs.bin rename to tools/python_tests/mbed_os_tools/detect/test_data/lpc1768/dirs.bin diff --git a/tools/python/python_tests/mbed_os_tools/detect/test_data/nrf51_microbit/DETAILS.TXT b/tools/python_tests/mbed_os_tools/detect/test_data/nrf51_microbit/DETAILS.TXT similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/test_data/nrf51_microbit/DETAILS.TXT rename to tools/python_tests/mbed_os_tools/detect/test_data/nrf51_microbit/DETAILS.TXT diff --git a/tools/python/python_tests/mbed_os_tools/detect/test_data/nrf51_microbit/MICROBIT.HTM b/tools/python_tests/mbed_os_tools/detect/test_data/nrf51_microbit/MICROBIT.HTM similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/test_data/nrf51_microbit/MICROBIT.HTM rename to tools/python_tests/mbed_os_tools/detect/test_data/nrf51_microbit/MICROBIT.HTM diff --git a/tools/python/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_daplink/DETAILS.TXT b/tools/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_daplink/DETAILS.TXT similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_daplink/DETAILS.TXT rename to tools/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_daplink/DETAILS.TXT diff --git a/tools/python/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_daplink/MBED.HTM b/tools/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_daplink/MBED.HTM similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_daplink/MBED.HTM rename to tools/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_daplink/MBED.HTM diff --git a/tools/python/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_jlink/MBED.HTM b/tools/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_jlink/MBED.HTM similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_jlink/MBED.HTM rename to tools/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_jlink/MBED.HTM diff --git a/tools/python/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_jlink/README.TXT b/tools/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_jlink/README.TXT similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_jlink/README.TXT rename to tools/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_jlink/README.TXT diff --git a/tools/python/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_jlink/Segger.html b/tools/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_jlink/Segger.html similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_jlink/Segger.html rename to tools/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_jlink/Segger.html diff --git a/tools/python/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_jlink/User Guide.html b/tools/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_jlink/User Guide.html similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_jlink/User Guide.html rename to tools/python_tests/mbed_os_tools/detect/test_data/nrf52_dk_jlink/User Guide.html diff --git a/tools/python/python_tests/mbed_os_tools/detect/test_data/nucleo_f411re_stlink/DETAILS.TXT b/tools/python_tests/mbed_os_tools/detect/test_data/nucleo_f411re_stlink/DETAILS.TXT similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/test_data/nucleo_f411re_stlink/DETAILS.TXT rename to tools/python_tests/mbed_os_tools/detect/test_data/nucleo_f411re_stlink/DETAILS.TXT diff --git a/tools/python/python_tests/mbed_os_tools/detect/test_data/nucleo_f411re_stlink/MBED.HTM b/tools/python_tests/mbed_os_tools/detect/test_data/nucleo_f411re_stlink/MBED.HTM similarity index 100% rename from tools/python/python_tests/mbed_os_tools/detect/test_data/nucleo_f411re_stlink/MBED.HTM rename to tools/python_tests/mbed_os_tools/detect/test_data/nucleo_f411re_stlink/MBED.HTM diff --git a/tools/python/python_tests/mbed_os_tools/test/__init__.py b/tools/python_tests/mbed_os_tools/test/__init__.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/test/__init__.py rename to tools/python_tests/mbed_os_tools/test/__init__.py diff --git a/tools/python/python_tests/mbed_os_tools/test/host_test_black_box.py b/tools/python_tests/mbed_os_tools/test/host_test_black_box.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/test/host_test_black_box.py rename to tools/python_tests/mbed_os_tools/test/host_test_black_box.py diff --git a/tools/python/python_tests/mbed_os_tools/test/host_test_default.py b/tools/python_tests/mbed_os_tools/test/host_test_default.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/test/host_test_default.py rename to tools/python_tests/mbed_os_tools/test/host_test_default.py diff --git a/tools/python/python_tests/mbed_os_tools/test/mocks/__init__.py b/tools/python_tests/mbed_os_tools/test/mocks/__init__.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/test/mocks/__init__.py rename to tools/python_tests/mbed_os_tools/test/mocks/__init__.py diff --git a/tools/python/python_tests/mbed_os_tools/test/mocks/environment/__init__.py b/tools/python_tests/mbed_os_tools/test/mocks/environment/__init__.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/test/mocks/environment/__init__.py rename to tools/python_tests/mbed_os_tools/test/mocks/environment/__init__.py diff --git a/tools/python/python_tests/mbed_os_tools/test/mocks/environment/darwin.py b/tools/python_tests/mbed_os_tools/test/mocks/environment/darwin.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/test/mocks/environment/darwin.py rename to tools/python_tests/mbed_os_tools/test/mocks/environment/darwin.py diff --git a/tools/python/python_tests/mbed_os_tools/test/mocks/environment/linux.py b/tools/python_tests/mbed_os_tools/test/mocks/environment/linux.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/test/mocks/environment/linux.py rename to tools/python_tests/mbed_os_tools/test/mocks/environment/linux.py diff --git a/tools/python/python_tests/mbed_os_tools/test/mocks/environment/posix.py b/tools/python_tests/mbed_os_tools/test/mocks/environment/posix.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/test/mocks/environment/posix.py rename to tools/python_tests/mbed_os_tools/test/mocks/environment/posix.py diff --git a/tools/python/python_tests/mbed_os_tools/test/mocks/environment/windows.py b/tools/python_tests/mbed_os_tools/test/mocks/environment/windows.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/test/mocks/environment/windows.py rename to tools/python_tests/mbed_os_tools/test/mocks/environment/windows.py diff --git a/tools/python/python_tests/mbed_os_tools/test/mocks/mbed_device.py b/tools/python_tests/mbed_os_tools/test/mocks/mbed_device.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/test/mocks/mbed_device.py rename to tools/python_tests/mbed_os_tools/test/mocks/mbed_device.py diff --git a/tools/python/python_tests/mbed_os_tools/test/mocks/process.py b/tools/python_tests/mbed_os_tools/test/mocks/process.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/test/mocks/process.py rename to tools/python_tests/mbed_os_tools/test/mocks/process.py diff --git a/tools/python/python_tests/mbed_os_tools/test/mocks/serial.py b/tools/python_tests/mbed_os_tools/test/mocks/serial.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/test/mocks/serial.py rename to tools/python_tests/mbed_os_tools/test/mocks/serial.py diff --git a/tools/python/python_tests/mbed_os_tools/test/test_conn_primitive_serial.py b/tools/python_tests/mbed_os_tools/test/test_conn_primitive_serial.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/test/test_conn_primitive_serial.py rename to tools/python_tests/mbed_os_tools/test/test_conn_primitive_serial.py diff --git a/tools/python/python_tests/mbed_os_tools/test/test_mbed_base.py b/tools/python_tests/mbed_os_tools/test/test_mbed_base.py similarity index 100% rename from tools/python/python_tests/mbed_os_tools/test/test_mbed_base.py rename to tools/python_tests/mbed_os_tools/test/test_mbed_base.py diff --git a/tools/python/python_tests/mbed_tools/__init__.py b/tools/python_tests/mbed_tools/__init__.py similarity index 100% rename from tools/python/python_tests/mbed_tools/__init__.py rename to tools/python_tests/mbed_tools/__init__.py diff --git a/tools/python/python_tests/mbed_tools/build/__init__.py b/tools/python_tests/mbed_tools/build/__init__.py similarity index 100% rename from tools/python/python_tests/mbed_tools/build/__init__.py rename to tools/python_tests/mbed_tools/build/__init__.py diff --git a/tools/python/python_tests/mbed_tools/build/_internal/__init__.py b/tools/python_tests/mbed_tools/build/_internal/__init__.py similarity index 100% rename from tools/python/python_tests/mbed_tools/build/_internal/__init__.py rename to tools/python_tests/mbed_tools/build/_internal/__init__.py diff --git a/tools/python/python_tests/mbed_tools/build/_internal/test_memory_banks.py b/tools/python_tests/mbed_tools/build/_internal/test_memory_banks.py similarity index 100% rename from tools/python/python_tests/mbed_tools/build/_internal/test_memory_banks.py rename to tools/python_tests/mbed_tools/build/_internal/test_memory_banks.py diff --git a/tools/python/python_tests/mbed_tools/cli/__init__.py b/tools/python_tests/mbed_tools/cli/__init__.py similarity index 100% rename from tools/python/python_tests/mbed_tools/cli/__init__.py rename to tools/python_tests/mbed_tools/cli/__init__.py diff --git a/tools/python/python_tests/mbed_tools/cli/test_configure.py b/tools/python_tests/mbed_tools/cli/test_configure.py similarity index 100% rename from tools/python/python_tests/mbed_tools/cli/test_configure.py rename to tools/python_tests/mbed_tools/cli/test_configure.py diff --git a/tools/python/python_tests/mbed_tools/cli/test_devices_command_integration.py b/tools/python_tests/mbed_tools/cli/test_devices_command_integration.py similarity index 100% rename from tools/python/python_tests/mbed_tools/cli/test_devices_command_integration.py rename to tools/python_tests/mbed_tools/cli/test_devices_command_integration.py diff --git a/tools/python/python_tests/mbed_tools/cli/test_list_connected_devices.py b/tools/python_tests/mbed_tools/cli/test_list_connected_devices.py similarity index 100% rename from tools/python/python_tests/mbed_tools/cli/test_list_connected_devices.py rename to tools/python_tests/mbed_tools/cli/test_list_connected_devices.py diff --git a/tools/python/python_tests/mbed_tools/cli/test_project_management.py b/tools/python_tests/mbed_tools/cli/test_project_management.py similarity index 100% rename from tools/python/python_tests/mbed_tools/cli/test_project_management.py rename to tools/python_tests/mbed_tools/cli/test_project_management.py diff --git a/tools/python/python_tests/mbed_tools/cli/test_sterm.py b/tools/python_tests/mbed_tools/cli/test_sterm.py similarity index 100% rename from tools/python/python_tests/mbed_tools/cli/test_sterm.py rename to tools/python_tests/mbed_tools/cli/test_sterm.py diff --git a/tools/python/python_tests/mbed_tools/devices/__init__.py b/tools/python_tests/mbed_tools/devices/__init__.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/__init__.py rename to tools/python_tests/mbed_tools/devices/__init__.py diff --git a/tools/python/python_tests/mbed_tools/devices/_internal/__init__.py b/tools/python_tests/mbed_tools/devices/_internal/__init__.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/_internal/__init__.py rename to tools/python_tests/mbed_tools/devices/_internal/__init__.py diff --git a/tools/python/python_tests/mbed_tools/devices/_internal/darwin/__init__.py b/tools/python_tests/mbed_tools/devices/_internal/darwin/__init__.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/_internal/darwin/__init__.py rename to tools/python_tests/mbed_tools/devices/_internal/darwin/__init__.py diff --git a/tools/python/python_tests/mbed_tools/devices/_internal/darwin/test_device_detector.py b/tools/python_tests/mbed_tools/devices/_internal/darwin/test_device_detector.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/_internal/darwin/test_device_detector.py rename to tools/python_tests/mbed_tools/devices/_internal/darwin/test_device_detector.py diff --git a/tools/python/python_tests/mbed_tools/devices/_internal/darwin/test_diskutil.py b/tools/python_tests/mbed_tools/devices/_internal/darwin/test_diskutil.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/_internal/darwin/test_diskutil.py rename to tools/python_tests/mbed_tools/devices/_internal/darwin/test_diskutil.py diff --git a/tools/python/python_tests/mbed_tools/devices/_internal/darwin/test_ioreg.py b/tools/python_tests/mbed_tools/devices/_internal/darwin/test_ioreg.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/_internal/darwin/test_ioreg.py rename to tools/python_tests/mbed_tools/devices/_internal/darwin/test_ioreg.py diff --git a/tools/python/python_tests/mbed_tools/devices/_internal/darwin/test_system_profiler.py b/tools/python_tests/mbed_tools/devices/_internal/darwin/test_system_profiler.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/_internal/darwin/test_system_profiler.py rename to tools/python_tests/mbed_tools/devices/_internal/darwin/test_system_profiler.py diff --git a/tools/python/python_tests/mbed_tools/devices/_internal/linux/__init__.py b/tools/python_tests/mbed_tools/devices/_internal/linux/__init__.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/_internal/linux/__init__.py rename to tools/python_tests/mbed_tools/devices/_internal/linux/__init__.py diff --git a/tools/python/python_tests/mbed_tools/devices/_internal/linux/test_linux_device_detector.py b/tools/python_tests/mbed_tools/devices/_internal/linux/test_linux_device_detector.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/_internal/linux/test_linux_device_detector.py rename to tools/python_tests/mbed_tools/devices/_internal/linux/test_linux_device_detector.py diff --git a/tools/python/python_tests/mbed_tools/devices/_internal/test_candidate_device.py b/tools/python_tests/mbed_tools/devices/_internal/test_candidate_device.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/_internal/test_candidate_device.py rename to tools/python_tests/mbed_tools/devices/_internal/test_candidate_device.py diff --git a/tools/python/python_tests/mbed_tools/devices/_internal/test_detect_candidate_devices.py b/tools/python_tests/mbed_tools/devices/_internal/test_detect_candidate_devices.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/_internal/test_detect_candidate_devices.py rename to tools/python_tests/mbed_tools/devices/_internal/test_detect_candidate_devices.py diff --git a/tools/python/python_tests/mbed_tools/devices/_internal/test_file_parser.py b/tools/python_tests/mbed_tools/devices/_internal/test_file_parser.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/_internal/test_file_parser.py rename to tools/python_tests/mbed_tools/devices/_internal/test_file_parser.py diff --git a/tools/python/python_tests/mbed_tools/devices/_internal/test_resolve_board.py b/tools/python_tests/mbed_tools/devices/_internal/test_resolve_board.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/_internal/test_resolve_board.py rename to tools/python_tests/mbed_tools/devices/_internal/test_resolve_board.py diff --git a/tools/python/python_tests/mbed_tools/devices/_internal/windows/__init__.py b/tools/python_tests/mbed_tools/devices/_internal/windows/__init__.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/_internal/windows/__init__.py rename to tools/python_tests/mbed_tools/devices/_internal/windows/__init__.py diff --git a/tools/python/python_tests/mbed_tools/devices/_internal/windows/test_component_descriptor_utils.py b/tools/python_tests/mbed_tools/devices/_internal/windows/test_component_descriptor_utils.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/_internal/windows/test_component_descriptor_utils.py rename to tools/python_tests/mbed_tools/devices/_internal/windows/test_component_descriptor_utils.py diff --git a/tools/python/python_tests/mbed_tools/devices/_internal/windows/test_disk_data_aggregation.py b/tools/python_tests/mbed_tools/devices/_internal/windows/test_disk_data_aggregation.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/_internal/windows/test_disk_data_aggregation.py rename to tools/python_tests/mbed_tools/devices/_internal/windows/test_disk_data_aggregation.py diff --git a/tools/python/python_tests/mbed_tools/devices/_internal/windows/test_disk_identifier.py b/tools/python_tests/mbed_tools/devices/_internal/windows/test_disk_identifier.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/_internal/windows/test_disk_identifier.py rename to tools/python_tests/mbed_tools/devices/_internal/windows/test_disk_identifier.py diff --git a/tools/python/python_tests/mbed_tools/devices/_internal/windows/test_serial_port.py b/tools/python_tests/mbed_tools/devices/_internal/windows/test_serial_port.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/_internal/windows/test_serial_port.py rename to tools/python_tests/mbed_tools/devices/_internal/windows/test_serial_port.py diff --git a/tools/python/python_tests/mbed_tools/devices/_internal/windows/test_system_data_loader.py b/tools/python_tests/mbed_tools/devices/_internal/windows/test_system_data_loader.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/_internal/windows/test_system_data_loader.py rename to tools/python_tests/mbed_tools/devices/_internal/windows/test_system_data_loader.py diff --git a/tools/python/python_tests/mbed_tools/devices/_internal/windows/test_usb_device_identifier.py b/tools/python_tests/mbed_tools/devices/_internal/windows/test_usb_device_identifier.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/_internal/windows/test_usb_device_identifier.py rename to tools/python_tests/mbed_tools/devices/_internal/windows/test_usb_device_identifier.py diff --git a/tools/python/python_tests/mbed_tools/devices/_internal/windows/test_usb_hub_data_loader.py b/tools/python_tests/mbed_tools/devices/_internal/windows/test_usb_hub_data_loader.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/_internal/windows/test_usb_hub_data_loader.py rename to tools/python_tests/mbed_tools/devices/_internal/windows/test_usb_hub_data_loader.py diff --git a/tools/python/python_tests/mbed_tools/devices/_internal/windows/test_windows_component.py b/tools/python_tests/mbed_tools/devices/_internal/windows/test_windows_component.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/_internal/windows/test_windows_component.py rename to tools/python_tests/mbed_tools/devices/_internal/windows/test_windows_component.py diff --git a/tools/python/python_tests/mbed_tools/devices/_internal/windows/test_windows_identifier.py b/tools/python_tests/mbed_tools/devices/_internal/windows/test_windows_identifier.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/_internal/windows/test_windows_identifier.py rename to tools/python_tests/mbed_tools/devices/_internal/windows/test_windows_identifier.py diff --git a/tools/python/python_tests/mbed_tools/devices/factories.py b/tools/python_tests/mbed_tools/devices/factories.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/factories.py rename to tools/python_tests/mbed_tools/devices/factories.py diff --git a/tools/python/python_tests/mbed_tools/devices/markers.py b/tools/python_tests/mbed_tools/devices/markers.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/markers.py rename to tools/python_tests/mbed_tools/devices/markers.py diff --git a/tools/python/python_tests/mbed_tools/devices/test_mbed_devices.py b/tools/python_tests/mbed_tools/devices/test_mbed_devices.py similarity index 100% rename from tools/python/python_tests/mbed_tools/devices/test_mbed_devices.py rename to tools/python_tests/mbed_tools/devices/test_mbed_devices.py diff --git a/tools/python/python_tests/mbed_tools/lib/test_json_helpers.py b/tools/python_tests/mbed_tools/lib/test_json_helpers.py similarity index 100% rename from tools/python/python_tests/mbed_tools/lib/test_json_helpers.py rename to tools/python_tests/mbed_tools/lib/test_json_helpers.py diff --git a/tools/python/python_tests/mbed_tools/lib/test_logging.py b/tools/python_tests/mbed_tools/lib/test_logging.py similarity index 100% rename from tools/python/python_tests/mbed_tools/lib/test_logging.py rename to tools/python_tests/mbed_tools/lib/test_logging.py diff --git a/tools/python/python_tests/mbed_tools/lib/test_python_helpers.py b/tools/python_tests/mbed_tools/lib/test_python_helpers.py similarity index 100% rename from tools/python/python_tests/mbed_tools/lib/test_python_helpers.py rename to tools/python_tests/mbed_tools/lib/test_python_helpers.py diff --git a/tools/python/python_tests/mbed_tools/project/__init__.py b/tools/python_tests/mbed_tools/project/__init__.py similarity index 100% rename from tools/python/python_tests/mbed_tools/project/__init__.py rename to tools/python_tests/mbed_tools/project/__init__.py diff --git a/tools/python/python_tests/mbed_tools/project/_internal/__init__.py b/tools/python_tests/mbed_tools/project/_internal/__init__.py similarity index 100% rename from tools/python/python_tests/mbed_tools/project/_internal/__init__.py rename to tools/python_tests/mbed_tools/project/_internal/__init__.py diff --git a/tools/python/python_tests/mbed_tools/project/_internal/test_git_utils.py b/tools/python_tests/mbed_tools/project/_internal/test_git_utils.py similarity index 100% rename from tools/python/python_tests/mbed_tools/project/_internal/test_git_utils.py rename to tools/python_tests/mbed_tools/project/_internal/test_git_utils.py diff --git a/tools/python/python_tests/mbed_tools/project/_internal/test_libraries.py b/tools/python_tests/mbed_tools/project/_internal/test_libraries.py similarity index 100% rename from tools/python/python_tests/mbed_tools/project/_internal/test_libraries.py rename to tools/python_tests/mbed_tools/project/_internal/test_libraries.py diff --git a/tools/python/python_tests/mbed_tools/project/_internal/test_progress.py b/tools/python_tests/mbed_tools/project/_internal/test_progress.py similarity index 100% rename from tools/python/python_tests/mbed_tools/project/_internal/test_progress.py rename to tools/python_tests/mbed_tools/project/_internal/test_progress.py diff --git a/tools/python/python_tests/mbed_tools/project/_internal/test_project_data.py b/tools/python_tests/mbed_tools/project/_internal/test_project_data.py similarity index 100% rename from tools/python/python_tests/mbed_tools/project/_internal/test_project_data.py rename to tools/python_tests/mbed_tools/project/_internal/test_project_data.py diff --git a/tools/python/python_tests/mbed_tools/project/_internal/test_render_templates.py b/tools/python_tests/mbed_tools/project/_internal/test_render_templates.py similarity index 100% rename from tools/python/python_tests/mbed_tools/project/_internal/test_render_templates.py rename to tools/python_tests/mbed_tools/project/_internal/test_render_templates.py diff --git a/tools/python/python_tests/mbed_tools/project/factories.py b/tools/python_tests/mbed_tools/project/factories.py similarity index 100% rename from tools/python/python_tests/mbed_tools/project/factories.py rename to tools/python_tests/mbed_tools/project/factories.py diff --git a/tools/python/python_tests/mbed_tools/project/test_mbed_program.py b/tools/python_tests/mbed_tools/project/test_mbed_program.py similarity index 100% rename from tools/python/python_tests/mbed_tools/project/test_mbed_program.py rename to tools/python_tests/mbed_tools/project/test_mbed_program.py diff --git a/tools/python/python_tests/mbed_tools/project/test_mbed_project.py b/tools/python_tests/mbed_tools/project/test_mbed_project.py similarity index 100% rename from tools/python/python_tests/mbed_tools/project/test_mbed_project.py rename to tools/python_tests/mbed_tools/project/test_mbed_project.py diff --git a/tools/python/python_tests/mbed_tools/regression/test_configure.py b/tools/python_tests/mbed_tools/regression/test_configure.py similarity index 100% rename from tools/python/python_tests/mbed_tools/regression/test_configure.py rename to tools/python_tests/mbed_tools/regression/test_configure.py diff --git a/tools/python/python_tests/mbed_tools/sterm/test_terminal.py b/tools/python_tests/mbed_tools/sterm/test_terminal.py similarity index 100% rename from tools/python/python_tests/mbed_tools/sterm/test_terminal.py rename to tools/python_tests/mbed_tools/sterm/test_terminal.py diff --git a/tools/python/python_tests/mbed_tools/targets/__init__.py b/tools/python_tests/mbed_tools/targets/__init__.py similarity index 100% rename from tools/python/python_tests/mbed_tools/targets/__init__.py rename to tools/python_tests/mbed_tools/targets/__init__.py diff --git a/tools/python/python_tests/mbed_tools/targets/_internal/targets_json_parsers/test_accumulating_attribute_parser.py b/tools/python_tests/mbed_tools/targets/_internal/targets_json_parsers/test_accumulating_attribute_parser.py similarity index 100% rename from tools/python/python_tests/mbed_tools/targets/_internal/targets_json_parsers/test_accumulating_attribute_parser.py rename to tools/python_tests/mbed_tools/targets/_internal/targets_json_parsers/test_accumulating_attribute_parser.py diff --git a/tools/python/python_tests/mbed_tools/targets/_internal/targets_json_parsers/test_overriding_attribute_parser.py b/tools/python_tests/mbed_tools/targets/_internal/targets_json_parsers/test_overriding_attribute_parser.py similarity index 100% rename from tools/python/python_tests/mbed_tools/targets/_internal/targets_json_parsers/test_overriding_attribute_parser.py rename to tools/python_tests/mbed_tools/targets/_internal/targets_json_parsers/test_overriding_attribute_parser.py diff --git a/tools/python/python_tests/mbed_tools/targets/_internal/test_board_database.py b/tools/python_tests/mbed_tools/targets/_internal/test_board_database.py similarity index 100% rename from tools/python/python_tests/mbed_tools/targets/_internal/test_board_database.py rename to tools/python_tests/mbed_tools/targets/_internal/test_board_database.py diff --git a/tools/python/python_tests/mbed_tools/targets/_internal/test_target_attributes.py b/tools/python_tests/mbed_tools/targets/_internal/test_target_attributes.py similarity index 100% rename from tools/python/python_tests/mbed_tools/targets/_internal/test_target_attributes.py rename to tools/python_tests/mbed_tools/targets/_internal/test_target_attributes.py diff --git a/tools/python/python_tests/mbed_tools/targets/factories.py b/tools/python_tests/mbed_tools/targets/factories.py similarity index 100% rename from tools/python/python_tests/mbed_tools/targets/factories.py rename to tools/python_tests/mbed_tools/targets/factories.py diff --git a/tools/python/python_tests/mbed_tools/targets/test_board.py b/tools/python_tests/mbed_tools/targets/test_board.py similarity index 100% rename from tools/python/python_tests/mbed_tools/targets/test_board.py rename to tools/python_tests/mbed_tools/targets/test_board.py diff --git a/tools/python/python_tests/mbed_tools/targets/test_boards.py b/tools/python_tests/mbed_tools/targets/test_boards.py similarity index 100% rename from tools/python/python_tests/mbed_tools/targets/test_boards.py rename to tools/python_tests/mbed_tools/targets/test_boards.py diff --git a/tools/python/python_tests/mbed_tools/targets/test_config.py b/tools/python_tests/mbed_tools/targets/test_config.py similarity index 100% rename from tools/python/python_tests/mbed_tools/targets/test_config.py rename to tools/python_tests/mbed_tools/targets/test_config.py diff --git a/tools/python/python_tests/mbed_tools/targets/test_get_board.py b/tools/python_tests/mbed_tools/targets/test_get_board.py similarity index 100% rename from tools/python/python_tests/mbed_tools/targets/test_get_board.py rename to tools/python_tests/mbed_tools/targets/test_get_board.py diff --git a/tools/python/python_tests/mbed_tools/targets/test_get_target.py b/tools/python_tests/mbed_tools/targets/test_get_target.py similarity index 100% rename from tools/python/python_tests/mbed_tools/targets/test_get_target.py rename to tools/python_tests/mbed_tools/targets/test_get_target.py diff --git a/tools/python/python_tests/memap/__init__.py b/tools/python_tests/memap/__init__.py similarity index 100% rename from tools/python/python_tests/memap/__init__.py rename to tools/python_tests/memap/__init__.py diff --git a/tools/python/python_tests/memap/gcc.map b/tools/python_tests/memap/gcc.map similarity index 100% rename from tools/python/python_tests/memap/gcc.map rename to tools/python_tests/memap/gcc.map diff --git a/tools/python/python_tests/memap/memap_test.py b/tools/python_tests/memap/memap_test.py similarity index 100% rename from tools/python/python_tests/memap/memap_test.py rename to tools/python_tests/memap/memap_test.py diff --git a/tools/python/python_tests/memap/parse_test.py b/tools/python_tests/memap/parse_test.py similarity index 100% rename from tools/python/python_tests/memap/parse_test.py rename to tools/python_tests/memap/parse_test.py diff --git a/tools/python/python_tests/memap/test_memory_banks.json b/tools/python_tests/memap/test_memory_banks.json similarity index 100% rename from tools/python/python_tests/memap/test_memory_banks.json rename to tools/python_tests/memap/test_memory_banks.json diff --git a/tools/python/python_tests/scancode_evaluate/__init__.py b/tools/python_tests/scancode_evaluate/__init__.py similarity index 100% rename from tools/python/python_tests/scancode_evaluate/__init__.py rename to tools/python_tests/scancode_evaluate/__init__.py diff --git a/tools/python/python_tests/scancode_evaluate/scancode_evaluate_test.py b/tools/python_tests/scancode_evaluate/scancode_evaluate_test.py similarity index 100% rename from tools/python/python_tests/scancode_evaluate/scancode_evaluate_test.py rename to tools/python_tests/scancode_evaluate/scancode_evaluate_test.py diff --git a/tools/python/python_tests/scancode_evaluate/scancode_test/scancode_test_1.json b/tools/python_tests/scancode_evaluate/scancode_test/scancode_test_1.json similarity index 100% rename from tools/python/python_tests/scancode_evaluate/scancode_test/scancode_test_1.json rename to tools/python_tests/scancode_evaluate/scancode_test/scancode_test_1.json diff --git a/tools/python/python_tests/scancode_evaluate/scancode_test/scancode_test_2.json b/tools/python_tests/scancode_evaluate/scancode_test/scancode_test_2.json similarity index 97% rename from tools/python/python_tests/scancode_evaluate/scancode_test/scancode_test_2.json rename to tools/python_tests/scancode_evaluate/scancode_test/scancode_test_2.json index 588ac44508f..895bc1fe6bf 100644 --- a/tools/python/python_tests/scancode_evaluate/scancode_test/scancode_test_2.json +++ b/tools/python_tests/scancode_evaluate/scancode_test/scancode_test_2.json @@ -31,7 +31,7 @@ ], "files":[ { - "path":"tools/python/python_tests/scancode_evaluate/scancode_test/test.h", + "path":"tools/python_tests/scancode_evaluate/scancode_test/test.h", "type":"file", "licenses":[ { @@ -141,7 +141,7 @@ ] }, { - "path":"tools/python/python_tests/scancode_evaluate/scancode_test/test2.h", + "path":"tools/python_tests/scancode_evaluate/scancode_test/test2.h", "type":"file", "licenses":[ { @@ -251,7 +251,7 @@ ] }, { - "path":"tools/python/python_tests/scancode_evaluate/scancode_test/test3.h", + "path":"tools/python_tests/scancode_evaluate/scancode_test/test3.h", "type":"file", "licenses":[ { @@ -361,7 +361,7 @@ ] }, { - "path":"tools/python/python_tests/scancode_evaluate/scancode_test/test4.h", + "path":"tools/python_tests/scancode_evaluate/scancode_test/test4.h", "type":"file", "licenses":[ { @@ -471,7 +471,7 @@ ] }, { - "path":"tools/python/python_tests/scancode_evaluate/scancode_test/test5.c", + "path":"tools/python_tests/scancode_evaluate/scancode_test/test5.c", "type":"file", "licenses":[ { @@ -548,7 +548,7 @@ ] }, { - "path":"tools/python/python_tests/scancode_evaluate/scancode_test/test6.c", + "path":"tools/python_tests/scancode_evaluate/scancode_test/test6.c", "type":"file", "licenses":[ { @@ -625,7 +625,7 @@ ] }, { - "path":"tools/python/python_tests/scancode_evaluate/scancode_test/test7.c", + "path":"tools/python_tests/scancode_evaluate/scancode_test/test7.c", "type":"file", "licenses":[ { @@ -702,7 +702,7 @@ ] }, { - "path":"tools/python/python_tests/scancode_evaluate/scancode_test/test8.c", + "path":"tools/python_tests/scancode_evaluate/scancode_test/test8.c", "type":"file", "licenses":[ { diff --git a/tools/python/python_tests/scancode_evaluate/scancode_test/scancode_test_3.json b/tools/python_tests/scancode_evaluate/scancode_test/scancode_test_3.json similarity index 94% rename from tools/python/python_tests/scancode_evaluate/scancode_test/scancode_test_3.json rename to tools/python_tests/scancode_evaluate/scancode_test/scancode_test_3.json index 5c06930840e..bc960860cbb 100644 --- a/tools/python/python_tests/scancode_evaluate/scancode_test/scancode_test_3.json +++ b/tools/python_tests/scancode_evaluate/scancode_test/scancode_test_3.json @@ -28,7 +28,7 @@ ], "files":[ { - "path":"tools/python/python_tests/scancode_evaluate/scancode_test/test.h", + "path":"tools/python_tests/scancode_evaluate/scancode_test/test.h", "type":"file", "licenses":[ @@ -41,7 +41,7 @@ ] }, { - "path":"tools/python/python_tests/scancode_evaluate/scancode_test/test3.h", + "path":"tools/python_tests/scancode_evaluate/scancode_test/test3.h", "type":"file", "licenses":[ { @@ -85,7 +85,7 @@ ] }, { - "path":"tools/python/python_tests/scancode_evaluate/scancode_test/test4.h", + "path":"tools/python_tests/scancode_evaluate/scancode_test/test4.h", "type":"file", "licenses":[ { @@ -129,7 +129,7 @@ ] }, { - "path":"tools/python/python_tests/scancode_evaluate/scancode_test/test5.h", + "path":"tools/python_tests/scancode_evaluate/scancode_test/test5.h", "type":"file", "licenses":[ { @@ -173,7 +173,7 @@ ] }, { - "path":"tools/python/python_tests/scancode_evaluate/scancode_test/test6.h", + "path":"tools/python_tests/scancode_evaluate/scancode_test/test6.h", "type":"file", "licenses":[ { diff --git a/tools/python/python_tests/scancode_evaluate/scancode_test/scancode_test_4.json b/tools/python_tests/scancode_evaluate/scancode_test/scancode_test_4.json similarity index 98% rename from tools/python/python_tests/scancode_evaluate/scancode_test/scancode_test_4.json rename to tools/python_tests/scancode_evaluate/scancode_test/scancode_test_4.json index 948669aed11..d552936ac97 100644 --- a/tools/python/python_tests/scancode_evaluate/scancode_test/scancode_test_4.json +++ b/tools/python_tests/scancode_evaluate/scancode_test/scancode_test_4.json @@ -24,7 +24,7 @@ ], "files":[ { - "path":"tools/python/python_tests/scancode_evaluate/scancode_test/test3.h", + "path":"tools/python_tests/scancode_evaluate/scancode_test/test3.h", "type":"file", "licenses":[ { diff --git a/tools/requirements-ci-build.txt b/tools/requirements-greentea.txt similarity index 50% rename from tools/requirements-ci-build.txt rename to tools/requirements-greentea.txt index 821692691b1..b4ae78d2285 100644 --- a/tools/requirements-ci-build.txt +++ b/tools/requirements-greentea.txt @@ -1,3 +1,5 @@ +## Additional requirements to install into the Mbed environment when running Greentea tests + # For USB Device host tests hidapi>=0.7.99 pyusb>=1.2.0 diff --git a/tools/requirements.txt b/tools/requirements.txt deleted file mode 100644 index b6254f86d68..00000000000 --- a/tools/requirements.txt +++ /dev/null @@ -1,46 +0,0 @@ - -# 3.12.0 both added HRuleStyle and deprecated the old constants in one single release :/ -prettytable>=2.0,<3.12.0; python_version < '3.9' -prettytable>=3.12.0; python_version >= '3.9' - -future>=0.18.0,<1.0 -jinja2>=2.11.3 -intelhex>=2.3.0,<3.0.0 -python-dotenv -Click>=7.1,<9 -GitPython -tqdm -tabulate -requests>=2.20 -pywin32; platform_system=='Windows' -psutil; platform_system=='Linux' -pyudev; platform_system=='Linux' -typing-extensions -pyserial -fasteners -appdirs>=1.4,<2.0 -junit-xml>=1.0,<2.0 -lockfile -six>=1.0,<2.0 -colorama>=0.3,<0.5 -pyjson5~=1.6 -humanize~=4.9.0 -wmi>=1.5; platform_system == "Windows" - -# Install pyocd so that it's available in the venv if the user chooses to use it -pyocd - -# beautifulsoup only needed for USB device detection on Mac -beautifulsoup4; sys_platform == 'darwin' -lxml; sys_platform == 'darwin' - -# needed for signing secure images -cryptography -cbor -cysecuretools~=6.0 - -# Needed for downloading CMSIS MCU descriptions -cmsis-pack-manager~=0.5.0 - -# cffi is a dependency of cmsis-pack-manager, but cffi needs a prerelease to support Python 3.13 -cffi>=1.17.0rc1; python_version >= '3.13' \ No newline at end of file diff --git a/tools/python/run_python_tests.sh b/tools/run_python_tests.sh similarity index 89% rename from tools/python/run_python_tests.sh rename to tools/run_python_tests.sh index 52557f25086..be8b545de8c 100755 --- a/tools/python/run_python_tests.sh +++ b/tools/run_python_tests.sh @@ -7,9 +7,13 @@ # Script which executes Python tests for each Python package and generates coverage information. # This is executed by the GitHub Actions CI build but also can be run locally. -# Make sure to install python_tests/requirements.txt before running the tests! + +# Make sure to install the unit tests requirements before running this command, via a command like: +# $ cd mbed-os # and also activate venv if desired +# $ pip install -e ./tools[unit-tests] set -e +cd "$(dirname "$0")" PYTHON=python