Mbed CLI 1 parses the base requirements.txt and attempts to
automatically install missing python libraries for you. Unfortunately,
it's requirements parser is not as capable as the one shipping with pip.
In particular, we are unable to express different version of libraries
conditional on the version of Python being used.
---
[mbed] ERROR: Unknown Error: Unsupported environment marker: python_version < '3.6'
Remove the direct dependency on prettytable from requirements.txt, as
mbed-os-tools depends on prettytable and we can pick up the dependency
(as properly expressed conditionally on the Python version) from there,
without having to use the limited requirements parser in Mbed CLI 1.
icetea is used for running icetea integration tests with `mbed-cli test
--icetea`, but not otherwise needed. icetea was intended for deprecation
with Mbed OS 6.0. Remove icetea from the list of default dependencies,
as the version of prettytable it depends on causes a Python dependency
conflict with other libraries' dependencies on prettytable, preventing
icetea from being installed to the same Python environment as other Mbed
Python tools.
We were pinning the version of Click to 7.0.~. This was preventing
side-by-side installs with mbed-tools, as mbed-tools requires
Click>=7.1,<8.
Relax the Click version requirement to >7.0,<8 to prevent dependency
conflicts with mbed-tools.
Bump the `future` module version to 0.18.0 to fix an ImportError present
for Python 3.8:
ImportError: cannot import name 'splitattr' from 'urllib.request' (/usr/lib/python3.8/urllib/request.py)
Don't require too old of a version of mbed-greentea, mbed-host-tests, or
mbed-ls. We conservatively limit the versions to less than 2.0 for now,
in case we'ld like to break backwards compatibility in the future.
The requirements.txt mandates 2.4.x version of cryptography python
module which has an issue as it checks if the payload is an instance
of bytes which is actually a bytearray. This issue is fixed in 2.5
version, hence bump up minimum version to 2.5.
Signed-off-by: Devaraj Ranganna <devaraj.ranganna@arm.com>
The required version of pycryptodome currently is either 3.7.2 or 3.7.3.
But there is no wheel package for these version for latest version of python
(3.8). Due to this, pip will download source and compile while trying to
install pycryptodome. On Windows, there is no c, c++ compiler installed
by default which leads to pip asking users to download and install
Microsoft Visual C++ Build Tools.
The release version 3.9.3 contains wheel package for python 3.8 on
all supported operating systems.
Signed-off-by: Devaraj Ranganna <devaraj.ranganna@arm.com>
This test case uses `hidapi` -- a cross-platform Python module.
To keep the initial Mbed setup as simple as possible, the `hidapi`
module is skipped on Linux hosts because of its external dependancies
for this platform.
The module can be easily installed following instructions from the
README file.
The test case is skipped if the host machine lacks `hidapi` module.
Fixes to subscription patterns and filtering, also a timeout on a blocking subscription now raises a CloudTimeoutError not a Queue.empty exception.
Errors received in async-responses will now populate the exception status and reason attributes.
Stopping notifications now terminates cleanly without logging an error.
Icetea depends on mbed-flasher. mbed-flasher recently released a version
that drops the dependency on pyocd. Icetea released a version that uses
this latest version of mbed-flasher. So now tht pyocd is no longer in
our dependency tree, we can drop it here.