add more type annotations
[nmigen-type-annotations.git] / nmigen / hdl / ast.pyi
index 97cfb10fb012e4e132d8bc0c9efbf7474bbaa7d9..b978956cb793e02972aeedea4359b572186c246f 100644 (file)
@@ -15,6 +15,10 @@ ShapeResult = Tuple[int, bool]
 
 
 class Value(metaclass=ABCMeta):
+    @staticmethod
+    def wrap(obj: Any) -> 'Value':
+        ...
+
     def __invert__(self) -> 'Value':
         ...
 
@@ -102,7 +106,7 @@ class Value(metaclass=ABCMeta):
     def __len__(self) -> int:
         ...
 
-    def __getitem__(self, key: Union[slice, int]) -> 'Value':
+    def __getitem__(self, key: Union[slice, int, str]) -> 'Value':
         ...
 
     def bool(self) -> 'Value':
@@ -130,6 +134,10 @@ class Const(Value):
     nbits: int
     signed: bool
 
+    @staticmethod
+    def normalize(value: int, shape: Tuple[int, bool]) -> int:
+        ...
+
     def __init__(self, value: int,
                  shape: Optional[ShapeArgument] = None) -> None:
         ...
@@ -213,11 +221,17 @@ class ResetSignal(Value):
         ...
 
 
-class Statement:
+StatementOrStatementList = Union[Iterable['Statement'], 'Statement']
+
+
+class _StatementList(list):
     pass
 
 
-StatementOrStatementList = Union[Iterable[Statement], Statement]
+class Statement:
+    @staticmethod
+    def wrap(obj: StatementOrStatementList) -> _StatementList:
+        ...
 
 
 class Assign(Statement):