|
| __init__ (self, doc, typemap, default=None, optional=False, multi=False, deprecated=None) |
|
| __class_getitem__ (cls, tuple[type,...]|type|ForwardRef params) |
|
ConfigChoiceField | __get__ (self, None instance, Any owner=None, Any at=None, str label="default") |
|
ConfigInstanceDict | __get__ (self, Config instance, Any owner=None, Any at=None, str label="default") |
|
| __get__ (self, instance, owner=None, at=None, label="default") |
|
None | __set__ (self, Config instance, ConfigInstanceDict|None value, Any at=None, str label="assignment") |
|
| rename (self, instance) |
|
| validate (self, instance) |
|
| toDict (self, instance) |
|
| freeze (self, instance) |
|
| save (self, outfile, instance) |
|
| __deepcopy__ (self, memo) |
|
| __delete__ (self, instance, at=None, label="deletion") |
|
| types (self) |
|
| __contains__ (self, k) |
|
| __len__ (self) |
|
| __iter__ (self) |
|
| __getitem__ (self, k, at=None, label="default") |
|
| __setitem__ (self, k, value, at=None, label="assignment") |
|
| __setattr__ (self, attr, value, at=None, label="assignment") |
|
| __reduce__ (self) |
|
| keys (self) |
|
| values (self) |
|
| items (self) |
|
| __new__ (cls, *args, **kw) |
|
| setDefaults (self) |
|
| update (self, **kw) |
|
| load (self, filename, root="config") |
|
| loadFromStream (self, stream, root="config", filename=None, extraLocals=None) |
|
| loadFromString (self, code, root="config", filename=None, extraLocals=None) |
|
| saveToString (self, skipImports=False) |
|
| saveToStream (self, outfile, root="config", skipImports=False) |
|
| names (self) |
|
| formatHistory (self, name, **kwargs) |
|
| __delattr__ (self, attr, at=None, label="deletion") |
|
| __eq__ (self, other) |
|
| __ne__ (self, other) |
|
| __str__ (self) |
|
| __repr__ (self) |
|
| compare (self, other, shortcut=True, rtol=1e-8, atol=1e-8, output=None) |
|
| __init_subclass__ (cls, **kwargs) |
|
|
| _getOrMake (self, instance, label="default") |
|
| _collectImports (self, instance, imports) |
|
| _compare (self, instance1, instance2, shortcut, rtol, atol, output) |
|
| _setup (self, doc, dtype, default, check, optional, source, deprecated) |
|
| _validateValue (self, value) |
|
| _setSelection (self, value, at=None, label="assignment") |
|
| _getNames (self) |
|
| _setNames (self, value) |
|
| _delNames (self) |
|
| _getName (self) |
|
| _setName (self, value) |
|
| _delName (self) |
|
| _getActive (self) |
|
| _rename (self, fullname) |
|
| _save (self, outfile) |
|
| _fromPython (cls, config_py) |
|
A configuration field (`~lsst.pex.config.Field` subclass) that allows a
user to choose from a set of `~lsst.pex.config.Config` types.
Parameters
----------
doc : `str`
Documentation string for the field.
typemap : `dict`-like
A mapping between keys and `~lsst.pex.config.Config`-types as values.
See *Examples* for details.
default : `str`, optional
The default configuration name.
optional : `bool`, optional
When `False`, `lsst.pex.config.Config.validate` will fail if the
field's value is `None`.
multi : `bool`, optional
If `True`, the field allows multiple selections. In this case, set the
selections by assigning a sequence to the ``names`` attribute of the
field.
If `False`, the field allows only a single selection. In this case,
set the active config by assigning the config's key from the
``typemap`` to the field's ``name`` attribute (see *Examples*).
deprecated : None or `str`, optional
A description of why this Field is deprecated, including removal date.
If not None, the string is appended to the docstring for this Field.
See Also
--------
ChoiceField
ConfigDictField
ConfigField
ConfigurableField
DictField
Field
ListField
RangeField
RegistryField
Notes
-----
``ConfigChoiceField`` instances can allow either single selections or
multiple selections, depending on the ``multi`` parameter. For
single-selection fields, set the selection with the ``name`` attribute.
For multi-selection fields, set the selection though the ``names``
attribute.
This field is validated only against the active selection. If the
``active`` attribute is `None` and the field is not optional, validation
will fail.
When saving a configuration with a ``ConfigChoiceField``, the entire set is
saved, as well as the active selection.
Examples
--------
While the ``typemap`` is shared by all instances of the field, each
instance of the field has its own instance of a particular sub-config type.
For example, ``AaaConfig`` is a config object
>>> from lsst.pex.config import Config, ConfigChoiceField, Field
>>> class AaaConfig(Config):
... somefield = Field("doc", int)
...
The ``MyConfig`` config has a ``ConfigChoiceField`` field called ``choice``
that maps the ``AaaConfig`` type to the ``"AAA"`` key:
>>> TYPEMAP = {"AAA", AaaConfig}
>>> class MyConfig(Config):
... choice = ConfigChoiceField("doc for choice", TYPEMAP)
...
Creating an instance of ``MyConfig``:
>>> instance = MyConfig()
Setting value of the field ``somefield`` on the "AAA" key of the ``choice``
field:
>>> instance.choice['AAA'].somefield = 5
**Selecting the active configuration**
Make the ``"AAA"`` key the active configuration value for the ``choice``
field:
>>> instance.choice = "AAA"
Alternatively, the last line can be written:
>>> instance.choice.name = "AAA"
(If the config instance allows multiple selections, you'd assign a sequence
to the ``names`` attribute instead.)
``ConfigChoiceField`` instances also allow multiple values of the same
type:
>>> TYPEMAP["CCC"] = AaaConfig
>>> TYPEMAP["BBB"] = AaaConfig
None lsst.pex.config.configChoiceField.ConfigChoiceField.__set__ |
( |
| self, |
|
|
Config | instance, |
|
|
ConfigInstanceDict | None | value, |
|
|
Any | at = None, |
|
|
str | label = "assignment" ) |
Set an attribute on the config instance.
Parameters
----------
instance : `lsst.pex.config.Config`
The config instance that contains this field.
value : obj
Value to set on this field.
at : `list` of `~lsst.pex.config.callStack.StackFrame` or `None`,\
optional
The call stack (created by
`lsst.pex.config.callStack.getCallStack`).
label : `str`, optional
Event label for the history.
Notes
-----
This method is invoked by the owning `lsst.pex.config.Config` object
and should not be called directly.
Derived `~lsst.pex.config.Field` classes may need to override the
behavior. When overriding ``__set__``, `~lsst.pex.config.Field` authors
should follow the following rules:
- Do not allow modification of frozen configs.
- Validate the new value **before** modifying the field. Except if the
new value is `None`. `None` is special and no attempt should be made
to validate it until `lsst.pex.config.Config.validate` is called.
- Do not modify the `~lsst.pex.config.Config` instance to contain
invalid values.
- If the field is modified, update the history of the
`lsst.pex.config.field.Field` to reflect the changes.
In order to decrease the need to implement this method in derived
`~lsst.pex.config.Field` types, value validation is performed in the
`lsst.pex.config.Field._validateValue`. If only the validation step
differs in the derived `~lsst.pex.config.Field`, it is simpler to
implement `lsst.pex.config.Field._validateValue` than to reimplement
``__set__``. More complicated behavior, however, may require
reimplementation.
Reimplemented from lsst.pex.config.config.Field.