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
choiceField.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
__all__ = [
"ChoiceField"
]
27
28
class
ChoiceField
(Field):
29
"""
30
Defines a Config Field which allows only a set of values
31
All allowed must be of the same type.
32
Allowed values should be provided as a dict of value, doc string pairs
33
34
"""
35
def
__init__
(self, doc, dtype, allowed, default=None, optional=True):
36
self.
allowed
= dict(allowed)
37
if
optional
and
None
not
in
self.
allowed
:
38
self.
allowed
[
None
]=
"Field is optional"
39
40
if
len(self.
allowed
)==0:
41
raise
ValueError(
"ChoiceFields must allow at least one choice"
)
42
43
doc +=
"\nAllowed values:\n"
44
for
choice, choiceDoc
in
self.allowed.iteritems():
45
if
choice
is
not
None
and
not
isinstance(choice, dtype):
46
raise
ValueError(
"ChoiceField's allowed choice %s is of incorrect type %s. Expected %s"
%\
47
(choice,
_typeStr
(choice),
_typeStr
(dtype)))
48
doc +=
"\t%s\t%s\n"
%(str(choice), choiceDoc)
49
50
Field.__init__(self, doc=doc, dtype=dtype, default=default,
51
check=
None
, optional=optional)
52
self.
source
= traceback.extract_stack(limit=2)[0]
53
54
def
_validateValue
(self, value):
55
Field._validateValue(self, value)
56
if
value
not
in
self.
allowed
:
57
allowedStr =
"{%s"
%self.allowed.keys()[0]
58
for
x
in
self.
allowed
:
59
allowedStr +=
", %s"
%x
60
allowedStr+=
"}"
61
msg =
"Value %s is not allowed.\n\tAllowed values: %s"
%\
62
(value, allowedStr)
63
raise
ValueError(msg)
lsst::pex.config.choiceField.ChoiceField._validateValue
def _validateValue
Definition:
choiceField.py:54
lsst::pex.config.config._typeStr
def _typeStr
Definition:
config.py:60
lsst::pex.config.choiceField.ChoiceField.source
source
Definition:
choiceField.py:52
lsst::pex.config.choiceField.ChoiceField
Definition:
choiceField.py:28
lsst::pex.config.choiceField.ChoiceField.allowed
allowed
Definition:
choiceField.py:36
lsst::pex.config.choiceField.ChoiceField.__init__
def __init__
Definition:
choiceField.py:35
Generated on Wed Sep 16 2015 13:35:34 for LSSTApplications by
1.8.5