diff options
author | Claudiu Popa <pcmanticore@gmail.com> | 2019-09-24 08:40:35 +0200 |
---|---|---|
committer | Claudiu Popa <pcmanticore@gmail.com> | 2019-09-24 09:10:33 +0200 |
commit | ab79ac0b53658fff9474d601baac5d6b831e5e5e (patch) | |
tree | 9e3223598eca548eff31a1a25f27258fb1b879a4 | |
parent | 79243257dc7e136dbfd6850e9285a01c909687bf (diff) | |
download | pylint-git-ab79ac0b53658fff9474d601baac5d6b831e5e5e.tar.gz |
Disable too-few-public-methods for data classes. Close #3025
-rw-r--r-- | pylint/checkers/design_analysis.py | 5 | ||||
-rw-r--r-- | tests/functional/too/too_few_public_methods_37.py | 15 |
2 files changed, 17 insertions, 3 deletions
diff --git a/pylint/checkers/design_analysis.py b/pylint/checkers/design_analysis.py index 62a718098..0cc5e5dd6 100644 --- a/pylint/checkers/design_analysis.py +++ b/pylint/checkers/design_analysis.py @@ -153,8 +153,9 @@ def _is_dataclass_like(node: astroid.ClassDef) -> bool: name = decorator.name else: name = decorator.attrname - if name in DATACLASSES_DECORATORS and root_locals.intersection( - DATACLASSES_DECORATORS + if name in DATACLASSES_DECORATORS and ( + root_locals.intersection(DATACLASSES_DECORATORS) + or DATACLASS_IMPORT in root_locals ): return True return False diff --git a/tests/functional/too/too_few_public_methods_37.py b/tests/functional/too/too_few_public_methods_37.py index 0bb3a3c16..5e641f6cc 100644 --- a/tests/functional/too/too_few_public_methods_37.py +++ b/tests/functional/too/too_few_public_methods_37.py @@ -1,6 +1,6 @@ # pylint: disable=missing-docstring -import typing import dataclasses +import typing from dataclasses import dataclass @@ -22,3 +22,16 @@ class Test: class Example(typing.NamedTuple): some_int: int + + +@dataclasses.dataclass(frozen=True) +class Point: + """A three dimensional point with x, y and z components.""" + + x: float + y: float + z: float + + def to_array(self): + """Convert to a NumPy array `np.array((x, y, z))`.""" + return self.x |