lsst.pex.config g87000a63fb+c77d247713
Loading...
Searching...
No Matches
Public Member Functions | List of all members
lsst.pex.config.configField.ConfigField Class Reference
Inheritance diagram for lsst.pex.config.configField.ConfigField:
lsst.pex.config.config.Field

Public Member Functions

def __init__ (self, doc, dtype, default=None, check=None, deprecated=None)
 
def __get__ (self, instance, owner=None)
 
def __set__ (self, instance, value, at=None, label="assignment")
 
def rename (self, instance)
 
def save (self, outfile, instance)
 
def freeze (self, instance)
 
def toDict (self, instance)
 
def validate (self, instance)
 
- Public Member Functions inherited from lsst.pex.config.config.Field
def __init__ (self, doc, dtype, default=None, check=None, optional=False, deprecated=None)
 
def rename (self, instance)
 
def validate (self, instance)
 
def freeze (self, instance)
 
def save (self, outfile, instance)
 
def toDict (self, instance)
 
def __get__ (self, instance, owner=None, at=None, label="default")
 
def __set__ (self, instance, value, at=None, label='assignment')
 
def __delete__ (self, instance, at=None, label='deletion')
 

Additional Inherited Members

- Public Attributes inherited from lsst.pex.config.config.Field
 dtype
 
 doc
 
 deprecated
 
 default
 
 check
 
 optional
 
 source
 
- Static Public Attributes inherited from lsst.pex.config.config.Field
 supportedTypes = set((str, bool, float, int, complex))
 

Detailed Description

A configuration field (`~lsst.pex.config.Field` subclass) that takes a
`~lsst.pex.config.Config`-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 of ``dtype``. Additionally, to allow for fewer deep-copies,
    assigning an instance of ``ConfigField`` to ``dtype`` itself, is
    considered equivalent to assigning a default-constructed sub-config.
    This means that the argument default can be ``dtype``, as well as an
    instance of ``dtype``.
check : callable, optional
    A callback function that validates the field's value, returning `True`
    if the value is valid, and `False` otherwise.
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
RegistryField

Notes
-----
The behavior of this type of field is much like that of the base `Field`
type.

Assigning to ``ConfigField`` will update all of the fields in the
configuration.

Constructor & Destructor Documentation

◆ __init__()

def lsst.pex.config.configField.ConfigField.__init__ (   self,
  doc,
  dtype,
  default = None,
  check = None,
  deprecated = None 
)

Reimplemented from lsst.pex.config.config.Field.

Member Function Documentation

◆ __get__()

def lsst.pex.config.configField.ConfigField.__get__ (   self,
  instance,
  owner = None 
)
Define how attribute access should occur on the Config instance
This is invoked by the owning config object and should not be called
directly

When the field attribute is accessed on a Config class object, it
returns the field object itself in order to allow inspection of
Config classes.

When the field attribute is access on a config instance, the actual
value described by the field (and held by the Config instance) is
returned.

Reimplemented from lsst.pex.config.config.Field.

◆ __set__()

def lsst.pex.config.configField.ConfigField.__set__ (   self,
  instance,
  value,
  at = None,
  label = "assignment" 
)
Set an attribute on the config instance.

Parameters
----------
instance : `lsst.pex.config.Config`
    The config instance that contains this field.
value : obj
    Value to set on this field.
at : `list` of `lsst.pex.config.callStack.StackFrame`
    The call stack (created by
    `lsst.pex.config.callStack.getCallStack`).
label : `str`, optional
    Event label for the history.

Notes
-----
This method is invoked by the owning `lsst.pex.config.Config` object
and should not be called directly.

Derived `~lsst.pex.config.Field` classes may need to override the
behavior. When overriding ``__set__``, `~lsst.pex.config.Field` authors
should follow the following rules:

- Do not allow modification of frozen configs.
- Validate the new value **before** modifying the field. Except if the
  new value is `None`. `None` is special and no attempt should be made
  to validate it until `lsst.pex.config.Config.validate` is called.
- Do not modify the `~lsst.pex.config.Config` instance to contain
  invalid values.
- If the field is modified, update the history of the
  `lsst.pex.config.field.Field` to reflect the changes.

In order to decrease the need to implement this method in derived
`~lsst.pex.config.Field` types, value validation is performed in the
`lsst.pex.config.Field._validateValue`. If only the validation step
differs in the derived `~lsst.pex.config.Field`, it is simpler to
implement `lsst.pex.config.Field._validateValue` than to reimplement
``__set__``. More complicated behavior, however, may require
reimplementation.

Reimplemented from lsst.pex.config.config.Field.

◆ freeze()

def lsst.pex.config.configField.ConfigField.freeze (   self,
  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.**

Reimplemented from lsst.pex.config.config.Field.

◆ rename()

def lsst.pex.config.configField.ConfigField.rename (   self,
  instance 
)
Rename the field in a `~lsst.pex.config.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 `~lsst.pex.config.Field` instances that
hold subconfigs. `~lsst.pex.config.Fields` that hold subconfigs should
rename each subconfig with the full field name as generated by
`lsst.pex.config.config._joinNamePath`.

Reimplemented from lsst.pex.config.config.Field.

◆ save()

def lsst.pex.config.configField.ConfigField.save (   self,
  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 `~lsst.pex.config.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.

Reimplemented from lsst.pex.config.config.Field.

◆ toDict()

def lsst.pex.config.configField.ConfigField.toDict (   self,
  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
----------
instance : `Config`
    The `Config` that contains this field.

Returns
-------
value : object
    The field's value. See *Notes*.

Notes
-----
This method invoked by the owning `~lsst.pex.config.Config` object and
should not be called directly.

Simple values are passed through. Complex data structures must be
manipulated. For example, a `~lsst.pex.config.Field` holding a
subconfig should, instead of the subconfig object, return a `dict`
where the keys are the field names in the subconfig, and the values are
the field values in the subconfig.

Reimplemented from lsst.pex.config.config.Field.

◆ validate()

def lsst.pex.config.configField.ConfigField.validate (   self,
  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 `None` if the field is not optional.
- Ensures type correctness.
- Ensures that the user-provided ``check`` function is valid.

Most `~lsst.pex.config.Field` subclasses should call
`lsst.pex.config.field.Field.validate` if they re-implement
`~lsst.pex.config.field.Field.validate`.

Reimplemented from lsst.pex.config.config.Field.


The documentation for this class was generated from the following file: