-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Closed
Labels
bugmypy got something wrongmypy got something wrongtopic-mypycmypyc bugsmypyc bugstopic-named-tupletopic-type-variables
Description
Bug Report
Mypyc raises AssertionError: Self`0 in NamedTuple subclass
To Reproduce
vector.py
from __future__ import annotations
from typing import TYPE_CHECKING, NamedTuple
from typing_extensions import Self
if TYPE_CHECKING: # pragma: nocover
from collections.abc import Iterable
class Vector2(NamedTuple):
"""Vector2 Object. Takes an x and a y coordinate."""
x: float
y: float
@classmethod
def from_iter(cls, iterable: Iterable[float]) -> Self:
"""Return new vector from iterable."""
return cls(*iter(iterable))
def __neg__(self) -> Self:
"""Return result of negating self components."""
return self.from_iter(-c for c in self)mypyc vector.pyExpected Behavior
Expected no issues
Actual Behavior
Traceback (most recent call last):
vector.py:24: AssertionError: Self`0
Changing the erroring line in question to be
def __neg__(self) -> Vector2:instead results in
Traceback (most recent call last):
vector.py:24: AssertionError: tuple[builtins.float, builtins.float, fallback=vector.Vector2]
Your Environment
- Mypy version used:
mypy 1.11.2 (compiled: yes) - Mypy command-line flags: None
- Mypy configuration options from
mypy.ini(and other config files): None - Python version used:
Python 3.12.3 (main, Sep 11 2024, 14:17:37) [GCC 13.2.0] on linux
Metadata
Metadata
Assignees
Labels
bugmypy got something wrongmypy got something wrongtopic-mypycmypyc bugsmypyc bugstopic-named-tupletopic-type-variables