|
|
@@ -294,8 +294,9 @@ def validate_maskedarray(v): |
|
|
|
|
|
|
|
|
class validate_nseq_float(object):
|
|
|
- def __init__(self, n=None):
|
|
|
+ def __init__(self, n=None, allow_none=False):
|
|
|
self.n = n
|
|
|
+ self.allow_none = allow_none
|
|
|
|
|
|
def __call__(self, s):
|
|
|
"""return a seq of n floats or raise"""
|
|
|
@@ -309,7 +310,10 @@ def __call__(self, s): |
|
|
raise ValueError(err_msg.format(n=self.n, num=len(s), s=s))
|
|
|
|
|
|
try:
|
|
|
- return [float(val) for val in s]
|
|
|
+ return [float(val)
|
|
|
+ if not self.allow_none or val is not None
|
|
|
+ else val
|
|
|
+ for val in s]
|
|
|
except ValueError:
|
|
|
raise ValueError('Could not convert all entries to floats')
|
|
|
|
|
|
@@ -697,7 +701,7 @@ def validate_hatch(s): |
|
|
raise ValueError("Unknown hatch symbol(s): %s" % list(unknown))
|
|
|
return s
|
|
|
validate_hatchlist = _listify_validator(validate_hatch)
|
|
|
-validate_dashlist = _listify_validator(validate_nseq_float())
|
|
|
+validate_dashlist = _listify_validator(validate_nseq_float(allow_none=True))
|
|
|
|
|
|
_prop_validators = {
|
|
|
'color': _listify_validator(validate_color_for_prop_cycle,
|
|
|
@@ -963,9 +967,10 @@ def _validate_linestyle(ls): |
|
|
'lines.solid_joinstyle': ['round', validate_joinstyle],
|
|
|
'lines.dash_capstyle': ['butt', validate_capstyle],
|
|
|
'lines.solid_capstyle': ['projecting', validate_capstyle],
|
|
|
- 'lines.dashed_pattern': [[3.7, 1.6], validate_nseq_float()],
|
|
|
- 'lines.dashdot_pattern': [[6.4, 1.6, 1, 1.6], validate_nseq_float()],
|
|
|
- 'lines.dotted_pattern': [[1, 1.65], validate_nseq_float()],
|
|
|
+ 'lines.dashed_pattern': [[3.7, 1.6], validate_nseq_float(allow_none=True)],
|
|
|
+ 'lines.dashdot_pattern': [[6.4, 1.6, 1, 1.6],
|
|
|
+ validate_nseq_float(allow_none=True)],
|
|
|
+ 'lines.dotted_pattern': [[1, 1.65], validate_nseq_float(allow_none=True)],
|
|
|
'lines.scale_dashes': [True, validate_bool],
|
|
|
|
|
|
# marker props
|
|
|
|