LSSTApplications
10.0-2-g4f67435,11.0.rc2+1,11.0.rc2+12,11.0.rc2+3,11.0.rc2+4,11.0.rc2+5,11.0.rc2+6,11.0.rc2+7,11.0.rc2+8
LSSTDataManagementBasePackage
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
home
lsstsw
stack
Linux64
pex_config
11.0.rc2+6
python
lsst
pex
config
rangeField.py
Go to the documentation of this file.
1
#
2
# LSST Data Management System
3
# Copyright 2008, 2009, 2010 LSST Corporation.
4
#
5
# This product includes software developed by the
6
# LSST Project (http://www.lsst.org/).
7
#
8
# This program is free software: you can redistribute it and/or modify
9
# it under the terms of the GNU General Public License as published by
10
# the Free Software Foundation, either version 3 of the License, or
11
# (at your option) any later version.
12
#
13
# This program is distributed in the hope that it will be useful,
14
# but WITHOUT ANY WARRANTY; without even the implied warranty of
15
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
# GNU General Public License for more details.
17
#
18
# You should have received a copy of the LSST License Statement and
19
# the GNU General Public License along with this program. If not,
20
# see <http://www.lsstcorp.org/LegalNotices/>.
21
#
22
import
traceback
23
24
from
.config
import
Field, _typeStr
25
26
27
__all__ = [
"RangeField"
]
28
29
class
RangeField
(Field):
30
"""
31
Defines a Config Field which allows only a range of values.
32
The range is defined by providing min and/or max values.
33
If min or max is None, the range will be open in that direction
34
If inclusive[Min|Max] is True the range will include the [min|max] value
35
36
"""
37
38
supportedTypes=(int, float)
39
40
def
__init__
(self, doc, dtype, default=None, optional=False,
41
min=
None
, max=
None
, inclusiveMin=
True
, inclusiveMax=
False
):
42
if
dtype
not
in
self.
supportedTypes
:
43
raise
ValueError(
"Unsupported RangeField dtype %s"
%(
_typeStr
(dtype)))
44
source = traceback.extract_stack(limit=2)[0]
45
if
min
is
None
and
max
is
None
:
46
raise
ValueError(
"min and max cannot both be None"
)
47
48
if
min
is
not
None
and
max
is
not
None
and
min > max:
49
swap
(min, max)
50
self.
min
= min
51
self.
max
= max
52
53
self.
rangeString
=
"%s%s,%s%s"
% \
54
((
"["
if
inclusiveMin
else
"("
),
55
(
"-inf"
if
self.
min
is
None
else
self.
min
),
56
(
"inf"
if
self.
max
is
None
else
self.
max
),
57
(
"]"
if
inclusiveMax
else
")"
))
58
doc +=
"\n\tValid Range = "
+ self.
rangeString
59
if
inclusiveMax:
60
self.
maxCheck
=
lambda
x, y:
True
if
y
is
None
else
x <= y
61
else
:
62
self.
maxCheck
=
lambda
x, y:
True
if
y
is
None
else
x < y
63
if
inclusiveMin:
64
self.
minCheck
=
lambda
x, y:
True
if
y
is
None
else
x >= y
65
else
:
66
self.
minCheck
=
lambda
x, y:
True
if
y
is
None
else
x > y
67
self._setup( doc, dtype=dtype, default=default, check=
None
, optional=optional, source=source)
68
69
def
_validateValue
(self, value):
70
Field._validateValue(self, value)
71
if
not
self.
minCheck
(value, self.
min
)
or
\
72
not
self.
maxCheck
(value, self.
max
):
73
msg =
"%s is outside of valid range %s"
%(value, self.
rangeString
)
74
raise
ValueError(msg)
lsst::pex.config.rangeField.RangeField.supportedTypes
tuple supportedTypes
Definition:
rangeField.py:38
lsst.afw.image::swap
void swap(ImageBase< PixelT > &a, ImageBase< PixelT > &b)
Definition:
Image.cc:291
lsst::pex.config.config._typeStr
def _typeStr
Definition:
config.py:60
lsst::pex.config.rangeField.RangeField.max
max
Definition:
rangeField.py:51
lsst::pex.config.rangeField.RangeField
Definition:
rangeField.py:29
lsst::pex.config.rangeField.RangeField.rangeString
rangeString
Definition:
rangeField.py:53
lsst::pex.config.rangeField.RangeField._validateValue
def _validateValue
Definition:
rangeField.py:69
lsst::pex.config.rangeField.RangeField.maxCheck
maxCheck
Definition:
rangeField.py:60
lsst::pex.config.rangeField.RangeField.min
min
Definition:
rangeField.py:50
lsst::pex.config.rangeField.RangeField.__init__
def __init__
Definition:
rangeField.py:41
lsst::pex.config.rangeField.RangeField.minCheck
minCheck
Definition:
rangeField.py:64
Generated on Wed Sep 16 2015 13:35:34 for LSSTApplications by
1.8.5