ConfigurableField¶
- class lsst.pex.config.ConfigurableField(doc, target, ConfigClass=None, default=None, check=None, deprecated=None)¶
Bases:
Field
[ConfigurableInstance
[FieldTypeVar
]]A configuration field (
Field
subclass) that can be can be retargeted towards a different configurable (often alsst.pipe.base.Task
subclass).The
ConfigurableField
is often used to configure subtasks, which are tasks (Task
) called by a parent task.- Parameters:
- doc
str
A description of the configuration field.
- targetconfigurable class
The configurable target. Configurables have a
ConfigClass
attribute. Within the task framework, configurables arelsst.pipe.base.Task
subclasses)- ConfigClass
lsst.pex.config.Config
-type, optional The subclass of
lsst.pex.config.Config
expected as the configuration class of thetarget
. IfConfigClass
is unset thentarget.ConfigClass
is used.- default
ConfigClass
-type, optional The default configuration class. Normally this parameter is not set, and defaults to
ConfigClass
(ortarget.ConfigClass
).- checkcallable, optional
Callable that takes the field’s value (the
target
) as its only positional argument, and returnsTrue
if thetarget
is valid (andFalse
otherwise).- 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.
- doc
See also
Notes
You can use the
ConfigurableInstance.apply
method to construct a fully-configured configurable.Attributes Summary
Supported data types for field values (
set
of types).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 the field value so that it can be set as the value of an item in a
dict
(for internal use only).validate
(instance)Validate the field (for internal use only).
validateTarget
(target, ConfigClass)Validate the target and configuration class.
Attributes Documentation
- supportedTypes = {<class 'str'>, <class 'bool'>, <class 'int'>, <class 'complex'>, <class 'float'>}¶
Supported data types for field values (
set
of types).
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.
- instance
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.
- instance
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.Field
s that hold subconfigs should rename each subconfig with the full field name as generated bylsst.pex.config.config._joinNamePath
.
- save(outfile, instance)¶
Save this field to a file (for internal use only).
- Parameters:
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 the field value so that it can be set as the value of an item in a
dict
(for internal use only).- Parameters:
- Returns:
- valueobject
The field’s value. See Notes.
Notes
This method invoked by the owning
Config
object and should not be called directly.Simple values are passed through. Complex data structures must be manipulated. For example, a
Field
holding a subconfig should, instead of the subconfig object, return adict
where the keys are the field names in the subconfig, and the values are the field values in the subconfig.
- validate(instance)¶
Validate the field (for internal use only).
- Parameters:
- instance
lsst.pex.config.Config
The config instance that contains this field.
- instance
- 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
Field
subclasses should calllsst.pex.config.Field.validate
if they re-implementvalidate
.
- validateTarget(target, ConfigClass)¶
Validate the target and configuration class.
- Parameters:
- target
The configurable being verified.
- ConfigClass
lsst.pex.config.Config
-type orNone
The configuration class associated with the
target
. This can beNone
iftarget
has aConfigClass
attribute.
- Raises:
- AttributeError
Raised if
ConfigClass
isNone
andtarget
does not have aConfigClass
attribute.- TypeError
Raised if
ConfigClass
is not aConfig
subclass.- ValueError
Raised if:
target
is not callable (callables have a__call__
method).target
is not startically defined (does not have__module__
or__name__
attributes).