From 699093449c254152d9c27793f45bfd3a4f524904 Mon Sep 17 00:00:00 2001 From: Hans Maerki Date: Thu, 23 Jan 2025 18:03:36 +0100 Subject: [PATCH 1/2] mypy: configure to succeed --- pyproject.toml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 5e20f19..495ca10 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -47,3 +47,15 @@ exclude = ["tests", "examples"] [tool.setuptools.dynamic] version = { attr = "meterbus.__version__" } + +# +# MPY tuning - this command should succeed: mypy -p meterbus +# +[[tool.mypy.overrides]] +module = ["simplejson.*","Crypto.Cipher.*"] +ignore_missing_imports = true + +[[tool.mypy.overrides]] +module = ["yaml.*", "serial.*"] +follow_untyped_imports = true + From 672aa820a2b3c614f722bd0efe889276086b87ee Mon Sep 17 00:00:00 2001 From: Hans Maerki Date: Thu, 23 Jan 2025 18:21:56 +0100 Subject: [PATCH 2/2] Replace g.global with logger.isEnabledFor(logging.INFO) --- meterbus/__init__.py | 4 ++-- meterbus/globals.py | 6 ------ meterbus/serial.py | 19 ++++++++++++------- tests/test_globals.py | 27 --------------------------- 4 files changed, 14 insertions(+), 42 deletions(-) delete mode 100644 meterbus/globals.py delete mode 100644 tests/test_globals.py diff --git a/meterbus/__init__.py b/meterbus/__init__.py index ecb0f43..62fe2ec 100644 --- a/meterbus/__init__.py +++ b/meterbus/__init__.py @@ -9,8 +9,8 @@ :copyright: (c) 2017-2019 by Mikael Ganehag Brorsson. :license: BSD, see LICENSE for more details. """ +import warnings -from .globals import g from .defines import * from .core_objects import DataEncoding, FunctionType, MeasureUnit, VIFUnit, \ @@ -70,4 +70,4 @@ def load(data): raise MBusFrameDecodeError("unable to decode frame") def debug(state): - g.debug = state + warnings.warn("Logging is now controlled via the log levels.", DeprecationWarning) diff --git a/meterbus/globals.py b/meterbus/globals.py deleted file mode 100644 index 15f9ae8..0000000 --- a/meterbus/globals.py +++ /dev/null @@ -1,6 +0,0 @@ -import collections - -g = collections.namedtuple('Globals', '') - -# Default -g.debug = False diff --git a/meterbus/serial.py b/meterbus/serial.py index fde6cbd..2dbf469 100644 --- a/meterbus/serial.py +++ b/meterbus/serial.py @@ -1,7 +1,6 @@ #!/usr/bin/python # -*- coding: utf-8 -*- -from .globals import g from .telegram_short import TelegramShort from .telegram_long import TelegramLong from .auxiliary import is_primary_address, is_secondary_address @@ -18,17 +17,16 @@ from .defines import * import logging -logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) def serial_send(ser, data=None, read_echo=False): if not data: - if g.debug: + if logger.isEnabledFor(logging.INFO): logger.info('Unable to send {0} value'.format(data)) return None - if g.debug and data: + if logger.isEnabledFor(logging.INFO) and data: frame_data = bytearray(data) logger.info('SEND ({0:03d}) {1}'.format( len(frame_data), @@ -141,7 +139,7 @@ def recv_frame(ser, length=1): data += characters - if g.debug and characters: + if logger.isEnabledFor(logging.INFO) and characters: logger.info('RECV ({0:03d}) {1}'.format( len(characters), " ".join(["{:02x}".format(x).upper() for x in characters]) @@ -177,7 +175,7 @@ def __init__(self, ser, preamble=None): self.preamble = preamble def serial_send(self, data, read_echo=False): - if g.debug: + if logger.isEnabledFor(logging.INFO): frame_data = bytearray(data) logger.info('SEND ({0:03d}) {1}'.format( len(data), @@ -264,7 +262,7 @@ def recv_frame(self, length=1): data += characters - if g.debug and characters: + if logger.isEnabledFor(logging.INFO) and characters: logger.info('RECV ({0:03d}) {1}'.format( len(characters), " ".join(["{:02x}".format(x).upper() for x in characters]) @@ -292,3 +290,10 @@ def recv_frame(self, length=1): return False return None + +def main(): + # Do not initalize running when just importing module + logging.basicConfig(level=logging.INFO) + +if __name__ == "__main__": + main() diff --git a/tests/test_globals.py b/tests/test_globals.py deleted file mode 100644 index 98bc266..0000000 --- a/tests/test_globals.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- - -import os -import sys - -myPath = os.path.dirname(os.path.abspath(__file__)) -sys.path.insert(0, myPath + '/../') - -import unittest -import meterbus -from meterbus.exceptions import * - - -class TestSequenceFunctions(unittest.TestCase): - def setUp(self): - meterbus.debug(False) - pass - - def test_debug_default_value(self): - self.assertEqual(meterbus.g.debug, False) - - def test_debug_set_true(self): - meterbus.debug(True) - self.assertEqual(meterbus.g.debug, True) - -if __name__ == '__main__': - unittest.main()