Skip to content

mypy attrs plugin doesn't work with new attrs' kw_only argument #6083

Description

@quinor

Copied from python-attrs/attrs#473 - issue concerns both parties...

$ python -m mypy --version
mypy 0.650
>>> attr.__version__
'18.2.0'

Use mypy on following file:

import typing
import attr
@attr.s(frozen=True, auto_attribs=True, kw_only=True)
class Position:
line: int
column: int
@attr.s(frozen=True, auto_attribs=True, kw_only=True)
class Node:
start: typing.Optional[Position] = None
end: typing.Optional[Position] = None
@attr.s(frozen=True, auto_attribs=True, kw_only=True)
class Operator(Node):
symbol: str
name: str
precedence: int
associativity: str # "left" or "right"

It gives following errors:

f.py:21: error: Non-default attributes not allowed after default attributes.
f.py:22: error: Non-default attributes not allowed after default attributes.
f.py:23: error: Non-default attributes not allowed after default attributes.
f.py:24: error: Non-default attributes not allowed after default attributes.

If I understand correctly, mypy doesn't consider the existence of a new kw_only=True .

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions