Source code for yt_idv.traitlets_support
import matplotlib.font_manager
import numpy as np
import traitlets
[docs]class YTPositionTrait(traitlets.TraitType):
default_value = None
info_text = "A position in code_length"
[docs] def validate(self, obj, value):
if isinstance(value, (tuple, list)):
value = np.array(value)
if hasattr(value, "in_units"):
value = value.in_units("unitary").d
if not isinstance(value, np.ndarray):
self.error(obj, value)
return value.astype("f4")
[docs]def ndarray_shape(*dimensions):
# http://traittypes.readthedocs.io/en/latest/api_documentation.html
def validator(trait, value):
if value.shape != dimensions:
raise traitlets.TraitError(
"Expected an of shape %s and got and array with shape %s"
% (dimensions, value.shape)
)
else:
return value
return validator
[docs]def ndarray_ro():
def validator(trait, value):
if value.flags["WRITEABLE"]:
value = value.copy()
value.flags["WRITEABLE"] = False
return value
return validator
[docs]class FontTrait(traitlets.TraitType):
info_text = "A font instance from matplotlib"
[docs] def validate(self, obj, value):
if isinstance(value, str):
try:
font_fn = matplotlib.font_manager.findfont(value)
value = matplotlib.font_manager.get_font(font_fn)
except FileNotFoundError:
self.error(obj, value)
return value