diff --git a/IPython/html/widgets/trait_types.py b/IPython/html/widgets/trait_types.py index cef80db..e09caaa 100644 --- a/IPython/html/widgets/trait_types.py +++ b/IPython/html/widgets/trait_types.py @@ -17,13 +17,12 @@ _color_names = ['aliceblue', 'antiquewhite', 'aqua', 'aquamarine', 'azure', 'bei _color_re = re.compile(r'#[a-fA-F0-9]{3}(?:[a-fA-F0-9]{3})?$') -class Color(traitlets._CoercedString): +class Color(traitlets.Unicode): """A string holding a valid HTML color such as 'blue', '#060482', '#A80'""" info_text = 'a valid HTML color' def validate(self, obj, value): - value = self._coerce_str(obj, value) if value.lower() in _color_names or _color_re.match(value): return value - self.error(obj, value) \ No newline at end of file + self.error(obj, value) diff --git a/IPython/utils/traitlets.py b/IPython/utils/traitlets.py index 38a56e4..7d3c5f1 100644 --- a/IPython/utils/traitlets.py +++ b/IPython/utils/traitlets.py @@ -1288,14 +1288,19 @@ class CUnicode(Unicode): self.error(obj, value) -class _CoercedString(TraitType): +class ObjectName(TraitType): + """A string holding a valid object name in this version of Python. + + This does not check that the name exists in any scope.""" + info_text = "a valid object identifier in Python" if py3compat.PY3: # Python 3: - _coerce_str = staticmethod(lambda _,s: s) + coerce_str = staticmethod(lambda _,s: s) + else: # Python 2: - def _coerce_str(self, obj, value): + def coerce_str(self, obj, value): "In Python 2, coerce ascii-only unicode to str" if isinstance(value, unicode): try: @@ -1304,27 +1309,17 @@ class _CoercedString(TraitType): self.error(obj, value) return value - -class ObjectName(_CoercedString): - """A string holding a valid object name in this version of Python. - - This does not check that the name exists in any scope.""" - - info_text = "a valid object identifier in Python" - def validate(self, obj, value): - value = self._coerce_str(obj, value) + value = self.coerce_str(obj, value) if isinstance(value, string_types) and py3compat.isidentifier(value): return value self.error(obj, value) - class DottedObjectName(ObjectName): """A string holding a valid dotted object name in Python, such as A.b3._c""" - def validate(self, obj, value): - value = self._coerce_str(obj, value) + value = self.coerce_str(obj, value) if isinstance(value, string_types) and py3compat.isidentifier(value, dotted=True): return value