LSSTApplications
20.0.0
LSSTDataManagementBasePackage
stack
1a1d771
Linux64
pex_config
20.0.0
python
lsst
pex
config
choiceField.py
Go to the documentation of this file.
1
# This file is part of pex_config.
2
#
3
# Developed for the LSST Data Management System.
4
# This product includes software developed by the LSST Project
5
# (http://www.lsst.org).
6
# See the COPYRIGHT file at the top-level directory of this distribution
7
# for details of code ownership.
8
#
9
# This software is dual licensed under the GNU General Public License and also
10
# under a 3-clause BSD license. Recipients may choose which of these licenses
11
# to use; please see the files gpl-3.0.txt and/or bsd_license.txt,
12
# respectively. If you choose the GPL option then the following text applies
13
# (but note that there is still no warranty even if you opt for BSD instead):
14
#
15
# This program is free software: you can redistribute it and/or modify
16
# it under the terms of the GNU General Public License as published by
17
# the Free Software Foundation, either version 3 of the License, or
18
# (at your option) any later version.
19
#
20
# This program is distributed in the hope that it will be useful,
21
# but WITHOUT ANY WARRANTY; without even the implied warranty of
22
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23
# GNU General Public License for more details.
24
#
25
# You should have received a copy of the GNU General Public License
26
# along with this program. If not, see <http://www.gnu.org/licenses/>.
27
28
__all__ = [
"ChoiceField"
]
29
30
from
.config
import
Field, _typeStr
31
from
.callStack
import
getStackFrame
32
33
34
class
ChoiceField
(
Field
):
35
"""A configuration field (`~lsst.pex.config.Field` subclass) that allows a
36
user to select from a predefined set of values.
37
38
Use ``ChoiceField`` when a configuration can only take one of a predefined
39
set of values. Each choice must be of the same type.
40
41
Parameters
42
----------
43
doc : `str`
44
Documentation string that describes the configuration field.
45
dtype : class
46
The type of the field's choices. For example, `str` or `int`.
47
allowed : `dict`
48
The allowed values. Keys are the allowed choices (of ``dtype``-type).
49
Values are descriptions (`str`-type) of each choice.
50
default : ``dtype``-type, optional
51
The default value, which is of type ``dtype`` and one of the allowed
52
choices.
53
optional : `bool`, optional
54
If `True`, this configuration field is *optional*. Default is `True`.
55
deprecated : None or `str`, optional
56
A description of why this Field is deprecated, including removal date.
57
If not None, the string is appended to the docstring for this Field.
58
59
See also
60
--------
61
ConfigChoiceField
62
ConfigDictField
63
ConfigField
64
ConfigurableField
65
DictField
66
Field
67
ListField
68
RangeField
69
RegistryField
70
"""
71
def
__init__
(self, doc, dtype, allowed, default=None, optional=True, deprecated=None):
72
self.
allowed
= dict(allowed)
73
if
optional
and
None
not
in
self.
allowed
:
74
self.
allowed
[
None
] =
"Field is optional"
75
76
if
len(self.
allowed
) == 0:
77
raise
ValueError(
"ChoiceFields must allow at least one choice"
)
78
79
Field.__init__(self, doc=doc, dtype=dtype, default=default,
80
check=
None
, optional=optional, deprecated=deprecated)
81
82
self.
__doc__
+=
"\n\nAllowed values:\n\n"
83
for
choice, choiceDoc
in
self.
allowed
.
items
():
84
if
choice
is
not
None
and
not
isinstance(choice, dtype):
85
raise
ValueError(
"ChoiceField's allowed choice %s is of incorrect type %s. Expected %s"
%
86
(choice, _typeStr(choice), _typeStr(dtype)))
87
self.
__doc__
+=
"%s\n %s\n"
% (
'``{0!r}``'
.
format
(str(choice)), choiceDoc)
88
89
self.
source
=
getStackFrame
()
90
91
def
_validateValue(self, value):
92
Field._validateValue(self, value)
93
if
value
not
in
self.
allowed
:
94
msg =
"Value {} is not allowed.\n"
\
95
"\tAllowed values: [{}]"
.
format
(value,
", "
.join(str(key)
for
key
in
self.
allowed
))
96
raise
ValueError(msg)
pex.config.choiceField.ChoiceField.allowed
allowed
Definition:
choiceField.py:72
pex.config.callStack.getStackFrame
def getStackFrame(relative=0)
Definition:
callStack.py:58
pex.config.history.format
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)
Definition:
history.py:174
pex.config.choiceField.ChoiceField
Definition:
choiceField.py:34
pex.config.choiceField.ChoiceField.__init__
def __init__(self, doc, dtype, allowed, default=None, optional=True, deprecated=None)
Definition:
choiceField.py:71
items
std::vector< SchemaItem< Flag > > * items
Definition:
BaseColumnView.cc:142
pex.config.choiceField.ChoiceField.source
source
Definition:
choiceField.py:89
pex.config.config.Field.__doc__
__doc__
Definition:
config.py:302
pex.config.config.Field
Definition:
config.py:195
Generated on Wed Jun 24 2020 18:10:11 for LSSTApplications by
1.8.18