LSSTApplications
18.1.0
LSSTDataManagementBasePackage
stack
Linux64
pex_config
18.1.0
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
__all__ = [
"ChoiceField"
]
23
24
from
.config
import
Field, _typeStr
25
from
.callStack
import
getStackFrame
26
27
28
class
ChoiceField
(
Field
):
29
"""A configuration field (`~lsst.pex.config.Field` subclass) that allows a
30
user to select from a predefined set of values.
31
32
Use ``ChoiceField`` when a configuration can only take one of a predefined
33
set of values. Each choice must be of the same type.
34
35
Parameters
36
----------
37
doc : `str`
38
Documentation string that describes the configuration field.
39
dtype : class
40
The type of the field's choices. For example, `str` or `int`.
41
allowed : `dict`
42
The allowed values. Keys are the allowed choices (of ``dtype``-type).
43
Values are descriptions (`str`-type) of each choice.
44
default : ``dtype``-type, optional
45
The default value, which is of type ``dtype`` and one of the allowed
46
choices.
47
optional : `bool`, optional
48
If `True`, this configuration field is *optional*. Default is `True`.
49
50
See also
51
--------
52
ConfigChoiceField
53
ConfigDictField
54
ConfigField
55
ConfigurableField
56
DictField
57
Field
58
ListField
59
RangeField
60
RegistryField
61
"""
62
def
__init__
(self, doc, dtype, allowed, default=None, optional=True):
63
self.
allowed
= dict(allowed)
64
if
optional
and
None
not
in
self.
allowed
:
65
self.
allowed
[
None
] =
"Field is optional"
66
67
if
len(self.
allowed
) == 0:
68
raise
ValueError(
"ChoiceFields must allow at least one choice"
)
69
70
Field.__init__(self, doc=doc, dtype=dtype, default=default,
71
check=
None
, optional=optional)
72
73
self.
__doc__
+=
"\n\nAllowed values:\n\n"
74
for
choice, choiceDoc
in
self.
allowed
.
items
():
75
if
choice
is
not
None
and
not
isinstance(choice, dtype):
76
raise
ValueError(
"ChoiceField's allowed choice %s is of incorrect type %s. Expected %s"
%
77
(choice, _typeStr(choice), _typeStr(dtype)))
78
self.
__doc__
+=
"%s\n %s\n"
% (
'``{0!r}``'
.
format
(
str
(choice)), choiceDoc)
79
80
self.
source
=
getStackFrame
()
81
82
def
_validateValue(self, value):
83
Field._validateValue(self, value)
84
if
value
not
in
self.
allowed
:
85
msg =
"Value {} is not allowed.\n"
\
86
"\tAllowed values: [{}]"
.
format
(value,
", "
.join(
str
(key)
for
key
in
self.
allowed
))
87
raise
ValueError(msg)
lsst.pex.config.choiceField.ChoiceField.source
source
Definition:
choiceField.py:80
lsst.pex.config.choiceField.ChoiceField.allowed
allowed
Definition:
choiceField.py:63
lsst.synpipe.compareModel.str
str
Definition:
compareModel.py:112
lsst.pex.config.config.Field
Definition:
config.py:188
lsst.pex.config.callStack.getStackFrame
def getStackFrame(relative=0)
Definition:
callStack.py:52
lsst.pex.config.choiceField.ChoiceField
Definition:
choiceField.py:28
lsst.pex.config.history.format
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)
Definition:
history.py:168
lsst.pex.config.config.Field.__doc__
__doc__
Definition:
config.py:284
items
std::vector< SchemaItem< Flag > > * items
Definition:
BaseColumnView.cc:142
lsst.pex.config.choiceField.ChoiceField.__init__
def __init__(self, doc, dtype, allowed, default=None, optional=True)
Definition:
choiceField.py:62
Generated on Thu Aug 8 2019 20:20:23 for LSSTApplications by
1.8.13