Skip to content

Commit c21706c

Browse files
author
y-p
committed
BUG: fix broken validators again
PTF
1 parent 53687c5 commit c21706c

File tree

3 files changed

+12
-7
lines changed

3 files changed

+12
-7
lines changed

pandas/core/config.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -701,7 +701,12 @@ def is_instance_factory(_type):
701701
"""
702702

703703
def inner(x):
704-
if not isinstance(x, _type):
704+
if isinstance(_type,(tuple,list)) :
705+
if not any([isinstance(x,t) for t in _type]):
706+
from pandas.core.common import pprint_thing as pp
707+
pp_values = map(pp, _type)
708+
raise ValueError("Value must be an instance of %s" % pp("|".join(pp_values)))
709+
elif not isinstance(x, _type):
705710
raise ValueError("Value must be an instance of '%s'" % str(_type))
706711

707712
return inner

pandas/core/config_init.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -212,10 +212,10 @@ def mpl_style_cb(key):
212212
cf.register_option('max_info_rows', 1690785, pc_max_info_rows_doc,
213213
validator=is_instance_factory((int, type(None))))
214214
cf.register_option('max_rows', 60, pc_max_rows_doc,
215-
validator=is_one_of_factory([type(None), int]))
215+
validator=is_instance_factory([type(None), int]))
216216
cf.register_option('max_colwidth', 50, max_colwidth_doc, validator=is_int)
217217
cf.register_option('max_columns', 20, pc_max_cols_doc,
218-
validator=is_one_of_factory([type(None), int]))
218+
validator=is_instance_factory([type(None), int]))
219219
cf.register_option('max_info_columns', 100, pc_max_info_cols_doc,
220220
validator=is_int)
221221
cf.register_option('colheader_justify', 'right', colheader_justify_doc,
@@ -236,12 +236,12 @@ def mpl_style_cb(key):
236236
cf.register_option('chop_threshold', None, pc_chop_threshold_doc)
237237
cf.register_option('max_seq_items', None, pc_max_seq_items)
238238
cf.register_option('mpl_style', None, pc_mpl_style_doc,
239-
validator=is_one_of_factory([type(None), False, 'default']),
239+
validator=is_one_of_factory([None, False, 'default']),
240240
cb=mpl_style_cb)
241241
cf.register_option('height', 60, pc_height_doc,
242-
validator=is_one_of_factory([type(None), int]))
242+
validator=is_instance_factory([type(None), int]))
243243
cf.register_option('width',80, pc_width_doc,
244-
validator=is_one_of_factory([type(None), int]))
244+
validator=is_instance_factory([type(None), int]))
245245
# redirected to width, make defval identical
246246
cf.register_option('line_width', get_default_val('display.width'), pc_line_width_doc)
247247
cf.deprecate_option('display.line_width',

pandas/tests/test_config.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def test_api(self):
4040
self.assertTrue(hasattr(pd, 'describe_option'))
4141

4242
def test_is_one_of_factory(self):
43-
v = self.cf.is_one_of_factory([type(None),int])
43+
v = self.cf.is_one_of_factory([None,12])
4444

4545
v(12)
4646
v(None)

0 commit comments

Comments
 (0)