LSST Applications g0265f82a02+d6b5cd48b5,g02d81e74bb+a41d3748ce,g1470d8bcf6+6be6c9203b,g2079a07aa2+14824f138e,g212a7c68fe+a4f2ea4efa,g2305ad1205+72971fe858,g295015adf3+ab2c85acae,g2bbee38e9b+d6b5cd48b5,g337abbeb29+d6b5cd48b5,g3ddfee87b4+31b3a28dff,g487adcacf7+082e807817,g50ff169b8f+5929b3527e,g52b1c1532d+a6fc98d2e7,g591dd9f2cf+b2918d57ae,g5a732f18d5+66d966b544,g64a986408d+a41d3748ce,g858d7b2824+a41d3748ce,g8a8a8dda67+a6fc98d2e7,g99cad8db69+7fe4acdf18,g9ddcbc5298+d4bad12328,ga1e77700b3+246acaaf9c,ga8c6da7877+84af8b3ff8,gb0e22166c9+3863383f4c,gb6a65358fc+d6b5cd48b5,gba4ed39666+9664299f35,gbb8dafda3b+d8d527deb2,gc07e1c2157+b2dbe6b631,gc120e1dc64+61440b2abb,gc28159a63d+d6b5cd48b5,gcf0d15dbbd+31b3a28dff,gdaeeff99f8+a38ce5ea23,ge6526c86ff+39927bb362,ge79ae78c31+d6b5cd48b5,gee10cc3b42+a6fc98d2e7,gf1cff7945b+a41d3748ce,v24.1.5.rc1
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 121 of file _configurableActionField.py.

121 def __init__(self, doc, dtype=ConfigurableAction, default=None, check=None, deprecated=None):
122 if not issubclass(dtype, ConfigurableAction):
123 raise ValueError("dtype must be a subclass of ConfigurableAction")
124 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 100 of file _configurableActionField.py.

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

◆ __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 103 of file _configurableActionField.py.

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

◆ __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 ...
98

◆ __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 111 of file _configurableActionField.py.

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

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: