From c5288f966a6d9c3d22152657605d4ca45c52c8c3 Mon Sep 17 00:00:00 2001 From: Ryan Gonzalez Date: Sun, 7 Jul 2019 20:29:04 -0500 Subject: [PATCH] Don't define a duplicate __init__ for dataclasses Closes #6399. --- mypy/plugins/dataclasses.py | 2 +- test-data/unit/check-dataclasses.test | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/mypy/plugins/dataclasses.py b/mypy/plugins/dataclasses.py index 7646c1dfacc4f..e8d2eb324a07e 100644 --- a/mypy/plugins/dataclasses.py +++ b/mypy/plugins/dataclasses.py @@ -92,7 +92,7 @@ def transform(self) -> None: 'frozen': _get_decorator_bool_argument(self._ctx, 'frozen', False), } - if decorator_arguments['init']: + if decorator_arguments['init'] and info.get('__init__') is None: add_method( ctx, '__init__', diff --git a/test-data/unit/check-dataclasses.test b/test-data/unit/check-dataclasses.test index 288c37664d22a..2000d57ab7ffe 100644 --- a/test-data/unit/check-dataclasses.test +++ b/test-data/unit/check-dataclasses.test @@ -16,6 +16,21 @@ Person('Jonh', 21, None) # E: Too many arguments for "Person" [builtins fixtures/list.pyi] +[case testDataclassesCustomInit] +# flags: --python-version 3.6 +from dataclasses import dataclass + +@dataclass +class A: + a: int + + def __init__(self, a: str) -> None: + pass + +A('1') + +[builtins fixtures/list.pyi] + [case testDataclassesBasicInheritance] # flags: --python-version 3.6 from dataclasses import dataclass