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 | Public Attributes | Static Public Attributes | List of all members
lsst.pipe.tasks.configurableActions._configurableActionStructField.ConfigurableActionStructField Class Reference
Inheritance diagram for lsst.pipe.tasks.configurableActions._configurableActionStructField.ConfigurableActionStructField:
lsst.pex.config.config.Field

Public Member Functions

def __init__ (self, str doc, Optional[Mapping[str, ConfigurableAction]] default=None, bool optional=False, deprecated=None)
 
def __class_getitem__ (cls, params)
 
def __set__ (self, Config instance, Union[None, Mapping[str, ConfigurableAction], SimpleNamespace, Struct, ConfigurableActionStruct, ConfigurableActionStructField, Type[ConfigurableActionStructField]] value, Iterable[StackFrame] at=None, str label='assigment')
 
ConfigurableActionStruct[ActionTypeVar] __get__ (self, None instance, Any owner=None, Any at=None, str label='default')
 
ConfigurableActionStruct[ActionTypeVar] __get__ (self, Config instance, Any owner=None, Any at=None, str label='default')
 
def __get__ (self, instance, owner=None, at=None, label='default')
 
def rename (self, Config instance)
 
def validate (self, Config instance)
 
def toDict (self, instance)
 
def save (self, outfile, instance)
 
def freeze (self, instance)
 

Public Attributes

 default
 

Static Public Attributes

 StructClass = ConfigurableActionStruct
 

Detailed Description

`ConfigurableActionStructField` is a `~lsst.pex.config.Field` subclass
that allows `ConfigurableAction`\ s to be organized in a
`~lsst.pex.config.Config` class in a manner similar to how a
`~lsst.pipe.base.Struct` works.

This class implements a `ConfigurableActionStruct` as an intermediary
object to organize the `ConfigurableActions`. See it's documentation for
futher information.

Definition at line 230 of file _configurableActionStructField.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.pipe.tasks.configurableActions._configurableActionStructField.ConfigurableActionStructField.__init__ (   self,
str  doc,
Optional[Mapping[str, ConfigurableAction]]   default = None,
bool   optional = False,
  deprecated = None 
)

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

Definition at line 249 of file _configurableActionStructField.py.

251 deprecated=None):
252 source = getStackFrame()
253 self._setup(doc=doc, dtype=self.__class__, default=default, check=None,
254 optional=optional, source=source, deprecated=deprecated)
255

Member Function Documentation

◆ __class_getitem__()

def lsst.pipe.tasks.configurableActions._configurableActionStructField.ConfigurableActionStructField.__class_getitem__ (   cls,
  params 
)

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

Definition at line 256 of file _configurableActionStructField.py.

256 def __class_getitem__(cls, params):
257 return GenericAlias(cls, params)
258

◆ __get__() [1/3]

ConfigurableActionStruct[ActionTypeVar] lsst.pipe.tasks.configurableActions._configurableActionStructField.ConfigurableActionStructField.__get__ (   self,
Config  instance,
Any   owner = None,
Any   at = None,
str   label = 'default' 
)

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

Definition at line 313 of file _configurableActionStructField.py.

319 ) -> ConfigurableActionStruct[ActionTypeVar]:
320 ...
321

◆ __get__() [2/3]

def lsst.pipe.tasks.configurableActions._configurableActionStructField.ConfigurableActionStructField.__get__ (   self,
  instance,
  owner = None,
  at = None,
  label = 'default' 
)

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

Definition at line 322 of file _configurableActionStructField.py.

328 ):
329 if instance is None or not isinstance(instance, Config):
330 return self
331 else:
332 field: Optional[ConfigurableActionStruct] = instance._storage[self.name]
333 return field
334

◆ __get__() [3/3]

ConfigurableActionStruct[ActionTypeVar] lsst.pipe.tasks.configurableActions._configurableActionStructField.ConfigurableActionStructField.__get__ (   self,
None  instance,
Any   owner = None,
Any   at = None,
str   label = 'default' 
)

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

Definition at line 303 of file _configurableActionStructField.py.

309 ) -> ConfigurableActionStruct[ActionTypeVar]:
310 ...
311

◆ __set__()

def lsst.pipe.tasks.configurableActions._configurableActionStructField.ConfigurableActionStructField.__set__ (   self,
Config  instance,
Union[None, Mapping[str, ConfigurableAction], SimpleNamespace, Struct, ConfigurableActionStruct, ConfigurableActionStructField, Type[ConfigurableActionStructField]]  value,
Iterable[StackFrame]   at = None,
str   label = 'assigment' 
)
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.

Definition at line 259 of file _configurableActionStructField.py.

266 at: Iterable[StackFrame] = None, label: str = 'assigment'):
267 if instance._frozen:
268 msg = "Cannot modify a frozen Config. "\
269 "Attempting to set field to value %s" % value
270 raise FieldValidationError(self, instance, msg)
271
272 if at is None:
273 at = getCallStack()
274
275 if value is None or (self.default is not None and self.default == value):
276 value = self.StructClass(instance, self, value, at=at, label=label)
277 else:
278 # An actual value is being assigned check for what it is
279 if isinstance(value, self.StructClass):
280 # If this is a ConfigurableActionStruct, we need to make our
281 # own copy that references this current field
282 value = self.StructClass(instance, self, value._attrs, at=at, label=label)
283 elif isinstance(value, (SimpleNamespace, Struct)):
284 # If this is a a python analogous container, we need to make
285 # a ConfigurableActionStruct initialized with this data
286 value = self.StructClass(instance, self, vars(value), at=at, label=label)
287
288 elif type(value) == ConfigurableActionStructField:
289 raise ValueError("ConfigurableActionStructFields can only be used in a class body declaration"
290 f"Use a {self.StructClass}, SimpleNamespace or Struct")
291 else:
292 raise ValueError(f"Unrecognized value {value}, cannot be assigned to this field")
293
294 history = instance._history.setdefault(self.name, [])
295 history.append((value, at, label))
296
297 if not isinstance(value, ConfigurableActionStruct):
298 raise FieldValidationError(self, instance,
299 "Can only assign things that are subclasses of Configurable Action")
300 instance._storage[self.name] = value
301
table::Key< int > type
Definition: Detector.cc:163

◆ freeze()

def lsst.pipe.tasks.configurableActions._configurableActionStructField.ConfigurableActionStructField.freeze (   self,
  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.**

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

Definition at line 372 of file _configurableActionStructField.py.

372 def freeze(self, instance):
373 actionStruct = self.__get__(instance)
374 if actionStruct is not None:
375 for v in actionStruct:
376 v.freeze()
377

◆ rename()

def lsst.pipe.tasks.configurableActions._configurableActionStructField.ConfigurableActionStructField.rename (   self,
Config  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.

Definition at line 335 of file _configurableActionStructField.py.

335 def rename(self, instance: Config):
336 actionStruct: ConfigurableActionStruct = self.__get__(instance)
337 if actionStruct is not None:
338 for k, v in actionStruct.items():
339 base_name = _joinNamePath(instance._name, self.name)
340 fullname = _joinNamePath(base_name, k)
341 v._rename(fullname)
342

◆ save()

def lsst.pipe.tasks.configurableActions._configurableActionStructField.ConfigurableActionStructField.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.

Definition at line 358 of file _configurableActionStructField.py.

358 def save(self, outfile, instance):
359 actionStruct = self.__get__(instance)
360 fullname = _joinNamePath(instance._name, self.name)
361
362 # Ensure that a struct is always empty before assigning to it.
363 outfile.write(f"{fullname}=None\n")
364
365 if actionStruct is None:
366 return
367
368 for _, v in sorted(actionStruct.items()):
369 outfile.write(u"{}={}()\n".format(v._name, _typeStr(v)))
370 v._save(outfile)
371

◆ toDict()

def lsst.pipe.tasks.configurableActions._configurableActionStructField.ConfigurableActionStructField.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.

Definition at line 349 of file _configurableActionStructField.py.

349 def toDict(self, instance):
350 actionStruct = self.__get__(instance)
351 if actionStruct is None:
352 return None
353
354 dict_ = {k: v.toDict() for k, v in actionStruct.items()}
355
356 return dict_
357

◆ validate()

def lsst.pipe.tasks.configurableActions._configurableActionStructField.ConfigurableActionStructField.validate (   self,
Config  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.

Definition at line 343 of file _configurableActionStructField.py.

343 def validate(self, instance: Config):
344 value = self.__get__(instance)
345 if value is not None:
346 for item in value:
347 item.validate()
348

Member Data Documentation

◆ default

lsst.pipe.tasks.configurableActions._configurableActionStructField.ConfigurableActionStructField.default

Definition at line 275 of file _configurableActionStructField.py.

◆ StructClass

lsst.pipe.tasks.configurableActions._configurableActionStructField.ConfigurableActionStructField.StructClass = ConfigurableActionStruct
static

Definition at line 242 of file _configurableActionStructField.py.


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