22 from .config
import Field, _typeStr
23 from .callStack
import getStackFrame
26 __all__ = [
"RangeField"]
30 """A configuration field (`lsst.pex.config.Field` subclass) that requires 31 the value to be in a specific numeric range. 36 A description of the field. 37 dtype : {`int`-type, `float`-type} 38 The field's data type: either the `int` or `float` type. 39 default : `int` or `float`, optional 40 Default value for the field. 41 optional : `bool`, optional 42 When `False`, `lsst.pex.config.Config.validate` will fail if the 43 field's value is `None`. 44 min : int, float, or `None`, optional 45 Minimum value accepted in the range. If `None`, the range has no 46 lower bound (equivalent to negative infinity). 47 max : `int`, `float`, or None, optional 48 Maximum value accepted in the range. If `None`, the range has no 49 upper bound (equivalent to positive infinity). 50 inclusiveMin : `bool`, optional 51 If `True` (default), the ``min`` value is included in the allowed 53 inclusiveMax : `bool`, optional 54 If `True` (default), the ``max`` value is included in the allowed 70 supportedTypes =
set((int, float))
71 """The set of data types allowed by `RangeField` instances (`set` 72 containing `int` and `float` types). 75 def __init__(self, doc, dtype, default=None, optional=False,
76 min=None, max=None, inclusiveMin=True, inclusiveMax=False):
78 raise ValueError(
"Unsupported RangeField dtype %s" % (_typeStr(dtype)))
80 if min
is None and max
is None:
81 raise ValueError(
"min and max cannot both be None")
83 if min
is not None and max
is not None:
85 raise ValueError(
"min = %s > %s = max" % (min, max))
86 elif min == max
and not (inclusiveMin
and inclusiveMax):
87 raise ValueError(
"min = max = %s and min and max not both inclusive" % (min,))
90 """Minimum value accepted in the range. If `None`, the range has no 91 lower bound (equivalent to negative infinity). 95 """Maximum value accepted in the range. If `None`, the range has no 96 upper bound (equivalent to positive infinity). 100 self.
maxCheck =
lambda x, y:
True if y
is None else x <= y
102 self.
maxCheck =
lambda x, y:
True if y
is None else x < y
104 self.
minCheck =
lambda x, y:
True if y
is None else x >= y
106 self.
minCheck =
lambda x, y:
True if y
is None else x > y
107 self.
_setup(doc, dtype=dtype, default=default, check=
None, optional=optional, source=source)
109 ((
"[" if inclusiveMin
else "("),
110 (
"-inf" if self.
min is None else self.
min),
111 (
"inf" if self.
max is None else self.
max),
112 (
"]" if inclusiveMax
else ")"))
113 """String representation of the field's allowed range (`str`). 118 def _validateValue(self, value):
119 Field._validateValue(self, value)
122 msg =
"%s is outside of valid range %s" % (value, self.
rangeString)
123 raise ValueError(msg)
def __init__(self, doc, dtype, default=None, optional=False, min=None, max=None, inclusiveMin=True, inclusiveMax=False)
daf::base::PropertySet * set
def _setup(self, doc, dtype, default, check, optional, source)
def getStackFrame(relative=0)