DictField#

class lsst.pex.config.DictField(doc, keytype=None, itemtype=None, default=None, optional=False, dictCheck=None, keyCheck=None, itemCheck=None, deprecated=None)#

Bases: Field[Dict[KeyTypeVar, ItemTypeVar]], Generic[KeyTypeVar, ItemTypeVar]

A configuration field (Field subclass) that maps keys and values.

The types of both items and keys are restricted to these builtin types: int, float, complex, bool, and str). All keys share the same type and all values share the same type. Keys can have a different type from values.

Parameters#

docstr

A documentation string that describes the configuration field.

keytype{int, float, complex, bool, str}, optional

The type of the mapping keys. All keys must have this type. Optional if keytype and itemtype are supplied as typing arguments to the class.

itemtype{int, float, complex, bool, str}, optional

Type of the mapping values. Optional if keytype and itemtype are supplied as typing arguments to the class.

defaultdict, optional

The default mapping.

optionalbool, optional

If True, the field doesn’t need to have a set value.

dictCheckcallable

A function that validates the dictionary as a whole.

keyCheckcallable

A function that validates individual mapping keys.

itemCheckcallable

A function that validates individual mapping values.

deprecatedNone 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 ConfigChoiceField ConfigDictField ConfigField ConfigurableField Field ListField RangeField RegistryField

Examples#

This field maps has str keys and int values:

>>> from lsst.pex.config import Config, DictField
>>> class MyConfig(Config):
...     field = DictField(
...         doc="Example string-to-int mapping field.",
...         keytype=str,
...         itemtype=int,
...         default={},
...     )
>>> config = MyConfig()
>>> config.field["myKey"] = 42
>>> print(config.field)
{'myKey': 42}

Methods Summary

toDict(instance)

Convert this field's key-value pairs into a regular dict.

validate(instance)

Validate the field's value (for internal use only).

Methods Documentation

toDict(instance)#

Convert this field’s key-value pairs into a regular dict.

Parameters#

instancelsst.pex.config.Config

The configuration that contains this field.

Returns#

resultdict or None

If this field has a value of None, then this method returns None. Otherwise, this method returns the field’s value as a regular Python dict.

validate(instance)#

Validate the field’s value (for internal use only).

Parameters#

instancelsst.pex.config.Config

The configuration that contains this field.

Raises#

lsst.pex.config.FieldValidationError

Raised if validation fails for this field (see Notes).

Notes#

This method validates values according to the following criteria:

  • A non-optional field is not None.

  • If a value is not None, it must pass the ConfigField.dictCheck user callback function.

Individual key and item checks by the keyCheck and itemCheck user callback functions are done immediately when the value is set on a key. Those checks are not repeated by this method.