LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Public Member Functions | Properties | List of all members
lsst.pex.config.dictField.Dict Class Reference
Inheritance diagram for lsst.pex.config.dictField.Dict:
lsst.pex.config.configDictField.ConfigDict

Public Member Functions

def __init__ (self, config, field, value, at, label, setHistory=True)
 
def __getitem__ (self, k)
 
def __len__ (self)
 
def __iter__ (self)
 
def __contains__ (self, k)
 
def __setitem__ (self, k, x, at=None, label="setitem", setHistory=True)
 
def __delitem__ (self, k, at=None, label="delitem", setHistory=True)
 
def __repr__ (self)
 
def __str__ (self)
 
def __setattr__ (self, attr, value, at=None, label="assignment")
 

Properties

 history = property(lambda x: x._history)
 

Detailed Description

An internal mapping container.

This class emulates a `dict`, but adds validation and provenance.

Definition at line 39 of file dictField.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.pex.config.dictField.Dict.__init__ (   self,
  config,
  field,
  value,
  at,
  label,
  setHistory = True 
)

Definition at line 45 of file dictField.py.

45  def __init__(self, config, field, value, at, label, setHistory=True):
46  self._field = field
47  self._config_ = weakref.ref(config)
48  self._dict = {}
49  self._history = self._config._history.setdefault(self._field.name, [])
50  self.__doc__ = field.doc
51  if value is not None:
52  try:
53  for k in value:
54  # do not set history per-item
55  self.__setitem__(k, value[k], at=at, label=label, setHistory=False)
56  except TypeError:
57  msg = "Value %s is of incorrect type %s. Mapping type expected." % \
58  (value, _typeStr(value))
59  raise FieldValidationError(self._field, self._config, msg)
60  if setHistory:
61  self._history.append((dict(self._dict), at, label))
62 
std::shared_ptr< FrameSet > append(FrameSet const &first, FrameSet const &second)
Construct a FrameSet that performs two transformations in series.
Definition: functional.cc:33

Member Function Documentation

◆ __contains__()

def lsst.pex.config.dictField.Dict.__contains__ (   self,
  k 
)

Definition at line 83 of file dictField.py.

83  def __contains__(self, k):
84  return k in self._dict
85 

◆ __delitem__()

def lsst.pex.config.dictField.Dict.__delitem__ (   self,
  k,
  at = None,
  label = "delitem",
  setHistory = True 
)

Definition at line 123 of file dictField.py.

123  def __delitem__(self, k, at=None, label="delitem", setHistory=True):
124  if self._config._frozen:
125  raise FieldValidationError(self._field, self._config,
126  "Cannot modify a frozen Config")
127 
128  del self._dict[k]
129  if setHistory:
130  if at is None:
131  at = getCallStack()
132  self._history.append((dict(self._dict), at, label))
133 
def getCallStack(skip=0)
Definition: callStack.py:175

◆ __getitem__()

def lsst.pex.config.dictField.Dict.__getitem__ (   self,
  k 
)

Definition at line 74 of file dictField.py.

74  def __getitem__(self, k):
75  return self._dict[k]
76 

◆ __iter__()

def lsst.pex.config.dictField.Dict.__iter__ (   self)

Definition at line 80 of file dictField.py.

80  def __iter__(self):
81  return iter(self._dict)
82 

◆ __len__()

def lsst.pex.config.dictField.Dict.__len__ (   self)

Definition at line 77 of file dictField.py.

77  def __len__(self):
78  return len(self._dict)
79 

◆ __repr__()

def lsst.pex.config.dictField.Dict.__repr__ (   self)

Definition at line 134 of file dictField.py.

134  def __repr__(self):
135  return repr(self._dict)
136 

◆ __setattr__()

def lsst.pex.config.dictField.Dict.__setattr__ (   self,
  attr,
  value,
  at = None,
  label = "assignment" 
)

Definition at line 140 of file dictField.py.

140  def __setattr__(self, attr, value, at=None, label="assignment"):
141  if hasattr(getattr(self.__class__, attr, None), '__set__'):
142  # This allows properties to work.
143  object.__setattr__(self, attr, value)
144  elif attr in self.__dict__ or attr in ["_field", "_config_", "_history", "_dict", "__doc__"]:
145  # This allows specific private attributes to work.
146  object.__setattr__(self, attr, value)
147  else:
148  # We throw everything else.
149  msg = "%s has no attribute %s" % (_typeStr(self._field), attr)
150  raise FieldValidationError(self._field, self._config, msg)
151 
152 

◆ __setitem__()

def lsst.pex.config.dictField.Dict.__setitem__ (   self,
  k,
  x,
  at = None,
  label = "setitem",
  setHistory = True 
)

Reimplemented in lsst.pex.config.configDictField.ConfigDict.

Definition at line 86 of file dictField.py.

86  def __setitem__(self, k, x, at=None, label="setitem", setHistory=True):
87  if self._config._frozen:
88  msg = "Cannot modify a frozen Config. "\
89  "Attempting to set item at key %r to value %s" % (k, x)
90  raise FieldValidationError(self._field, self._config, msg)
91 
92  # validate keytype
93  k = _autocast(k, self._field.keytype)
94  if type(k) != self._field.keytype:
95  msg = "Key %r is of type %s, expected type %s" % \
96  (k, _typeStr(k), _typeStr(self._field.keytype))
97  raise FieldValidationError(self._field, self._config, msg)
98 
99  # validate itemtype
100  x = _autocast(x, self._field.itemtype)
101  if self._field.itemtype is None:
102  if type(x) not in self._field.supportedTypes and x is not None:
103  msg = "Value %s at key %r is of invalid type %s" % (x, k, _typeStr(x))
104  raise FieldValidationError(self._field, self._config, msg)
105  else:
106  if type(x) != self._field.itemtype and x is not None:
107  msg = "Value %s at key %r is of incorrect type %s. Expected type %s" % \
108  (x, k, _typeStr(x), _typeStr(self._field.itemtype))
109  raise FieldValidationError(self._field, self._config, msg)
110 
111  # validate item using itemcheck
112  if self._field.itemCheck is not None and not self._field.itemCheck(x):
113  msg = "Item at key %r is not a valid value: %s" % (k, x)
114  raise FieldValidationError(self._field, self._config, msg)
115 
116  if at is None:
117  at = getCallStack()
118 
119  self._dict[k] = x
120  if setHistory:
121  self._history.append((dict(self._dict), at, label))
122 
table::Key< int > type
Definition: Detector.cc:163

◆ __str__()

def lsst.pex.config.dictField.Dict.__str__ (   self)

Definition at line 137 of file dictField.py.

137  def __str__(self):
138  return str(self._dict)
139 

Property Documentation

◆ history

lsst.pex.config.dictField.Dict.history = property(lambda x: x._history)
static

Definition at line 70 of file dictField.py.


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