Module plottools.rcsetup
Additional validators for matplotlib.rcsetup
.
This module is used by a few other modules to provide validators for new rcParams they provide.
Validator functions
_validate_dict()
: validates a dictionary._validate_fontdict()
: validates a dictionary with font properties.
Expand source code
"""Additional validators for `matplotlib.rcsetup`.
This module is used by a few other modules to provide validators for
new rcParams they provide.
## Validator functions
- `_validate_dict()`: validates a dictionary.
- `_validate_fontdict()`: validates a dictionary with font properties.
"""
import matplotlib.rcsetup as mrc
def _validate_dict(s):
""" Validates a dictionary.
"""
d = {}
if isinstance(s, dict):
d = s
else:
if len(s) < 2:
return {}
if s[0] != '{' or s[-1] != '}':
raise ValueError('not a valid dictionary string: ' + s)
ss = []
for i in s[1:-1].strip().split(','):
if ':' in i:
ss.append(i)
elif len(ss) > 0:
ss[-1] += ',' + i
else:
raise ValueError('invalid key-value pair for dict in ' + s)
for i in ss:
kv = i.split(':')
if len(kv) != 2:
raise ValueError('invalid key-value pair for dict in ' + s)
d[kv[0].strip()] = kv[1].strip()
return d
def _validate_fontdict(s):
""" Validates a dictionary with font properties.
"""
d = _validate_dict(s)
for k in d:
if k in ('alpha', 'fontstretch', 'stretch'):
d[k] = mrc.validate_float(d[k])
elif k in ('fontsize', 'size'):
d[k] = mrc.validate_fontsize(d[k])
elif k in ('fontweight', 'weigth'):
d[k] = mrc.validate_fontweight(d[k])
return d