MCPcopy Create free account
hub / github.com/python/mypy / process_static_or_class_method_in_overload

Method process_static_or_class_method_in_overload

mypy/semanal.py:1549–1578  ·  view source on GitHub ↗
(self, defn: OverloadedFuncDef)

Source from the content-addressed store, hash-verified

1547 defn.is_final = True
1548
1549 def process_static_or_class_method_in_overload(self, defn: OverloadedFuncDef) -> None:
1550 class_status = []
1551 static_status = []
1552 for item in defn.items:
1553 if isinstance(item, Decorator):
1554 inner = item.func
1555 elif isinstance(item, FuncDef):
1556 inner = item
1557 else:
1558 assert False, f"The 'item' variable is an unexpected type: {type(item)}"
1559 class_status.append(inner.is_class)
1560 static_status.append(inner.is_static)
1561
1562 if defn.impl is not None:
1563 if isinstance(defn.impl, Decorator):
1564 inner = defn.impl.func
1565 elif isinstance(defn.impl, FuncDef):
1566 inner = defn.impl
1567 else:
1568 assert False, f"Unexpected impl type: {type(defn.impl)}"
1569 class_status.append(inner.is_class)
1570 static_status.append(inner.is_static)
1571
1572 if len(set(class_status)) != 1:
1573 self.msg.overload_inconsistently_applies_decorator("classmethod", defn)
1574 elif len(set(static_status)) != 1:
1575 self.msg.overload_inconsistently_applies_decorator("staticmethod", defn)
1576 else:
1577 defn.is_class = class_status[0]
1578 defn.is_static = static_status[0]
1579
1580 def analyze_property_with_multi_part_definition(
1581 self, defn: OverloadedFuncDef

Callers 1

Calls 6

isinstanceFunction · 0.85
typeClass · 0.85
lenFunction · 0.85
setClass · 0.85
appendMethod · 0.80

Tested by

no test coverage detected