ConfigDictField

class lsst.pex.config.ConfigDictField(doc, keytype, itemtype, default=None, optional=False, dictCheck=None, itemCheck=None)

Bases: lsst.pex.config.DictField

A configuration field (Field subclass) that is a mapping of keys to Config instances.

ConfigDictField behaves like DictField except that the itemtype must be a Config subclass.

Parameters:
doc : str

A description of the configuration field.

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

The type of the mapping keys. All keys must have this type.

itemtype : lsst.pex.config.Config-type

The type of the values in the mapping. This must be Config or a subclass.

default : optional

Unknown.

default : itemtype-dtype, optional

Default value of this field.

optional : bool, optional

If True, this configuration Field is optional. Default is True.

Raises:
ValueError

Raised if the inputs are invalid:

  • keytype or itemtype arguments are not supported types (members of ConfigDictField.supportedTypes.
  • dictCheck or itemCheck is not a callable function.

Notes

You can use ConfigDictField to create name-to-config mappings. One use case is for configuring mappings for dataset types in a Butler. In this case, the dataset type names are arbitrary and user-selected while the mapping configurations are known and fixed.

Attributes Summary

supportedTypes

Methods Summary

freeze(instance) Make this field read-only (for internal use only).
rename(instance) Rename the field in a Config (for internal use only).
save(outfile, instance) Save this field to a file (for internal use only).
toDict(instance) Convert this field’s key-value pairs into a regular dict.
validate(instance) Validate the field’s value (for internal use only).

Attributes Documentation

supportedTypes = {<class 'int'>, <class 'str'>, <class 'bool'>, <class 'float'>, <class 'complex'>}

Methods Documentation

freeze(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.

rename(instance)

Rename the field in a 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 Field instances that hold subconfigs. Fields that hold subconfigs should rename each subconfig with the full field name as generated by lsst.pex.config.config._joinNamePath.

save(outfile, instance)

Save this field to a file (for internal use only).

Parameters:
outfile : file-like object

A writeable field handle.

instance : Config

The Config instance that contains this field.

Notes

This method is invoked by the 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.

toDict(instance)

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

Parameters:
instance : lsst.pex.config.Config

The configuration that contains this field.

Returns:
result : dict 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:
instance : lsst.pex.config.Config

The configuration that contains this field.

Returns:
isValid : bool

True is returned if the field passes validation criteria (see Notes). Otherwise False.

Notes

This method validates values according to the following criteria:

  • A non-optional field is not None.
  • If a value is not None, is must pass the ConfigField.dictCheck user callback functon.

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