From 4ca2b149e53fecc90a53a45204f62ce3f2f84c96 Mon Sep 17 00:00:00 2001 From: Roland Dobai Date: Fri, 14 Dec 2018 17:37:43 +0100 Subject: [PATCH] examples, tools: Fix Python3 deprecation warning for the imp module --- .../http_server_advanced_test.py | 3 +- .../http_server_persistence_test.py | 3 +- .../simple/http_server_simple_test.py | 3 +- tools/esp_prov/proto/__init__.py | 28 +++++++++++++------ tools/tiny-test-fw/Utility/CaseConfig.py | 8 ++---- tools/tiny-test-fw/Utility/SearchCases.py | 6 ++-- tools/tiny-test-fw/Utility/__init__.py | 10 +++++++ 7 files changed, 37 insertions(+), 24 deletions(-) diff --git a/examples/protocols/http_server/advanced_tests/http_server_advanced_test.py b/examples/protocols/http_server/advanced_tests/http_server_advanced_test.py index 5730b43855..f4ed79bafa 100644 --- a/examples/protocols/http_server/advanced_tests/http_server_advanced_test.py +++ b/examples/protocols/http_server/advanced_tests/http_server_advanced_test.py @@ -17,7 +17,6 @@ from __future__ import division from __future__ import print_function from __future__ import unicode_literals -import imp import re import os import sys @@ -41,7 +40,7 @@ import Utility # Import client module expath = os.path.dirname(os.path.realpath(__file__)) -client = imp.load_source("client", expath + "/scripts/test.py") +client = Utility.load_source("client", expath + "/scripts/test.py") # Due to connectivity issues (between runner host and DUT) in the runner environment, diff --git a/examples/protocols/http_server/persistent_sockets/http_server_persistence_test.py b/examples/protocols/http_server/persistent_sockets/http_server_persistence_test.py index 2cdd4cf204..dae81814e2 100644 --- a/examples/protocols/http_server/persistent_sockets/http_server_persistence_test.py +++ b/examples/protocols/http_server/persistent_sockets/http_server_persistence_test.py @@ -19,7 +19,6 @@ from __future__ import print_function from __future__ import unicode_literals from builtins import str from builtins import range -import imp import re import os import sys @@ -43,7 +42,7 @@ import Utility # Import client module expath = os.path.dirname(os.path.realpath(__file__)) -client = imp.load_source("client", expath + "/scripts/adder.py") +client = Utility.load_source("client", expath + "/scripts/adder.py") @IDF.idf_example_test(env_tag="Example_WIFI") diff --git a/examples/protocols/http_server/simple/http_server_simple_test.py b/examples/protocols/http_server/simple/http_server_simple_test.py index 143f708cab..38d8c319e0 100644 --- a/examples/protocols/http_server/simple/http_server_simple_test.py +++ b/examples/protocols/http_server/simple/http_server_simple_test.py @@ -18,7 +18,6 @@ from __future__ import division from __future__ import print_function from __future__ import unicode_literals from builtins import range -import imp import re import os import sys @@ -44,7 +43,7 @@ import Utility # Import client module expath = os.path.dirname(os.path.realpath(__file__)) -client = imp.load_source("client", expath + "/scripts/client.py") +client = Utility.load_source("client", expath + "/scripts/client.py") @IDF.idf_example_test(env_tag="Example_WIFI") diff --git a/tools/esp_prov/proto/__init__.py b/tools/esp_prov/proto/__init__.py index 0e5047b616..c0292bb771 100644 --- a/tools/esp_prov/proto/__init__.py +++ b/tools/esp_prov/proto/__init__.py @@ -13,21 +13,31 @@ # limitations under the License. # -import imp import os + +def _load_source(name, path): + try: + from importlib.machinery import SourceFileLoader + return SourceFileLoader(name, path).load_module() + except ImportError: + # importlib.machinery doesn't exists in Python 2 so we will use imp (deprecated in Python 3) + import imp + return imp.load_source(name, path) + + idf_path = os.environ['IDF_PATH'] # protocomm component related python files generated from .proto files -constants_pb2 = imp.load_source("constants_pb2", idf_path + "/components/protocomm/python/constants_pb2.py") -sec0_pb2 = imp.load_source("sec0_pb2", idf_path + "/components/protocomm/python/sec0_pb2.py") -sec1_pb2 = imp.load_source("sec1_pb2", idf_path + "/components/protocomm/python/sec1_pb2.py") -session_pb2 = imp.load_source("session_pb2", idf_path + "/components/protocomm/python/session_pb2.py") +constants_pb2 = _load_source("constants_pb2", idf_path + "/components/protocomm/python/constants_pb2.py") +sec0_pb2 = _load_source("sec0_pb2", idf_path + "/components/protocomm/python/sec0_pb2.py") +sec1_pb2 = _load_source("sec1_pb2", idf_path + "/components/protocomm/python/sec1_pb2.py") +session_pb2 = _load_source("session_pb2", idf_path + "/components/protocomm/python/session_pb2.py") # wifi_provisioning component related python files generated from .proto files -wifi_constants_pb2 = imp.load_source("wifi_constants_pb2", idf_path + "/components/wifi_provisioning/python/wifi_constants_pb2.py") -wifi_config_pb2 = imp.load_source("wifi_config_pb2", idf_path + "/components/wifi_provisioning/python/wifi_config_pb2.py") +wifi_constants_pb2 = _load_source("wifi_constants_pb2", idf_path + "/components/wifi_provisioning/python/wifi_constants_pb2.py") +wifi_config_pb2 = _load_source("wifi_config_pb2", idf_path + "/components/wifi_provisioning/python/wifi_config_pb2.py") # custom_provisioning component related python files generated from .proto files -custom_config_pb2 = imp.load_source("custom_config_pb2", idf_path + - "/examples/provisioning/custom_config/components/custom_provisioning/python/custom_config_pb2.py") +custom_config_pb2 = _load_source("custom_config_pb2", idf_path + + "/examples/provisioning/custom_config/components/custom_provisioning/python/custom_config_pb2.py") diff --git a/tools/tiny-test-fw/Utility/CaseConfig.py b/tools/tiny-test-fw/Utility/CaseConfig.py index 1e3895cb74..ee6234da8e 100644 --- a/tools/tiny-test-fw/Utility/CaseConfig.py +++ b/tools/tiny-test-fw/Utility/CaseConfig.py @@ -43,13 +43,12 @@ Template Config File:: - name: xxx """ -# TODO: add a function to use suitable import lib for python2 and python3 -import imp - import yaml import TestCase +from Utility import load_source + def _convert_to_lower_case_bytes(item): """ @@ -169,8 +168,7 @@ class Parser(object): output = dict() for key in overwrite: _path = overwrite[key]["path"] - # TODO: add a function to use suitable import lib for python2 and python3 - _module = imp.load_source(str(hash(_path)), overwrite[key]["path"]) + _module = load_source(str(hash(_path)), overwrite[key]["path"]) output[key] = _module.__getattribute__(overwrite[key]["class"]) return output diff --git a/tools/tiny-test-fw/Utility/SearchCases.py b/tools/tiny-test-fw/Utility/SearchCases.py index 431d195ec1..a0930d307e 100644 --- a/tools/tiny-test-fw/Utility/SearchCases.py +++ b/tools/tiny-test-fw/Utility/SearchCases.py @@ -17,8 +17,7 @@ import os import fnmatch import types import copy -# TODO: add a function to use suitable import lib for python2 and python3 -import imp +from Utility import load_source class Search(object): @@ -31,8 +30,7 @@ class Search(object): print("Try to get cases from: " + file_name) test_functions = [] try: - # TODO: add a function to use suitable import lib for python2 and python3 - mod = imp.load_source(str(hash(file_name)), file_name) + mod = load_source(str(hash(file_name)), file_name) for func in [mod.__getattribute__(x) for x in dir(mod) if isinstance(mod.__getattribute__(x), types.FunctionType)]: try: diff --git a/tools/tiny-test-fw/Utility/__init__.py b/tools/tiny-test-fw/Utility/__init__.py index 47d3e1b826..2a0759a7bc 100644 --- a/tools/tiny-test-fw/Utility/__init__.py +++ b/tools/tiny-test-fw/Utility/__init__.py @@ -36,3 +36,13 @@ def console_log(data, color="white", end="\n"): # reset color to white for later logs print(_COLOR_CODES["white"] + u"\r") sys.stdout.flush() + + +def load_source(name, path): + try: + from importlib.machinery import SourceFileLoader + return SourceFileLoader(name, path).load_module() + except ImportError: + # importlib.machinery doesn't exists in Python 2 so we will use imp (deprecated in Python 3) + import imp + return imp.load_source(name, path)