From 6932c6eea09d6d1249fafb10a8e22a04759d4bbc Mon Sep 17 00:00:00 2001 From: tp Date: Sat, 20 Apr 2019 21:37:23 +0100 Subject: [PATCH] CLN: remove compat.add_metaclass --- pandas/compat/__init__.py | 16 ---------------- pandas/io/excel/_base.py | 7 ++----- pandas/tseries/holiday.py | 5 +---- 3 files changed, 3 insertions(+), 25 deletions(-) diff --git a/pandas/compat/__init__.py b/pandas/compat/__init__.py index 332b435d33403..5c256a53b5036 100644 --- a/pandas/compat/__init__.py +++ b/pandas/compat/__init__.py @@ -6,8 +6,6 @@ Key items to import for compatible code: * lists: lrange(), lmap(), lzip() -* add_metaclass(metaclass) - class decorator that recreates class with with the - given metaclass instead (and avoids intermediary class creation) Other items: * platform checker @@ -66,20 +64,6 @@ def set_function_name(f, name, cls): return f -def add_metaclass(metaclass): - """ - Class decorator for creating a class with a metaclass. - """ - def wrapper(cls): - orig_vars = cls.__dict__.copy() - orig_vars.pop('__dict__', None) - orig_vars.pop('__weakref__', None) - for slots_var in orig_vars.get('__slots__', ()): - orig_vars.pop(slots_var) - return metaclass(cls.__name__, cls.__bases__, orig_vars) - return wrapper - - def raise_with_traceback(exc, traceback=Ellipsis): """ Raise exception with existing traceback. diff --git a/pandas/io/excel/_base.py b/pandas/io/excel/_base.py index b99908fd902c8..987dcc2bcdea3 100644 --- a/pandas/io/excel/_base.py +++ b/pandas/io/excel/_base.py @@ -8,7 +8,6 @@ from pandas._config import config import pandas.compat as compat -from pandas.compat import add_metaclass from pandas.errors import EmptyDataError from pandas.util._decorators import Appender, deprecate_kwarg @@ -328,8 +327,7 @@ def read_excel(io, **kwds) -@add_metaclass(abc.ABCMeta) -class _BaseExcelReader: +class _BaseExcelReader(metaclass=abc.ABCMeta): @property @abc.abstractmethod @@ -487,8 +485,7 @@ def parse(self, return output[asheetname] -@add_metaclass(abc.ABCMeta) -class ExcelWriter: +class ExcelWriter(metaclass=abc.ABCMeta): """ Class for writing DataFrame objects into excel sheets, default is to use xlwt for xls, openpyxl for xlsx. See DataFrame.to_excel for typical usage. diff --git a/pandas/tseries/holiday.py b/pandas/tseries/holiday.py index cafe546109b74..af7e5c254996c 100644 --- a/pandas/tseries/holiday.py +++ b/pandas/tseries/holiday.py @@ -5,7 +5,6 @@ from dateutil.relativedelta import FR, MO, SA, SU, TH, TU, WE # noqa import numpy as np -from pandas.compat import add_metaclass from pandas.errors import PerformanceWarning from pandas import DateOffset, Series, Timestamp, date_range @@ -324,12 +323,10 @@ def __new__(cls, clsname, bases, attrs): return calendar_class -@add_metaclass(HolidayCalendarMetaClass) -class AbstractHolidayCalendar: +class AbstractHolidayCalendar(metaclass=HolidayCalendarMetaClass): """ Abstract interface to create holidays following certain rules. """ - __metaclass__ = HolidayCalendarMetaClass rules = [] # type: List[Holiday] start_date = Timestamp(datetime(1970, 1, 1)) end_date = Timestamp(datetime(2030, 12, 31))