From 8f13e39ef282f7ba1cb8e0f1515ad2054c272072 Mon Sep 17 00:00:00 2001 From: Martin Winkel Date: Thu, 6 Feb 2020 02:52:22 +0100 Subject: [PATCH 1/3] fixed mypy errors in mypy-pandas.tests.extension.decimal.test_decimal --- pandas/tests/extension/base/base.py | 19 +++++++++++++++---- .../tests/extension/decimal/test_decimal.py | 8 +++++--- setup.cfg | 3 --- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/pandas/tests/extension/base/base.py b/pandas/tests/extension/base/base.py index 144b0825b39a2..e542dd2500b17 100644 --- a/pandas/tests/extension/base/base.py +++ b/pandas/tests/extension/base/base.py @@ -2,8 +2,19 @@ class BaseExtensionTests: + # can't use staticmethod() as this confuses mypy + @staticmethod + def assert_equal(left, right, **kwargs): + return tm.assert_equal(left, right, **kwargs) - assert_equal = staticmethod(tm.assert_equal) - assert_series_equal = staticmethod(tm.assert_series_equal) - assert_frame_equal = staticmethod(tm.assert_frame_equal) - assert_extension_array_equal = staticmethod(tm.assert_extension_array_equal) + @staticmethod + def assert_series_equal(left, right, *args, **kwargs): + return tm.assert_series_equal(left, right, *args, **kwargs) + + @staticmethod + def assert_frame_equal(left, right, *args, **kwargs): + return tm.assert_frame_equal(left, right, *args, **kwargs) + + @staticmethod + def assert_extension_array_equal(left, right, *args, **kwargs): + return tm.assert_extension_array_equal(left, right, *args, **kwargs) diff --git a/pandas/tests/extension/decimal/test_decimal.py b/pandas/tests/extension/decimal/test_decimal.py index de7c98ab96571..712482297b8c6 100644 --- a/pandas/tests/extension/decimal/test_decimal.py +++ b/pandas/tests/extension/decimal/test_decimal.py @@ -66,7 +66,8 @@ def data_for_grouping(): class BaseDecimal: - def assert_series_equal(self, left, right, *args, **kwargs): + @staticmethod + def assert_series_equal(left, right, *args, **kwargs): def convert(x): # need to convert array([Decimal(NaN)], dtype='object') to np.NaN # because Series[object].isnan doesn't recognize decimal(NaN) as @@ -88,7 +89,8 @@ def convert(x): tm.assert_series_equal(left_na, right_na) return tm.assert_series_equal(left[~left_na], right[~right_na], *args, **kwargs) - def assert_frame_equal(self, left, right, *args, **kwargs): + @staticmethod + def assert_frame_equal(left, right, *args, **kwargs): # TODO(EA): select_dtypes tm.assert_index_equal( left.columns, @@ -103,7 +105,7 @@ def assert_frame_equal(self, left, right, *args, **kwargs): decimals = (left.dtypes == "decimal").index for col in decimals: - self.assert_series_equal(left[col], right[col], *args, **kwargs) + BaseDecimal.assert_series_equal(left[col], right[col], *args, **kwargs) left = left.drop(columns=decimals) right = right.drop(columns=decimals) diff --git a/setup.cfg b/setup.cfg index c298aa652824c..9be09ae1076bb 100644 --- a/setup.cfg +++ b/setup.cfg @@ -135,9 +135,6 @@ ignore_errors=True [mypy-pandas.tests.arithmetic.test_datetime64] ignore_errors=True -[mypy-pandas.tests.extension.decimal.test_decimal] -ignore_errors=True - [mypy-pandas.tests.extension.json.test_json] ignore_errors=True From e412b3c7cd23f6e3cc539d0b85163a6502cb34af Mon Sep 17 00:00:00 2001 From: Martin Winkel Date: Sat, 8 Feb 2020 15:22:48 +0100 Subject: [PATCH 2/3] review comments --- pandas/tests/extension/base/base.py | 12 ++++-------- pandas/tests/extension/decimal/test_decimal.py | 8 +++----- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/pandas/tests/extension/base/base.py b/pandas/tests/extension/base/base.py index e542dd2500b17..086808b0d94cc 100644 --- a/pandas/tests/extension/base/base.py +++ b/pandas/tests/extension/base/base.py @@ -3,18 +3,14 @@ class BaseExtensionTests: # can't use staticmethod() as this confuses mypy - @staticmethod - def assert_equal(left, right, **kwargs): + def assert_equal(self, left, right, **kwargs): return tm.assert_equal(left, right, **kwargs) - @staticmethod - def assert_series_equal(left, right, *args, **kwargs): + def assert_series_equal(self, left, right, *args, **kwargs): return tm.assert_series_equal(left, right, *args, **kwargs) - @staticmethod - def assert_frame_equal(left, right, *args, **kwargs): + def assert_frame_equal(self, left, right, *args, **kwargs): return tm.assert_frame_equal(left, right, *args, **kwargs) - @staticmethod - def assert_extension_array_equal(left, right, *args, **kwargs): + def assert_extension_array_equal(self, left, right, *args, **kwargs): return tm.assert_extension_array_equal(left, right, *args, **kwargs) diff --git a/pandas/tests/extension/decimal/test_decimal.py b/pandas/tests/extension/decimal/test_decimal.py index 712482297b8c6..de7c98ab96571 100644 --- a/pandas/tests/extension/decimal/test_decimal.py +++ b/pandas/tests/extension/decimal/test_decimal.py @@ -66,8 +66,7 @@ def data_for_grouping(): class BaseDecimal: - @staticmethod - def assert_series_equal(left, right, *args, **kwargs): + def assert_series_equal(self, left, right, *args, **kwargs): def convert(x): # need to convert array([Decimal(NaN)], dtype='object') to np.NaN # because Series[object].isnan doesn't recognize decimal(NaN) as @@ -89,8 +88,7 @@ def convert(x): tm.assert_series_equal(left_na, right_na) return tm.assert_series_equal(left[~left_na], right[~right_na], *args, **kwargs) - @staticmethod - def assert_frame_equal(left, right, *args, **kwargs): + def assert_frame_equal(self, left, right, *args, **kwargs): # TODO(EA): select_dtypes tm.assert_index_equal( left.columns, @@ -105,7 +103,7 @@ def assert_frame_equal(left, right, *args, **kwargs): decimals = (left.dtypes == "decimal").index for col in decimals: - BaseDecimal.assert_series_equal(left[col], right[col], *args, **kwargs) + self.assert_series_equal(left[col], right[col], *args, **kwargs) left = left.drop(columns=decimals) right = right.drop(columns=decimals) From a764fd22adbc4939704b714b80a61e4ac9a70c2a Mon Sep 17 00:00:00 2001 From: Martin Winkel Date: Sat, 8 Feb 2020 15:33:16 +0100 Subject: [PATCH 3/3] using classmethods now --- pandas/tests/extension/base/base.py | 15 ++++++++++----- pandas/tests/extension/decimal/test_decimal.py | 8 +++++--- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/pandas/tests/extension/base/base.py b/pandas/tests/extension/base/base.py index 086808b0d94cc..97d8e7c66dbdb 100644 --- a/pandas/tests/extension/base/base.py +++ b/pandas/tests/extension/base/base.py @@ -2,15 +2,20 @@ class BaseExtensionTests: - # can't use staticmethod() as this confuses mypy - def assert_equal(self, left, right, **kwargs): + # classmethod and different signature is needed + # to make inheritance compliant with mypy + @classmethod + def assert_equal(cls, left, right, **kwargs): return tm.assert_equal(left, right, **kwargs) - def assert_series_equal(self, left, right, *args, **kwargs): + @classmethod + def assert_series_equal(cls, left, right, *args, **kwargs): return tm.assert_series_equal(left, right, *args, **kwargs) - def assert_frame_equal(self, left, right, *args, **kwargs): + @classmethod + def assert_frame_equal(cls, left, right, *args, **kwargs): return tm.assert_frame_equal(left, right, *args, **kwargs) - def assert_extension_array_equal(self, left, right, *args, **kwargs): + @classmethod + def assert_extension_array_equal(cls, left, right, *args, **kwargs): return tm.assert_extension_array_equal(left, right, *args, **kwargs) diff --git a/pandas/tests/extension/decimal/test_decimal.py b/pandas/tests/extension/decimal/test_decimal.py index de7c98ab96571..bd9b77a2bc419 100644 --- a/pandas/tests/extension/decimal/test_decimal.py +++ b/pandas/tests/extension/decimal/test_decimal.py @@ -66,7 +66,8 @@ def data_for_grouping(): class BaseDecimal: - def assert_series_equal(self, left, right, *args, **kwargs): + @classmethod + def assert_series_equal(cls, left, right, *args, **kwargs): def convert(x): # need to convert array([Decimal(NaN)], dtype='object') to np.NaN # because Series[object].isnan doesn't recognize decimal(NaN) as @@ -88,7 +89,8 @@ def convert(x): tm.assert_series_equal(left_na, right_na) return tm.assert_series_equal(left[~left_na], right[~right_na], *args, **kwargs) - def assert_frame_equal(self, left, right, *args, **kwargs): + @classmethod + def assert_frame_equal(cls, left, right, *args, **kwargs): # TODO(EA): select_dtypes tm.assert_index_equal( left.columns, @@ -103,7 +105,7 @@ def assert_frame_equal(self, left, right, *args, **kwargs): decimals = (left.dtypes == "decimal").index for col in decimals: - self.assert_series_equal(left[col], right[col], *args, **kwargs) + cls.assert_series_equal(left[col], right[col], *args, **kwargs) left = left.drop(columns=decimals) right = right.drop(columns=decimals)