mirror of
https://github.com/jupyter/notebook.git
synced 2025-01-12 11:45:38 +08:00
ensure range widgets get value that is on a step
This commit is contained in:
parent
a58ca8a0a0
commit
ad6109692d
@ -40,7 +40,7 @@ def _matches(o, pattern):
|
|||||||
return all(isinstance(obj,kind) for obj,kind in comps)
|
return all(isinstance(obj,kind) for obj,kind in comps)
|
||||||
|
|
||||||
|
|
||||||
def _get_min_max_value(min, max, value):
|
def _get_min_max_value(min, max, value=None, step=None):
|
||||||
"""Return min, max, value given input values with possible None."""
|
"""Return min, max, value given input values with possible None."""
|
||||||
if value is None:
|
if value is None:
|
||||||
if not max > min:
|
if not max > min:
|
||||||
@ -60,6 +60,10 @@ def _get_min_max_value(min, max, value):
|
|||||||
raise TypeError('expected a number, got: %r' % value)
|
raise TypeError('expected a number, got: %r' % value)
|
||||||
else:
|
else:
|
||||||
raise ValueError('unable to infer range, value from: ({0}, {1}, {2})'.format(min, max, value))
|
raise ValueError('unable to infer range, value from: ({0}, {1}, {2})'.format(min, max, value))
|
||||||
|
if step:
|
||||||
|
# ensure value is on a step
|
||||||
|
r = (value - min) % step
|
||||||
|
value = value - r
|
||||||
return min, max, value
|
return min, max, value
|
||||||
|
|
||||||
def _widget_abbrev_single_value(o):
|
def _widget_abbrev_single_value(o):
|
||||||
@ -85,19 +89,19 @@ def _widget_abbrev(o):
|
|||||||
"""Make widgets from abbreviations: single values, lists or tuples."""
|
"""Make widgets from abbreviations: single values, lists or tuples."""
|
||||||
if isinstance(o, (list, tuple)):
|
if isinstance(o, (list, tuple)):
|
||||||
if _matches(o, (int, int)):
|
if _matches(o, (int, int)):
|
||||||
min, max, value = _get_min_max_value(o[0], o[1], None)
|
min, max, value = _get_min_max_value(o[0], o[1])
|
||||||
return IntSliderWidget(value=value, min=min, max=max)
|
return IntSliderWidget(value=value, min=min, max=max)
|
||||||
elif _matches(o, (int, int, int)):
|
elif _matches(o, (int, int, int)):
|
||||||
min, max, value = _get_min_max_value(o[0], o[1], None)
|
min, max, value = _get_min_max_value(o[0], o[1], step=o[2])
|
||||||
return IntSliderWidget(value=value, min=min, max=max, step=o[2])
|
return IntSliderWidget(value=value, min=min, max=max, step=o[2])
|
||||||
elif _matches(o, (float, float)):
|
elif _matches(o, (float, float)):
|
||||||
min, max, value = _get_min_max_value(o[0], o[1], None)
|
min, max, value = _get_min_max_value(o[0], o[1])
|
||||||
return FloatSliderWidget(value=value, min=min, max=max)
|
return FloatSliderWidget(value=value, min=min, max=max)
|
||||||
elif _matches(o, (float, float, float)):
|
elif _matches(o, (float, float, float)):
|
||||||
min, max, value = _get_min_max_value(o[0], o[1], None)
|
min, max, value = _get_min_max_value(o[0], o[1], step=o[2])
|
||||||
return FloatSliderWidget(value=value, min=min, max=max, step=o[2])
|
return FloatSliderWidget(value=value, min=min, max=max, step=o[2])
|
||||||
elif _matches(o, (float, float, int)):
|
elif _matches(o, (float, float, int)):
|
||||||
min, max, value = _get_min_max_value(o[0], o[1], None)
|
min, max, value = _get_min_max_value(o[0], o[1], step=o[2])
|
||||||
return FloatSliderWidget(value=value, min=min, max=max, step=float(o[2]))
|
return FloatSliderWidget(value=value, min=min, max=max, step=float(o[2]))
|
||||||
elif all(isinstance(x, string_types) for x in o):
|
elif all(isinstance(x, string_types) for x in o):
|
||||||
return DropdownWidget(value=unicode_type(o[0]),
|
return DropdownWidget(value=unicode_type(o[0]),
|
||||||
|
Loading…
Reference in New Issue
Block a user