python / mypy

Optional static typing for Python
https://www.mypy-lang.org/
Other
18.35k stars 2.81k forks source link

Fix namedtuple discrepancies #2090

Open elazarg opened 8 years ago

elazarg commented 8 years ago
dlinnemeyer commented 8 years ago

I'm working on trying out NamedTuple from typing with mypy, and I ran into an error claiming my tuple has no attribute "_replace" when I try to call _replace.

Is this what you're talking about here, or am I running into a different problem?

elazarg commented 8 years ago

What version of mypy do you use? This sounds like an old bug that should have been fixed. Can you post an example code?

dlinnemeyer commented 8 years ago

0.4.4. I'll work on some example code quickly.

dlinnemeyer commented 8 years ago
from typing import NamedTuple

Foo = NamedTuple('Foo', [
    ('x', int),
    ('y', str)
])

def do_something(foo: Foo) -> Foo:
    return foo._replace(x=7)

I'm getting this error:

test.py: note: In function "do_something": test.py:9: error: "Foo" has no attribute "_replace"

gvanrossum commented 8 years ago

Can you repro with the latest mypy version from the repro?

elazarg commented 8 years ago

No it was fixed but not released yet.

gvanrossum commented 8 years ago

Our policy is to close bugs when the fix lands in the repo. So if this issue is fixed in the repo it should be closed now. (As the originator you should be able to.)

dlinnemeyer commented 8 years ago

You were right. Installing directly from git doesn't give any errors.

elazarg commented 8 years ago

@gvanrossum please don't close this issue. It is about other problems, not yet solved.

gvanrossum commented 8 years ago

Sorry!