LSST Applications g1635faa6d4+215bc75b8c,g1653933729+a8ce1bb630,g22ce9dc20b+d972d8df89,g28da252d5a+0fcf840c6d,g29321ee8c0+e558be0e74,g2bbee38e9b+9634bc57db,g2bc492864f+9634bc57db,g2cdde0e794+c2c89b37c4,g3156d2b45e+41e33cbcdc,g347aa1857d+9634bc57db,g35bb328faa+a8ce1bb630,g3a166c0a6a+9634bc57db,g3e281a1b8c+9f2c4e2fc3,g414038480c+077ccc18e7,g41af890bb2+2a6f257a1d,g5fbc88fb19+17cd334064,g781aacb6e4+a8ce1bb630,g7ab3e175f3+59ce30aec6,g80478fca09+f8b2ab54e1,g82479be7b0+ba9d578ff8,g858d7b2824+d972d8df89,g9125e01d80+a8ce1bb630,g9726552aa6+10f999ec6a,ga5288a1d22+630363936d,gae0086650b+a8ce1bb630,gb58c049af0+d64f4d3760,gb9c6c11c1e+9553554aa7,gbd46683f8f+0c4209622a,gc28159a63d+9634bc57db,gcf0d15dbbd+2db122af0a,gda3e153d99+d972d8df89,gda6a2b7d83+2db122af0a,gdaeeff99f8+1711a396fd,ge2409df99d+d1dc2f3b25,ge33fd446bb+d972d8df89,ge79ae78c31+9634bc57db,gf0baf85859+147a0692ba,gf3967379c6+02b11634a5,w.2024.45
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: