summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudiu Popa <pcmanticore@gmail.com>2019-09-24 08:40:35 +0200
committerClaudiu Popa <pcmanticore@gmail.com>2019-09-24 09:10:33 +0200
commitab79ac0b53658fff9474d601baac5d6b831e5e5e (patch)
tree9e3223598eca548eff31a1a25f27258fb1b879a4
parent79243257dc7e136dbfd6850e9285a01c909687bf (diff)
downloadpylint-git-ab79ac0b53658fff9474d601baac5d6b831e5e5e.tar.gz
Disable too-few-public-methods for data classes. Close #3025
-rw-r--r--pylint/checkers/design_analysis.py5
-rw-r--r--tests/functional/too/too_few_public_methods_37.py15
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