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")