Skip to content

chore: homogenize TypeGuard usage in rtypes.py #19655

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 14, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 31 additions & 31 deletions mypyc/ir/rtypes.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ def may_be_immortal(self) -> bool:
def serialize(self) -> str:
return "void"

def __eq__(self, other: object) -> bool:
def __eq__(self, other: object) -> TypeGuard[RVoid]:
return isinstance(other, RVoid)

def __hash__(self) -> int:
Expand Down Expand Up @@ -279,7 +279,7 @@ def serialize(self) -> str:
def __repr__(self) -> str:
return "<RPrimitive %s>" % self.name

def __eq__(self, other: object) -> bool:
def __eq__(self, other: object) -> TypeGuard[RPrimitive]:
return isinstance(other, RPrimitive) and other.name == self.name

def __hash__(self) -> int:
Expand Down Expand Up @@ -513,15 +513,15 @@ def __hash__(self) -> int:
range_rprimitive: Final = RPrimitive("builtins.range", is_unboxed=False, is_refcounted=True)


def is_tagged(rtype: RType) -> bool:
def is_tagged(rtype: RType) -> TypeGuard[RPrimitive]:
return rtype is int_rprimitive or rtype is short_int_rprimitive


def is_int_rprimitive(rtype: RType) -> bool:
def is_int_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
return rtype is int_rprimitive


def is_short_int_rprimitive(rtype: RType) -> bool:
def is_short_int_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
return rtype is short_int_rprimitive


Expand All @@ -535,7 +535,7 @@ def is_int32_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
)


def is_int64_rprimitive(rtype: RType) -> bool:
def is_int64_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
return rtype is int64_rprimitive or (
rtype is c_pyssize_t_rprimitive and rtype._ctype == "int64_t"
)
Expand All @@ -554,79 +554,79 @@ def is_uint8_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
return rtype is uint8_rprimitive


def is_uint32_rprimitive(rtype: RType) -> bool:
def is_uint32_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
return rtype is uint32_rprimitive


def is_uint64_rprimitive(rtype: RType) -> bool:
def is_uint64_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
return rtype is uint64_rprimitive


def is_c_py_ssize_t_rprimitive(rtype: RType) -> bool:
def is_c_py_ssize_t_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
return rtype is c_pyssize_t_rprimitive


def is_pointer_rprimitive(rtype: RType) -> bool:
def is_pointer_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
return rtype is pointer_rprimitive


def is_float_rprimitive(rtype: RType) -> bool:
def is_float_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
return isinstance(rtype, RPrimitive) and rtype.name == "builtins.float"


def is_bool_rprimitive(rtype: RType) -> bool:
def is_bool_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
return isinstance(rtype, RPrimitive) and rtype.name == "builtins.bool"


def is_bit_rprimitive(rtype: RType) -> bool:
def is_bit_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
return isinstance(rtype, RPrimitive) and rtype.name == "bit"


def is_bool_or_bit_rprimitive(rtype: RType) -> bool:
def is_bool_or_bit_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
return is_bool_rprimitive(rtype) or is_bit_rprimitive(rtype)


def is_object_rprimitive(rtype: RType) -> bool:
def is_object_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
return isinstance(rtype, RPrimitive) and rtype.name == "builtins.object"


def is_none_rprimitive(rtype: RType) -> bool:
def is_none_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
return isinstance(rtype, RPrimitive) and rtype.name == "builtins.None"


def is_list_rprimitive(rtype: RType) -> bool:
def is_list_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
return isinstance(rtype, RPrimitive) and rtype.name == "builtins.list"


def is_dict_rprimitive(rtype: RType) -> bool:
def is_dict_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
return isinstance(rtype, RPrimitive) and rtype.name == "builtins.dict"


def is_set_rprimitive(rtype: RType) -> bool:
def is_set_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
return isinstance(rtype, RPrimitive) and rtype.name == "builtins.set"


def is_frozenset_rprimitive(rtype: RType) -> bool:
def is_frozenset_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
return isinstance(rtype, RPrimitive) and rtype.name == "builtins.frozenset"


def is_str_rprimitive(rtype: RType) -> bool:
def is_str_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
return isinstance(rtype, RPrimitive) and rtype.name == "builtins.str"


def is_bytes_rprimitive(rtype: RType) -> bool:
def is_bytes_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
return isinstance(rtype, RPrimitive) and rtype.name == "builtins.bytes"


def is_tuple_rprimitive(rtype: RType) -> bool:
def is_tuple_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
return isinstance(rtype, RPrimitive) and rtype.name == "builtins.tuple"


def is_range_rprimitive(rtype: RType) -> bool:
def is_range_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
return isinstance(rtype, RPrimitive) and rtype.name == "builtins.range"


def is_sequence_rprimitive(rtype: RType) -> bool:
def is_sequence_rprimitive(rtype: RType) -> TypeGuard[RPrimitive]:
return isinstance(rtype, RPrimitive) and (
is_list_rprimitive(rtype) or is_tuple_rprimitive(rtype) or is_str_rprimitive(rtype)
)
Expand Down Expand Up @@ -717,7 +717,7 @@ def __str__(self) -> str:
def __repr__(self) -> str:
return "<RTuple %s>" % ", ".join(repr(typ) for typ in self.types)

def __eq__(self, other: object) -> bool:
def __eq__(self, other: object) -> TypeGuard[RTuple]:
return isinstance(other, RTuple) and self.types == other.types

def __hash__(self) -> int:
Expand Down Expand Up @@ -850,7 +850,7 @@ def __repr__(self) -> str:
", ".join(name + ":" + repr(typ) for name, typ in zip(self.names, self.types)),
)

def __eq__(self, other: object) -> bool:
def __eq__(self, other: object) -> TypeGuard[RStruct]:
return (
isinstance(other, RStruct)
and self.name == other.name
Expand Down Expand Up @@ -920,7 +920,7 @@ def attr_type(self, name: str) -> RType:
def __repr__(self) -> str:
return "<RInstance %s>" % self.name

def __eq__(self, other: object) -> bool:
def __eq__(self, other: object) -> TypeGuard[RInstance]:
return isinstance(other, RInstance) and other.name == self.name

def __hash__(self) -> int:
Expand Down Expand Up @@ -974,7 +974,7 @@ def __str__(self) -> str:
return "union[%s]" % ", ".join(str(item) for item in self.items)

# We compare based on the set because order in a union doesn't matter
def __eq__(self, other: object) -> bool:
def __eq__(self, other: object) -> TypeGuard[RUnion]:
return isinstance(other, RUnion) and self.items_set == other.items_set

def __hash__(self) -> int:
Expand Down Expand Up @@ -1016,7 +1016,7 @@ def optional_value_type(rtype: RType) -> RType | None:
return None


def is_optional_type(rtype: RType) -> bool:
def is_optional_type(rtype: RType) -> TypeGuard[RUnion]:
"""Is rtype an optional type with exactly two union items?"""
return optional_value_type(rtype) is not None

Expand Down Expand Up @@ -1048,7 +1048,7 @@ def __str__(self) -> str:
def __repr__(self) -> str:
return f"<RArray {self.item_type!r}[{self.length}]>"

def __eq__(self, other: object) -> bool:
def __eq__(self, other: object) -> TypeGuard[RArray]:
return (
isinstance(other, RArray)
and self.item_type == other.item_type
Expand Down
Loading