LSSTApplications  17.0+11,17.0+34,17.0+56,17.0+57,17.0+59,17.0+7,17.0-1-g377950a+33,17.0.1-1-g114240f+2,17.0.1-1-g4d4fbc4+28,17.0.1-1-g55520dc+49,17.0.1-1-g5f4ed7e+52,17.0.1-1-g6dd7d69+17,17.0.1-1-g8de6c91+11,17.0.1-1-gb9095d2+7,17.0.1-1-ge9fec5e+5,17.0.1-1-gf4e0155+55,17.0.1-1-gfc65f5f+50,17.0.1-1-gfc6fb1f+20,17.0.1-10-g87f9f3f+1,17.0.1-11-ge9de802+16,17.0.1-16-ga14f7d5c+4,17.0.1-17-gc79d625+1,17.0.1-17-gdae4c4a+8,17.0.1-2-g26618f5+29,17.0.1-2-g54f2ebc+9,17.0.1-2-gf403422+1,17.0.1-20-g2ca2f74+6,17.0.1-23-gf3eadeb7+1,17.0.1-3-g7e86b59+39,17.0.1-3-gb5ca14a,17.0.1-3-gd08d533+40,17.0.1-30-g596af8797,17.0.1-4-g59d126d+4,17.0.1-4-gc69c472+5,17.0.1-6-g5afd9b9+4,17.0.1-7-g35889ee+1,17.0.1-7-gc7c8782+18,17.0.1-9-gc4bbfb2+3,w.2019.22
LSSTDataManagementBasePackage
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
lsst.pex.config.configDictField.ConfigDictField Class Reference
Inheritance diagram for lsst.pex.config.configDictField.ConfigDictField:
lsst.pex.config.dictField.DictField lsst.pex.config.config.Field

Public Member Functions

def __init__ (self, doc, keytype, itemtype, default=None, optional=False, dictCheck=None, itemCheck=None)
 
def rename (self, instance)
 
def validate (self, instance)
 
def toDict (self, instance)
 
def save (self, outfile, instance)
 
def freeze (self, instance)
 
def __set__ (self, instance, value, at=None, label="assignment")
 
def __get__ (self, instance, owner=None, at=None, label="default")
 
def __delete__ (self, instance, at=None, label='deletion')
 

Public Attributes

 keytype
 
 itemtype
 
 dictCheck
 
 itemCheck
 
 dtype
 
 doc
 
 default
 
 check
 
 optional
 
 source
 

Static Public Attributes

 DictClass = ConfigDict
 
 supportedTypes = set((str, bool, float, int, complex))
 

Detailed Description

A configuration field (`~lsst.pex.config.Field` subclass) that is a
mapping of keys to `~lsst.pex.config.Config` instances.

``ConfigDictField`` behaves like `DictField` except that the
``itemtype`` must be a `~lsst.pex.config.Config` subclass.

Parameters
----------
doc : `str`
    A description of the configuration field.
keytype : {`int`, `float`, `complex`, `bool`, `str`}
    The type of the mapping keys. All keys must have this type.
itemtype : `lsst.pex.config.Config`-type
    The type of the values in the mapping. This must be
    `~lsst.pex.config.Config` or a subclass.
default : optional
    Unknown.
default : ``itemtype``-dtype, optional
    Default value of this field.
optional : `bool`, optional
    If `True`, this configuration `~lsst.pex.config.Field` is *optional*.
    Default is `True`.

Raises
------
ValueError
    Raised if the inputs are invalid:

    - ``keytype`` or ``itemtype`` arguments are not supported types
      (members of `ConfigDictField.supportedTypes`.
    - ``dictCheck`` or ``itemCheck`` is not a callable function.

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

Notes
-----
You can use ``ConfigDictField`` to create name-to-config mappings. One use
case is for configuring mappings for dataset types in a Butler. In this
case, the dataset type names are arbitrary and user-selected while the
mapping configurations are known and fixed.

Definition at line 87 of file configDictField.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.pex.config.configDictField.ConfigDictField.__init__ (   self,
  doc,
  keytype,
  itemtype,
  default = None,
  optional = False,
  dictCheck = None,
  itemCheck = None 
)

Definition at line 142 of file configDictField.py.

142  def __init__(self, doc, keytype, itemtype, default=None, optional=False, dictCheck=None, itemCheck=None):
143  source = getStackFrame()
144  self._setup(doc=doc, dtype=ConfigDict, default=default, check=None,
145  optional=optional, source=source)
146  if keytype not in self.supportedTypes:
147  raise ValueError("'keytype' %s is not a supported type" %
148  _typeStr(keytype))
149  elif not issubclass(itemtype, Config):
150  raise ValueError("'itemtype' %s is not a supported type" %
151  _typeStr(itemtype))
152  if dictCheck is not None and not hasattr(dictCheck, "__call__"):
153  raise ValueError("'dictCheck' must be callable")
154  if itemCheck is not None and not hasattr(itemCheck, "__call__"):
155  raise ValueError("'itemCheck' must be callable")
156 
157  self.keytype = keytype
158  self.itemtype = itemtype
159  self.dictCheck = dictCheck
160  self.itemCheck = itemCheck
161 
def getStackFrame(relative=0)
Definition: callStack.py:52
def __init__(self, minimum, dataRange, Q)

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 551 of file config.py.

551  def __delete__(self, instance, at=None, label='deletion'):
552  """Delete an attribute from a `lsst.pex.config.Config` instance.
553 
554  Parameters
555  ----------
556  instance : `lsst.pex.config.Config`
557  The config instance that contains this field.
558  at : `list` of `lsst.pex.config.callStack.StackFrame`
559  The call stack (created by
560  `lsst.pex.config.callStack.getCallStack`).
561  label : `str`, optional
562  Event label for the history.
563 
564  Notes
565  -----
566  This is invoked by the owning `~lsst.pex.config.Config` object and
567  should not be called directly.
568  """
569  if at is None:
570  at = getCallStack()
571  self.__set__(instance, None, at=at, label=label)
572 
def getCallStack(skip=0)
Definition: callStack.py:169

◆ __get__()

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.

Definition at line 476 of file config.py.

476  def __get__(self, instance, owner=None, at=None, label="default"):
477  """Define how attribute access should occur on the Config instance
478  This is invoked by the owning config object and should not be called
479  directly
480 
481  When the field attribute is accessed on a Config class object, it
482  returns the field object itself in order to allow inspection of
483  Config classes.
484 
485  When the field attribute is access on a config instance, the actual
486  value described by the field (and held by the Config instance) is
487  returned.
488  """
489  if instance is None or not isinstance(instance, Config):
490  return self
491  else:
492  return instance._storage[self.name]
493 

◆ __set__()

def lsst.pex.config.dictField.DictField.__set__ (   self,
  instance,
  value,
  at = None,
  label = "assignment" 
)
inherited

Definition at line 249 of file dictField.py.

249  def __set__(self, instance, value, at=None, label="assignment"):
250  if instance._frozen:
251  msg = "Cannot modify a frozen Config. "\
252  "Attempting to set field to value %s" % value
253  raise FieldValidationError(self, instance, msg)
254 
255  if at is None:
256  at = getCallStack()
257  if value is not None:
258  value = self.DictClass(instance, self, value, at=at, label=label)
259  else:
260  history = instance._history.setdefault(self.name, [])
261  history.append((value, at, label))
262 
263  instance._storage[self.name] = value
264 
def getCallStack(skip=0)
Definition: callStack.py:169

◆ freeze()

def lsst.pex.config.configDictField.ConfigDictField.freeze (   self,
  instance 
)

Definition at line 203 of file configDictField.py.

203  def freeze(self, instance):
204  configDict = self.__get__(instance)
205  if configDict is not None:
206  for k in configDict:
207  configDict[k].freeze()
208 

◆ rename()

def lsst.pex.config.configDictField.ConfigDictField.rename (   self,
  instance 
)

Definition at line 162 of file configDictField.py.

162  def rename(self, instance):
163  configDict = self.__get__(instance)
164  if configDict is not None:
165  for k in configDict:
166  fullname = _joinNamePath(instance._name, self.name, k)
167  configDict[k]._rename(fullname)
168 

◆ save()

def lsst.pex.config.configDictField.ConfigDictField.save (   self,
  outfile,
  instance 
)

Definition at line 191 of file configDictField.py.

191  def save(self, outfile, instance):
192  configDict = self.__get__(instance)
193  fullname = _joinNamePath(instance._name, self.name)
194  if configDict is None:
195  outfile.write(u"{}={!r}\n".format(fullname, configDict))
196  return
197 
198  outfile.write(u"{}={!r}\n".format(fullname, {}))
199  for v in configDict.values():
200  outfile.write(u"{}={}()\n".format(v._name, _typeStr(v)))
201  v._save(outfile)
202 
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)
Definition: history.py:168

◆ toDict()

def lsst.pex.config.configDictField.ConfigDictField.toDict (   self,
  instance 
)

Definition at line 180 of file configDictField.py.

180  def toDict(self, instance):
181  configDict = self.__get__(instance)
182  if configDict is None:
183  return None
184 
185  dict_ = {}
186  for k in configDict:
187  dict_[k] = configDict[k].toDict()
188 
189  return dict_
190 

◆ validate()

def lsst.pex.config.configDictField.ConfigDictField.validate (   self,
  instance 
)

Definition at line 169 of file configDictField.py.

169  def validate(self, instance):
170  value = self.__get__(instance)
171  if value is not None:
172  for k in value:
173  item = value[k]
174  item.validate()
175  if self.itemCheck is not None and not self.itemCheck(item):
176  msg = "Item at key %r is not a valid value: %s" % (k, item)
177  raise FieldValidationError(self, instance, msg)
178  DictField.validate(self, instance)
179 

Member Data Documentation

◆ check

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

Definition at line 293 of file config.py.

◆ default

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

Definition at line 289 of file config.py.

◆ dictCheck

lsst.pex.config.configDictField.ConfigDictField.dictCheck

Definition at line 159 of file configDictField.py.

◆ DictClass

lsst.pex.config.configDictField.ConfigDictField.DictClass = ConfigDict
static

Definition at line 140 of file configDictField.py.

◆ doc

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

Definition at line 280 of file config.py.

◆ dtype

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

Definition at line 276 of file config.py.

◆ itemCheck

lsst.pex.config.configDictField.ConfigDictField.itemCheck

Definition at line 160 of file configDictField.py.

◆ itemtype

lsst.pex.config.configDictField.ConfigDictField.itemtype

Definition at line 158 of file configDictField.py.

◆ keytype

lsst.pex.config.configDictField.ConfigDictField.keytype

Definition at line 157 of file configDictField.py.

◆ optional

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

Definition at line 297 of file config.py.

◆ source

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

Definition at line 304 of file config.py.

◆ supportedTypes

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

Definition at line 262 of file config.py.


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