Skip to content

Commit ef96fa3

Browse files
committed
Make formal argument a native class
1 parent 660d911 commit ef96fa3

File tree

1 file changed

+20
-17
lines changed

1 file changed

+20
-17
lines changed

mypy/types.py

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,7 @@
55
import sys
66
from abc import abstractmethod
77
from collections.abc import Iterable, Sequence
8-
from typing import (
9-
TYPE_CHECKING,
10-
Any,
11-
ClassVar,
12-
Final,
13-
NamedTuple,
14-
NewType,
15-
TypeVar,
16-
Union,
17-
cast,
18-
overload,
19-
)
8+
from typing import TYPE_CHECKING, Any, ClassVar, Final, NewType, TypeVar, Union, cast, overload
209
from typing_extensions import Self, TypeAlias as _TypeAlias, TypeGuard
2110

2211
import mypy.nodes
@@ -1607,11 +1596,25 @@ def bound(self) -> bool:
16071596
return bool(self.items) and self.items[0].is_bound
16081597

16091598

1610-
class FormalArgument(NamedTuple):
1611-
name: str | None
1612-
pos: int | None
1613-
typ: Type
1614-
required: bool
1599+
class FormalArgument:
1600+
def __init__(self, name: str | None, pos: int | None, typ: Type, required: bool) -> None:
1601+
self.name = name
1602+
self.pos = pos
1603+
self.typ = typ
1604+
self.required = required
1605+
1606+
def __eq__(self, other: object) -> bool:
1607+
if not isinstance(other, FormalArgument):
1608+
return NotImplemented
1609+
return (
1610+
self.name == other.name
1611+
and self.pos == other.pos
1612+
and self.typ == other.typ
1613+
and self.required == other.required
1614+
)
1615+
1616+
def __hash__(self) -> int:
1617+
return hash((self.name, self.pos, self.typ, self.required))
16151618

16161619

16171620
class Parameters(ProperType):

0 commit comments

Comments
 (0)