Skip to content

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

Closed
@quinor

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