diff options
Diffstat (limited to 'glucometerutils/driver.py')
-rw-r--r-- | glucometerutils/driver.py | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/glucometerutils/driver.py b/glucometerutils/driver.py index 641a5b6..88556d8 100644 --- a/glucometerutils/driver.py +++ b/glucometerutils/driver.py @@ -4,8 +4,11 @@ # SPDX-License-Identifier: MIT import abc +import dataclasses import datetime -from typing import Generator, Optional, Text +import importlib +import inspect +from typing import Generator, Optional, Text, Type from glucometerutils import common @@ -65,3 +68,17 @@ class GlucometerDevice(abc.ABC): @abc.abstractmethod def get_readings(self) -> Generator[common.AnyReading, None, None]: pass + + +@dataclasses.dataclass +class Driver: + device: Type[GlucometerDevice] + help: str + + +def load_driver(driver_name: str) -> Driver: + driver_module = importlib.import_module(f"glucometerutils.drivers.{driver_name}") + help_string = inspect.getdoc(driver_module) + assert help_string is not None + + return Driver(getattr(driver_module, "Device"), help_string) |