Skip to content

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

Closed

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 .

Activity

  1. ilevkivskyi commented on Dec 18, 2018

    @ilevkivskyi
    Member

    It will be great to support this in mypy. Shouldn't be too hard to implement, but may be tedious.

  2. added a commit that references this issue on Dec 27, 2018
    d266b11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions