diff --git a/apps/InfluxdbApp/src/influxdbapp/__main__.py b/apps/InfluxdbApp/src/influxdbapp/__main__.py index 5a55ea9..4de9825 100644 --- a/apps/InfluxdbApp/src/influxdbapp/__main__.py +++ b/apps/InfluxdbApp/src/influxdbapp/__main__.py @@ -30,21 +30,21 @@ parser.add_argument("--db-pw", help="InfluxDB User password") args, config = prepare_app(parser, __loader__, __name__, "config.json") # variables -nm = get_value("name", (unicode, str), default_name, args, config) +nm = get_value("name", str, default_name, args, config) cb = config.get("cse_base", "onem2m") -ep = get_value("ep", (unicode, str), default_ep, args, config) +ep = get_value("ep", str, default_ep, args, config) poas = config.get("poas", ["http://auto:23706"]) originator_pre = config.get("originator_pre", "//openmtc.org/mn-cse-1") ssl_certs = config.get("ssl_certs", {}) lbl = get_value("labels", list, default_labels, args, config) -influx_host = get_value("influx_host", (unicode, str), "localhost", args, config) -influx_port = get_value("influx_port", (unicode, str), "8086", args, config) -influx_user = get_value("influx_user", (unicode, str), "root", args, config) -influx_password = get_value("influx_password", (unicode, str), "root", args, config) -db_name = get_value("db_name", (unicode, str), "example", args, config) -db_user = get_value("db_user", (unicode, str), "test", args, config) -db_pw = get_value("db_pw", (unicode, str), "test", args, config) +influx_host = get_value("influx_host", str, "localhost", args, config) +influx_port = get_value("influx_port", str, "8086", args, config) +influx_user = get_value("influx_user", str, "root", args, config) +influx_password = get_value("influx_password", str, "root", args, config) +db_name = get_value("db_name", str, "example", args, config) +db_user = get_value("db_user", str, "test", args, config) +db_pw = get_value("db_pw", str, "test", args, config) # start app = InfluxdbApp( diff --git a/apps/InfluxdbApp/src/influxdbapp/influxdb_app.py b/apps/InfluxdbApp/src/influxdbapp/influxdb_app.py index 2c08b55..6ace8c2 100644 --- a/apps/InfluxdbApp/src/influxdbapp/influxdb_app.py +++ b/apps/InfluxdbApp/src/influxdbapp/influxdb_app.py @@ -1,5 +1,5 @@ from openmtc_app.onem2m import ResourceManagementXAE -from connector import InfluxDBConnector +from .connector import InfluxDBConnector class InfluxdbApp(ResourceManagementXAE): @@ -18,7 +18,7 @@ class InfluxdbApp(ResourceManagementXAE): **kw ): super(InfluxdbApp, self).__init__(*args, **kw) - if isinstance(labels, basestring): + if isinstance(labels, str): self.labels = {labels} elif hasattr(labels, '__iter__') and len(labels): self.labels = set(labels) diff --git a/apps/InfluxdbApp/utils.py b/apps/InfluxdbApp/utils.py index d8a733f..532a2cc 100644 --- a/apps/InfluxdbApp/utils.py +++ b/apps/InfluxdbApp/utils.py @@ -35,8 +35,8 @@ def get_packages(package, package_dir, excluded_list=None, included_list=None): r_prefix = len(root) + 1 for path, dirs, files in os.walk(root, onerror=on_error): is_module = "__init__.py" in files and path != root - excluded = any(map(lambda x: x in path, excluded_list)) - included = any(map(lambda x: x in path, included_list)) + excluded = any([x in path for x in excluded_list]) + included = any([x in path for x in included_list]) if is_module and (not excluded or included): packages.append(package + "." + path[r_prefix:].replace("/", ".")) @@ -56,7 +56,7 @@ def get_pkg_files(base_dir, name): def enable_init_files(init_dir, init_dist_files): for f in init_dist_files: - os.chmod(os.path.join(init_dir, os.path.basename(f)), 0755) + os.chmod(os.path.join(init_dir, os.path.basename(f)), 0o755) def move_config_files(config_dir, config_files): @@ -74,7 +74,7 @@ def create_openmtc_user(db_dir=None, log_dir=None): try: from pwd import getpwnam except ImportError: - print "Could not import the 'pwd' module. Skipping user management" + print("Could not import the 'pwd' module. Skipping user management") else: # assuming DB_DIR was created by setup already try: diff --git a/apps/OrionContextBroker/src/orioncontextbroker/__main__.py b/apps/OrionContextBroker/src/orioncontextbroker/__main__.py index a68ba4f..0963941 100644 --- a/apps/OrionContextBroker/src/orioncontextbroker/__main__.py +++ b/apps/OrionContextBroker/src/orioncontextbroker/__main__.py @@ -38,20 +38,17 @@ parser.add_argument( args, config = prepare_app(parser, __loader__, __name__, "config.json") # variables -nm = get_value("name", (unicode, str), default_name, args, config) +nm = get_value("name", str, default_name, args, config) cb = config.get("cse_base", "onem2m") -ep = get_value("ep", (unicode, str), default_ep, args, config) +ep = get_value("ep", str, default_ep, args, config) poas = config.get("poas", ["http://auto:25396"]) originator_pre = config.get("originator_pre", "//openmtc.org/mn-cse-1") ssl_certs = config.get("ssl_certs", {}) interval = get_value("interval", int, default_ep, args, config) lbl = get_value("labels", list, default_labels, args, config) -orion_host = get_value("orion_host", (unicode, str), default_orion_host, args, - config) -orion_api = get_value("orion_api", (unicode, str), default_orion_api, args, - config) -accumulate_address = get_value("accumulate_address", (unicode, str), - default_accumulate_address, args, config) +orion_host = get_value("orion_host", str, default_orion_host, args, config) +orion_api = get_value("orion_api", str, default_orion_api, args, config) +accumulate_address = get_value("accumulate_address", str, default_accumulate_address, args, config) # start app = OrionContextBroker( diff --git a/apps/OrionContextBroker/src/orioncontextbroker/orion_api.py b/apps/OrionContextBroker/src/orioncontextbroker/orion_api.py index 77a855b..c921630 100644 --- a/apps/OrionContextBroker/src/orioncontextbroker/orion_api.py +++ b/apps/OrionContextBroker/src/orioncontextbroker/orion_api.py @@ -1,7 +1,4 @@ -try: - from urllib.parse import urljoin -except ImportError: - from urlparse import urljoin +from urllib.parse import urljoin import logging import requests @@ -32,16 +29,16 @@ class OrionAPI(LoggerMixin): def _get_type(self, element): if isinstance(element, int): - return u"Int" + return "Int" elif isinstance(element, float): - return u"Float" + return "Float" elif isinstance(element, bool): - return u"Boolean" - elif isinstance(element, (str, unicode)): - return u"String" + return "Boolean" + elif isinstance(element, str): + return "String" else: self.logger.error('Type of "{}" unknown'.format(element)) - return u"Unknown" + return "Unknown" def is_host_alive(self): req = self._request( diff --git a/apps/OrionContextBroker/src/orioncontextbroker/orion_context_broker.py b/apps/OrionContextBroker/src/orioncontextbroker/orion_context_broker.py index bd3e1c8..14003a2 100644 --- a/apps/OrionContextBroker/src/orioncontextbroker/orion_context_broker.py +++ b/apps/OrionContextBroker/src/orioncontextbroker/orion_context_broker.py @@ -1,14 +1,11 @@ import re -try: - from urllib.parse import urlparse -except ImportError: - from urlparse import urlparse +from urllib.parse import urlparse from flask import Flask, Response, request from gevent.pywsgi import WSGIServer from openmtc_app.onem2m import ResourceManagementXAE -from orion_api import OrionAPI +from .orion_api import OrionAPI class OrionContextBroker(ResourceManagementXAE): @@ -20,7 +17,7 @@ class OrionContextBroker(ResourceManagementXAE): *args, **kw): super(OrionContextBroker, self).__init__(*args, **kw) - if isinstance(labels, basestring): + if isinstance(labels, str): self.labels = {labels} elif hasattr(labels, '__iter__'): self.labels = set(labels) @@ -103,9 +100,8 @@ class OrionContextBroker(ResourceManagementXAE): device_type = "sensor" if sensor_info.get("sensor_labels", None) else "actuator" try: - id_label = filter( - lambda x: (x.startswith('openmtc:id:')), - sensor_info['{}_labels'.format(device_type)]).pop() + id_label = [x for x in sensor_info['{}_labels'.format(device_type)] + if x.startswith('openmtc:id:')].pop() cse_id, dev_id = re.sub('^openmtc:id:', '', id_label).split('/')[:2] except (IndexError, ValueError): diff --git a/apps/OrionContextBroker/utils.py b/apps/OrionContextBroker/utils.py index d8a733f..532a2cc 100644 --- a/apps/OrionContextBroker/utils.py +++ b/apps/OrionContextBroker/utils.py @@ -35,8 +35,8 @@ def get_packages(package, package_dir, excluded_list=None, included_list=None): r_prefix = len(root) + 1 for path, dirs, files in os.walk(root, onerror=on_error): is_module = "__init__.py" in files and path != root - excluded = any(map(lambda x: x in path, excluded_list)) - included = any(map(lambda x: x in path, included_list)) + excluded = any([x in path for x in excluded_list]) + included = any([x in path for x in included_list]) if is_module and (not excluded or included): packages.append(package + "." + path[r_prefix:].replace("/", ".")) @@ -56,7 +56,7 @@ def get_pkg_files(base_dir, name): def enable_init_files(init_dir, init_dist_files): for f in init_dist_files: - os.chmod(os.path.join(init_dir, os.path.basename(f)), 0755) + os.chmod(os.path.join(init_dir, os.path.basename(f)), 0o755) def move_config_files(config_dir, config_files): @@ -74,7 +74,7 @@ def create_openmtc_user(db_dir=None, log_dir=None): try: from pwd import getpwnam except ImportError: - print "Could not import the 'pwd' module. Skipping user management" + print("Could not import the 'pwd' module. Skipping user management") else: # assuming DB_DIR was created by setup already try: diff --git a/apps/csvInjector/src/csvinjector/__main__.py b/apps/csvInjector/src/csvinjector/__main__.py index 52232fd..d38358e 100644 --- a/apps/csvInjector/src/csvinjector/__main__.py +++ b/apps/csvInjector/src/csvinjector/__main__.py @@ -42,28 +42,20 @@ parser.add_argument( args, config = prepare_app(parser, __loader__, __name__, "config.json") # variables -nm = get_value("name", (unicode, str), default_name, args, config) +nm = get_value("name", str, default_name, args, config) cb = config.get("cse_base", "onem2m") -ep = get_value("ep", (unicode, str), default_ep, args, config) +ep = get_value("ep", str, default_ep, args, config) poas = config.get("poas", ["http://auto:28300"]) originator_pre = config.get("originator_pre", "//openmtc.org/mn-cse-1") ssl_certs = config.get("ssl_certs", {}) -csv_path = get_value("csv_path", (unicode, str), default_csv_path, args, - config) -csv_delim = get_value("csv_delim", (unicode, str), default_csv_delim, args, - config) -csv_quotechar = get_value("csv_quotechar", (unicode, str), - default_csv_quotechar, args, config) -device_classifier = get_value("device_classifier", (unicode, str), - default_device_classifier, args, config) -date_classifier = get_value("date_classifier", (unicode, str, list), - default_date_classifier, args, config) -time_format = get_value("time_format", (unicode, str, list), - default_time_format, args, config) -duration = get_value("duration", (int, float), - default_duration, args, config) -repeat = get_value("repeat", (unicode, str), - default_repeat, args, config) +csv_path = get_value("csv_path", str, default_csv_path, args, config) +csv_delim = get_value("csv_delim", str, default_csv_delim, args, config) +csv_quotechar = get_value("csv_quotechar", str, default_csv_quotechar, args, config) +device_classifier = get_value("device_classifier", str, default_device_classifier, args, config) +date_classifier = get_value("date_classifier", (str, list), default_date_classifier, args, config) +time_format = get_value("time_format", (str, list), default_time_format, args, config) +duration = get_value("duration", (int, float), default_duration, args, config) +repeat = get_value("repeat", str, default_repeat, args, config) # start app = csvInjector( diff --git a/apps/csvInjector/src/csvinjector/csv_injector.py b/apps/csvInjector/src/csvinjector/csv_injector.py index afbab1e..68bdc5c 100644 --- a/apps/csvInjector/src/csvinjector/csv_injector.py +++ b/apps/csvInjector/src/csvinjector/csv_injector.py @@ -1,6 +1,6 @@ from openmtc_app.onem2m import XAE from openmtc_onem2m.model import Container -from csv_process import csvProcessor +from .csv_process import csvProcessor import sched import time import datetime @@ -95,7 +95,7 @@ class csvInjector(XAE): if k == "Date" or k == self.device_classifier or event[k] in ( "", None): continue - if not k in self._recognized_measurement_containers[sensor].keys(): + if k not in self._recognized_measurement_containers[sensor].keys(): self._create_measurement_container(sensor, k) timestamp = time.mktime(datetime.datetime.now().timetuple()) senml = { diff --git a/apps/csvInjector/src/csvinjector/csv_process.py b/apps/csvInjector/src/csvinjector/csv_process.py index 28b93d4..e8e8be7 100644 --- a/apps/csvInjector/src/csvinjector/csv_process.py +++ b/apps/csvInjector/src/csvinjector/csv_process.py @@ -65,4 +65,4 @@ class csvProcessor(LoggerMixin): if __name__ == "__main__": p = csvProcessor("example.csv", duration=300) for e in p.csv_data: - print e + print(e) diff --git a/apps/csvInjector/utils.py b/apps/csvInjector/utils.py index d8a733f..532a2cc 100644 --- a/apps/csvInjector/utils.py +++ b/apps/csvInjector/utils.py @@ -35,8 +35,8 @@ def get_packages(package, package_dir, excluded_list=None, included_list=None): r_prefix = len(root) + 1 for path, dirs, files in os.walk(root, onerror=on_error): is_module = "__init__.py" in files and path != root - excluded = any(map(lambda x: x in path, excluded_list)) - included = any(map(lambda x: x in path, included_list)) + excluded = any([x in path for x in excluded_list]) + included = any([x in path for x in included_list]) if is_module and (not excluded or included): packages.append(package + "." + path[r_prefix:].replace("/", ".")) @@ -56,7 +56,7 @@ def get_pkg_files(base_dir, name): def enable_init_files(init_dir, init_dist_files): for f in init_dist_files: - os.chmod(os.path.join(init_dir, os.path.basename(f)), 0755) + os.chmod(os.path.join(init_dir, os.path.basename(f)), 0o755) def move_config_files(config_dir, config_files): @@ -74,7 +74,7 @@ def create_openmtc_user(db_dir=None, log_dir=None): try: from pwd import getpwnam except ImportError: - print "Could not import the 'pwd' module. Skipping user management" + print("Could not import the 'pwd' module. Skipping user management") else: # assuming DB_DIR was created by setup already try: diff --git a/apps/mqttConnector/src/mqttconnector/__main__.py b/apps/mqttConnector/src/mqttconnector/__main__.py index a162c7c..080805f 100644 --- a/apps/mqttConnector/src/mqttconnector/__main__.py +++ b/apps/mqttConnector/src/mqttconnector/__main__.py @@ -40,36 +40,27 @@ parser.add_argument("--mqtts-keyfile", help="Path to own mqtts key") args, config = prepare_app(parser, __loader__, __name__, "config.json") # variables -nm = get_value("name", (unicode, str), default_name, args, config) +nm = get_value("name", str, default_name, args, config) cb = config.get("cse_base", "onem2m") -ep = get_value("ep", (unicode, str), default_ep, args, config) +ep = get_value("ep", str, default_ep, args, config) poas = config.get("poas", ["http://auto:21753"]) originator_pre = config.get("originator_pre", "//openmtc.org/mn-cse-1") ssl_certs = config.get("ssl_certs", {}) - broker_ep = config.get("broker_ep", "localhost:8883") - -topic_pre = get_value("topic_pre", (unicode, str), default_topic_pre, args, - config) -topic_index_location = get_value("topic_index_location", (int), +topic_pre = get_value("topic_pre", str, default_topic_pre, args, config) +topic_index_location = get_value("topic_index_location", int, default_topic_index_location, args, config) -topic_index_device = get_value("topic_index_device", (int), +topic_index_device = get_value("topic_index_device", int, default_topic_index_device, args, config) -fiware_service = get_value("fiware_service", (unicode, str), - default_fiware_service, args, config) -broker_user = get_value("broker_user", (unicode, str), default_broker_user, - args, config) -broker_user_pw = get_value("broker_user_pw", (unicode, str), - default_broker_user_pw, args, config) -user_pw = get_value("broker_user_pw", (unicode, str), default_broker_user_pw, - args, config) +fiware_service = get_value("fiware_service", str, default_fiware_service, args, config) +broker_user = get_value("broker_user", str, default_broker_user, args, config) +broker_user_pw = get_value("broker_user_pw", str, default_broker_user_pw, args, config) +user_pw = get_value("broker_user_pw", str, default_broker_user_pw, args, config) mqtts_enabled = get_value("mqtts_enabled", (bool), False, args, config) -mqtts_ca_certs = get_value("mqtts_ca_certs", (unicode, str), - default_mqtts_ca_certs, args, config) -mqtts_certfile = get_value("mqtts_certfile", (unicode, str), - default_mqtts_certfile, args, config) -mqtts_keyfile = get_value("mqtts_keyfile", (unicode, str), - default_mqtts_keyfile, args, config) +mqtts_ca_certs = get_value("mqtts_ca_certs", str, default_mqtts_ca_certs, args, config) +mqtts_certfile = get_value("mqtts_certfile", str, default_mqtts_certfile, args, config) +mqtts_keyfile = get_value("mqtts_keyfile", str, default_mqtts_keyfile, args, config) + # start app = mqttConnector( broker_ep=broker_ep, diff --git a/apps/mqttConnector/utils.py b/apps/mqttConnector/utils.py index d8a733f..532a2cc 100644 --- a/apps/mqttConnector/utils.py +++ b/apps/mqttConnector/utils.py @@ -35,8 +35,8 @@ def get_packages(package, package_dir, excluded_list=None, included_list=None): r_prefix = len(root) + 1 for path, dirs, files in os.walk(root, onerror=on_error): is_module = "__init__.py" in files and path != root - excluded = any(map(lambda x: x in path, excluded_list)) - included = any(map(lambda x: x in path, included_list)) + excluded = any([x in path for x in excluded_list]) + included = any([x in path for x in included_list]) if is_module and (not excluded or included): packages.append(package + "." + path[r_prefix:].replace("/", ".")) @@ -56,7 +56,7 @@ def get_pkg_files(base_dir, name): def enable_init_files(init_dir, init_dist_files): for f in init_dist_files: - os.chmod(os.path.join(init_dir, os.path.basename(f)), 0755) + os.chmod(os.path.join(init_dir, os.path.basename(f)), 0o755) def move_config_files(config_dir, config_files): @@ -74,7 +74,7 @@ def create_openmtc_user(db_dir=None, log_dir=None): try: from pwd import getpwnam except ImportError: - print "Could not import the 'pwd' module. Skipping user management" + print("Could not import the 'pwd' module. Skipping user management") else: # assuming DB_DIR was created by setup already try: diff --git a/common/openmtc-onem2m/src/openmtc_onem2m/client/http.py b/common/openmtc-onem2m/src/openmtc_onem2m/client/http.py index dc5c66b..dcda4d1 100644 --- a/common/openmtc-onem2m/src/openmtc_onem2m/client/http.py +++ b/common/openmtc-onem2m/src/openmtc_onem2m/client/http.py @@ -1,11 +1,13 @@ -import urllib +import urllib.request +import urllib.parse +import urllib.error import ssl from socket import ( gaierror, error as socket_error, ) from time import time -from urlparse import urlparse +from urllib.parse import urlparse from aplus import Promise from futile.caching import LRUCache from geventhttpclient.client import HTTPClient @@ -145,7 +147,7 @@ class OneM2MHTTPClient(OneM2MClient): filter_criteria = onem2m_request.fc params.update({ (get_short_attribute_name(name) or get_short_member_name(name)): val - for name, val in filter_criteria.get_values(True).iteritems() + for name, val in filter_criteria.get_values(True).items() }) if onem2m_request.ae_notifying: @@ -154,7 +156,7 @@ class OneM2MHTTPClient(OneM2MClient): path = normalize_path(onem2m_request.to) if params: - path += '?' + urllib.urlencode(params, True) + path += '?' + urllib.parse.urlencode(params, True) content_type, data = encode_onem2m_content(onem2m_request.content, self.content_type, path=path) @@ -165,7 +167,7 @@ class OneM2MHTTPClient(OneM2MClient): headers = { header: getattr(onem2m_request, field) - for header, field in _header_to_field_map.iteritems() + for header, field in _header_to_field_map.items() if getattr(onem2m_request, field) is not None } headers['content-type'] = content_type diff --git a/common/openmtc-onem2m/src/openmtc_onem2m/client/mqtt.py b/common/openmtc-onem2m/src/openmtc_onem2m/client/mqtt.py index d714abf..03370d3 100644 --- a/common/openmtc-onem2m/src/openmtc_onem2m/client/mqtt.py +++ b/common/openmtc-onem2m/src/openmtc_onem2m/client/mqtt.py @@ -32,7 +32,7 @@ from simplejson import ( JSONDecodeError, ) from socket import error as SocketError -from urlparse import urlparse +from urllib.parse import urlparse from openmtc_onem2m.util import split_onem2m_address #: Dictionary mapping supported schemes to port numbers @@ -353,7 +353,7 @@ class OneM2MMQTTClient(OneM2MClient): self.logger.debug('Decoded JSON request: %s' % (request, )) - op = OneM2MOperation._member_map_.values()[request['op'] - 1] + op = list(OneM2MOperation._member_map_.values())[request['op'] - 1] to = request['to'] del request['op'], request['to'] @@ -485,7 +485,8 @@ class OneM2MMQTTClient(OneM2MClient): else: request.ty = None - request.op = 1 + OneM2MOperation._member_map_.keys().index(OneM2MOperation[request.op].name) + request.op = 1 + list(OneM2MOperation._member_map_.keys()).index( + OneM2MOperation[request.op].name) if request.pc: request.pc = self._decode( encode_onem2m_content(request.pc, 'application/json', path=request.to)[1] diff --git a/common/openmtc-onem2m/src/openmtc_onem2m/mapper/__init__.py b/common/openmtc-onem2m/src/openmtc_onem2m/mapper/__init__.py index 1c25072..caf5080 100644 --- a/common/openmtc-onem2m/src/openmtc_onem2m/mapper/__init__.py +++ b/common/openmtc-onem2m/src/openmtc_onem2m/mapper/__init__.py @@ -1,7 +1,4 @@ -try: - from urllib.parse import urlparse -except ImportError: - from urlparse import urlparse +from urllib.parse import urlparse from openmtc.mapper import BasicMapper, MapperError from openmtc_onem2m import OneM2MRequest diff --git a/common/openmtc-onem2m/src/openmtc_onem2m/model.py b/common/openmtc-onem2m/src/openmtc_onem2m/model.py index 828ed4d..bfe5328 100644 --- a/common/openmtc-onem2m/src/openmtc_onem2m/model.py +++ b/common/openmtc-onem2m/src/openmtc_onem2m/model.py @@ -407,7 +407,7 @@ class FilterUsageE(OneM2MIntEnum): @unique class CountryCodeE(OneM2MIntEnum): india = 91 - usa = 01 + usa = 1 @unique @@ -1376,8 +1376,7 @@ long_to_short_attribute_mapping = { "relatedSemantics": "rels", } -short_to_long_attribute_mapping = {v: k for k, v in - long_to_short_attribute_mapping.items()} +short_to_long_attribute_mapping = {v: k for k, v in long_to_short_attribute_mapping.items()} def get_long_attribute_name(n): @@ -1459,8 +1458,7 @@ long_to_short_resource_mapping = { "dynamicAuthorizationConsultation": "dac" } -short_to_long_resource_mapping = {v: k for k, v in - long_to_short_resource_mapping.items()} +short_to_long_resource_mapping = {v: k for k, v in long_to_short_resource_mapping.items()} def get_long_resource_name(n): @@ -1584,8 +1582,7 @@ long_to_short_member_mapping = { "escertkeMessage": "eckm" } -short_to_long_member_mapping = {v: k for k, v in - long_to_short_member_mapping.items()} +short_to_long_member_mapping = {v: k for k, v in long_to_short_member_mapping.items()} def get_long_member_name(n): @@ -1601,8 +1598,7 @@ long_to_short_root_mapping = { "responsePrimitive": "rsp" } -short_to_long_root_mapping = {v: k for k, v in - long_to_short_root_mapping.items()} +short_to_long_root_mapping = {v: k for k, v in long_to_short_root_mapping.items()} def get_long_root_name(n): @@ -1636,8 +1632,7 @@ long_to_short_parameter_mapping = { "responseStatusCode": "rsc" } -short_to_long_parameter_mapping = {v: k for k, v in - long_to_short_parameter_mapping.items()} +short_to_long_parameter_mapping = {v: k for k, v in long_to_short_parameter_mapping.items()} def get_long_parameter_name(n): @@ -1648,13 +1643,13 @@ def get_short_parameter_name(n): return long_to_short_parameter_mapping.get(n) -_all_types = {k: v for k, v in globals().iteritems() +_all_types = {k: v for k, v in globals().items() if issubclass(v, OneM2MEntity) and not v.__subclasses__()} _all_types_short = {} _all_types_long = {} -for k, v in _all_types.iteritems(): +for k, v in _all_types.items(): if get_short_resource_name(k): long_name = k short_name = get_short_resource_name(k) @@ -1685,13 +1680,13 @@ for k, v in _all_types.iteritems(): _all_types_long[long_name] = v -_resource_types = {k: v for k, v in _all_types.iteritems() +_resource_types = {k: v for k, v in _all_types.items() if issubclass(v, ResourceC)} _resource_types_short = {} _resource_types_long = {} -for k, v in _resource_types.iteritems(): +for k, v in _resource_types.items(): if get_short_resource_name(k): long_name = k short_name = get_short_resource_name(k) @@ -1725,8 +1720,8 @@ def get_onem2m_resource_type(typename): def get_onem2m_types(): - return _all_types.values() + return list(_all_types.values()) def get_onem2m_resource_types(): - return _resource_types.values() + return list(_resource_types.values()) diff --git a/common/openmtc-onem2m/src/openmtc_onem2m/serializer/__init__.py b/common/openmtc-onem2m/src/openmtc_onem2m/serializer/__init__.py index a587b67..a0d8195 100644 --- a/common/openmtc-onem2m/src/openmtc_onem2m/serializer/__init__.py +++ b/common/openmtc-onem2m/src/openmtc_onem2m/serializer/__init__.py @@ -22,7 +22,7 @@ def create_onem2m_serializer(content_type): def get_onem2m_supported_content_types(): - return _factories.keys() + return list(_factories.keys()) def get_onem2m_decoder(content_type): @@ -37,6 +37,8 @@ def get_onem2m_decoder(content_type): serializer = create_onem2m_serializer(content_type) _serializers[content_type] = serializer return serializer + + get_serializer = get_onem2m_decoder diff --git a/common/openmtc-onem2m/src/openmtc_onem2m/serializer/base.py b/common/openmtc-onem2m/src/openmtc_onem2m/serializer/base.py index 7312150..a1a08ea 100644 --- a/common/openmtc-onem2m/src/openmtc_onem2m/serializer/base.py +++ b/common/openmtc-onem2m/src/openmtc_onem2m/serializer/base.py @@ -22,9 +22,7 @@ def get_typename(tn): return _typename_matcher.findall(tn).pop() -class OneM2MSerializer(LoggerMixin): - __metaclass__ = ABCMeta - +class OneM2MSerializer(LoggerMixin, metaclass=ABCMeta): @abstractmethod def encode_resource(self, resource, response, pretty=False, encoding="utf-8", fields=None): @@ -45,7 +43,7 @@ class OneM2MSerializer(LoggerMixin): res_type = ResourceTypeE(v["type"]) res_cls = get_onem2m_resource_type(res_type.name) return res_cls(v["name"], resourceID=v["value"], resourceType=res_type) - child_resource = map(map_child_resource, child_resource) + child_resource = list(map(map_child_resource, child_resource)) except (TypeError, AttributeError, KeyError, ValueError): raise CSEValueError("Invalid entry in child resources: %s", child_resource) @@ -80,7 +78,7 @@ class OneM2MDictSerializer(OneM2MSerializer): ) representation["notificationEvent"] = { get_short_attribute_name(k) or get_short_member_name(k): v - for k, v in e.iteritems() + for k, v in e.items() } except (AttributeError, KeyError): self.logger.exception("failed to encode notify") @@ -104,7 +102,7 @@ class OneM2MDictSerializer(OneM2MSerializer): "nm": c.basename, "typ": c.resourceType } - representation["childResource"] = map(get_child_rep, representation["childResource"]) + representation["childResource"] = list(map(get_child_rep, representation["childResource"])) if isinstance(resource, URIList): representation = [make_val(path, x) for x in representation] @@ -137,7 +135,7 @@ class OneM2MDictSerializer(OneM2MSerializer): return self.dumps({typename: representation}) def _handle_partial_addressing(self, resource, pretty): - for k, v in resource.iteritems(): + for k, v in resource.items(): if k in ('latest', 'oldest') and isinstance(v, ContentInstance): resource[k] = v.resourceID if pretty: @@ -148,7 +146,7 @@ class OneM2MDictSerializer(OneM2MSerializer): def convert_to_long_keys(d): return {get_long_resource_name(k) or get_long_attribute_name(k) or - get_long_member_name(k) or k: v for k, v in d.iteritems()} + get_long_member_name(k) or k: v for k, v in d.items()} try: if hasattr(s, "read"): @@ -161,7 +159,7 @@ class OneM2MDictSerializer(OneM2MSerializer): self.logger.debug("Read data: %s", data) try: - typename, data = data.items()[0] + typename, data = list(data.items())[0] return get_onem2m_type(get_typename(typename)), data except (AttributeError, IndexError, TypeError): raise CSESyntaxError("Not a valid resource representation") diff --git a/common/openmtc-onem2m/src/openmtc_onem2m/transport.py b/common/openmtc-onem2m/src/openmtc_onem2m/transport.py index 4bc9394..c703684 100644 --- a/common/openmtc-onem2m/src/openmtc_onem2m/transport.py +++ b/common/openmtc-onem2m/src/openmtc_onem2m/transport.py @@ -212,7 +212,9 @@ class OneM2MRequest(object): self.to = to # Originator ID self.originator = fr # original long name is from - self.request_identifier = rqi or ''.join(random.sample(string.letters + string.digits, 16)) + self.request_identifier = rqi or ''.join( + random.sample(string.ascii_letters + string.digits, 16) + ) # Type of a created resource self.resource_type = ty # Resource content to be transferred. @@ -423,7 +425,7 @@ class OneM2MRequest(object): def __str__(self): return '%s: %s' % (self.__class__.__name__, ' | '.join([ - '%s: %s' % (str(k), str(v)) for k, v in self.__dict__.iteritems() + '%s: %s' % (str(k), str(v)) for k, v in self.__dict__.items() ])) @@ -556,7 +558,7 @@ class OneM2MResponse(object): def __str__(self): return '%s: %s' % (self.__class__.__name__, ' | '.join([ - '%s: %s' % (str(k), str(v)) for k, v in self.__dict__.iteritems() + '%s: %s' % (str(k), str(v)) for k, v in self.__dict__.items() ])) diff --git a/common/openmtc/lib/aplus/__init__.py b/common/openmtc/lib/aplus/__init__.py index 01a2ba8..2f17aab 100644 --- a/common/openmtc/lib/aplus/__init__.py +++ b/common/openmtc/lib/aplus/__init__.py @@ -1,3 +1,4 @@ +import platform import sys from logging import DEBUG from threading import Thread @@ -6,8 +7,8 @@ from traceback import print_stack from futile.logging import LoggerMixin from openmtc.exc import OpenMTCError -if sys.subversion[0] != "CPython": - from inspect import ismethod, getargspec +if platform.python_implementation != "CPython": + from inspect import ismethod, getfullargspec # TODO: kca: can't pass in values for then/error currently @@ -160,11 +161,11 @@ class Promise(LoggerMixin): """ self._errbacks.append(f) - if sys.subversion[0] != "CPython": + if platform.python_implementation != "CPython": def _invoke(self, func, value): try: if value is None: - args, _, _, _ = getargspec(func) + args = getfullargspec(func).args arglen = len(args) if not arglen or (arglen == 1 and ismethod(func)): return func() @@ -181,11 +182,11 @@ class Promise(LoggerMixin): try: if value is None: try: - target = func.im_func + target = func.__func__ except AttributeError: - argcount = func.func_code.co_argcount + argcount = func.__code__.co_argcount else: - argcount = target.func_code.co_argcount - 1 + argcount = target.__code__.co_argcount - 1 if argcount == 0: return func() @@ -365,7 +366,7 @@ def listPromise(*args): if not arg.isFulfilled(): return - value = map(lambda p: p.value, args) + value = [p.value for p in args] ret._fulfill(value) for arg in args: diff --git a/common/openmtc/src/openmtc/configuration.py b/common/openmtc/src/openmtc/configuration.py index d2a768f..78f2052 100644 --- a/common/openmtc/src/openmtc/configuration.py +++ b/common/openmtc/src/openmtc/configuration.py @@ -31,9 +31,7 @@ class ExtraOptionsStrategy(Enum): fatal = "fatal" -class ConfigurationOption(LoggerMixin): - __metaclass__ = ABCMeta - +class ConfigurationOption(LoggerMixin, metaclass=ABCMeta): def __init__(self, type, default=NOT_SET, converter=identity, *args, **kw): super(ConfigurationOption, self).__init__(*args, **kw) @@ -76,7 +74,7 @@ class ListOption(SimpleOption): def _convert(self, v): v = super(ListOption, self)._convert(v) - return map(self._convert_content, v) + return list(map(self._convert_content, v)) def _convert_content(self, v): if not isinstance(v, self.content_type): @@ -92,7 +90,7 @@ class BooleanOption(ConfigurationOption): def _convert(self, v): if isinstance(v, (bool, int)): return bool(v) - if isinstance(v, basestring): + if isinstance(v, str): return v and v.lower() not in ("0", "no", "n", "f", "false") raise ConfigurationValueError("Illegal value for boolean: %s" % (v, )) diff --git a/common/openmtc/src/openmtc/model/__init__.py b/common/openmtc/src/openmtc/model/__init__.py index 0a55181..785b757 100644 --- a/common/openmtc/src/openmtc/model/__init__.py +++ b/common/openmtc/src/openmtc/model/__init__.py @@ -26,7 +26,7 @@ class Collection(Sequence, Mapping): def __getitem__(self, index): if isinstance(index, (int, slice)): - return self._map.values()[index] + return list(self._map.values())[index] return self._map[index] def __contains__(self, v): @@ -47,7 +47,7 @@ class Collection(Sequence, Mapping): return self._map.get(k, default) def __iter__(self): - return self._map.itervalues() + return iter(self._map.values()) def __len__(self): return len(self._map) @@ -427,24 +427,22 @@ class ResourceType(ABCMeta): # TODO: caching @property def attribute_names(self): - return map(attrgetter("name"), self.attributes) + return list(map(attrgetter("name"), self.attributes)) @property def collection_names(self): - return map(attrgetter("name"), self.collections) + return list(map(attrgetter("name"), self.collections)) @property def subresource_names(self): - return map(attrgetter("name"), self.subresources) + return list(map(attrgetter("name"), self.subresources)) @property def member_names(self): - return map(attrgetter("name"), self.__members__) + return list(map(attrgetter("name"), self.__members__)) -class Entity(LoggerMixin): - __metaclass__ = ResourceType - +class Entity(LoggerMixin, metaclass=ResourceType): def __init__(self, *args, **kw): self.set_values(kw) @@ -467,7 +465,7 @@ class Entity(LoggerMixin): # TODO: proper solution? if (v is not None and isinstance(member, ListAttribute) and not isinstance(v, (list, tuple, set))): - v = v.values()[0] + v = list(v.values())[0] setattr(self, member.name, v) except KeyError: pass @@ -487,7 +485,7 @@ class Entity(LoggerMixin): """ if values: raise ModelTypeError("%s resource has no attribute %s" % - (self.typename, values.keys()[0])) + (self.typename, list(values.keys())[0])) @classmethod def get_typename(cls): @@ -569,7 +567,7 @@ class Resource(Entity): __model_version__ = None def __init__(self, path=None, parent=None, *args, **kw): - if path is not None and not isinstance(path, basestring): + if path is not None and not isinstance(path, str): raise TypeError(path) self.__path = path self.parent = parent @@ -629,7 +627,7 @@ class Resource(Entity): # FIXME: move into de-serializer and handle dicts if (v is not None and isinstance(member, ListAttribute) and not isinstance(v, (list, tuple, set))): - v = v.values()[0] + v = list(v.values())[0] setattr(self, member.name, v) except KeyError: try: @@ -637,7 +635,7 @@ class Resource(Entity): # TODO: proper solution? if (v is not None and isinstance(member, ListAttribute) and not isinstance(v, (list, tuple, set))): - v = v.values()[0] + v = list(v.values())[0] setattr(self, member.name, v) except KeyError: pass diff --git a/doc/example-apps/IoT-data-visualization.py b/doc/example-apps/IoT-data-visualization.py index caa0acb..b6d95e2 100644 --- a/doc/example-apps/IoT-data-visualization.py +++ b/doc/example-apps/IoT-data-visualization.py @@ -1,5 +1,7 @@ -import urllib +import urllib.request +import urllib.parse +import urllib.error from openmtc_app.onem2m import XAE import uuid @@ -15,9 +17,9 @@ class DataVisualization(XAE): self.sensor_register = [] self.sensor_values = [] self.name = uuid.uuid1() - self.things_name = urllib.urlopen("https://dweet.io/follow/%s" % self.name) - print "Thing name :", self.name - print "link for the current data type and values :", self.things_name.geturl() + self.things_name = urllib.request.urlopen("https://dweet.io/follow/%s" % self.name) + print("Thing name :", self.name) + print("link for the current data type and values :", self.things_name.geturl()) # start endless loop self.periodic_discover(self.remote_cse, {'labels': ["openmtc:sensor_data"]}, @@ -28,13 +30,13 @@ class DataVisualization(XAE): self.add_container_subscription(uri, self.handle_sensor_data) def handle_sensor_data(self, container, content): - data ={} + data = {} self.sensor_register.append(content[0]['n']) self.sensor_values.append(content[0]['v']) - for i, k in zip(self.sensor_register , self.sensor_values): + for i, k in zip(self.sensor_register, self.sensor_values): data.update({i: k}) - params = urllib.urlencode(data) - urllib.urlopen("https://dweet.io/dweet/for/%s?%s" % (self.name, params)) + params = urllib.parse.urlencode(data) + urllib.request.urlopen("https://dweet.io/dweet/for/%s?%s" % (self.name, params)) if __name__ == "__main__": diff --git a/doc/training/onem2m-examples/onem2m-example-1.py b/doc/training/onem2m-examples/onem2m-example-1.py index a94ff09..1bf844b 100644 --- a/doc/training/onem2m-examples/onem2m-example-1.py +++ b/doc/training/onem2m-examples/onem2m-example-1.py @@ -4,13 +4,13 @@ from openmtc_onem2m.model import AE my_app = AE() -print my_app.path +print(my_app.path) #>>> None -print my_app.App_ID +print(my_app.App_ID) #>>> None -print my_app.parent_path +print(my_app.parent_path) #>>> None -print my_app.labels +print(my_app.labels) #>>> None -print my_app.attributes +print(my_app.attributes) #>>> [UnicodeAttribute(name="AE-ID", type=unicode), UnicodeAttribute(name="App-ID", type=unicode), ListAttribute(name="accessControlPolicyIDs", type=list), ListAttribute(name="announceTo", type=list), UnicodeAttribute(name="announcedAttribute", type=unicode), ListAttribute(name="childResources", type=list), DatetimeAttribute(name="creationTime", type=datetime), DatetimeAttribute(name="expirationTime", type=datetime), UnicodeAttribute(name="labels", type=unicode), DatetimeAttribute(name="lastModifiedTime", type=datetime), UnicodeAttribute(name="name", type=unicode), UnicodeAttribute(name="nodeLink", type=unicode), UnicodeAttribute(name="ontologyRef", type=unicode), ListAttribute(name="pointOfAccess", type=list)] diff --git a/doc/training/onem2m-examples/onem2m-example-10.py b/doc/training/onem2m-examples/onem2m-example-10.py index 3edc1e8..144101a 100644 --- a/doc/training/onem2m-examples/onem2m-example-10.py +++ b/doc/training/onem2m-examples/onem2m-example-10.py @@ -26,13 +26,13 @@ promise = client.send_onem2m_request(onem2m_request) # reteive the OneM2MResponse from the returned promise onem2m_response = promise.get() -print onem2m_response.to +print(onem2m_response.to) #>>> onem2m -print onem2m_response.response_status_code +print(onem2m_response.response_status_code) #>>> STATUS(numeric_code=2001, description='CREATED', http_status_code=201) -print onem2m_response.content +print(onem2m_response.content) #>>> AE(path='None', id='ae0') -print onem2m_response.content.App_ID +print(onem2m_response.content.App_ID) #>>> myApp -print onem2m_response.content.labels +print(onem2m_response.content.labels) #>>> [u'keyword1', u'keyword2'] diff --git a/doc/training/onem2m-examples/onem2m-example-11a.py b/doc/training/onem2m-examples/onem2m-example-11a.py index 2ab6c25..b56840b 100644 --- a/doc/training/onem2m-examples/onem2m-example-11a.py +++ b/doc/training/onem2m-examples/onem2m-example-11a.py @@ -17,12 +17,12 @@ promise = client.send_onem2m_request(onem2m_request) onem2m_response = promise.get() -print onem2m_response.response_status_code +print(onem2m_response.response_status_code) #>>> STATUS(numeric_code=2001, description='CREATED', http_status_code=201) # Build path to retieve from path = "onem2m/" + onem2m_response.content.resourceName -print path +print(path) #>>> onem2m/MYAPP # Retrieve the AE from the CSE @@ -30,18 +30,18 @@ onem2m_request = OneM2MRequest("retrieve", to=path) promise = client.send_onem2m_request(onem2m_request) onem2m_response = promise.get() -print onem2m_response.response_status_code +print(onem2m_response.response_status_code) #>>> STATUS(numeric_code=2000, description='OK', http_status_code=200) -print onem2m_response.content +print(onem2m_response.content) #>>> AE(path='None', id='ae0') # Set the local AE to the retrieved content my_app = None my_app = onem2m_response.content -print my_app.App_ID +print(my_app.App_ID) #>>> myApp -print my_app.resourceName +print(my_app.resourceName) #>>> MYAPP -print my_app.labels +print(my_app.labels) #>>> [u'keyword1', u'keyword2'] diff --git a/doc/training/onem2m-examples/onem2m-example-11b.py b/doc/training/onem2m-examples/onem2m-example-11b.py index 2fabb8a..e428116 100644 --- a/doc/training/onem2m-examples/onem2m-example-11b.py +++ b/doc/training/onem2m-examples/onem2m-example-11b.py @@ -15,7 +15,7 @@ my_app = AE(App_ID="myApp", onem2m_request = OneM2MRequest("create", to="onem2m", ty=AE, pc=my_app) promise = client.send_onem2m_request(onem2m_request) onem2m_response = promise.get() -print onem2m_response.content.labels +print(onem2m_response.content.labels) #>>> [u'keyword1', u'keyword2'] # Retrieve the AE from the CSE and check the labels @@ -23,7 +23,7 @@ path = "onem2m/" + onem2m_response.content.resourceName onem2m_request = OneM2MRequest("retrieve", to=path) promise = client.send_onem2m_request(onem2m_request) onem2m_response = promise.get() -print onem2m_response.content.labels +print(onem2m_response.content.labels) #>>> [u'keyword1', u'keyword2'] # Update the changes labels in the remote resource @@ -33,11 +33,11 @@ tmp_app = AE(labels=["foo", "bar", "coffee"]) onem2m_request = OneM2MRequest("update", to=path, pc=tmp_app) promise = client.send_onem2m_request(onem2m_request) onem2m_response = promise.get() -print onem2m_response.content.labels +print(onem2m_response.content.labels) #>>> [u'foo', u'bar', u'coffee'] # Set the local AE to the retrieved content my_app = None my_app = onem2m_response.content -print my_app.labels +print(my_app.labels) #>>> [u'foo', u'bar', u'coffee'] diff --git a/doc/training/onem2m-examples/onem2m-example-12a.py b/doc/training/onem2m-examples/onem2m-example-12a.py index 6cf6cc3..5914468 100644 --- a/doc/training/onem2m-examples/onem2m-example-12a.py +++ b/doc/training/onem2m-examples/onem2m-example-12a.py @@ -11,18 +11,18 @@ try: promise = client.send_onem2m_request(onem2m_request) onem2m_response = promise.get() except OneM2MErrorResponse as e: - print "CSE reported an error:", e + print("CSE reported an error:", e) raise except OpenMTCError as e: - print "Failed to reach the CSE:", e + print("Failed to reach the CSE:", e) raise else: pass # no exception was raised, the method returned normally. -print onem2m_response.to +print(onem2m_response.to) #>>> onem2m -print onem2m_response.response_status_code +print(onem2m_response.response_status_code) #>>> STATUS(numeric_code=2000, description='OK', http_status_code=200) -print onem2m_response.content +print(onem2m_response.content) #>>> CSEBase(path='None', id='cb0') diff --git a/doc/training/onem2m-examples/onem2m-example-12b.py b/doc/training/onem2m-examples/onem2m-example-12b.py index 7d4f625..12e5c45 100644 --- a/doc/training/onem2m-examples/onem2m-example-12b.py +++ b/doc/training/onem2m-examples/onem2m-example-12b.py @@ -7,31 +7,31 @@ client = OneM2MHTTPClient("http://localhost:8000", False) onem2m_request = OneM2MRequest("retrieve", to="onem2m") onem2m_response = client.send_onem2m_request(onem2m_request).get() -print "---> Request to: http://localhost:8000" + "/" + onem2m_request.to -print onem2m_response.to +print("---> Request to: http://localhost:8000" + "/" + onem2m_request.to) +print(onem2m_response.to) #>>> onem2m -print onem2m_response.response_status_code +print(onem2m_response.response_status_code) #>>> STATUS(numeric_code=2000, description='OK', http_status_code=200) -print onem2m_response.content +print(onem2m_response.content) #>>> CSEBase(path='None', id='cb0') onem2m_request = OneM2MRequest("retrieve", to="~/mn-cse-1/onem2m") onem2m_response = client.send_onem2m_request(onem2m_request).get() -print "---> Request to: http://localhost:8000" + "/" + onem2m_request.to -print onem2m_response.to +print("---> Request to: http://localhost:8000" + "/" + onem2m_request.to) +print(onem2m_response.to) #>>> ~/mn-cse-1/onem2m -print onem2m_response.response_status_code +print(onem2m_response.response_status_code) #>>> STATUS(numeric_code=2000, description='OK', http_status_code=200) -print onem2m_response.content +print(onem2m_response.content) #>>> CSEBase(path='None', id='cb0') client.port = 18000 onem2m_request = OneM2MRequest("retrieve", to="~/mn-cse-1/onem2m") onem2m_response = client.send_onem2m_request(onem2m_request).get() -print "---> Request to: http://localhost:18000" + "/" + onem2m_request.to -print onem2m_response.to +print("---> Request to: http://localhost:18000" + "/" + onem2m_request.to) +print(onem2m_response.to) #>>> ~/mn-cse-1/onem2m -print onem2m_response.response_status_code +print(onem2m_response.response_status_code) #>>> STATUS(numeric_code=2000, description='OK', http_status_code=200) -print onem2m_response.content +print(onem2m_response.content) #>>> CSEBase(path='None', id='cb0') diff --git a/doc/training/onem2m-examples/onem2m-example-2.py b/doc/training/onem2m-examples/onem2m-example-2.py index 11b633a..5979fc3 100644 --- a/doc/training/onem2m-examples/onem2m-example-2.py +++ b/doc/training/onem2m-examples/onem2m-example-2.py @@ -4,13 +4,13 @@ from openmtc_onem2m.model import AE my_app = AE(App_ID="myApp", labels=["keyword1", "keyword2"]) -print my_app.path +print(my_app.path) #>>> None -print my_app.App_ID +print(my_app.App_ID) #>>> myApp -print my_app.parent_path +print(my_app.parent_path) #>>> None -print my_app.labels +print(my_app.labels) #>>> [u'keyword1', u'keyword2'] -print my_app.attributes +print(my_app.attributes) #>>> [UnicodeAttribute(name="AE-ID", type=unicode), UnicodeAttribute(name="App-ID", type=unicode), ListAttribute(name="accessControlPolicyIDs", type=list), ListAttribute(name="announceTo", type=list), UnicodeAttribute(name="announcedAttribute", type=unicode), ListAttribute(name="childResources", type=list), DatetimeAttribute(name="creationTime", type=datetime), DatetimeAttribute(name="expirationTime", type=datetime), UnicodeAttribute(name="labels", type=unicode), DatetimeAttribute(name="lastModifiedTime", type=datetime), UnicodeAttribute(name="name", type=unicode), UnicodeAttribute(name="nodeLink", type=unicode), UnicodeAttribute(name="ontologyRef", type=unicode), ListAttribute(name="pointOfAccess", type=list)] diff --git a/doc/training/onem2m-examples/onem2m-example-3.py b/doc/training/onem2m-examples/onem2m-example-3.py index f4ac0e8..0269be0 100644 --- a/doc/training/onem2m-examples/onem2m-example-3.py +++ b/doc/training/onem2m-examples/onem2m-example-3.py @@ -4,5 +4,5 @@ from openmtc_onem2m.transport import OneM2MRequest request = OneM2MRequest("retrieve", to="onem2m") -print request.to +print(request.to) #>>> onem2m diff --git a/doc/training/onem2m-examples/onem2m-example-4.py b/doc/training/onem2m-examples/onem2m-example-4.py index 526f928..1386f97 100644 --- a/doc/training/onem2m-examples/onem2m-example-4.py +++ b/doc/training/onem2m-examples/onem2m-example-4.py @@ -4,5 +4,5 @@ from openmtc_onem2m.transport import OneM2MRequest request = OneM2MRequest("delete", to="onem2m") -print request.to +print(request.to) #>>> onem2m diff --git a/doc/training/onem2m-examples/onem2m-example-5a.py b/doc/training/onem2m-examples/onem2m-example-5a.py index f16338b..ca9f90e 100644 --- a/doc/training/onem2m-examples/onem2m-example-5a.py +++ b/doc/training/onem2m-examples/onem2m-example-5a.py @@ -7,7 +7,7 @@ my_app = AE(App_ID="myApp") request = OneM2MRequest("create", to="onem2m", pc="my_app") -print request.to +print(request.to) #>>> onem2m -print request.pc +print(request.pc) #>>> myApp diff --git a/doc/training/onem2m-examples/onem2m-example-5b.py b/doc/training/onem2m-examples/onem2m-example-5b.py index 2878d73..c6fe3e7 100644 --- a/doc/training/onem2m-examples/onem2m-example-5b.py +++ b/doc/training/onem2m-examples/onem2m-example-5b.py @@ -13,7 +13,7 @@ request = OneM2MRequest("create", pc=data_string, ty="application/json") -print request.to +print(request.to) #>>> onem2m -print request.pc +print(request.pc) #>>> {"type": "temperature", "value": 15} diff --git a/doc/training/onem2m-examples/onem2m-example-6a.py b/doc/training/onem2m-examples/onem2m-example-6a.py index 82e47af..db26331 100644 --- a/doc/training/onem2m-examples/onem2m-example-6a.py +++ b/doc/training/onem2m-examples/onem2m-example-6a.py @@ -7,7 +7,7 @@ my_app = AE(App_ID="myApp") request = OneM2MRequest("notify", to="onem2m", pc=my_app) -print request.to +print(request.to) #>>> onem2m -print request.pc.App_ID +print(request.pc.App_ID) #>>> myApp diff --git a/doc/training/onem2m-examples/onem2m-example-6b.py b/doc/training/onem2m-examples/onem2m-example-6b.py index f50a47c..50209f7 100644 --- a/doc/training/onem2m-examples/onem2m-example-6b.py +++ b/doc/training/onem2m-examples/onem2m-example-6b.py @@ -13,7 +13,7 @@ request = OneM2MRequest("create", pc=data_string, ty="application/json") -print request.to +print(request.to) #>>> onem2m -print request.pc +print(request.pc) #>>> {"type": "temperature", "value": 15} diff --git a/doc/training/onem2m-examples/onem2m-example-7.py b/doc/training/onem2m-examples/onem2m-example-7.py index 72b0b86..c26c45d 100644 --- a/doc/training/onem2m-examples/onem2m-example-7.py +++ b/doc/training/onem2m-examples/onem2m-example-7.py @@ -7,7 +7,7 @@ my_app = AE(App_ID="myApp", labels=["keyword1", "keyword2"]) request = OneM2MRequest("update", to="onem2m", pc=my_app.labels) -print request.to +print(request.to) #>>> onem2m -print request.pc +print(request.pc) #>>> [u'keyword1', u'keyword2'] diff --git a/doc/training/onem2m-examples/onem2m-example-8b.py b/doc/training/onem2m-examples/onem2m-example-8b.py index 3c37731..3777b72 100644 --- a/doc/training/onem2m-examples/onem2m-example-8b.py +++ b/doc/training/onem2m-examples/onem2m-example-8b.py @@ -13,9 +13,9 @@ promise = client.send_onem2m_request(onem2m_request) # reteive the OneM2MResponse from the returned promise onem2m_response = promise.get() -print onem2m_response.to +print(onem2m_response.to) #>>> onem2m -print onem2m_response.response_status_code +print(onem2m_response.response_status_code) #>>> STATUS(numeric_code=2000, description='OK', http_status_code=200) -print onem2m_response.content +print(onem2m_response.content) #>>> CSEBase(path='None', id='cb0') diff --git a/doc/training/start-app.sh b/doc/training/start-app.sh index b06c332..9e6b6da 100755 --- a/doc/training/start-app.sh +++ b/doc/training/start-app.sh @@ -34,4 +34,4 @@ cd ${base_path} cd .. . ../common/prep-env.sh cd ${base_path} -python ${app_file} +python3 ${app_file} diff --git a/ipes/CUL868IPE/src/cul868ipe/__main__.py b/ipes/CUL868IPE/src/cul868ipe/__main__.py index 9db206e..f729366 100644 --- a/ipes/CUL868IPE/src/cul868ipe/__main__.py +++ b/ipes/CUL868IPE/src/cul868ipe/__main__.py @@ -31,16 +31,16 @@ parser.add_argument("devices", nargs="*") args, config = prepare_app(parser, __loader__, __name__, "config.json") # variables -nm = get_value("name", (unicode, str), default_name, args, config) +nm = get_value("name", str, default_name, args, config) cb = config.get("cse_base", "onem2m") -ep = get_value("ep", (unicode, str), default_ep, args, config) +ep = get_value("ep", str, default_ep, args, config) poas = config.get("poas", ["http://auto:28728"]) originator_pre = config.get("originator_pre", "//openmtc.org/mn-cse-1") ssl_certs = config.get("ssl_certs", {}) s = config.get("sim", False) p = int(config.get("sim_period")) -cul_device = get_value('cul_device', (unicode, str), default_device, args, config) +cul_device = get_value('cul_device', str, default_device, args, config) device_mappings = get_value('device_mappings', dict, {}, args, config) devices = get_value('devices', list, [], args, config) diff --git a/ipes/CUL868IPE/src/cul868ipe/cul_868_coordinator.py b/ipes/CUL868IPE/src/cul868ipe/cul_868_coordinator.py index ed7b0ed..cc4fb47 100644 --- a/ipes/CUL868IPE/src/cul868ipe/cul_868_coordinator.py +++ b/ipes/CUL868IPE/src/cul868ipe/cul_868_coordinator.py @@ -59,7 +59,7 @@ class CUL868Coordinator(LoggerMixin): run_forever(period, self._generate_simulated_data) def _generate_simulated_data(self): - p = choice(self.sim_parsers.keys()) + p = choice(list(self.sim_parsers.keys())) fake_parser = self.sim_parsers[p] dev_id, data = fake_parser(p) handler = self.handlers[p] diff --git a/ipes/CUL868IPE/src/cul868ipe/cul_868_ipe.py b/ipes/CUL868IPE/src/cul868ipe/cul_868_ipe.py index e281238..31d9f7f 100644 --- a/ipes/CUL868IPE/src/cul868ipe/cul_868_ipe.py +++ b/ipes/CUL868IPE/src/cul868ipe/cul_868_ipe.py @@ -1,7 +1,7 @@ import time from collections import namedtuple -from cul_868_coordinator import CUL868Coordinator +from .cul_868_coordinator import CUL868Coordinator from openmtc_app.onem2m import XAE from openmtc_onem2m.model import Container @@ -44,7 +44,7 @@ class CUL868IPE(XAE): self.cul = CUL868Coordinator(device=device, sim=sim) - for d in map(lambda s: CULDevice(*s.split(":")[:2]), cul_devices): + for d in [CULDevice(*s.split(":")[:2]) for s in cul_devices]: if d.type == "fs20": house_code, device_code = d.device_id.split("-") self.fs20.append((house_code, device_code)) @@ -85,11 +85,11 @@ class CUL868IPE(XAE): if func: sub_labels.append('openmtc:actuator_data') - sub_labels += map(lambda x: "openmtc:actuator_data:%s" % x, l) if l else [] + sub_labels += ["openmtc:actuator_data:%s" % x for x in l] if l else [] sub_cnt = Container(resourceName=c_id, maxNrOfInstances=0, labels=sub_labels) else: sub_labels.append('openmtc:sensor_data') - sub_labels += map(lambda x: "openmtc:sensor_data:%s" % x, l) if l else [] + sub_labels += ["openmtc:sensor_data:%s" % x for x in l] if l else [] sub_cnt = Container(resourceName=c_id, labels=sub_labels) self.containers[s_id] = s_cnt = self.create_container(dev_cnt, sub_cnt) @@ -123,7 +123,7 @@ class CUL868IPE(XAE): def _get_handle_switch(self, house_code, device_code): def handle_switch(container, content): - if isinstance(content, (str, unicode)): # fallback to old behavior + if isinstance(content, str): # fallback to old behavior if content == 'TOGGLE': self.cul.toggle(house_code, device_code) elif content == 'ON': diff --git a/ipes/CUL868IPE/src/cul868ipe/test_parsers.py b/ipes/CUL868IPE/src/cul868ipe/test_parsers.py index 4f6f71e..0eb1c15 100644 --- a/ipes/CUL868IPE/src/cul868ipe/test_parsers.py +++ b/ipes/CUL868IPE/src/cul868ipe/test_parsers.py @@ -1,4 +1,4 @@ -from parsers import S300THParser, EM1000EMParser, FS20Parser +from .parsers import S300THParser, EM1000EMParser, FS20Parser def test_parsers(): diff --git a/ipes/CUL868IPE/utils.py b/ipes/CUL868IPE/utils.py index d8a733f..532a2cc 100644 --- a/ipes/CUL868IPE/utils.py +++ b/ipes/CUL868IPE/utils.py @@ -35,8 +35,8 @@ def get_packages(package, package_dir, excluded_list=None, included_list=None): r_prefix = len(root) + 1 for path, dirs, files in os.walk(root, onerror=on_error): is_module = "__init__.py" in files and path != root - excluded = any(map(lambda x: x in path, excluded_list)) - included = any(map(lambda x: x in path, included_list)) + excluded = any([x in path for x in excluded_list]) + included = any([x in path for x in included_list]) if is_module and (not excluded or included): packages.append(package + "." + path[r_prefix:].replace("/", ".")) @@ -56,7 +56,7 @@ def get_pkg_files(base_dir, name): def enable_init_files(init_dir, init_dist_files): for f in init_dist_files: - os.chmod(os.path.join(init_dir, os.path.basename(f)), 0755) + os.chmod(os.path.join(init_dir, os.path.basename(f)), 0o755) def move_config_files(config_dir, config_files): @@ -74,7 +74,7 @@ def create_openmtc_user(db_dir=None, log_dir=None): try: from pwd import getpwnam except ImportError: - print "Could not import the 'pwd' module. Skipping user management" + print("Could not import the 'pwd' module. Skipping user management") else: # assuming DB_DIR was created by setup already try: diff --git a/openmtc-app/src/openmtc_app/notification/__init__.py b/openmtc-app/src/openmtc_app/notification/__init__.py index f69c9fa..8b958d4 100644 --- a/openmtc-app/src/openmtc_app/notification/__init__.py +++ b/openmtc-app/src/openmtc_app/notification/__init__.py @@ -9,7 +9,7 @@ from openmtc_onem2m.model import ( Subscription, ) from openmtc_onem2m.serializer import get_onem2m_decoder -from urlparse import urlparse +from urllib.parse import urlparse from openmtc_onem2m.util import split_onem2m_address @@ -67,7 +67,7 @@ class NotificationManager(LoggerMixin): def _get_auto_host(ep): try: import socket - from urlparse import urlparse + from urllib.parse import urlparse s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) netloc = urlparse(ep).netloc.split(':') s.connect((netloc[0], int(netloc[1]))) @@ -156,7 +156,7 @@ class NotificationManager(LoggerMixin): del self.callbacks[sur] def shutdown(self): - for subscription in self.callbacks.keys(): + for subscription in list(self.callbacks.keys()): try: self.unsubscribe(subscription) except OneM2MError: diff --git a/openmtc-app/src/openmtc_app/onem2m.py b/openmtc-app/src/openmtc_app/onem2m.py index 6b791d5..d6ab584 100644 --- a/openmtc-app/src/openmtc_app/onem2m.py +++ b/openmtc-app/src/openmtc_app/onem2m.py @@ -94,7 +94,7 @@ class XAE(LoggerMixin): self.key_file = key_file if expiration_time is not None: - if isinstance(expiration_time, (str, unicode)): + if isinstance(expiration_time, str): expiration_time = parse_date(expiration_time) elif isinstance(expiration_time, (int, float)): expiration_time = datetime.fromtimestamp(expiration_time, UTC) @@ -483,7 +483,7 @@ class XAE(LoggerMixin): """ path = getattr(container, "path", container) - if isinstance(content, (str, unicode)): + if isinstance(content, str): fmt = 'text/plain' if fmt is None else fmt text = True if text is None else text elif isinstance(content, (dict, list)): @@ -529,7 +529,7 @@ class XAE(LoggerMixin): content = cin.content try: if int(encoding_type) == EncodingTypeE.base64String: - content = b64decode(content) + content = b64decode(content).decode('utf-8') if media_type == 'application/json': content = json_loads(content) @@ -567,10 +567,8 @@ class XAE(LoggerMixin): def _remove_route(self, route): self.logger.debug("removing route: %s", route) - self.runner.flask_app.url_map._rules = filter( - lambda x: x.rule != route, - self.runner.flask_app.url_map._rules - ) + self.runner.flask_app.url_map._rules = [x for x in self.runner.flask_app.url_map._rules + if x.rule != route] def _add_subscription(self, path, _, handler, delete_handler, filter_criteria=None, expiration_time=None): @@ -865,9 +863,9 @@ class ResourceManagementXAE(XAE): sub_ref = self._cse_id + '/' + sub_ref self._discovered_sensors = {k: v for k, v in self._discovered_sensors.items() if v['sub_ref'] != sub_ref} - self._discovered_devices = {k: v for k, v in self._discovered_devices.items() - if any(filter(lambda x: x.startswith(k), - self._discovered_sensors.keys())) + self._discovered_devices = {k: v for k, v in list(self._discovered_devices.items()) + if any([x for x in list(self._discovered_sensors.keys()) + if x.startswith(k)]) or not sub_ref.startswith(k)} def _handle_sensor_data(self, container, data): diff --git a/openmtc-app/src/openmtc_app/util.py b/openmtc-app/src/openmtc_app/util.py index 4421e13..ffeae12 100644 --- a/openmtc-app/src/openmtc_app/util.py +++ b/openmtc-app/src/openmtc_app/util.py @@ -3,6 +3,7 @@ from json import load as json_load from operator import getitem import futile +from functools import reduce def prepare_app(parser, loader, name, default_config_file): @@ -11,7 +12,7 @@ def prepare_app(parser, loader, name, default_config_file): " specified multiple times.") args = parser.parse_args() - module_ = loader.fullname.split("." + name).pop(0) + module_ = loader.name.split("." + name).pop(0) futile.logging.set_default_level(futile.logging.DEBUG) logger = futile.logging.get_logger(name) diff --git a/openmtc-gevent/src/openmtc_gevent/main.py b/openmtc-gevent/src/openmtc_gevent/main.py index 619323d..835a7ce 100644 --- a/openmtc-gevent/src/openmtc_gevent/main.py +++ b/openmtc-gevent/src/openmtc_gevent/main.py @@ -60,7 +60,7 @@ gevent.ssl.PROTOCOL_SSLv3 = gevent.ssl.PROTOCOL_TLSv1 # gevent main ################################################################################ from openmtc.configuration import ConfigurationError -from openmtc_server.util.async import async_all +from openmtc_server.util.async_ import async_all _components = [] _plugins = [] @@ -168,7 +168,8 @@ def stop_component(component): def stop_components(): - map(stop_component, reversed(_components)) + for c in reversed(_components): + stop_component(c) logger.debug("Components stopped") @@ -179,8 +180,10 @@ def stop_plugin(plugin): def stop_plugins(): # stop transport plugins after the others - map(stop_plugin, filter(lambda p: not p.name.endswith('TransportPlugin'), _plugins)) - map(stop_plugin, filter(lambda p: p.name.endswith('TransportPlugin'), _plugins)) + for p in [p for p in _plugins if not p.name.endswith('TransportPlugin')]: + stop_plugin(p) + for p in [p for p in _plugins if p.name.endswith('TransportPlugin')]: + stop_plugin(p) def init_component(component, api): @@ -278,7 +281,7 @@ def main(default_config_file, is_gateway): from openmtc_server.platform.default.Event import (ResourceFinishEvent, NetworkEvent) - from GEventNetworkManager import GEventNetworkManager + from .GEventNetworkManager import GEventNetworkManager from openmtc_server.util.db import load_db_module diff --git a/server/openmtc-cse/src/openmtc_cse/methoddomain/__init__.py b/server/openmtc-cse/src/openmtc_cse/methoddomain/__init__.py index 6d73da1..2d189fa 100644 --- a/server/openmtc-cse/src/openmtc_cse/methoddomain/__init__.py +++ b/server/openmtc-cse/src/openmtc_cse/methoddomain/__init__.py @@ -1,4 +1,4 @@ -import controller +from . import controller import openmtc_onem2m.model as model from aplus import Promise from openmtc.util import datetime_now diff --git a/server/openmtc-cse/src/openmtc_cse/methoddomain/controller/__init__.py b/server/openmtc-cse/src/openmtc_cse/methoddomain/controller/__init__.py index fe66c0c..b5b6b07 100644 --- a/server/openmtc-cse/src/openmtc_cse/methoddomain/controller/__init__.py +++ b/server/openmtc-cse/src/openmtc_cse/methoddomain/controller/__init__.py @@ -1,11 +1,11 @@ +import base64 +import binascii import string from datetime import datetime from itertools import chain from operator import attrgetter from random import choice -from urlparse import urlparse -import binascii -import base64 +from urllib.parse import urlparse from xml.sax import SAXParseException from iso8601.iso8601 import parse_date, ParseError @@ -40,14 +40,13 @@ from openmtc_server.db import DBError from openmtc_server.db.exc import DBNotFound from openmtc_server.util import match_now_cron from openmtc_server.util import uri_safe -from openmtc_server.util.async import async_all - +from openmtc_server.util.async_ import async_all _resource_id_counter = {} class OneM2MDefaultController(LoggerMixin): - RANDOM_SOURCE = string.letters + string.digits + RANDOM_SOURCE = string.ascii_letters + string.digits result_content_type = None @@ -99,8 +98,7 @@ class OneM2MDefaultController(LoggerMixin): self._abs_cse_id = self._sp_id + self._rel_cse_id # //openmtc.org/mn-cse-1 # default policies - self._default_privileges = map(lambda x: AccessControlRuleC(**x), - self.onem2m_config.get("default_privileges", [])) + self._default_privileges = [AccessControlRuleC(**x) for x in self.onem2m_config.get("default_privileges", [])] # dynamic authorization dynamic_authorization = self.onem2m_config.get("dynamic_authorization", {}) @@ -269,7 +267,7 @@ class OneM2MDefaultController(LoggerMixin): self.logger.debug("Error getting policy: %s:", error) return None - return filter(None, map(get_policy, access_control_policy_ids)) + return [_f for _f in map(get_policy, access_control_policy_ids) if _f] # def _notify_das_server(self, notify_uri, payload): def _notify_das_server(self, resource): @@ -903,7 +901,7 @@ class OneM2MDefaultController(LoggerMixin): self._retrieve_children() def _send_retrieve_response(self): - fields = self.resource.values.keys() + fields = list(self.resource.values.keys()) if self.request.rcn != ResultContentE.attributes_and_child_resource_references: fields = [k for k in fields if k != 'childResource'] return OneM2MResponse(STATUS_OK, pc=self.result, request=self.request, fields=fields) @@ -1330,12 +1328,14 @@ class ContentInstanceController(OneM2MDefaultController): self.parent.oldest = None # handle_old_instances - if 0 < self.parent.maxNrOfInstances <= self.parent.currentNrOfInstances: - remove_oldest_child() + if self.parent.maxNrOfInstances is not None: + if 0 < self.parent.maxNrOfInstances <= self.parent.currentNrOfInstances: + remove_oldest_child() - while (0 < self.parent.maxByteSize < - self.parent.currentByteSize + self.resource.contentSize): - remove_oldest_child() + if self.parent.maxByteSize is not None: + while (0 < self.parent.maxByteSize < + self.parent.currentByteSize + self.resource.contentSize): + remove_oldest_child() # handle_new_instance self.parent.currentNrOfInstances += 1 diff --git a/server/openmtc-cse/src/openmtc_cse/methoddomain/filtercriteria/__init__.py b/server/openmtc-cse/src/openmtc_cse/methoddomain/filtercriteria/__init__.py index 98b2b35..d10f226 100644 --- a/server/openmtc-cse/src/openmtc_cse/methoddomain/filtercriteria/__init__.py +++ b/server/openmtc-cse/src/openmtc_cse/methoddomain/filtercriteria/__init__.py @@ -10,7 +10,7 @@ _logger = get_logger(__name__) def check_match(resource, filter_criteria): _logger.debug("checking if filter criteria '%s' are matched by " "resource '%s'", filter_criteria, resource) - for criteria, value in filter_criteria.get_values(True).iteritems(): + for criteria, value in filter_criteria.get_values(True).items(): if not value: continue _logger.debug("checking if resource matches: %s=%s", criteria, value) @@ -37,10 +37,10 @@ def parse_filter_criteria(filter_criteria): int_criteria = ('stateTagSmaller', 'stateTagBigger', 'resourceType', 'sizeAbove', 'sizeBelow', 'filterUsage', 'limit') parsed_criteria = {} - for k, v in filter_criteria.iteritems(): + for k, v in filter_criteria.items(): if k in int_criteria: if isinstance(v, list): - parsed_criteria[k] = map(int, v) + parsed_criteria[k] = list(map(int, v)) else: parsed_criteria[k] = int(v) else: diff --git a/server/openmtc-cse/src/openmtc_cse/plugins/announcement_handler/__init__.py b/server/openmtc-cse/src/openmtc_cse/plugins/announcement_handler/__init__.py index d8cbc2a..69227b5 100644 --- a/server/openmtc-cse/src/openmtc_cse/plugins/announcement_handler/__init__.py +++ b/server/openmtc-cse/src/openmtc_cse/plugins/announcement_handler/__init__.py @@ -8,11 +8,11 @@ from openmtc_onem2m.transport import OneM2MRequest, MetaInformation, \ OneM2MOperation from openmtc_server.Plugin import Plugin from copy import deepcopy -from openmtc_server.util.async import async_all +from openmtc_server.util.async_ import async_all from re import sub -from urlparse import urlparse +from urllib.parse import urlparse # url join with coap compatibility -from urlparse import urljoin, uses_relative, uses_netloc +from urllib.parse import urljoin, uses_relative, uses_netloc uses_relative.append('coap') uses_netloc.append('coap') @@ -77,7 +77,7 @@ class AnnouncementHandler(Plugin): return retrieve_remote_cse_list() \ .then( - lambda remote_cse_list: async_all(map(get_cse, remote_cse_list))) \ + lambda remote_cse_list: async_all(list(map(get_cse, remote_cse_list)))) \ .then(handle_remote_cse_list) \ .then(self._started) # return self._started() @@ -277,8 +277,8 @@ class AnnouncementHandler(Plugin): # from the cseList and no further actions for those CSEs are performed. def check_cse_list(): self.logger.debug("check_cse_list: %s vs %s" % ( - db_cse_list, self._cse_links.values())) - return filter(lambda x: x in db_cse_list, self._cse_links.values()) + db_cse_list, list(self._cse_links.values()))) + return [x for x in list(self._cse_links.values()) if x in db_cse_list] # b) Send createXXXAnnouncementResourceRequestIndication (where XXX is # replaced by the type of the resource to be announced) for each CSE in @@ -464,12 +464,12 @@ class AnnouncementHandler(Plugin): # filters out all False in the list def filter_func(l): - return filter(None, l) + return [_f for _f in l if _f] return async_all([ - (async_all(map(create_func, create_list)).then(filter_func) + (async_all(list(map(create_func, create_list))).then(filter_func) .then(lambda l: l + filtered_cses)), - async_all(map(delete_func, delete_list)).then(filter_func) + async_all(list(map(delete_func, delete_list))).then(filter_func) ]) return send_anncs(check_cse_list()) @@ -597,7 +597,7 @@ class AnnouncementHandler(Plugin): # TODO: conversion to set() is questionable update_list = [x for x in cse_list if x not in set(add_list)] - return async_all(map(send_update_annc_pre, update_list)) + return async_all(list(map(send_update_annc_pre, update_list))) self.logger.debug('No attributes changed, returning None') return None diff --git a/server/openmtc-cse/src/openmtc_cse/plugins/notification_handler/__init__.py b/server/openmtc-cse/src/openmtc_cse/plugins/notification_handler/__init__.py index b49c623..d7845bf 100644 --- a/server/openmtc-cse/src/openmtc_cse/plugins/notification_handler/__init__.py +++ b/server/openmtc-cse/src/openmtc_cse/plugins/notification_handler/__init__.py @@ -77,13 +77,13 @@ class NotificationHandler(Plugin): def _get_sub_list(self, pid, net): return [ - v['sub'] for v in self.subscriptions_info.itervalues() + v['sub'] for v in self.subscriptions_info.values() if v['pid'] == pid and net in v['enc'].notificationEventType ] def _delete_subs_from_parent(self, pid): self.subscriptions_info = { - k: v for k, v in self.subscriptions_info.iteritems() if v["pid"] != pid + k: v for k, v in self.subscriptions_info.items() if v["pid"] != pid } def _handle_subscription_created(self, subscription, _): @@ -143,24 +143,16 @@ class NotificationHandler(Plugin): def _handle_subscribable_resource_updated(self, resource, _): self.logger.debug("_handle_subscribable_resource_updated for %s", resource) - map( - lambda sub: self._handle_subscription(resource, sub), - self._get_sub_list( - resource.resourceID, - NotificationEventTypeE.updateOfResource, - ) - ) + for sub in self._get_sub_list( + resource.resourceID, NotificationEventTypeE.updateOfResource,): + self._handle_subscription(resource, sub) def _handle_subscribable_resource_created(self, resource, _): self.logger.debug("_handle_subscribable_resource_created for %s", resource) - map( - lambda sub: self._handle_subscription(resource, sub), - self._get_sub_list( - resource.parentID, - NotificationEventTypeE.createOfDirectChildResource, - ) - ) + for sub in self._get_sub_list( + resource.parentID, NotificationEventTypeE.createOfDirectChildResource,): + self._handle_subscription(resource, sub) def _handle_subscribable_resource_deleted(self, resource, _): self.logger.debug("_handle_subscribable_resource_deleted for %s", resource) diff --git a/server/openmtc-cse/src/openmtc_cse/plugins/registration_handler/__init__.py b/server/openmtc-cse/src/openmtc_cse/plugins/registration_handler/__init__.py index 3ab871a..36e7f15 100644 --- a/server/openmtc-cse/src/openmtc_cse/plugins/registration_handler/__init__.py +++ b/server/openmtc-cse/src/openmtc_cse/plugins/registration_handler/__init__.py @@ -111,7 +111,7 @@ class RegistrationHandler(Plugin): remote_cse_poa = remote_cse.get("poa", []) self.api.add_poa_list(remote_cse_id, remote_cse_poa) - return map(handle_remote_cse_method, remote_cses) + return list(map(handle_remote_cse_method, remote_cses)) def _handle_remote_cse_delete(self, remote_cse): """ Sends a delete request for the RemoteCSE resource. diff --git a/server/openmtc-cse/src/openmtc_cse/plugins/transport_gevent_http/wsgi.py b/server/openmtc-cse/src/openmtc_cse/plugins/transport_gevent_http/wsgi.py index d8711d3..622aca9 100644 --- a/server/openmtc-cse/src/openmtc_cse/plugins/transport_gevent_http/wsgi.py +++ b/server/openmtc-cse/src/openmtc_cse/plugins/transport_gevent_http/wsgi.py @@ -1,4 +1,4 @@ -import urlparse +import urllib.parse import ssl from _socket import gaierror from datetime import datetime @@ -104,8 +104,7 @@ class OpenMTCWSGIApplication(LoggerMixin): for interface in interfaces(): try: ifdata = ifaddresses(interface)[family] - ifaddrs = map(lambda x: x.split("%")[0], pluck("addr", - ifdata)) + ifaddrs = [x.split("%")[0] for x in pluck("addr", ifdata)] addresses.update(ifaddrs) except KeyError: pass @@ -268,7 +267,7 @@ class OpenMTCWSGIApplication(LoggerMixin): if http_request.query_string: from openmtc_cse.methoddomain.filtercriteria import filters - params = urlparse.parse_qs(http_request.query_string) + params = urllib.parse.parse_qs(http_request.query_string.decode("utf-8")) get_param = params.get f_c = {} @@ -288,7 +287,7 @@ class OpenMTCWSGIApplication(LoggerMixin): setattr(onem2m_request, param, values[0]) elif param_long_name == 'attributeList': onem2m_request.pc = AttributeList( - map(get_long_attribute_name, values[0].split(' '))) + list(map(get_long_attribute_name, values[0].split(' ')))) elif param_long_name and hasattr(filters, param_long_name): self.logger.debug("got values for '%s' ('%s'): %s", param_long_name, param, values) @@ -414,9 +413,7 @@ class OpenMTCWSGIApplication(LoggerMixin): setattr(onem2m_request, "_authenticated", False) if subject_alt_name is not None: setattr(onem2m_request, "_authenticated", True) - impersonation_error = not bool(len(filter( - lambda x: x[0] == 'URI' and x[1] == onem2m_request.fr, - subject_alt_name))) + impersonation_error = not bool(len([x for x in subject_alt_name if x[0] == 'URI' and x[1] == onem2m_request.fr])) if impersonation_error: onem2m_response = OneM2MResponse(STATUS_IMPERSONATION_ERROR, request=onem2m_request) diff --git a/server/openmtc-cse/src/openmtc_cse/plugins/transport_gevent_mqtt/__init__.py b/server/openmtc-cse/src/openmtc_cse/plugins/transport_gevent_mqtt/__init__.py index 98d13dc..f4b3c8a 100644 --- a/server/openmtc-cse/src/openmtc_cse/plugins/transport_gevent_mqtt/__init__.py +++ b/server/openmtc-cse/src/openmtc_cse/plugins/transport_gevent_mqtt/__init__.py @@ -17,11 +17,11 @@ class MQTTTransportPlugin(Plugin): self._initialized() def _start(self): - self.api.register_onem2m_client(portmap.keys(), get_client) + self.api.register_onem2m_client(list(portmap.keys()), get_client) interface = self.config.get('interface', '127.0.0.1') port = self.config.get('port', 1883) try: - scheme = portmap.keys()[portmap.values().index(port)] + scheme = list(portmap.keys())[list(portmap.values()).index(port)] except (KeyError, ValueError): scheme = 'mqtt' diff --git a/server/openmtc-cse/src/openmtc_cse/transport/__init__.py b/server/openmtc-cse/src/openmtc_cse/transport/__init__.py index e7ac7c2..ec2e3ab 100644 --- a/server/openmtc-cse/src/openmtc_cse/transport/__init__.py +++ b/server/openmtc-cse/src/openmtc_cse/transport/__init__.py @@ -1,4 +1,4 @@ -from urlparse import urlparse +from urllib.parse import urlparse from netifaces import AF_INET, AF_INET6 from aplus import Promise @@ -64,7 +64,7 @@ class OneM2MTransportDomain(Component): self.events.resource_deleted.register_handler(self._handle_cse_deleted, RemoteCSE) interfaces = self._api.network_manager.get_interfaces().get() - self._addresses = {i.name: filter(self._filter_out_link_local, i.addresses) + self._addresses = {i.name: list(filter(self._filter_out_link_local, i.addresses)) for i in interfaces} @staticmethod @@ -104,7 +104,7 @@ class OneM2MTransportDomain(Component): # interface handling def _handle_interface_created(self, interface): - self._addresses[interface.name] = filter(self._filter_out_link_local, interface.addresses) + self._addresses[interface.name] = list(filter(self._filter_out_link_local, interface.addresses)) self._create_endpoints() def _handle_interface_removed(self, interface): diff --git a/server/openmtc-server/src/openmtc_server/Event.py b/server/openmtc-server/src/openmtc_server/Event.py index 6a3ca16..812a91c 100644 --- a/server/openmtc-server/src/openmtc_server/Event.py +++ b/server/openmtc-server/src/openmtc_server/Event.py @@ -5,9 +5,7 @@ from futile.logging import LoggerMixin from openmtc.model import Resource -class Event(LoggerMixin): - __metaclass__ = ABCMeta - +class Event(LoggerMixin, metaclass=ABCMeta): @abstractmethod def fire(self, *event_data): raise NotImplementedError() @@ -17,9 +15,7 @@ class Event(LoggerMixin): raise NotImplementedError() -class EventSpec(object): - __metaclass__ = ABCMeta - +class EventSpec(object, metaclass=ABCMeta): @abstractmethod def matches(self, item): raise NotImplementedError() diff --git a/server/openmtc-server/src/openmtc_server/TaskRunner.py b/server/openmtc-server/src/openmtc_server/TaskRunner.py index 5b5116d..73b6736 100644 --- a/server/openmtc-server/src/openmtc_server/TaskRunner.py +++ b/server/openmtc-server/src/openmtc_server/TaskRunner.py @@ -2,9 +2,7 @@ from abc import ABCMeta, abstractmethod from futile.logging import LoggerMixin -class TaskRunner(LoggerMixin): - __metaclass__ = ABCMeta - +class TaskRunner(LoggerMixin, metaclass=ABCMeta): @abstractmethod def run_task(self, task, *args, **kw): raise NotImplementedError() diff --git a/server/openmtc-server/src/openmtc_server/__init__.py b/server/openmtc-server/src/openmtc_server/__init__.py index dbeb488..3db05f7 100644 --- a/server/openmtc-server/src/openmtc_server/__init__.py +++ b/server/openmtc-server/src/openmtc_server/__init__.py @@ -13,9 +13,7 @@ class Component(LoggerMixin): pass -class Serializer(LoggerMixin): - __metaclass__ = ABCMeta - +class Serializer(LoggerMixin, metaclass=ABCMeta): @abstractmethod def encode(self, resource): raise NotImplementedError() diff --git a/server/openmtc-server/src/openmtc_server/db/__init__.py b/server/openmtc-server/src/openmtc_server/db/__init__.py index 7601254..02aec72 100644 --- a/server/openmtc-server/src/openmtc_server/db/__init__.py +++ b/server/openmtc-server/src/openmtc_server/db/__init__.py @@ -5,9 +5,7 @@ from openmtc_server.db.exc import DBError from collections import MutableMapping -class DBAdapter(LoggerMixin): - __metaclass__ = ABCMeta - +class DBAdapter(LoggerMixin, metaclass=ABCMeta): def __init__(self, config, *args, **kw): super(DBAdapter, self).__init__(*args, **kw) @@ -36,9 +34,7 @@ class DBAdapter(LoggerMixin): pass -class Shelve(LoggerMixin, MutableMapping): - __metaclass__ = ABCMeta - +class Shelve(LoggerMixin, MutableMapping, metaclass=ABCMeta): @abstractmethod def commit(self): raise NotImplementedError() @@ -48,9 +44,7 @@ class Shelve(LoggerMixin, MutableMapping): raise NotImplementedError() -class Session(object): - __metaclass__ = ABCMeta - +class Session(object, metaclass=ABCMeta): @abstractmethod def store(self, resource): raise NotImplementedError() @@ -96,9 +90,7 @@ class Session(object): raise NotImplementedError() -class BasicSession(Session, LoggerMixin): - __metaclass__ = ABCMeta - +class BasicSession(Session, LoggerMixin, metaclass=ABCMeta): def __init__(self, resource_type, *args, **kw): super(BasicSession, self).__init__(*args, **kw) @@ -129,7 +121,8 @@ class BasicSession(Session, LoggerMixin): def delete_children(self, resource_type, parent): children = self.get_collection(resource_type, parent) - map(self.delete, children) + for c in children: + self.delete(c) def _get_content_instances(self, parent): return self.get_collection(self.cinType, parent) diff --git a/server/openmtc-server/src/openmtc_server/platform/default/TaskRunner.py b/server/openmtc-server/src/openmtc_server/platform/default/TaskRunner.py index 12dd9e8..26ea5e1 100644 --- a/server/openmtc-server/src/openmtc_server/platform/default/TaskRunner.py +++ b/server/openmtc-server/src/openmtc_server/platform/default/TaskRunner.py @@ -1,4 +1,4 @@ -from Queue import Queue, Empty +from queue import Queue, Empty from threading import Thread from openmtc_server.TaskRunner import TaskRunner diff --git a/server/openmtc-server/src/openmtc_server/util/__init__.py b/server/openmtc-server/src/openmtc_server/util/__init__.py index 91de583..d262824 100644 --- a/server/openmtc-server/src/openmtc_server/util/__init__.py +++ b/server/openmtc-server/src/openmtc_server/util/__init__.py @@ -1,4 +1,4 @@ -from urllib import quote +from urllib.parse import quote from datetime import datetime from mimeparse import parse_mime_type diff --git a/server/openmtc-server/src/openmtc_server/util/async.py b/server/openmtc-server/src/openmtc_server/util/async_.py similarity index 100% rename from server/openmtc-server/src/openmtc_server/util/async.py rename to server/openmtc-server/src/openmtc_server/util/async_.py diff --git a/setup-gevent-all.py b/setup-gevent-all.py index 56795e0..8cd3f2b 100755 --- a/setup-gevent-all.py +++ b/setup-gevent-all.py @@ -77,8 +77,7 @@ CONFIG_DIR = "/etc/openmtc/gevent" CONFIG_DIST_FILES = ("openmtc-gevent/etc/conf/config-backend.json.dist", "openmtc-gevent/etc/conf/config-gateway.json.dist") SSL_CERT_DIR = "/etc/openmtc/certs" -SSL_CERT_FILES = tuple(map(lambda x: os.path.join('openmtc-gevent/certs/', x), - os.listdir('openmtc-gevent/certs'))) +SSL_CERT_FILES = tuple([os.path.join('openmtc-gevent/certs/', x) for x in os.listdir('openmtc-gevent/certs')]) DATA_FILES = [ (DB_DIR, ""), (LOG_DIR, ""), diff --git a/util/json_benchmark.py b/util/json_benchmark.py index 3315c1f..0fa88b0 100644 --- a/util/json_benchmark.py +++ b/util/json_benchmark.py @@ -57,16 +57,16 @@ loops = 1000 enc_table = [] dec_table = [] -print "Running tests (%d loops each)" % loops +print("Running tests (%d loops each)" % loops) for title, mod, enc, dec in tests: - print title + print(title) - print " [Encode]", enc + print(" [Encode]", enc) result = timeit(enc, mod, number=loops) enc_table.append([title, result]) - print " [Decode]", dec + print(" [Decode]", dec) result = timeit(dec, mod, number=loops) dec_table.append([title, result]) @@ -76,8 +76,8 @@ enc_table.insert(0, ['Package', 'Seconds']) dec_table.sort(key=lambda x: x[1]) dec_table.insert(0, ['Package', 'Seconds']) -print "\nEncoding Test (%d loops)" % loops -print tabulate(enc_table, headers="firstrow") +print("\nEncoding Test (%d loops)" % loops) +print(tabulate(enc_table, headers="firstrow")) -print "\nDecoding Test (%d loops)" % loops -print tabulate(dec_table, headers="firstrow") +print("\nDecoding Test (%d loops)" % loops) +print(tabulate(dec_table, headers="firstrow")) diff --git a/utils.py b/utils.py index d8a733f..532a2cc 100644 --- a/utils.py +++ b/utils.py @@ -35,8 +35,8 @@ def get_packages(package, package_dir, excluded_list=None, included_list=None): r_prefix = len(root) + 1 for path, dirs, files in os.walk(root, onerror=on_error): is_module = "__init__.py" in files and path != root - excluded = any(map(lambda x: x in path, excluded_list)) - included = any(map(lambda x: x in path, included_list)) + excluded = any([x in path for x in excluded_list]) + included = any([x in path for x in included_list]) if is_module and (not excluded or included): packages.append(package + "." + path[r_prefix:].replace("/", ".")) @@ -56,7 +56,7 @@ def get_pkg_files(base_dir, name): def enable_init_files(init_dir, init_dist_files): for f in init_dist_files: - os.chmod(os.path.join(init_dir, os.path.basename(f)), 0755) + os.chmod(os.path.join(init_dir, os.path.basename(f)), 0o755) def move_config_files(config_dir, config_files): @@ -74,7 +74,7 @@ def create_openmtc_user(db_dir=None, log_dir=None): try: from pwd import getpwnam except ImportError: - print "Could not import the 'pwd' module. Skipping user management" + print("Could not import the 'pwd' module. Skipping user management") else: # assuming DB_DIR was created by setup already try: