ConfigField¶
-
class
lsst.pex.config.ConfigField(doc, dtype, default=None, check=None, deprecated=None)¶ Bases:
lsst.pex.config.FieldA configuration field (
Fieldsubclass) that takes aConfig-type as a value.Parameters: - doc :
str A description of the configuration field.
- dtype :
lsst.pex.config.Config-type The type of the field, which must be a subclass of
lsst.pex.config.Config.- default :
lsst.pex.config.Config, optional If default is
None, the field will default to a default-constructed instance ofdtype. Additionally, to allow for fewer deep-copies, assigning an instance ofConfigFieldtodtypeitself, is considered equivalent to assigning a default-constructed sub-config. This means that the argument default can bedtype, as well as an instance ofdtype.- check : callable, optional
A callback function that validates the field’s value, returning
Trueif the value is valid, andFalseotherwise.- 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,ConfigChoiceField,ConfigDictField,ConfigurableField,DictField,Field,ListField,RangeField,RegistryFieldNotes
The behavior of this type of field is much like that of the base
Fieldtype.Assigning to
ConfigFieldwill update all of the fields in the configuration.Attributes Summary
supportedTypesMethods Summary
freeze(instance)Make this field read-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). Attributes Documentation
-
supportedTypes= {<class 'complex'>, <class 'int'>, <class 'float'>, <class 'bool'>, <class 'str'>}¶
Methods Documentation
-
freeze(instance)¶ Make this field read-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.
- instance :
-
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.Configobject that contains this field and should not be called directly.Renaming is only relevant for
Fieldinstances that hold subconfigs.Fieldsthat hold subconfigs should rename each subconfig with the full field name as generated bylsst.pex.config.config._joinNamePath.- instance :
-
save(outfile, instance)¶ Save this field to a file (for internal use only).
Parameters: Notes
This method is invoked by the
Configobject 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: - value : object
The field’s value. See Notes.
Notes
This method invoked by the owning
Configobject and should not be called directly.Simple values are passed through. Complex data structures must be manipulated. For example, a
Fieldholding a subconfig should, instead of the subconfig object, return adictwhere 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.
Raises: - lsst.pex.config.FieldValidationError
Raised if verification fails.
Notes
This method provides basic validation:
- Ensures that the value is not
Noneif the field is not optional. - Ensures type correctness.
- Ensures that the user-provided
checkfunction is valid.
Most
Fieldsubclasses should calllsst.pex.config.field.Field.validateif they re-implementvalidate.- instance :
- doc :