Field¶
- 
class lsst.pex.config.Field(doc, dtype=None, default=None, check=None, optional=False, deprecated=None)¶
- Bases: - typing.Generic- A field in a - Configthat supports- int,- float,- complex,- bool, and- strdata types.- Parameters: - doc : str
- A description of the field for users. 
- dtype : type, optional
- The field’s data type. - Fieldonly supports basic data types:- int,- float,- complex,- bool, and- str. See- Field.supportedTypes. Optional if supplied as a typing argument to the class.
- default : object, optional
- The field’s default value. 
- check : callable, optional
- A callable that is called with the field’s value. This callable should return - Falseif the value is invalid. More complex inter-field validation can be written as part of the- lsst.pex.config.Config.validatemethod.
- optional : bool, optional
- This sets whether the field is considered optional, and therefore doesn’t need to be set by the user. When - False,- lsst.pex.config.Config.validatefails if the field’s value is- None.
- 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. 
 - Raises: - ValueError
- Raised when the - dtypeparameter is not one of the supported types (see- Field.supportedTypes).
 - See also - Notes - Fieldinstances (including those of any subclass of- Field) are used as class attributes of- Configsubclasses (see the example, below).- Fieldattributes work like the- propertyattributes of classes that implement custom setters and getters.- Fieldattributes belong to the class, but operate on the instance. Formally speaking,- Fieldattributes are descriptors.- When you access a - Fieldattribute on a- Configinstance, you don’t get the- Fieldinstance itself. Instead, you get the value of that field, which might be a simple type (- int,- float,- str,- bool) or a custom container type (like a- lsst.pex.config.List) depending on the field’s type. See the example, below.- Fields can be annotated with a type similar to other python classes (python specification here ). See the name field in the Config example below for an example of this. Unlike most other uses in python, this has an effect at type checking and runtime. If the type is specified with a class annotation, it will be used as the value of the - dtypein the- Fieldand there is no need to specify it as an argument during instantiation.- There are Some notes on dtype through type annotation syntax. Type annotation syntax supports supplying the argument as a string of a type name. i.e. “float”, but this cannot be used to resolve circular references. Type annotation syntax can be used on an identifier in addition to Class assignment i.e. - variable: Field[str] = Config.someFieldvs- someField = Field[str](doc="some doc"). However, this syntax is only useful for annotating the type of the identifier (i.e. variable in previous example) and does nothing for assigning the dtype of the ``Field.- Examples - Instances of - Fieldshould be used as class attributes of- lsst.pex.config.Configsubclasses:- >>> from lsst.pex.config import Config, Field >>> class Example(Config): ... myInt = Field("An integer field.", int, default=0) ... name = Field[str](doc="A string Field") ... >>> print(config.myInt) 0 >>> config.myInt = 5 >>> print(config.myInt) 5 - Attributes Summary - supportedTypes- Supported data types for field values ( - setof 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). - Attributes Documentation - 
supportedTypes= {<class 'int'>, <class 'float'>, <class 'complex'>, <class 'str'>, <class 'bool'>}¶
- Supported data types for field values ( - setof 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. 
 - 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 by- lsst.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 a- dictwhere 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 call- lsst.pex.config.field.Field.validateif they re-implement- validate.
- instance : 
 
- doc :