LSST Applications 27.0.0,g0265f82a02+469cd937ee,g02d81e74bb+21ad69e7e1,g1470d8bcf6+cbe83ee85a,g2079a07aa2+e67c6346a6,g212a7c68fe+04a9158687,g2305ad1205+94392ce272,g295015adf3+81dd352a9d,g2bbee38e9b+469cd937ee,g337abbeb29+469cd937ee,g3939d97d7f+72a9f7b576,g487adcacf7+71499e7cba,g50ff169b8f+5929b3527e,g52b1c1532d+a6fc98d2e7,g591dd9f2cf+df404f777f,g5a732f18d5+be83d3ecdb,g64a986408d+21ad69e7e1,g858d7b2824+21ad69e7e1,g8a8a8dda67+a6fc98d2e7,g99cad8db69+f62e5b0af5,g9ddcbc5298+d4bad12328,ga1e77700b3+9c366c4306,ga8c6da7877+71e4819109,gb0e22166c9+25ba2f69a1,gb6a65358fc+469cd937ee,gbb8dafda3b+69d3c0e320,gc07e1c2157+a98bf949bb,gc120e1dc64+615ec43309,gc28159a63d+469cd937ee,gcf0d15dbbd+72a9f7b576,gdaeeff99f8+a38ce5ea23,ge6526c86ff+3a7c1ac5f1,ge79ae78c31+469cd937ee,gee10cc3b42+a6fc98d2e7,gf1cff7945b+21ad69e7e1,gfbcc870c63+9a11dc8c8f
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
lsst.pex.config.configurableActions._configurableActionField.ConfigurableActionField Class Reference
Inheritance diagram for lsst.pex.config.configurableActions._configurableActionField.ConfigurableActionField:
lsst.pex.config.configField.ConfigField lsst.pex.config.config.Field

Public Member Functions

None __set__ (self, Config instance, ActionTypeVar|type[ActionTypeVar] value, Any at=None, str label="assignment")
 
ConfigurableActionField[ActionTypeVar] __get__ (self, None instance, Any owner=None, Any at=None, str label="default")
 
Any __get__ (self, Config instance, Any owner=None, Any at=None, str label="default")
 
 __get__ (self, instance, owner=None, at=None, label="default")
 
 save (self, outfile, instance)
 
 __init__ (self, doc, dtype=ConfigurableAction, default=None, check=None, deprecated=None)
 

Public Attributes

 dtype
 

Static Public Attributes

str name
 

Detailed Description

`ConfigurableActionField` is a subclass of `~lsst.pex.config.Field` that
allows a single `ConfigurableAction` (or a subclass) to be assigned to it.
The `ConfigurableAction` is then accessed through this field for further
configuration.

Any configuration of this field that is done prior to having a new
`ConfigurableAction` assigned to it is forgotten.

Parameters
----------
doc : `str`
    Documentation string.
dtype : `ConfigurableAction`
    Data type to use for this field.
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 : `~collections.abc.Callable`, optional
    A callback function that validates the field's value, returning `True`
    if the value is valid, and `False` otherwise.
deprecated : `bool` or `None`, 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.

Definition at line 34 of file _configurableActionField.py.

Constructor & Destructor Documentation

◆ __init__()

lsst.pex.config.configurableActions._configurableActionField.ConfigurableActionField.__init__ ( self,
doc,
dtype = ConfigurableAction,
default = None,
check = None,
deprecated = None )

Reimplemented from lsst.pex.config.configField.ConfigField.

Definition at line 119 of file _configurableActionField.py.

119 def __init__(self, doc, dtype=ConfigurableAction, default=None, check=None, deprecated=None):
120 if not issubclass(dtype, ConfigurableAction):
121 raise ValueError("dtype must be a subclass of ConfigurableAction")
122 super().__init__(doc=doc, dtype=dtype, default=default, check=check, deprecated=deprecated)

Member Function Documentation

◆ __get__() [1/3]

Any lsst.pex.config.configurableActions._configurableActionField.ConfigurableActionField.__get__ ( self,
Config instance,
Any owner = None,
Any at = None,
str label = "default" )

Reimplemented from lsst.pex.config.configField.ConfigField.

Definition at line 99 of file _configurableActionField.py.

99 def __get__(self, instance: Config, owner: Any = None, at: Any = None, label: str = "default") -> Any: ...
100

◆ __get__() [2/3]

lsst.pex.config.configurableActions._configurableActionField.ConfigurableActionField.__get__ ( self,
instance,
owner = None,
at = None,
label = "default" )

Reimplemented from lsst.pex.config.configField.ConfigField.

Definition at line 101 of file _configurableActionField.py.

101 def __get__(self, instance, owner=None, at=None, label="default"):
102 result = super().__get__(instance, owner)
103 if instance is not None:
104 # ignore is due to typing resolved in overloads not translating to
105 # type checker not knowing this is not a Field
106 result.identity = self.name # type: ignore
107 return result
108

◆ __get__() [3/3]

ConfigurableActionField[ActionTypeVar] lsst.pex.config.configurableActions._configurableActionField.ConfigurableActionField.__get__ ( self,
None instance,
Any owner = None,
Any at = None,
str label = "default" )

Reimplemented from lsst.pex.config.configField.ConfigField.

Definition at line 94 of file _configurableActionField.py.

96 ) -> ConfigurableActionField[ActionTypeVar]: ...
97

◆ __set__()

None lsst.pex.config.configurableActions._configurableActionField.ConfigurableActionField.__set__ ( self,
Config instance,
ActionTypeVar | type[ActionTypeVar] value,
Any at = None,
str 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` or `None`,\
        optional
    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.configField.ConfigField.

Definition at line 68 of file _configurableActionField.py.

74 ) -> None:
75 if instance._frozen:
76 raise FieldValidationError(self, instance, "Cannot modify a frozen Config")
77 name = _joinNamePath(prefix=instance._name, name=self.name)
78
79 if not isinstance(value, self.dtype) and not issubclass(value, self.dtype):
80 msg = f"Value {value} is of incorrect type {_typeStr(value)}. Expected {_typeStr(self.dtype)}"
81 raise FieldValidationError(self, instance, msg)
82
83 if at is None:
84 at = getCallStack()
85
86 if isinstance(value, self.dtype):
87 instance._storage[self.name] = type(value)(__name=name, __at=at, __label=label, **value._storage)
88 else:
89 instance._storage[self.name] = value(__name=name, __at=at, __label=label)
90 history = instance._history.setdefault(self.name, [])
91 history.append(("config value set", at, label))
92

◆ save()

lsst.pex.config.configurableActions._configurableActionField.ConfigurableActionField.save ( self,
outfile,
instance )
Save this field to a file (for internal use only).

Parameters
----------
outfile : file-like object
    A writeable field handle.
instance : `~lsst.pex.config.Config`
    The `~lsst.pex.config.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.configField.ConfigField.

Definition at line 109 of file _configurableActionField.py.

109 def save(self, outfile, instance):
110 # docstring inherited from parent
111 # This is different that the parent class in that this field must
112 # serialize which config class is assigned to this field prior to
113 # serializing any assignments to that config class's fields.
114 value = self.__get__(instance)
115 fullname = _joinNamePath(instance._name, self.name)
116 outfile.write(f"{fullname}={_typeStr(value)}\n")
117 super().save(outfile, instance)
118

Member Data Documentation

◆ dtype

lsst.pex.config.configurableActions._configurableActionField.ConfigurableActionField.dtype

Definition at line 79 of file _configurableActionField.py.

◆ name

str lsst.pex.config.configurableActions._configurableActionField.ConfigurableActionField.name
static

Definition at line 66 of file _configurableActionField.py.


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