You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
:; pipenv run mypy /tmp/footest.py
/tmp/footest.py:17: note: Revealed type is 'builtins.dict[Any, footest.FloatValue*]'
/tmp/footest.py:18: note: Revealed type is 'def (self: footest.ValueByKey[footest.FloatValue*], values: builtins.dict[Any, footest.FloatValue*])'
Actual Behavior
:; pipenv run mypy --version
mypy 0.790
:; pipenv run mypy /tmp/footest.py
/tmp/footest.py:17: note: Revealed type is 'builtins.dict[Any, footest.FloatValue*]'
/tmp/footest.py:18: note: Revealed type is 'def (self: footest.ValueByKey[T`1], values: builtins.dict[Any, T`1])'
Your Environment
Mypy version used: 0.790
Mypy command-line flags: see above
Mypy configuration options from mypy.ini (and other config files): none
Python version used: 3.7.8
Operating system and version: Arch Linux
The text was updated successfully, but these errors were encountered:
Fixespython#18024Fixespython#18706Fixespython#17734Fixespython#15097Fixespython#14814Fixespython#14806Fixespython#14259Fixespython#13041Fixespython#11993Fixespython#9585Fixespython#9266Fixespython#9202Fixespython#5481
This is a fourth "major" PR toward
python#7724. This is one is
watershed/crux of the whole series (but to set correct expectations,
there are almost a dozen smaller follow-up/clean-up PRs in the
pipeline).
The core of the idea is to set current type-checker as part of the
global state. There are however some details:
* There are cases where we call `is_subtype()` before type-checking. For
now, I fall back to old logic in this cases. In follow up PRs we may
switch to using type-checker instances before type checking phase (this
requires some care).
* This increases typeops import cycle by a few modules, but
unfortunately this is inevitable.
* This PR increases potential for infinite recursion in protocols. To
mitigate I add: one legitimate fix for `__call__`, and one temporary
hack for `freshen_all_functions_type_vars` (to reduce performance
impact).
* Finally I change semantics for method access on class objects to match
the one in old `find_member()`. Now we will expand type by instance, so
we have something like this:
```python
class B(Generic[T]):
def foo(self, x: T) -> T: ...
class C(B[str]): ...
reveal_type(C.foo) # def (self: B[str], x: str) -> str
```
FWIW, I am not even 100% sure this is correct, it seems to me we _may_
keep the method generic. But in any case what we do currently is
definitely wrong (we infer a _non-generic_ `def (x: T) -> T`).
---------
Co-authored-by: hauntsaninja <[email protected]>
Co-authored-by: Shantanu <[email protected]>
Bug Report
mypy doesn't seem to propagate generics into
dataclass
-generated methods correctly.To Reproduce
Expected Behavior
Actual Behavior
Your Environment
mypy.ini
(and other config files): noneThe text was updated successfully, but these errors were encountered: