Public Member Functions | |
| __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) | |
Public Member Functions inherited from lsst.pex.config.config.Field | |
| __class_getitem__ (cls, tuple[type,...]|type|ForwardRef params) | |
| __init__ (self, doc, dtype=None, default=None, check=None, optional=False, deprecated=None) | |
| Field[FieldTypeVar] | __get__ (self, None instance, Any owner=None, Any at=None, str label="default") |
| FieldTypeVar | __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, FieldTypeVar|None value, Any at=None, str label="assignment") |
| __delete__ (self, instance, at=None, label="deletion") | |
Public Member Functions inherited from lsst.pex.config.configChoiceField.ConfigInstanceDict | |
| __init__ (self, Config config, ConfigChoiceField field) | |
| 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) | |
Public Member Functions inherited from lsst.pex.config.config.Config | |
| __iter__ (self) | |
| keys (self) | |
| values (self) | |
| items (self) | |
| __contains__ (self, name) | |
| __new__ (cls, *args, **kw) | |
| Config | copy (self) |
| __reduce__ (self) | |
| 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) | |
| __setattr__ (self, attr, value, at=None, label="assignment") | |
| __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) | |
Public Member Functions inherited from lsst.pex.config.config.ConfigMeta | |
| __init__ (cls, name, bases, dict_) | |
| __setattr__ (cls, name, value) | |
Public Attributes | |
| typemap = typemap | |
| multi = multi | |
Public Attributes inherited from lsst.pex.config.config.Field | |
| dtype = dtype | |
| doc = doc | |
| deprecated = deprecated | |
| default = default | |
| check = check | |
| optional = optional | |
| source = source | |
Public Attributes inherited from lsst.pex.config.configChoiceField.ConfigInstanceDict | |
| types | |
Static Public Attributes | |
| instanceDictClass = ConfigInstanceDict | |
Static Public Attributes inherited from lsst.pex.config.config.Field | |
| dict | supportedTypes = {str, bool, float, int, complex} |
Protected Member Functions | |
| _getOrMake (self, instance, label="default") | |
| Any | _copy_storage (self, Config old, Config new) |
| _collectImports (self, instance, imports) | |
| _compare (self, instance1, instance2, shortcut, rtol, atol, output) | |
Protected Member Functions inherited from lsst.pex.config.config.Field | |
| _setup (self, doc, dtype, default, check, optional, source, deprecated) | |
| _validateValue (self, value) | |
Protected Member Functions inherited from lsst.pex.config.configChoiceField.ConfigInstanceDict | |
| ConfigInstanceDict | _copy (self, Config config) |
| _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) | |
Protected Member Functions inherited from lsst.pex.config.config.Config | |
| tuple[ResourcePath|None, str] | _filename_to_resource (self, ResourcePathExpression|None filename=None) |
| _loadFromString (self, code, root="config", filename=None, extraLocals=None) | |
| _save (self, outfile) | |
| _fromPython (cls, config_py) | |
Additional Inherited Members | |
Static Protected Member Functions inherited from lsst.pex.config.config.Field | |
| Mapping[str, Any] | _parseTypingArgs (tuple[type,...]|tuple[str,...] params, Mapping[str, Any] kwds) |
Protected Attributes inherited from lsst.pex.config.configChoiceField.ConfigInstanceDict | |
| dict | _dict = {} |
| _selection = None | |
| _config = config | |
| _field = field | |
| _typemap = None | |
Protected Attributes inherited from lsst.pex.config.config.Config | |
| bool | _frozen = True |
| _name = name | |
Protected Attributes inherited from lsst.pex.config.config.ConfigMeta | |
| dict | _fields = {} |
| _source = getStackFrame() | |
Static Protected Attributes inherited from lsst.pex.config.config.Config | |
| dict | _storage [str, Any] |
| dict | _history [str, list[Any]] |
| set | _imports [Any] |
Properties inherited from lsst.pex.config.configChoiceField.ConfigInstanceDict | |
| names = property(_getNames, _setNames, _delNames) | |
| name = property(_getName, _setName, _delName) | |
| active = property(_getActive) | |
Properties inherited from lsst.pex.config.config.Config | |
| history = property(lambda x: x._history) | |
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
| lsst.pex.config.configChoiceField.ConfigChoiceField.__deepcopy__ | ( | self, | |
| memo ) |
Customize deep-copying, because we always want a reference to the original typemap. WARNING: this must be overridden by subclasses if they change the constructor signature!
|
protected |
Call the _collectImports method on all config
objects the field may own, and union them with the supplied imports
set.
Parameters
----------
instance : instance or subclass of `lsst.pex.config.Config`
A config object that has this field defined on it
imports : `set`
Set of python modules that need imported after persistence
Reimplemented from lsst.pex.config.config.Field.
|
protected |
Compare two fields for equality.
Used by `lsst.pex.ConfigChoiceField.compare`.
Parameters
----------
instance1 : `lsst.pex.config.Config`
Left-hand side config instance to compare.
instance2 : `lsst.pex.config.Config`
Right-hand side config instance to compare.
shortcut : `bool`
If `True`, this function returns as soon as an inequality if found.
rtol : `float`
Relative tolerance for floating point comparisons.
atol : `float`
Absolute tolerance for floating point comparisons.
output : `collections.abc.Callable`
A callable that takes a string, used (possibly repeatedly) to
report inequalities.
Returns
-------
isEqual : bool
`True` if the fields are equal, `False` otherwise.
Notes
-----
Only the selected configurations are compared, as the parameters of any
others do not matter.
Floating point comparisons are performed by `numpy.allclose`.
Reimplemented from lsst.pex.config.config.Field.
|
protected |
Copy the storage for this field in the given field into an object suitable for storage in a new copy of that config. Any frozen storage should be unfrozen.
Reimplemented from lsst.pex.config.config.Field.
| lsst.pex.config.configChoiceField.ConfigChoiceField.freeze | ( | self, | |
| instance ) |
Make this field read-only (for internal use only).
Parameters
----------
instance : `lsst.pex.config.Config`
The config instance that contains this field.
Notes
-----
Freezing is only relevant for fields that hold subconfigs. Fields which
hold subconfigs should freeze each subconfig.
**Subclasses should implement this method.**
Reimplemented from lsst.pex.config.config.Field.
| lsst.pex.config.configChoiceField.ConfigChoiceField.rename | ( | self, | |
| instance ) |
Rename the field in a `~lsst.pex.config.Config` (for internal use
only).
Parameters
----------
instance : `lsst.pex.config.Config`
The config instance that contains this field.
Notes
-----
This method is invoked by the `lsst.pex.config.Config` object that
contains this field and should not be called directly.
Renaming is only relevant for `~lsst.pex.config.Field` instances that
hold subconfigs. `~lsst.pex.config.Field`\s that hold subconfigs should
rename each subconfig with the full field name as generated by
`lsst.pex.config.config._joinNamePath`.
Reimplemented from lsst.pex.config.config.Field.
| lsst.pex.config.configChoiceField.ConfigChoiceField.save | ( | self, | |
| outfile, | |||
| instance ) |
Save this field to a file (for internal use only).
Parameters
----------
outfile : `typing.IO`
A writeable file handle.
instance : `~lsst.pex.config.Config`
The `~lsst.pex.config.Config` instance that contains this field.
Notes
-----
This method is invoked by the `~lsst.pex.config.Config` object that
contains this field and should not be called directly.
The output consists of the documentation string
(`lsst.pex.config.Field.doc`) formatted as a Python comment. The second
line is formatted as an assignment: ``{fullname}={value}``.
This output can be executed with Python.
Reimplemented from lsst.pex.config.config.Field.
| lsst.pex.config.configChoiceField.ConfigChoiceField.toDict | ( | self, | |
| instance ) |
Convert the field value so that it can be set as the value of an
item in a `dict` (for internal use only).
Parameters
----------
instance : `~lsst.pex.config.Config`
The `~lsst.pex.config.Config` that contains this field.
Returns
-------
value : `object`
The field's value. See *Notes*.
Notes
-----
This method invoked by the owning `~lsst.pex.config.Config` object and
should not be called directly.
Simple values are passed through. Complex data structures must be
manipulated. For example, a `~lsst.pex.config.Field` holding a
subconfig should, instead of the subconfig object, return a `dict`
where the keys are the field names in the subconfig, and the values are
the field values in the subconfig.
Reimplemented from lsst.pex.config.config.Field.
| lsst.pex.config.configChoiceField.ConfigChoiceField.validate | ( | self, | |
| instance ) |
Validate the field (for internal use only).
Parameters
----------
instance : `lsst.pex.config.Config`
The config instance that contains this field.
Raises
------
lsst.pex.config.FieldValidationError
Raised if verification fails.
Notes
-----
This method provides basic validation:
- Ensures that the value is not `None` if the field is not optional.
- Ensures type correctness.
- Ensures that the user-provided ``check`` function is valid.
Most `~lsst.pex.config.Field` subclasses should call
`lsst.pex.config.Field.validate` if they re-implement
`~lsst.pex.config.Field.validate`.
Reimplemented from lsst.pex.config.config.Field.