diff --git a/pandas/io/excel.py b/pandas/io/excel.py index e2db6643c5ef0..e604cd0f46fa3 100644 --- a/pandas/io/excel.py +++ b/pandas/io/excel.py @@ -16,7 +16,7 @@ import numpy as np import pandas._libs.json as json -from pandas.util._decorators import Appender, deprecate_kwarg +from pandas.util._decorators import Appender, deprecate_kwarg, validate_kwarg from pandas.errors import EmptyDataError import pandas.compat as compat @@ -279,7 +279,7 @@ def get_writer(engine_name): raise ValueError("No Excel writer '{engine}'" .format(engine=engine_name)) - +@validate_kwarg() @Appender(_read_excel_doc) @deprecate_kwarg("parse_cols", "usecols") @deprecate_kwarg("skip_footer", "skipfooter") diff --git a/pandas/util/_decorators.py b/pandas/util/_decorators.py index 82cd44113cb25..0267c9c21d6ae 100644 --- a/pandas/util/_decorators.py +++ b/pandas/util/_decorators.py @@ -5,6 +5,21 @@ from textwrap import dedent, wrap from functools import wraps, update_wrapper, WRAPPER_ASSIGNMENTS +def validate_kwarg(): + def _validate_kwarg(func): + @wraps(func) + def wrapper(*args, **kwargs): + expected_keys=set(['io', 'sheet_name','header', 'names', 'index_col', 'usecols', 'squeeze', 'dtype', 'engine', + 'converters', 'true_values', 'false_values', 'skiprows', 'nrows', 'na_values', 'verbose', 'parse_dates', + 'date_parser', 'thousands', 'comment', 'skipfooter', 'convert_float']) + + if set(kwargs.keys()).difference(expected_keys): + raise ValueError('invalid parameter found') + + return func(*args, **kwargs) + return wrapper + return _validate_kwarg + def deprecate(name, alternative, version, alt_name=None, klass=None, stacklevel=2, msg=None):