LSST Applications  21.0.0-147-g0e635eb1+1acddb5be5,22.0.0+052faf71bd,22.0.0+1ea9a8b2b2,22.0.0+6312710a6c,22.0.0+729191ecac,22.0.0+7589c3a021,22.0.0+9f079a9461,22.0.1-1-g7d6de66+b8044ec9de,22.0.1-1-g87000a6+536b1ee016,22.0.1-1-g8e32f31+6312710a6c,22.0.1-10-gd060f87+016f7cdc03,22.0.1-12-g9c3108e+df145f6f68,22.0.1-16-g314fa6d+c825727ab8,22.0.1-19-g93a5c75+d23f2fb6d8,22.0.1-19-gb93eaa13+aab3ef7709,22.0.1-2-g8ef0a89+b8044ec9de,22.0.1-2-g92698f7+9f079a9461,22.0.1-2-ga9b0f51+052faf71bd,22.0.1-2-gac51dbf+052faf71bd,22.0.1-2-gb66926d+6312710a6c,22.0.1-2-gcb770ba+09e3807989,22.0.1-20-g32debb5+b8044ec9de,22.0.1-23-gc2439a9a+fb0756638e,22.0.1-3-g496fd5d+09117f784f,22.0.1-3-g59f966b+1e6ba2c031,22.0.1-3-g849a1b8+f8b568069f,22.0.1-3-gaaec9c0+c5c846a8b1,22.0.1-32-g5ddfab5d3+60ce4897b0,22.0.1-4-g037fbe1+64e601228d,22.0.1-4-g8623105+b8044ec9de,22.0.1-5-g096abc9+d18c45d440,22.0.1-5-g15c806e+57f5c03693,22.0.1-7-gba73697+57f5c03693,master-g6e05de7fdc+c1283a92b8,master-g72cdda8301+729191ecac,w.2021.39
LSST Data Management Base Package
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 __set__ (self, Config instance, Union[None, Mapping[str, ConfigurableAction], ConfigurableActionStruct] value, Iterable[StackFrame] at=None, str label='assigment')
 
Union[None, T, ConfigurableActionStruct__get__ (T self, Config instance, None owner=None, Iterable[StackFrame] at=None, str label="default")
 
def rename (self, Config instance)
 
def validate (self, instance)
 
def toDict (self, instance)
 
def save (self, outfile, instance)
 
def freeze (self, instance)
 
def rename (self, instance)
 
def __get__ (self, instance, owner=None, at=None, label="default")
 
def __set__ (self, instance, value, at=None, label='assignment')
 
def __delete__ (self, instance, at=None, label='deletion')
 

Public Attributes

 dtype
 
 doc
 
 deprecated
 
 default
 
 check
 
 optional
 
 source
 

Static Public Attributes

 StructClass = ConfigurableActionStruct
 
 supportedTypes = set((str, bool, float, int, complex))
 

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 manor 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 199 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 
)

Definition at line 218 of file _configurableActionStructField.py.

220  deprecated=None):
221  source = getStackFrame()
222  self._setup(doc=doc, dtype=self.__class__, default=default, check=None,
223  optional=optional, source=source, deprecated=deprecated)
224 
def getStackFrame(relative=0)
Definition: callStack.py:58

Member Function Documentation

◆ __delete__()

def lsst.pex.config.config.Field.__delete__ (   self,
  instance,
  at = None,
  label = 'deletion' 
)
inherited
Delete an attribute from a `lsst.pex.config.Config` instance.

Parameters
----------
instance : `lsst.pex.config.Config`
    The config instance that contains 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 is invoked by the owning `~lsst.pex.config.Config` object and
should not be called directly.

Definition at line 625 of file config.py.

625  def __delete__(self, instance, at=None, label='deletion'):
626  """Delete an attribute from a `lsst.pex.config.Config` instance.
627 
628  Parameters
629  ----------
630  instance : `lsst.pex.config.Config`
631  The config instance that contains this field.
632  at : `list` of `lsst.pex.config.callStack.StackFrame`
633  The call stack (created by
634  `lsst.pex.config.callStack.getCallStack`).
635  label : `str`, optional
636  Event label for the history.
637 
638  Notes
639  -----
640  This is invoked by the owning `~lsst.pex.config.Config` object and
641  should not be called directly.
642  """
643  if at is None:
644  at = getCallStack()
645  self.__set__(instance, None, at=at, label=label)
646 
def getCallStack(skip=0)
Definition: callStack.py:175

◆ __get__() [1/2]

def lsst.pex.config.config.Field.__get__ (   self,
  instance,
  owner = None,
  at = None,
  label = "default" 
)
inherited
Define how attribute access should occur on the Config instance
This is invoked by the owning config object and should not be called
directly

When the field attribute is accessed on a Config class object, it
returns the field object itself in order to allow inspection of
Config classes.

When the field attribute is access on a config instance, the actual
value described by the field (and held by the Config instance) is
returned.

Reimplemented in lsst.pex.config.configurableField.ConfigurableField.

Definition at line 550 of file config.py.

550  def __get__(self, instance, owner=None, at=None, label="default"):
551  """Define how attribute access should occur on the Config instance
552  This is invoked by the owning config object and should not be called
553  directly
554 
555  When the field attribute is accessed on a Config class object, it
556  returns the field object itself in order to allow inspection of
557  Config classes.
558 
559  When the field attribute is access on a config instance, the actual
560  value described by the field (and held by the Config instance) is
561  returned.
562  """
563  if instance is None or not isinstance(instance, Config):
564  return self
565  else:
566  return instance._storage[self.name]
567 

◆ __get__() [2/2]

Union[None, T, ConfigurableActionStruct] lsst.pipe.tasks.configurableActions._configurableActionStructField.ConfigurableActionStructField.__get__ ( T  self,
Config  instance,
None   owner = None,
Iterable[StackFrame]   at = None,
str   label = "default" 
)

Definition at line 247 of file _configurableActionStructField.py.

249  ) -> Union[None, T, ConfigurableActionStruct]:
250  if instance is None or not isinstance(instance, Config):
251  return self
252  else:
253  field: Optional[ConfigurableActionStruct] = instance._storage[self.name]
254  return field
255 

◆ __set__() [1/2]

def lsst.pipe.tasks.configurableActions._configurableActionStructField.ConfigurableActionStructField.__set__ (   self,
Config  instance,
Union[None, Mapping[str, ConfigurableAction], ConfigurableActionStruct value,
Iterable[StackFrame]   at = None,
str   label = 'assigment' 
)

Definition at line 225 of file _configurableActionStructField.py.

227  at: Iterable[StackFrame] = None, label: str = 'assigment'):
228  if instance._frozen:
229  msg = "Cannot modify a frozen Config. "\
230  "Attempting to set field to value %s" % value
231  raise FieldValidationError(self, instance, msg)
232 
233  if at is None:
234  at = getCallStack()
235 
236  if value is None or value == self.default:
237  value = self.StructClass(instance, self, value, at=at, label=label)
238  else:
239  history = instance._history.setdefault(self.name, [])
240  history.append((value, at, label))
241 
242  if not isinstance(value, ConfigurableActionStruct):
243  raise FieldValidationError(self, instance,
244  "Can only assign things that are subclasses of Configurable Action")
245  instance._storage[self.name] = value
246 

◆ __set__() [2/2]

def lsst.pex.config.config.Field.__set__ (   self,
  instance,
  value,
  at = None,
  label = 'assignment' 
)
inherited
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 in lsst.pipe.tasks.configurableActions._configurableActionField.ConfigurableActionField, lsst.pex.config.listField.ListField, lsst.pex.config.dictField.DictField, lsst.pex.config.configurableField.ConfigurableField, lsst.pex.config.configField.ConfigField, and lsst.pex.config.configChoiceField.ConfigChoiceField.

Definition at line 568 of file config.py.

568  def __set__(self, instance, value, at=None, label='assignment'):
569  """Set an attribute on the config instance.
570 
571  Parameters
572  ----------
573  instance : `lsst.pex.config.Config`
574  The config instance that contains this field.
575  value : obj
576  Value to set on this field.
577  at : `list` of `lsst.pex.config.callStack.StackFrame`
578  The call stack (created by
579  `lsst.pex.config.callStack.getCallStack`).
580  label : `str`, optional
581  Event label for the history.
582 
583  Notes
584  -----
585  This method is invoked by the owning `lsst.pex.config.Config` object
586  and should not be called directly.
587 
588  Derived `~lsst.pex.config.Field` classes may need to override the
589  behavior. When overriding ``__set__``, `~lsst.pex.config.Field` authors
590  should follow the following rules:
591 
592  - Do not allow modification of frozen configs.
593  - Validate the new value **before** modifying the field. Except if the
594  new value is `None`. `None` is special and no attempt should be made
595  to validate it until `lsst.pex.config.Config.validate` is called.
596  - Do not modify the `~lsst.pex.config.Config` instance to contain
597  invalid values.
598  - If the field is modified, update the history of the
599  `lsst.pex.config.field.Field` to reflect the changes.
600 
601  In order to decrease the need to implement this method in derived
602  `~lsst.pex.config.Field` types, value validation is performed in the
603  `lsst.pex.config.Field._validateValue`. If only the validation step
604  differs in the derived `~lsst.pex.config.Field`, it is simpler to
605  implement `lsst.pex.config.Field._validateValue` than to reimplement
606  ``__set__``. More complicated behavior, however, may require
607  reimplementation.
608  """
609  if instance._frozen:
610  raise FieldValidationError(self, instance, "Cannot modify a frozen Config")
611 
612  history = instance._history.setdefault(self.name, [])
613  if value is not None:
614  value = _autocast(value, self.dtype)
615  try:
616  self._validateValue(value)
617  except BaseException as e:
618  raise FieldValidationError(self, instance, str(e))
619 
620  instance._storage[self.name] = value
621  if at is None:
622  at = getCallStack()
623  history.append((value, at, label))
624 

◆ 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 290 of file _configurableActionStructField.py.

290  def freeze(self, instance):
291  actionStruct = self.__get__(instance)
292  if actionStruct is not None:
293  for v in actionStruct:
294  v.freeze()
295 

◆ rename() [1/2]

def lsst.pipe.tasks.configurableActions._configurableActionStructField.ConfigurableActionStructField.rename (   self,
Config  instance 
)

Definition at line 256 of file _configurableActionStructField.py.

256  def rename(self, instance: Config):
257  actionStruct: ConfigurableActionStruct = self.__get__(instance)
258  if actionStruct is not None:
259  for k, v in actionStruct.items():
260  fullname = _joinNamePath(instance._name, self.name, k)
261  v._rename(fullname)
262 

◆ rename() [2/2]

def lsst.pex.config.config.Field.rename (   self,
  instance 
)
inherited
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 in lsst.pex.config.configurableField.ConfigurableField, lsst.pex.config.configField.ConfigField, lsst.pex.config.configDictField.ConfigDictField, and lsst.pex.config.configChoiceField.ConfigChoiceField.

Definition at line 379 of file config.py.

379  def rename(self, instance):
380  """Rename the field in a `~lsst.pex.config.Config` (for internal use
381  only).
382 
383  Parameters
384  ----------
385  instance : `lsst.pex.config.Config`
386  The config instance that contains this field.
387 
388  Notes
389  -----
390  This method is invoked by the `lsst.pex.config.Config` object that
391  contains this field and should not be called directly.
392 
393  Renaming is only relevant for `~lsst.pex.config.Field` instances that
394  hold subconfigs. `~lsst.pex.config.Fields` that hold subconfigs should
395  rename each subconfig with the full field name as generated by
396  `lsst.pex.config.config._joinNamePath`.
397  """
398  pass
399 

◆ 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 278 of file _configurableActionStructField.py.

278  def save(self, outfile, instance):
279  actionStruct = self.__get__(instance)
280  fullname = _joinNamePath(instance._name, self.name)
281  if actionStruct is None:
282  outfile.write(u"{}={!r}\n".format(fullname, actionStruct))
283  return
284 
285  outfile.write(u"{}={!r}\n".format(fullname, {}))
286  for v in actionStruct:
287  outfile.write(u"{}={}()\n".format(v._name, _typeStr(v)))
288  v._save(outfile)
289 
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)
Definition: history.py:174

◆ 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 269 of file _configurableActionStructField.py.

269  def toDict(self, instance):
270  actionStruct = self.__get__(instance)
271  if actionStruct is None:
272  return None
273 
274  dict_ = {k: v.toDict() for k, v in actionStruct.items()}
275 
276  return dict_
277 

◆ validate()

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

263  def validate(self, instance):
264  value = self.__get__(instance)
265  if value is not None:
266  for item in value:
267  item.validate()
268 

Member Data Documentation

◆ check

lsst.pex.config.config.Field.check
inherited

Definition at line 363 of file config.py.

◆ default

lsst.pex.config.config.Field.default
inherited

Definition at line 359 of file config.py.

◆ deprecated

lsst.pex.config.config.Field.deprecated
inherited

Definition at line 350 of file config.py.

◆ doc

lsst.pex.config.config.Field.doc
inherited

Definition at line 346 of file config.py.

◆ dtype

lsst.pex.config.config.Field.dtype
inherited

Definition at line 339 of file config.py.

◆ optional

lsst.pex.config.config.Field.optional
inherited

Definition at line 367 of file config.py.

◆ source

lsst.pex.config.config.Field.source
inherited

Definition at line 374 of file config.py.

◆ StructClass

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

Definition at line 211 of file _configurableActionStructField.py.

◆ supportedTypes

lsst.pex.config.config.Field.supportedTypes = set((str, bool, float, int, complex))
staticinherited

Definition at line 324 of file config.py.


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