LSST Applications g0da5cf3356+25b44625d0,g17e5ecfddb+50a5ac4092,g1c76d35bf8+585f0f68a2,g295839609d+8ef6456700,g2e2c1a68ba+cc1f6f037e,g38293774b4+62d12e78cb,g3b44f30a73+2891c76795,g48ccf36440+885b902d19,g4b2f1765b6+0c565e8f25,g5320a0a9f6+bd4bf1dc76,g56364267ca+403c24672b,g56b687f8c9+585f0f68a2,g5c4744a4d9+78cd207961,g5ffd174ac0+bd4bf1dc76,g6075d09f38+3075de592a,g667d525e37+cacede5508,g6f3e93b5a3+da81c812ee,g71f27ac40c+cacede5508,g7212e027e3+eb621d73aa,g774830318a+18d2b9fa6c,g7985c39107+62d12e78cb,g79ca90bc5c+fa2cc03294,g881bdbfe6c+cacede5508,g91fc1fa0cf+82a115f028,g961520b1fb+2534687f64,g96f01af41f+f2060f23b6,g9ca82378b8+cacede5508,g9d27549199+78cd207961,gb065e2a02a+ad48cbcda4,gb1df4690d6+585f0f68a2,gb35d6563ee+62d12e78cb,gbc3249ced9+bd4bf1dc76,gbec6a3398f+bd4bf1dc76,gd01420fc67+bd4bf1dc76,gd59336e7c4+c7bb92e648,gf46e8334de+81c9a61069,gfed783d017+bd4bf1dc76,v25.0.1.rc3
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | List of all members
lsst.pipe.tasks.configurableActions._configurableActionField.ConfigurableActionField Class Reference
Inheritance diagram for lsst.pipe.tasks.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")
 
def __get__ (self, instance, owner=None, at=None, label="default")
 
def save (self, outfile, instance)
 
def __init__ (self, doc, dtype=ConfigurableAction, default=None, check=None, deprecated=None)
 

Detailed Description

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

Any configuration that is done prior to reasignment to a new
`ConfigurableAction` is forgotten.

Definition at line 34 of file _configurableActionField.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.pipe.tasks.configurableActions._configurableActionField.ConfigurableActionField.__init__ (   self,
  doc,
  dtype = ConfigurableAction,
  default = None,
  check = None,
  deprecated = None 
)

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

Definition at line 104 of file _configurableActionField.py.

104 def __init__(self, doc, dtype=ConfigurableAction, default=None, check=None, deprecated=None):
105 if not issubclass(dtype, ConfigurableAction):
106 raise ValueError("dtype must be a subclass of ConfigurableAction")
107 super().__init__(doc=doc, dtype=dtype, default=default, check=check, deprecated=deprecated)

Member Function Documentation

◆ __get__() [1/3]

Any lsst.pipe.tasks.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 81 of file _configurableActionField.py.

83 ) -> Any:
84 ...
85

◆ __get__() [2/3]

def lsst.pipe.tasks.configurableActions._configurableActionField.ConfigurableActionField.__get__ (   self,
  instance,
  owner = None,
  at = None,
  label = "default" 
)

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

Definition at line 86 of file _configurableActionField.py.

86 def __get__(self, instance, owner=None, at=None, label="default"):
87 result = super().__get__(instance, owner)
88 if instance is not None:
89 # ignore is due to typing resolved in overloads not translating to
90 # type checker not knowing this is not a Field
91 result.identity = self.name # type: ignore
92 return result
93

◆ __get__() [3/3]

"ConfigurableActionField[ActionTypeVar]" lsst.pipe.tasks.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 75 of file _configurableActionField.py.

77 ) -> "ConfigurableActionField[ActionTypeVar]":
78 ...
79

◆ __set__()

None lsst.pipe.tasks.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`
    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 47 of file _configurableActionField.py.

53 ) -> None:
54 if instance._frozen:
55 raise FieldValidationError(self, instance,
56 "Cannot modify a frozen Config")
57 name = _joinNamePath(prefix=instance._name, name=self.name)
58
59 if not isinstance(value, self.dtype) and not issubclass(value, self.dtype):
60 msg = f"Value {value} is of incorrect type {_typeStr(value)}. Expected {_typeStr(self.dtype)}"
61 raise FieldValidationError(self, instance, msg)
62
63 if at is None:
64 at = getCallStack()
65
66 if isinstance(value, self.dtype):
67 instance._storage[self.name] = type(value)(__name=name, __at=at,
68 __label=label, **value._storage)
69 else:
70 instance._storage[self.name] = value(__name=name, __at=at, __label=label)
71 history = instance._history.setdefault(self.name, [])
72 history.append(("config value set", at, label))
73
table::Key< int > type
Definition: Detector.cc:163

◆ save()

def lsst.pipe.tasks.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 : `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.configField.ConfigField.

Definition at line 94 of file _configurableActionField.py.

94 def save(self, outfile, instance):
95 # docstring inherited from parent
96 # This is different that the parent class in that this field must
97 # serialize which config class is assigned to this field prior to
98 # serializing any assignments to that config class's fields.
99 value = self.__get__(instance)
100 fullname = _joinNamePath(instance._name, self.name)
101 outfile.write(f"{fullname}={_typeStr(value)}\n")
102 super().save(outfile, instance)
103

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