MCPcopy Index your code
hub / github.com/python/mypy / equality_value_info

Function equality_value_info

mypy/checker.py:9830–9855  ·  view source on GitHub ↗
(t: Type)

Source from the content-addressed store, hash-verified

9828
9829
9830def equality_value_info(t: Type) -> EqualityValueInfo:
9831 t = get_proper_type(t)
9832 if isinstance(t, UnionType):
9833 return combine_equality_value_info(equality_value_info(item) for item in t.items)
9834 if isinstance(t, TypeVarType):
9835 if t.values:
9836 return combine_equality_value_info(equality_value_info(item) for item in t.values)
9837 return equality_value_info(t.upper_bound)
9838 if isinstance(t, Instance) and t.last_known_value is not None:
9839 return equality_value_info(t.last_known_value)
9840 if isinstance(t, LiteralType):
9841 return equality_value_info(t.fallback)
9842 if isinstance(t, Instance):
9843 if t.type.fullname == "builtins.object":
9844 return EqualityValueInfo({}, is_top=True)
9845
9846 enum_type_names = {t.type.fullname} if t.type.is_enum else set()
9847 domains = {}
9848 for base in t.type.mro:
9849 if domain := VALUE_EQUALITY_DOMAINS.get(base.fullname):
9850 domains[domain] = EqualityDomainInfo({t.type.fullname}, enum_type_names)
9851
9852 return EqualityValueInfo(domains, is_top=False)
9853 if isinstance(t, AnyType):
9854 return EqualityValueInfo({}, is_top=True)
9855 return EqualityValueInfo({}, is_top=False)
9856
9857
9858def combine_equality_value_info(infos: Iterable[EqualityValueInfo]) -> EqualityValueInfo:

Callers 1

Calls 7

get_proper_typeFunction · 0.90
isinstanceFunction · 0.85
EqualityValueInfoClass · 0.85
setClass · 0.85
EqualityDomainInfoClass · 0.85
getMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…