LSSTApplications  19.0.0-14-gb0260a2+72efe9b372,20.0.0+7927753e06,20.0.0+8829bf0056,20.0.0+995114c5d2,20.0.0+b6f4b2abd1,20.0.0+bddc4f4cbe,20.0.0-1-g253301a+8829bf0056,20.0.0-1-g2b7511a+0d71a2d77f,20.0.0-1-g5b95a8c+7461dd0434,20.0.0-12-g321c96ea+23efe4bbff,20.0.0-16-gfab17e72e+fdf35455f6,20.0.0-2-g0070d88+ba3ffc8f0b,20.0.0-2-g4dae9ad+ee58a624b3,20.0.0-2-g61b8584+5d3db074ba,20.0.0-2-gb780d76+d529cf1a41,20.0.0-2-ged6426c+226a441f5f,20.0.0-2-gf072044+8829bf0056,20.0.0-2-gf1f7952+ee58a624b3,20.0.0-20-geae50cf+e37fec0aee,20.0.0-25-g3dcad98+544a109665,20.0.0-25-g5eafb0f+ee58a624b3,20.0.0-27-g64178ef+f1f297b00a,20.0.0-3-g4cc78c6+e0676b0dc8,20.0.0-3-g8f21e14+4fd2c12c9a,20.0.0-3-gbd60e8c+187b78b4b8,20.0.0-3-gbecbe05+48431fa087,20.0.0-38-ge4adf513+a12e1f8e37,20.0.0-4-g97dc21a+544a109665,20.0.0-4-gb4befbc+087873070b,20.0.0-4-gf910f65+5d3db074ba,20.0.0-5-gdfe0fee+199202a608,20.0.0-5-gfbfe500+d529cf1a41,20.0.0-6-g64f541c+d529cf1a41,20.0.0-6-g9a5b7a1+a1cd37312e,20.0.0-68-ga3f3dda+5fca18c6a4,20.0.0-9-g4aef684+e18322736b,w.2020.45
LSSTDataManagementBasePackage
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
lsst.pex.config.registry.RegistryField Class Reference
Inheritance diagram for lsst.pex.config.registry.RegistryField:
lsst.pex.config.configChoiceField.ConfigChoiceField lsst.pex.config.config.Field

Public Member Functions

def __init__ (self, doc, registry, default=None, optional=False, multi=False)
 
def __deepcopy__ (self, memo)
 
def __get__ (self, instance, owner=None)
 
def __get__ (self, instance, owner=None, at=None, label="default")
 
def __set__ (self, instance, value, at=None, label="assignment")
 
def rename (self, instance)
 
def validate (self, instance)
 
def toDict (self, instance)
 
def freeze (self, instance)
 
def save (self, outfile, instance)
 
def __delete__ (self, instance, at=None, label='deletion')
 

Public Attributes

 registry
 
 typemap
 
 multi
 
 dtype
 
 doc
 
 deprecated
 
 default
 
 check
 
 optional
 
 source
 

Static Public Attributes

 instanceDictClass = RegistryInstanceDict
 
 supportedTypes = set((str, bool, float, int, complex))
 

Detailed Description

A configuration field whose options are defined in a `Registry`.

Parameters
----------
doc : `str`
    A description of the field.
registry : `Registry`
    The registry that contains this field.
default : `str`, optional
    The default target key.
optional : `bool`, optional
    When `False`, `lsst.pex.config.Config.validate` fails if the field's
    value is `None`.
multi : `bool`, optional
    If `True`, the field allows multiple selections. The default is
    `False`.

See also
--------
ChoiceField
ConfigChoiceField
ConfigDictField
ConfigField
ConfigurableField
DictField
Field
ListField
RangeField

Definition at line 283 of file registry.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.pex.config.registry.RegistryField.__init__ (   self,
  doc,
  registry,
  default = None,
  optional = False,
  multi = False 
)

Definition at line 318 of file registry.py.

318  def __init__(self, doc, registry, default=None, optional=False, multi=False):
319  types = RegistryAdaptor(registry)
320  self.registry = registry
321  ConfigChoiceField.__init__(self, doc, types, default, optional, multi)
322 

Member Function Documentation

◆ __deepcopy__()

def lsst.pex.config.registry.RegistryField.__deepcopy__ (   self,
  memo 
)
Customize deep-copying, want a reference to the original registry.

WARNING: this must be overridden by subclasses if they change the
constructor signature!

Reimplemented from lsst.pex.config.configChoiceField.ConfigChoiceField.

Definition at line 323 of file registry.py.

323  def __deepcopy__(self, memo):
324  """Customize deep-copying, want a reference to the original registry.
325 
326  WARNING: this must be overridden by subclasses if they change the
327  constructor signature!
328  """
329  other = type(self)(doc=self.doc, registry=self.registry,
330  default=copy.deepcopy(self.default),
331  optional=self.optional, multi=self.multi)
332  other.source = self.source
333  return other
334 
335 

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

◆ __get__() [1/2]

def lsst.pex.config.configChoiceField.ConfigChoiceField.__get__ (   self,
  instance,
  owner = None 
)
inherited

Definition at line 450 of file configChoiceField.py.

450  def __get__(self, instance, owner=None):
451  if instance is None or not isinstance(instance, Config):
452  return self
453  else:
454  return self._getOrMake(instance)
455 

◆ __get__() [2/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 

◆ __set__()

def lsst.pex.config.configChoiceField.ConfigChoiceField.__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 from lsst.pex.config.config.Field.

Definition at line 456 of file configChoiceField.py.

456  def __set__(self, instance, value, at=None, label="assignment"):
457  if instance._frozen:
458  raise FieldValidationError(self, instance, "Cannot modify a frozen Config")
459  if at is None:
460  at = getCallStack()
461  instanceDict = self._getOrMake(instance)
462  if isinstance(value, self.instanceDictClass):
463  for k, v in value.items():
464  instanceDict.__setitem__(k, v, at=at, label=label)
465  instanceDict._setSelection(value._selection, at=at, label=label)
466 
467  else:
468  instanceDict._setSelection(value, at=at, label=label)
469 

◆ freeze()

def lsst.pex.config.configChoiceField.ConfigChoiceField.freeze (   self,
  instance 
)
inherited
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 503 of file configChoiceField.py.

503  def freeze(self, instance):
504  instanceDict = self.__get__(instance)
505  instanceDict.freeze()
506  for v in instanceDict.values():
507  v.freeze()
508 

◆ rename()

def lsst.pex.config.configChoiceField.ConfigChoiceField.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 from lsst.pex.config.config.Field.

Definition at line 470 of file configChoiceField.py.

470  def rename(self, instance):
471  instanceDict = self.__get__(instance)
472  fullname = _joinNamePath(instance._name, self.name)
473  instanceDict._rename(fullname)
474 

◆ save()

def lsst.pex.config.configChoiceField.ConfigChoiceField.save (   self,
  outfile,
  instance 
)
inherited
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 515 of file configChoiceField.py.

515  def save(self, outfile, instance):
516  instanceDict = self.__get__(instance)
517  fullname = _joinNamePath(instance._name, self.name)
518  for v in instanceDict.values():
519  v._save(outfile)
520  if self.multi:
521  outfile.write(u"{}.names={!r}\n".format(fullname, instanceDict.names))
522  else:
523  outfile.write(u"{}.name={!r}\n".format(fullname, instanceDict.name))
524 

◆ toDict()

def lsst.pex.config.configChoiceField.ConfigChoiceField.toDict (   self,
  instance 
)
inherited
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 487 of file configChoiceField.py.

487  def toDict(self, instance):
488  instanceDict = self.__get__(instance)
489 
490  dict_ = {}
491  if self.multi:
492  dict_["names"] = instanceDict.names
493  else:
494  dict_["name"] = instanceDict.name
495 
496  values = {}
497  for k, v in instanceDict.items():
498  values[k] = v.toDict()
499  dict_["values"] = values
500 
501  return dict_
502 

◆ validate()

def lsst.pex.config.configChoiceField.ConfigChoiceField.validate (   self,
  instance 
)
inherited
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 475 of file configChoiceField.py.

475  def validate(self, instance):
476  instanceDict = self.__get__(instance)
477  if instanceDict.active is None and not self.optional:
478  msg = "Required field cannot be None"
479  raise FieldValidationError(self, instance, msg)
480  elif instanceDict.active is not None:
481  if self.multi:
482  for a in instanceDict.active:
483  a.validate()
484  else:
485  instanceDict.active.validate()
486 

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.

◆ instanceDictClass

lsst.pex.config.registry.RegistryField.instanceDictClass = RegistryInstanceDict
static

Definition at line 314 of file registry.py.

◆ multi

lsst.pex.config.configChoiceField.ConfigChoiceField.multi
inherited

Definition at line 436 of file configChoiceField.py.

◆ optional

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

Definition at line 367 of file config.py.

◆ registry

lsst.pex.config.registry.RegistryField.registry

Definition at line 320 of file registry.py.

◆ source

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

Definition at line 374 of file config.py.

◆ supportedTypes

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

Definition at line 324 of file config.py.

◆ typemap

lsst.pex.config.configChoiceField.ConfigChoiceField.typemap
inherited

Definition at line 435 of file configChoiceField.py.


The documentation for this class was generated from the following file:
lsst.pex.config.history.format
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)
Definition: history.py:174
lsst.pex.config.callStack.getCallStack
def getCallStack(skip=0)
Definition: callStack.py:175
type
table::Key< int > type
Definition: Detector.cc:163
lsst.pex.config.wrap.validate
validate
Definition: wrap.py:295