From f15c96ed8d82c020e92b7ae8294286b6d86b3ffc Mon Sep 17 00:00:00 2001 From: Jeffrey Phillips Freeman <jeffrey.freeman@syncleus.com> Date: Tue, 20 Sep 2016 09:58:07 -0400 Subject: [PATCH] Got python2 and pypy tests working again. --- src/apex/__init__.py | 11 +++- src/apex/__main__.py | 11 ++++ src/apex/aprs/__init__.py | 11 ++++ src/apex/aprs/aprs_internet_service.py | 13 ++++- src/apex/aprs/aprs_kiss.py | 13 ++++- src/apex/aprs/constants.py | 14 +++-- src/apex/aprs/decimaldegrees.py | 14 +++-- src/apex/aprs/util.py | 29 +++++++--- src/apex/cli.py | 20 +++++-- src/apex/kiss/__init__.py | 14 +++-- src/apex/kiss/constants.py | 16 ++++-- src/apex/kiss/kiss.py | 14 +++-- src/apex/kiss/util.py | 14 +++-- src/apex/pluginloader.py | 15 ++++- src/apex/plugins/apexparadigm/__init__.py | 12 ++++ src/apex/plugins/beacon/__init__.py | 11 ++++ src/apex/plugins/id/__init__.py | 11 ++++ src/apex/plugins/status/__init__.py | 11 ++++ tox.ini | 68 +++++++++++------------ 19 files changed, 242 insertions(+), 80 deletions(-) diff --git a/src/apex/__init__.py b/src/apex/__init__.py index f38884b..e67437e 100644 --- a/src/apex/__init__.py +++ b/src/apex/__init__.py @@ -1,2 +1,11 @@ -__version__ = "0.1.0" +# These imports are for python3 compatability inside python2 +from __future__ import print_function, unicode_literals +from __future__ import absolute_import, division + +__author__ = 'Jeffrey Phillips Freeman (WI2ARD)' +__maintainer__ = "Jeffrey Phillips Freeman (WI2ARD)" +__email__ = "jeffrey.freeman@syncleus.com" +__license__ = 'Apache License, Version 2.0' +__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' +__credits__ = [] diff --git a/src/apex/__main__.py b/src/apex/__main__.py index 2396ef2..5078407 100644 --- a/src/apex/__main__.py +++ b/src/apex/__main__.py @@ -8,7 +8,18 @@ Why does this file exist, and why __main__? For more info, read: - https://docs.python.org/2/using/cmdline.html#cmdoption-m - https://docs.python.org/3/using/cmdline.html#cmdoption-m """ +# These imports are for python3 compatability inside python2 +from __future__ import print_function, unicode_literals +from __future__ import absolute_import, division + from apex.cli import main +__author__ = 'Jeffrey Phillips Freeman (WI2ARD)' +__maintainer__ = "Jeffrey Phillips Freeman (WI2ARD)" +__email__ = "jeffrey.freeman@syncleus.com" +__license__ = 'Apache License, Version 2.0' +__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' +__credits__ = [] + if __name__ == "__main__": main() diff --git a/src/apex/aprs/__init__.py b/src/apex/aprs/__init__.py index e7e72cd..859d84f 100644 --- a/src/apex/aprs/__init__.py +++ b/src/apex/aprs/__init__.py @@ -15,10 +15,21 @@ APRS Python Module. """ +# These imports are for python3 compatability inside python2 +from __future__ import print_function, unicode_literals +from __future__ import absolute_import, division + import logging from apex.aprs.aprs_kiss import AprsKiss from apex.aprs.aprs_internet_service import AprsInternetService +__author__ = 'Jeffrey Phillips Freeman (WI2ARD)' +__maintainer__ = "Jeffrey Phillips Freeman (WI2ARD)" +__email__ = "jeffrey.freeman@syncleus.com" +__license__ = 'Apache License, Version 2.0' +__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' +__credits__ = [] + # Set default logging handler to avoid "No handler found" warnings. try: # Python 2.7+ from logging import NullHandler diff --git a/src/apex/aprs/aprs_internet_service.py b/src/apex/aprs/aprs_internet_service.py index cc839d1..e9aac33 100644 --- a/src/apex/aprs/aprs_internet_service.py +++ b/src/apex/aprs/aprs_internet_service.py @@ -3,15 +3,22 @@ """APRS Internet Service Class Definitions""" -__author__ = 'Jeffrey Phillips Freeman WI2ARD <freemo@gmail.com>' -__license__ = 'Apache License, Version 2.0' -__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' +# These imports are for python3 compatability inside python2 +from __future__ import print_function, unicode_literals +from __future__ import absolute_import, division import logging import socket import requests import time +__author__ = 'Jeffrey Phillips Freeman (WI2ARD)' +__maintainer__ = "Jeffrey Phillips Freeman (WI2ARD)" +__email__ = "jeffrey.freeman@syncleus.com" +__license__ = 'Apache License, Version 2.0' +__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' +__credits__ = [] + from apex.aprs import constants as aprsConstants, util as aprsUtil diff --git a/src/apex/aprs/aprs_kiss.py b/src/apex/aprs/aprs_kiss.py index 03d863a..b270162 100644 --- a/src/apex/aprs/aprs_kiss.py +++ b/src/apex/aprs/aprs_kiss.py @@ -3,15 +3,22 @@ """APRS KISS Class Definitions""" -__author__ = 'Jeffrey Phillips Freeman WI2ARD <freemo@gmail.com>' -__license__ = 'Apache License, Version 2.0' -__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' +# These imports are for python3 compatability inside python2 +from __future__ import print_function, unicode_literals +from __future__ import absolute_import, division import logging import math import apex.kiss +__author__ = 'Jeffrey Phillips Freeman (WI2ARD)' +__maintainer__ = "Jeffrey Phillips Freeman (WI2ARD)" +__email__ = "jeffrey.freeman@syncleus.com" +__license__ = 'Apache License, Version 2.0' +__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' +__credits__ = [] + class AprsKiss(apex.kiss.Kiss): diff --git a/src/apex/aprs/constants.py b/src/apex/aprs/constants.py index 8628a46..4a0974b 100644 --- a/src/apex/aprs/constants.py +++ b/src/apex/aprs/constants.py @@ -5,13 +5,19 @@ Constants for APRS Module. """ -__author__ = 'Jeffrey Phillips Freeman WI2ARD <freemo@gmail.com>' -__license__ = 'Apache License, Version 2.0' -__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' - +# These imports are for python3 compatability inside python2 +from __future__ import print_function, unicode_literals +from __future__ import absolute_import, division import logging +__author__ = 'Jeffrey Phillips Freeman (WI2ARD)' +__maintainer__ = "Jeffrey Phillips Freeman (WI2ARD)" +__email__ = "jeffrey.freeman@syncleus.com" +__license__ = 'Apache License, Version 2.0' +__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' +__credits__ = [] + APRSIS_URL = 'http://srvr.aprs-is.net:8080' APRSIS_HTTP_HEADERS = { diff --git a/src/apex/aprs/decimaldegrees.py b/src/apex/aprs/decimaldegrees.py index de7b1de..6cbd344 100644 --- a/src/apex/aprs/decimaldegrees.py +++ b/src/apex/aprs/decimaldegrees.py @@ -48,14 +48,20 @@ $ python decimaldegrees.py [-v] """ - -__revision__ = '$Revision: 1.1 $' - +# These imports are for python3 compatability inside python2 +from __future__ import print_function, unicode_literals +from __future__ import absolute_import, division import decimal as libdecimal - from decimal import Decimal as D +__author__ = 'Jeffrey Phillips Freeman (WI2ARD)' +__maintainer__ = "Jeffrey Phillips Freeman (WI2ARD)" +__email__ = "jeffrey.freeman@syncleus.com" +__license__ = 'Apache License, Version 2.0' +__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' +__credits__ = [] + def decimal2dms(decimal_degrees): """ Converts a floating point number of degrees to the equivalent diff --git a/src/apex/aprs/util.py b/src/apex/aprs/util.py index eaef202..8d9e6ce 100755 --- a/src/apex/aprs/util.py +++ b/src/apex/aprs/util.py @@ -3,17 +3,24 @@ """Utilities for the APRS Python Module.""" -__author__ = 'Jeffrey Phillips Freeman WI2ARD <freemo@gmail.com>' -__license__ = 'Apache License, Version 2.0' -__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' - +# These imports are for python3 compatability inside python2 +from __future__ import print_function, unicode_literals +from __future__ import absolute_import, division import logging +import unicodedata +import sys import apex.aprs.constants import apex.aprs.decimaldegrees import apex.kiss.constants -import math + +__author__ = 'Jeffrey Phillips Freeman (WI2ARD)' +__maintainer__ = "Jeffrey Phillips Freeman (WI2ARD)" +__email__ = "jeffrey.freeman@syncleus.com" +__license__ = 'Apache License, Version 2.0' +__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' +__credits__ = [] def dec2dm_lat(dec): @@ -38,7 +45,11 @@ def dec2dm_lat(dec): else: suffix = 'N' - return ''.join([str(abs_deg), "%.2f" % dec_min[1], suffix]) + retval = ''.join([str(abs_deg), "%.2f" % dec_min[1], suffix]) + if sys.version_info < (3, 0): + retval = unicodedata.normalize('NFKD', retval).encode('ascii', 'ignore') + + return retval def dec2dm_lng(dec): @@ -61,7 +72,11 @@ def dec2dm_lng(dec): else: suffix = 'E' - return ''.join([str(abs_deg), "%.2f" % dec_min[1], suffix]) + retval = ''.join([str(abs_deg), "%.2f" % dec_min[1], suffix]) + if sys.version_info < (3, 0): + retval = unicodedata.normalize('NFKD', retval).encode('ascii', 'ignore') + + return retval def decode_aprs_ascii_frame(ascii_frame): diff --git a/src/apex/cli.py b/src/apex/cli.py index d623313..2b7e77b 100644 --- a/src/apex/cli.py +++ b/src/apex/cli.py @@ -14,20 +14,32 @@ Why does this file exist, and why not put this in __main__? Also see (1) from http://click.pocoo.org/5/setuptools/#setuptools-integration """ -__author__ = 'Jeffrey Phillips Freeman WI2ARD <freemo@gmail.com>' -__license__ = 'Apache License, Version 2.0' -__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' +# These imports are for python3 compatability inside python2 +from __future__ import print_function, unicode_literals +from __future__ import absolute_import, division +import sys import click import time import signal import sys import threading -import configparser import cachetools import traceback from apex.pluginloader import getPlugins, loadPlugin +if sys.version_info < (3, 0): + import ConfigParser +elif sys.version_info >= (3, 0): + import configparser + +__author__ = 'Jeffrey Phillips Freeman (WI2ARD)' +__maintainer__ = "Jeffrey Phillips Freeman (WI2ARD)" +__email__ = "jeffrey.freeman@syncleus.com" +__license__ = 'Apache License, Version 2.0' +__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' +__credits__ = [] + from apex.kiss import constants as kissConstants import apex.aprs diff --git a/src/apex/kiss/__init__.py b/src/apex/kiss/__init__.py index 7e9c396..9dd948e 100644 --- a/src/apex/kiss/__init__.py +++ b/src/apex/kiss/__init__.py @@ -15,14 +15,20 @@ KISS Python Module. """ -__author__ = 'Jeffrey Phillips Freeman WI2ARD <freemo@gmail.com>' -__license__ = 'Apache License, Version 2.0' -__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' - +# These imports are for python3 compatability inside python2 +from __future__ import print_function, unicode_literals +from __future__ import absolute_import, division import logging from .kiss import Kiss +__author__ = 'Jeffrey Phillips Freeman (WI2ARD)' +__maintainer__ = "Jeffrey Phillips Freeman (WI2ARD)" +__email__ = "jeffrey.freeman@syncleus.com" +__license__ = 'Apache License, Version 2.0' +__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' +__credits__ = [] + # Set default logging handler to avoid "No handler found" warnings. try: # Python 2.7+ diff --git a/src/apex/kiss/constants.py b/src/apex/kiss/constants.py index aa0b6aa..3b31659 100644 --- a/src/apex/kiss/constants.py +++ b/src/apex/kiss/constants.py @@ -3,13 +3,19 @@ """Constants for KISS Python Module.""" -__author__ = 'Jeffrey Phillips Freeman WI2ARD <freemo@gmail.com>' -__license__ = 'Apache License, Version 2.0' -__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' - +# These imports are for python3 compatability inside python2 +from __future__ import print_function, unicode_literals +from __future__ import absolute_import, division import logging +__author__ = 'Jeffrey Phillips Freeman (WI2ARD)' +__maintainer__ = "Jeffrey Phillips Freeman (WI2ARD)" +__email__ = "jeffrey.freeman@syncleus.com" +__license__ = 'Apache License, Version 2.0' +__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' +__credits__ = [] + LOG_LEVEL = logging.DEBUG LOG_FORMAT = ('%(asctime)s %(levelname)s %(name)s.%(funcName)s:%(lineno)d' @@ -56,4 +62,4 @@ MODE_END = [192, 255, 192, 13] MODE_INIT_W8DED = [13, 27, 64, 75, 13] MODE_INIT_LINKNORD = MODE_INIT_W8DED #This will work for any Kenwood D710 -MODE_INIT_KENWOOD_D710 = [72,66,32,49,50,48,48,13,75,73,83,83,32,79,78,13,82,69,83,84,65,82,84,13] \ No newline at end of file +MODE_INIT_KENWOOD_D710 = [72,66,32,49,50,48,48,13,75,73,83,83,32,79,78,13,82,69,83,84,65,82,84,13] diff --git a/src/apex/kiss/kiss.py b/src/apex/kiss/kiss.py index a461d22..035d00e 100644 --- a/src/apex/kiss/kiss.py +++ b/src/apex/kiss/kiss.py @@ -3,16 +3,22 @@ """KISS Core Classes.""" -__author__ = 'Jeffrey Phillips Freeman WI2ARD <freemo@gmail.com>' -__license__ = 'Apache License, Version 2.0' -__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' - +# These imports are for python3 compatability inside python2 +from __future__ import print_function, unicode_literals +from __future__ import absolute_import, division import logging import serial import socket from apex.kiss import constants as kissConstants +__author__ = 'Jeffrey Phillips Freeman (WI2ARD)' +__maintainer__ = "Jeffrey Phillips Freeman (WI2ARD)" +__email__ = "jeffrey.freeman@syncleus.com" +__license__ = 'Apache License, Version 2.0' +__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' +__credits__ = [] + class Kiss(object): diff --git a/src/apex/kiss/util.py b/src/apex/kiss/util.py index 0474dc2..7a274d3 100644 --- a/src/apex/kiss/util.py +++ b/src/apex/kiss/util.py @@ -3,13 +3,19 @@ """Utilities for the KISS Python Module.""" -__author__ = 'Jeffrey Phillips Freeman WI2ARD <freemo@gmail.com>' -__license__ = 'Apache License, Version 2.0' -__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' - +# These imports are for python3 compatability inside python2 +from __future__ import print_function, unicode_literals +from __future__ import absolute_import, division import apex.kiss.constants +__author__ = 'Jeffrey Phillips Freeman (WI2ARD)' +__maintainer__ = "Jeffrey Phillips Freeman (WI2ARD)" +__email__ = "jeffrey.freeman@syncleus.com" +__license__ = 'Apache License, Version 2.0' +__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' +__credits__ = [] + def extract_ui(frame): """ Extracts the UI component of an individual frame. diff --git a/src/apex/pluginloader.py b/src/apex/pluginloader.py index 5025862..6d8b048 100644 --- a/src/apex/pluginloader.py +++ b/src/apex/pluginloader.py @@ -1,8 +1,17 @@ +# These imports are for python3 compatability inside python2 +from __future__ import print_function, unicode_literals +from __future__ import absolute_import, division + import importlib -import importlib.util -import importlib.machinery import os +__author__ = 'Jeffrey Phillips Freeman (WI2ARD)' +__maintainer__ = "Jeffrey Phillips Freeman (WI2ARD)" +__email__ = "jeffrey.freeman@syncleus.com" +__license__ = 'Apache License, Version 2.0' +__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' +__credits__ = [] + PluginFolder = "./plugins" MainModule = "__init__" @@ -18,4 +27,4 @@ def getPlugins(): return plugins def loadPlugin(plugin): - return importlib.import_module("plugins." + plugin) \ No newline at end of file + return importlib.import_module("plugins." + plugin) diff --git a/src/apex/plugins/apexparadigm/__init__.py b/src/apex/plugins/apexparadigm/__init__.py index 11e5518..1aaf122 100644 --- a/src/apex/plugins/apexparadigm/__init__.py +++ b/src/apex/plugins/apexparadigm/__init__.py @@ -1,7 +1,19 @@ +# These imports are for python3 compatability inside python2 +from __future__ import print_function, unicode_literals +from __future__ import absolute_import, division + import apex.aprs.util + import copy import re +__author__ = 'Jeffrey Phillips Freeman (WI2ARD)' +__maintainer__ = "Jeffrey Phillips Freeman (WI2ARD)" +__email__ = "jeffrey.freeman@syncleus.com" +__license__ = 'Apache License, Version 2.0' +__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' +__credits__ = [] + plugin = None def start(config, port_map, packet_cache, aprsis): diff --git a/src/apex/plugins/beacon/__init__.py b/src/apex/plugins/beacon/__init__.py index 777d4c9..4f74e6c 100644 --- a/src/apex/plugins/beacon/__init__.py +++ b/src/apex/plugins/beacon/__init__.py @@ -1,6 +1,17 @@ +# These imports are for python3 compatability inside python2 +from __future__ import print_function, unicode_literals +from __future__ import absolute_import, division + import apex.aprs.util import time +__author__ = 'Jeffrey Phillips Freeman (WI2ARD)' +__maintainer__ = "Jeffrey Phillips Freeman (WI2ARD)" +__email__ = "jeffrey.freeman@syncleus.com" +__license__ = 'Apache License, Version 2.0' +__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' +__credits__ = [] + plugin = None def start(config, port_map, packet_cache, aprsis): diff --git a/src/apex/plugins/id/__init__.py b/src/apex/plugins/id/__init__.py index f143366..bae924e 100644 --- a/src/apex/plugins/id/__init__.py +++ b/src/apex/plugins/id/__init__.py @@ -1,6 +1,17 @@ +# These imports are for python3 compatability inside python2 +from __future__ import print_function, unicode_literals +from __future__ import absolute_import, division + import apex.aprs.util import time +__author__ = 'Jeffrey Phillips Freeman (WI2ARD)' +__maintainer__ = "Jeffrey Phillips Freeman (WI2ARD)" +__email__ = "jeffrey.freeman@syncleus.com" +__license__ = 'Apache License, Version 2.0' +__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' +__credits__ = [] + plugin = None def start(config, port_map, packet_cache, aprsis): diff --git a/src/apex/plugins/status/__init__.py b/src/apex/plugins/status/__init__.py index e70e3dc..4ce4fc9 100644 --- a/src/apex/plugins/status/__init__.py +++ b/src/apex/plugins/status/__init__.py @@ -1,6 +1,17 @@ +# These imports are for python3 compatability inside python2 +from __future__ import print_function, unicode_literals +from __future__ import absolute_import, division + import apex.aprs.util import time +__author__ = 'Jeffrey Phillips Freeman (WI2ARD)' +__maintainer__ = "Jeffrey Phillips Freeman (WI2ARD)" +__email__ = "jeffrey.freeman@syncleus.com" +__license__ = 'Apache License, Version 2.0' +__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors' +__credits__ = [] + plugin = None def start(config, port_map, packet_cache, aprsis): diff --git a/tox.ini b/tox.ini index 2963869..798d8f3 100644 --- a/tox.ini +++ b/tox.ini @@ -2,16 +2,16 @@ envlist = clean, check, -; 2.7-cover, -; 2.7-nocov, + 2.7-cover, + 2.7-nocov, 3.3-cover, 3.3-nocov, 3.4-cover, 3.4-nocov, 3.5-cover, 3.5-nocov, -; pypy-cover, -; pypy-nocov, + pypy-cover, + pypy-nocov, report, docs @@ -114,20 +114,20 @@ skip_install = true usedevelop = false deps = coverage -;[testenv:2.7-cover] -;basepython = {env:TOXPYTHON:python2.7} -;setenv = -; {[testenv]setenv} -; WITH_COVERAGE=yes -;usedevelop = true -;commands = -; {posargs:py.test --cov --cov-report=term-missing -vv} -;deps = -; {[testenv]deps} -; pytest-cov -; -;[testenv:2.7-nocov] -;basepython = {env:TOXPYTHON:python2.7} +[testenv:2.7-cover] +basepython = {env:TOXPYTHON:python2.7} +setenv = + {[testenv]setenv} + WITH_COVERAGE=yes +usedevelop = true +commands = + {posargs:py.test --cov --cov-report=term-missing -vv} +deps = + {[testenv]deps} + pytest-cov + +[testenv:2.7-nocov] +basepython = {env:TOXPYTHON:python2.7} [testenv:3.3-cover] basepython = {env:TOXPYTHON:python3.3} @@ -174,20 +174,20 @@ deps = [testenv:3.5-nocov] basepython = {env:TOXPYTHON:python3.5} -;[testenv:pypy-cover] -;basepython = {env:TOXPYTHON:pypy} -;setenv = -; {[testenv]setenv} -; WITH_COVERAGE=yes -;usedevelop = true -;commands = -; {posargs:py.test --cov --cov-report=term-missing -vv} -;deps = -; {[testenv]deps} -; pytest-cov -; -;[testenv:pypy-nocov] -;basepython = {env:TOXPYTHON:pypy} -; -; +[testenv:pypy-cover] +basepython = {env:TOXPYTHON:pypy} +setenv = + {[testenv]setenv} + WITH_COVERAGE=yes +usedevelop = true +commands = + {posargs:py.test --cov --cov-report=term-missing -vv} +deps = + {[testenv]deps} + pytest-cov + +[testenv:pypy-nocov] +basepython = {env:TOXPYTHON:pypy} + + -- GitLab