From e6228a1b0b5fe2404100775cec19422cb082ba72 Mon Sep 17 00:00:00 2001 From: "Tobias Wellnitz, DH1TW" Date: Thu, 28 Dec 2023 20:42:20 +0100 Subject: [PATCH] removed support for python 2.7 --- docs/source/conf.py | 13 +----- pyhamtools/callinfo.py | 12 +---- pyhamtools/lookuplib.py | 61 +++++++------------------ setup.py | 1 - test/test_clublog.py | 7 +-- test/test_eqsl.py | 7 +-- test/test_lookuplib.py | 6 +-- test/test_lookuplib_gettersetter_api.py | 20 +++----- test/test_lotw.py | 6 +-- 9 files changed, 29 insertions(+), 104 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 00e63dc..6356823 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -12,19 +12,8 @@ # All configuration values have a default; values that are commented out # serve to show the default. -import sys -import os - from pyhamtools.version import __version__, __release__ -sys.path.insert(0,"/Users/user/projects/pyhamtools/pyhamtools") - - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -#sys.path.insert(0, os.path.abspath('.')) - # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. @@ -52,7 +41,7 @@ master_doc = 'index' # General information about the project. project = u'pyhamtools' -copyright = u'2019, Tobias Wellnitz, DH1TW' +copyright = u'2024, Tobias Wellnitz, DH1TW' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the diff --git a/pyhamtools/callinfo.py b/pyhamtools/callinfo.py index aebb135..681eb25 100644 --- a/pyhamtools/callinfo.py +++ b/pyhamtools/callinfo.py @@ -1,18 +1,11 @@ import re import logging from datetime import datetime, timezone -import sys from pyhamtools.consts import LookupConventions as const from pyhamtools.callsign_exceptions import callsign_exceptions -if sys.version_info < (2, 7, ): - class NullHandler(logging.Handler): - def emit(self, record): - pass - - class Callinfo(object): """ The purpose of this class is to return data (country, latitude, longitude, CQ Zone...etc) for an @@ -33,10 +26,7 @@ class Callinfo(object): self._logger = logger else: self._logger = logging.getLogger(__name__) - if sys.version_info[:2] == (2, 6): - self._logger.addHandler(NullHandler()) - else: - self._logger.addHandler(logging.NullHandler()) + self._logger.addHandler(logging.NullHandler()) self._lookuplib = lookuplib self._callsign_info = None diff --git a/pyhamtools/lookuplib.py b/pyhamtools/lookuplib.py index 0e7b8bf..23bd6ef 100644 --- a/pyhamtools/lookuplib.py +++ b/pyhamtools/lookuplib.py @@ -8,8 +8,6 @@ import xml.etree.ElementTree as ET import urllib import json import copy -import sys -import unicodedata import requests from requests.exceptions import ConnectionError, HTTPError, Timeout @@ -21,14 +19,6 @@ from .exceptions import APIKeyMissingError REDIS_LUA_DEL_SCRIPT = "local keys = redis.call('keys', ARGV[1]) \n for i=1,#keys,20000 do \n redis.call('del', unpack(keys, i, math.min(i+19999, #keys))) \n end \n return keys" -if sys.version_info < (2, 7,): - class NullHandler(logging.Handler): - def emit(self, record): - pass - -if sys.version_info.major == 3: - unicode = str - class LookupLib(object): """ @@ -76,10 +66,7 @@ class LookupLib(object): self._logger = logger else: self._logger = logging.getLogger(__name__) - if sys.version_info[:2] == (2, 6): - self._logger.addHandler(NullHandler()) - else: - self._logger.addHandler(logging.NullHandler()) + self._logger.addHandler(logging.NullHandler()) self._apikey = apikey self._apiv = apiv @@ -127,10 +114,7 @@ class LookupLib(object): "agent" : agent } - if sys.version_info.major == 3: - encodeurl = url + "?" + urllib.parse.urlencode(params) - else: - encodeurl = url + "?" + urllib.urlencode(params) + encodeurl = url + "?" + urllib.parse.urlencode(params) response = requests.get(encodeurl, timeout=10) doc = BeautifulSoup(response.text, "xml") session_key = None @@ -700,10 +684,7 @@ class LookupLib(object): if timestamp is None: timestamp = datetime.now(timezone.utc) - if sys.version_info.major == 3: - encodeurl = url + "?" + urllib.parse.urlencode(params) - else: - encodeurl = url + "?" + urllib.urlencode(params) + encodeurl = url + "?" + urllib.parse.urlencode(params) response = requests.get(encodeurl, timeout=5) if not self._check_html_response(response): @@ -734,10 +715,7 @@ class LookupLib(object): "callsign" : callsign, } - if sys.version_info.major == 3: - encodeurl = url + "?" + urllib.parse.urlencode(params) - else: - encodeurl = url + "?" + urllib.urlencode(params) + encodeurl = url + "?" + urllib.parse.urlencode(params) response = requests.get(encodeurl, timeout=5) return response @@ -750,10 +728,7 @@ class LookupLib(object): "dxcc" : str(dxcc_or_callsign), } - if sys.version_info.major == 3: - encodeurl = url + "?" + urllib.parse.urlencode(params) - else: - encodeurl = url + "?" + urllib.urlencode(params) + encodeurl = url + "?" + urllib.parse.urlencode(params) response = requests.get(encodeurl, timeout=5) return response @@ -965,10 +940,6 @@ class LookupLib(object): if root.Callsign.geoloc: lookup[const.GEOLOC] = root.Callsign.geoloc.text - # if sys.version_info >= (2,): - # for item in lookup: - # if isinstance(lookup[item], unicode): - # print item, repr(lookup[item]) return lookup def _load_clublogXML(self, @@ -1209,10 +1180,10 @@ class LookupLib(object): entity = {} for item in cty_entity: if item.tag == "name": - entity[const.COUNTRY] = unicode(item.text) - self._logger.debug(unicode(item.text)) + entity[const.COUNTRY] = str(item.text) + self._logger.debug(str(item.text)) elif item.tag == "prefix": - entity[const.PREFIX] = unicode(item.text) + entity[const.PREFIX] = str(item.text) elif item.tag == "deleted": if item.text == "TRUE": entity[const.DELETED] = True @@ -1221,7 +1192,7 @@ class LookupLib(object): elif item.tag == "cqz": entity[const.CQZ] = int(item.text) elif item.tag == "cont": - entity[const.CONTINENT] = unicode(item.text) + entity[const.CONTINENT] = str(item.text) elif item.tag == "long": entity[const.LONGITUDE] = float(item.text) elif item.tag == "lat": @@ -1263,13 +1234,13 @@ class LookupLib(object): else: call_exceptions_index[call] = [int(cty_exception.attrib["record"])] elif item.tag == "entity": - call_exception[const.COUNTRY] = unicode(item.text) + call_exception[const.COUNTRY] = str(item.text) elif item.tag == "adif": call_exception[const.ADIF] = int(item.text) elif item.tag == "cqz": call_exception[const.CQZ] = int(item.text) elif item.tag == "cont": - call_exception[const.CONTINENT] = unicode(item.text) + call_exception[const.CONTINENT] = str(item.text) elif item.tag == "long": call_exception[const.LONGITUDE] = float(item.text) elif item.tag == "lat": @@ -1304,13 +1275,13 @@ class LookupLib(object): else: prefixes_index[call] = [int(cty_prefix.attrib["record"])] if item.tag == "entity": - prefix[const.COUNTRY] = unicode(item.text) + prefix[const.COUNTRY] = str(item.text) elif item.tag == "adif": prefix[const.ADIF] = int(item.text) elif item.tag == "cqz": prefix[const.CQZ] = int(item.text) elif item.tag == "cont": - prefix[const.CONTINENT] = unicode(item.text) + prefix[const.CONTINENT] = str(item.text) elif item.tag == "long": prefix[const.LONGITUDE] = float(item.text) elif item.tag == "lat": @@ -1431,12 +1402,12 @@ class LookupLib(object): for item in cty_list: entry = {} call = str(item) - entry[const.COUNTRY] = unicode(cty_list[item]["Country"]) + entry[const.COUNTRY] = str(cty_list[item]["Country"]) if mapping: entry[const.ADIF] = int(mapping[cty_list[item]["Country"]]) entry[const.CQZ] = int(cty_list[item]["CQZone"]) entry[const.ITUZ] = int(cty_list[item]["ITUZone"]) - entry[const.CONTINENT] = unicode(cty_list[item]["Continent"]) + entry[const.CONTINENT] = str(cty_list[item]["Continent"]) entry[const.LATITUDE] = float(cty_list[item]["Latitude"]) entry[const.LONGITUDE] = float(cty_list[item]["Longitude"])*(-1) @@ -1538,7 +1509,7 @@ class LookupLib(object): elif item == const.WHITELIST: my_dict[item] = self._str_to_bool(my_dict[item]) else: - my_dict[item] = unicode(my_dict[item]) + my_dict[item] = str(my_dict[item]) return my_dict diff --git a/setup.py b/setup.py index b26f642..63e6053 100755 --- a/setup.py +++ b/setup.py @@ -1,5 +1,4 @@ #!/usr/bin/env python -import sys import os from distutils.core import setup diff --git a/test/test_clublog.py b/test/test_clublog.py index 38eee32..8b3cae7 100644 --- a/test/test_clublog.py +++ b/test/test_clublog.py @@ -1,14 +1,9 @@ import os -import sys -import datetime import pytest from pyhamtools.qsl import get_clublog_users -if sys.version_info.major == 3: - unicode = str - test_dir = os.path.dirname(os.path.abspath(__file__)) fix_dir = os.path.join(test_dir, 'fixtures') @@ -26,7 +21,7 @@ class Test_clublog_methods: data = get_clublog_users() assert isinstance(data, dict) for key, value in data.items(): - assert isinstance(key, unicode) + assert isinstance(key, str) assert isinstance(value, dict) def test_with_invalid_url(self): diff --git a/test/test_eqsl.py b/test/test_eqsl.py index 9d0070e..35cca35 100644 --- a/test/test_eqsl.py +++ b/test/test_eqsl.py @@ -1,15 +1,10 @@ from .execfile import execfile import os -import sys -import datetime import pytest from pyhamtools.qsl import get_eqsl_users -if sys.version_info.major == 3: - unicode = str - test_dir = os.path.dirname(os.path.abspath(__file__)) fix_dir = os.path.join(test_dir, 'fixtures') class Test_eqsl_methods: @@ -26,7 +21,7 @@ class Test_eqsl_methods: data = get_eqsl_users() assert isinstance(data, list) for el in data: - assert isinstance(el, unicode) + assert isinstance(el, str) assert len(data) > 1000 def test_with_invalid_url(self): diff --git a/test/test_lookuplib.py b/test/test_lookuplib.py index 8d7ff19..bd0f35b 100644 --- a/test/test_lookuplib.py +++ b/test/test_lookuplib.py @@ -1,12 +1,8 @@ import pytest -import sys from pyhamtools.lookuplib import LookupLib from pyhamtools.exceptions import APIKeyMissingError -if sys.version_info.major == 3: - unicode = str - @pytest.fixture(scope="function", params=[5, -5, "", "foo bar", 11.5, {}, [], None, ("foo", "bar")]) def fixAnyValue(request): return request.param @@ -40,5 +36,5 @@ class TestlookupLibHelper: with pytest.raises(TypeError): fixClublogApi._generate_random_word() - assert type(fixClublogApi._generate_random_word(5)) is unicode + assert type(fixClublogApi._generate_random_word(5)) is str assert len(fixClublogApi._generate_random_word(5)) == 5 diff --git a/test/test_lookuplib_gettersetter_api.py b/test/test_lookuplib_gettersetter_api.py index 5e0f5fe..7b23aae 100644 --- a/test/test_lookuplib_gettersetter_api.py +++ b/test/test_lookuplib_gettersetter_api.py @@ -1,10 +1,4 @@ import pytest -import tempfile -import os -import sys - -if sys.version_info.major == 3: - unicode = str from datetime import datetime @@ -57,13 +51,13 @@ class Test_Getter_Setter_Api_Types_for_all_sources: count = 0 for attr in entity: if attr == "country": - assert type(entity[attr] is unicode) + assert type(entity[attr] is str) count +=1 if attr == "continent": - assert type(entity[attr] is unicode) + assert type(entity[attr] is str) count +=1 if attr == "prefix": - assert type(entity[attr] is unicode) + assert type(entity[attr] is str) count +=1 if attr == "deleted": assert type(entity[attr] is bool) @@ -113,10 +107,10 @@ class Test_Getter_Setter_Api_Types_for_all_sources: assert type(ex[attr]) is float count +=1 elif attr == "country": - assert type(ex[attr]) is unicode + assert type(ex[attr]) is str count +=1 elif attr == "continent": - assert type(ex[attr]) is unicode + assert type(ex[attr]) is str count +=1 elif attr == "cqz": assert type(ex[attr]) is int @@ -149,7 +143,7 @@ class Test_Getter_Setter_Api_Types_for_all_sources: count = 0 for attr in prefix: if attr == "country": - assert type(prefix[attr]) is unicode + assert type(prefix[attr]) is str count +=1 elif attr == "adif": assert type(prefix[attr]) is int @@ -161,7 +155,7 @@ class Test_Getter_Setter_Api_Types_for_all_sources: assert type(prefix[attr]) is int count +=1 elif attr == "continent": - assert type(prefix[attr]) is unicode + assert type(prefix[attr]) is str count +=1 elif attr == "latitude": assert type(prefix[attr]) is float diff --git a/test/test_lotw.py b/test/test_lotw.py index 4be552e..afd676c 100644 --- a/test/test_lotw.py +++ b/test/test_lotw.py @@ -1,5 +1,4 @@ import os -import sys import datetime from .execfile import execfile @@ -18,9 +17,6 @@ def execfile(filepath, globals=None, locals=None): from pyhamtools.qsl import get_lotw_users -if sys.version_info.major == 3: - unicode = str - test_dir = os.path.dirname(os.path.abspath(__file__)) fix_dir = os.path.join(test_dir, 'fixtures') @@ -38,7 +34,7 @@ class Test_lotw_methods: data = get_lotw_users() assert isinstance(data, dict) for key, value in data.items(): - assert isinstance(key, unicode) + assert isinstance(key, str) assert isinstance(value, datetime.datetime ) assert len(data) > 1000