From 9daae12d40c85b14afc5028bd5cb4b8059ae6c76 Mon Sep 17 00:00:00 2001 From: tronikos Date: Thu, 13 Jul 2023 16:04:17 -0700 Subject: [PATCH] Use class name instead of subdomain for --utility --- src/demo.py | 5 +++-- src/opower/__init__.py | 4 ++-- src/opower/opower.py | 16 ++++++++++------ 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/demo.py b/src/demo.py index 7083cbe..40c67be 100644 --- a/src/demo.py +++ b/src/demo.py @@ -8,7 +8,7 @@ import aiohttp -from opower import AggregateType, Opower, get_supported_utility_subdomains +from opower import AggregateType, Opower, get_supported_utilities async def _main(): @@ -16,7 +16,8 @@ async def _main(): parser.add_argument( "--utility", help="Utility (subdomain of opower.com). Defaults to pge", - choices=get_supported_utility_subdomains(), + choices=[utility.__name__.lower() for utility in get_supported_utilities()], + type=str.lower, default="pge", ) parser.add_argument( diff --git a/src/opower/__init__.py b/src/opower/__init__.py index 2e0a941..333f8e5 100644 --- a/src/opower/__init__.py +++ b/src/opower/__init__.py @@ -10,8 +10,8 @@ Opower, UnitOfMeasure, UsageRead, + get_supported_utilities, get_supported_utility_names, - get_supported_utility_subdomains, ) __all__ = [ @@ -25,6 +25,6 @@ "Opower", "UnitOfMeasure", "UsageRead", + "get_supported_utilities", "get_supported_utility_names", - "get_supported_utility_subdomains", ] diff --git a/src/opower/opower.py b/src/opower/opower.py index a73b907..2e4b377 100644 --- a/src/opower/opower.py +++ b/src/opower/opower.py @@ -107,20 +107,24 @@ class UsageRead: consumption: float # taken from consumption.value field, in KWH or THERM +def get_supported_utilities() -> list[type["UtilityBase"]]: + """Return a list of all supported utilities.""" + return UtilityBase.subclasses + + def get_supported_utility_names() -> list[str]: """Return a list of names of all supported utilities.""" return [utility.name() for utility in UtilityBase.subclasses] -def get_supported_utility_subdomains() -> list[str]: - """Return a list of subdomains of all supported utilities.""" - return [utility.subdomain() for utility in UtilityBase.subclasses] - - def _select_utility(name_or_subdomain: str) -> type[UtilityBase]: """Return the utility with the given name or subdomain.""" for utility in UtilityBase.subclasses: - if name_or_subdomain in [utility.name(), utility.subdomain()]: + if name_or_subdomain.lower() in [ + utility.name().lower(), + utility.__name__.lower(), + utility.subdomain().lower(), + ]: return utility raise ValueError(f"Utility {name_or_subdomain} not found")