Skip to content

Commit 89831d9

Browse files
authored
typing: add more type annotations (#203)
* typing(type): add type annotations to ResolveableType and subclasses Signed-off-by: Nathaniel Starkman <[email protected]> * typing(type): add type annotations to add_promotion_rule Signed-off-by: Nathaniel Starkman <[email protected]> --------- Signed-off-by: Nathaniel Starkman <[email protected]>
1 parent bf1d894 commit 89831d9

File tree

2 files changed

+17
-14
lines changed

2 files changed

+17
-14
lines changed

plum/promotion.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ def _promotion_rule(type1, type2):
135135

136136

137137
@_dispatch
138-
def add_promotion_rule(type1, type2, type_to):
138+
def add_promotion_rule(type1: object, type2: object, type_to: type) -> None:
139139
"""Add a promotion rule.
140140
141141
Args:

plum/type.py

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
import sys
33
import typing
44
import warnings
5+
from typing import Hashable, Union
6+
7+
from typing_extensions import Self, TypeGuard
58

69
from beartype.vale._core._valecore import BeartypeValidator
710

@@ -32,14 +35,14 @@ class ResolvableType(type):
3235
name (str): Name of the type to be delivered.
3336
"""
3437

35-
def __init__(self, name):
38+
def __init__(self, name: str) -> None:
3639
type.__init__(self, name, (), {})
3740
self._type = None
3841

39-
def __new__(self, name):
42+
def __new__(self, name: str) -> Self:
4043
return type.__new__(self, name, (), {})
4144

42-
def deliver(self, type):
45+
def deliver(self, type: type) -> Self:
4346
"""Deliver the type.
4447
4548
Args:
@@ -51,7 +54,7 @@ def deliver(self, type):
5154
self._type = type
5255
return self
5356

54-
def resolve(self):
57+
def resolve(self) -> Union[type, Self]:
5558
"""Resolve the type.
5659
5760
Returns:
@@ -73,11 +76,11 @@ class PromisedType(ResolvableType):
7376
`"SomeType"`.
7477
"""
7578

76-
def __init__(self, name="SomeType"):
79+
def __init__(self, name: str = "SomeType") -> None:
7780
ResolvableType.__init__(self, f"PromisedType[{name}]")
7881
self._name = name
7982

80-
def __new__(cls, name="SomeType"):
83+
def __new__(cls, name: str = "SomeType") -> Self:
8184
return ResolvableType.__new__(cls, f"PromisedType[{name}]")
8285

8386

@@ -91,18 +94,18 @@ class ModuleType(ResolvableType):
9194
do not raise an `AttributeError`.
9295
"""
9396

94-
def __init__(self, module, name, allow_fail=False):
97+
def __init__(self, module: str, name: str, allow_fail: bool = False) -> None:
9598
if module in {"__builtin__", "__builtins__"}:
9699
module = "builtins"
97100
ResolvableType.__init__(self, f"ModuleType[{module}.{name}]")
98101
self._name = name
99102
self._module = module
100103
self._allow_fail = allow_fail
101104

102-
def __new__(cls, module, name, allow_fail=False):
105+
def __new__(cls, module: str, name: str, allow_fail: bool = False) -> Self:
103106
return ResolvableType.__new__(cls, f"ModuleType[{module}.{name}]")
104107

105-
def retrieve(self):
108+
def retrieve(self) -> bool:
106109
"""Attempt to retrieve the type from the reference module.
107110
108111
Returns:
@@ -120,7 +123,7 @@ def retrieve(self):
120123
return self._type is not None
121124

122125

123-
def _is_hint(x):
126+
def _is_hint(x: object) -> bool:
124127
"""Check if an object is a type hint.
125128
126129
Args:
@@ -144,7 +147,7 @@ def _is_hint(x):
144147
return False
145148

146149

147-
def _hashable(x):
150+
def _hashable(x: object) -> TypeGuard[Hashable]:
148151
"""Check if an object is hashable.
149152
150153
Args:
@@ -242,7 +245,7 @@ def resolve_type_hint(x):
242245
return x
243246

244247

245-
def is_faithful(x):
248+
def is_faithful(x) -> bool:
246249
"""Check whether a type hint is faithful.
247250
248251
A type or type hint `t` is defined _faithful_ if, for all `x`, the following holds
@@ -265,7 +268,7 @@ class UnfaithfulType:
265268
return _is_faithful(resolve_type_hint(x))
266269

267270

268-
def _is_faithful(x):
271+
def _is_faithful(x) -> bool:
269272
if _is_hint(x):
270273
origin = get_origin(x)
271274
args = get_args(x)

0 commit comments

Comments
 (0)