Skip to content

Commit fa93963

Browse files
committed
improve typing on flag enums
1 parent 19e1528 commit fa93963

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

src/cchdo/hydro/flags.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,36 @@
11
"""A Collection of Flag Schemes."""
22

3+
from abc import abstractmethod
34
from enum import IntEnum
5+
from typing import Protocol
6+
7+
8+
class FlagDefProtocol(Protocol):
9+
flag: int
10+
11+
@property
12+
@abstractmethod
13+
def _flag_definitions(self) -> dict[int, str]: ...
14+
15+
@property
16+
@abstractmethod
17+
def _no_data_flags(self) -> tuple[int]: ...
418

519

620
class ExchangeFlag(IntEnum):
7-
def __init__(self, flag) -> None:
21+
def __init__(self, flag: int) -> None:
822
self.flag = flag
923

1024
@property
11-
def definition(self):
25+
def definition(self: FlagDefProtocol):
1226
return self._flag_definitions[self.flag]
1327

1428
@property
1529
def cf_def(self):
1630
return "_".join(self.definition.lower().replace(".", "").split())
1731

1832
@property
19-
def has_value(self):
33+
def has_value(self: FlagDefProtocol):
2034
if self.flag in self._no_data_flags:
2135
return False
2236
return True

0 commit comments

Comments
 (0)