diff --git a/src/apex/__init__.py b/src/apex/__init__.py index f38884b6476719df6f061b8f5fe337a2e0b32cd9..e67437e30d6922056e7bf7edf829c485e07abc56 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 2396ef2cb6a0634bbf4526641e5bfb5fe4bc339b..5078407938b6282f3ff1e0c424e0b99a6373e215 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 e7e72cd8676f77a329f5f9402fb285dc6ed56ed0..859d84fe9d4fad81795586f7611abba21769fa2e 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 cc839d1e7a42b456172da133a9df4627aa9db64a..e9aac330d3aa0b269acda4586f4fc832bb90f4a5 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 03d863a9c7ec50ffa38a2c2047ad0a0e6934b905..b2701629bd000d2d099c7308b706b368354072b7 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 8628a466b4a491b8933255338712a3f49fa3623a..4a0974b660a55745a4c0059332239d8f99c20e93 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 de7b1de3374c952a6890ac4c95b8b153a846e0c8..6cbd34412b04e624a24c2eefb0d8df172a456fd9 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 eaef202acc73acd94b3166ab2435a481d53ad479..8d9e6ceaab2b5b71fee1a0ddba97f39e49786881 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 d623313860466e07317192e6d52aba9668702a3f..2b7e77b614252ff3bc0e27f5ce5c76213f3978cc 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 7e9c3964dc46fa168ab383c1df5a5eeb42853b01..9dd948e26591c2345049bccff30b14adf0a3c451 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 aa0b6aa10c3d5756d6af8f94d4f2e168d7b8f22e..3b316593659fd9c7b0f7696bde32e71ecf8db2d3 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 a461d2224d7a7140636939d4cfc8167df5b12a84..035d00e5c6e653487f9767e5103af832ec93128f 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 0474dc2060f96798ed00abea75c6d9873a7f4a54..7a274d33789e908d1af9ba937092ef50b9a94313 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 5025862c6e23eb9811b89caddc21d83f936c5377..6d8b0489738c20f2b0b84a6b0e1e3e3b2e746468 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 11e5518f44957762692dee0524118dd6c045df7b..1aaf1229252b83155803c8202ab31f9b245f7f22 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 777d4c941fdca2c72f6407ace89f5c66dac63cea..4f74e6c1c3cba90f446cb37fdc6fe3d03d13a92d 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 f143366798b926868a3481bb5936fd5e9689d88c..bae924ecd99118e24a507f3d9bf8b37954f1c7b6 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 e70e3dc2993a93424fbbec62ee7c066e69ea500a..4ce4fc9527f58276b6f24c3601417cefe9b72f61 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 2963869c4d995212705124582ee37e19da2d7426..798d8f366225692e2d3cf4f4f12709afc73d0cc8 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} + +