LSST Applications g07dc498a13+7851b72aa9,g1409bbee79+7851b72aa9,g1a7e361dbc+7851b72aa9,g1fd858c14a+a4e18a0dda,g33399d78f5+a0324bbf49,g35bb328faa+e55fef2c71,g3bd4b5ce2c+8524b1c0c8,g53246c7159+e55fef2c71,g579b87e3d2+a58ba40925,g60b5630c4e+7b4465799a,g78460c75b0+8427c4cc8f,g78619a8342+5517f7db9e,g786e29fd12+307f82e6af,g8534526c7b+8e1c6b434f,g89139ef638+7851b72aa9,g8b49a6ea8e+7b4465799a,g8ffcb69f3d+0065d7bbc8,g9125e01d80+e55fef2c71,g97b8272a79+a8c4cb337e,g989de1cb63+7851b72aa9,g9f33ca652e+747bd1f1f9,gaaedd4e678+7851b72aa9,gabe3b4be73+9c0c3c7524,gb1101e3267+c03a154bbb,gb58c049af0+28045f66fd,gc1fe0db326+7b4465799a,gca43fec769+e55fef2c71,gce7788e931+99adca4f64,gcf25f946ba+a0324bbf49,gd397e13551+18f805d5e0,gd6cbbdb0b4+f6e5445f66,gde0f65d7ad+78b6ec8427,ge278dab8ac+b4c2c8faf7,geab183fbe5+7b4465799a,gecb8035dfe+1f480bec5e,gf58bf46354+e55fef2c71,gf92a8ffd38+e7bc33f3ea,gfe7187db8c+38a2c5c626,w.2025.03
LSST Data Management Base Package
Loading...
Searching...
No Matches
lsst.pex.config.configChoiceField.SelectionSet Class Reference
Inheritance diagram for lsst.pex.config.configChoiceField.SelectionSet:

Public Member Functions

 __init__ (self, dict_, value, at=None, label="assignment", setHistory=True)
 
 add (self, value, at=None)
 
 discard (self, value, at=None)
 
 __len__ (self)
 
 __iter__ (self)
 
 __contains__ (self, value)
 
 __repr__ (self)
 
 __str__ (self)
 
 __reduce__ (self)
 

Protected Member Functions

Config _config (self)
 

Protected Attributes

 _dict
 
 _field
 
 _config_
 
 _config
 
 _set
 

Detailed Description

A mutable set class that tracks the selection of multi-select
`~lsst.pex.config.ConfigChoiceField` objects.

Parameters
----------
dict_ : `ConfigInstanceDict`
    The dictionary of instantiated configs.
value : `~typing.Any`
    The selected key.
at : `list` of `~lsst.pex.config.callStack.StackFrame` or `None`, optional
    The call stack when the selection was made.
label : `str`, optional
    Label for history tracking.
setHistory : `bool`, optional
    Add this even to the history, if `True`.

Notes
-----
This class allows a user of a multi-select
`~lsst.pex.config.ConfigChoiceField` to add or discard items from the set
of active configs. Each change to the selection is tracked in the field's
history.

Definition at line 41 of file configChoiceField.py.

Constructor & Destructor Documentation

◆ __init__()

lsst.pex.config.configChoiceField.SelectionSet.__init__ ( self,
dict_,
value,
at = None,
label = "assignment",
setHistory = True )

Definition at line 66 of file configChoiceField.py.

66 def __init__(self, dict_, value, at=None, label="assignment", setHistory=True):
67 if at is None:
68 at = getCallStack()
69 self._dict = dict_
70 self._field = self._dict._field
71 self._config_ = weakref.ref(self._dict._config)
72 self.__history = self._config._history.setdefault(self._field.name, [])
73 if value is not None:
74 try:
75 for v in value:
76 if v not in self._dict:
77 # invoke __getitem__ to ensure it's present
78 self._dict.__getitem__(v, at=at)
79 except TypeError:
80 msg = f"Value {value} is of incorrect type {_typeStr(value)}. Sequence type expected"
81 raise FieldValidationError(self._field, self._config, msg)
82 self._set = set(value)
83 else:
84 self._set = set()
85
86 if setHistory:
87 self.__history.append((f"Set selection to {self}", at, label))
88

Member Function Documentation

◆ __contains__()

lsst.pex.config.configChoiceField.SelectionSet.__contains__ ( self,
value )

Definition at line 149 of file configChoiceField.py.

149 def __contains__(self, value):
150 return value in self._set
151

◆ __iter__()

lsst.pex.config.configChoiceField.SelectionSet.__iter__ ( self)

Definition at line 146 of file configChoiceField.py.

146 def __iter__(self):
147 return iter(self._set)
148

◆ __len__()

lsst.pex.config.configChoiceField.SelectionSet.__len__ ( self)

Definition at line 143 of file configChoiceField.py.

143 def __len__(self):
144 return len(self._set)
145

◆ __reduce__()

lsst.pex.config.configChoiceField.SelectionSet.__reduce__ ( self)

Definition at line 158 of file configChoiceField.py.

158 def __reduce__(self):
159 raise UnexpectedProxyUsageError(
160 f"Proxy container for config field {self._field.name} cannot "
161 "be pickled; it should be converted to a built-in container before "
162 "being assigned to other objects or variables."
163 )
164
165

◆ __repr__()

lsst.pex.config.configChoiceField.SelectionSet.__repr__ ( self)

Definition at line 152 of file configChoiceField.py.

152 def __repr__(self):
153 return repr(list(self._set))
154

◆ __str__()

lsst.pex.config.configChoiceField.SelectionSet.__str__ ( self)

Definition at line 155 of file configChoiceField.py.

155 def __str__(self):
156 return str(list(self._set))
157

◆ _config()

Config lsst.pex.config.configChoiceField.SelectionSet._config ( self)
protected

Definition at line 90 of file configChoiceField.py.

90 def _config(self) -> Config:
91 # Config Fields should never outlive their config class instance
92 # assert that as such here
93 assert self._config_() is not None
94 return self._config_()
95

◆ add()

lsst.pex.config.configChoiceField.SelectionSet.add ( self,
value,
at = None )
Add a value to the selected set.

Parameters
----------
value : `~typing.Any`
    The selected key.
at : `list` of `~lsst.pex.config.callStack.StackFrame` or `None`,\
        optional
    Stack frames for history recording.

Definition at line 96 of file configChoiceField.py.

96 def add(self, value, at=None):
97 """Add a value to the selected set.
98
99 Parameters
100 ----------
101 value : `~typing.Any`
102 The selected key.
103 at : `list` of `~lsst.pex.config.callStack.StackFrame` or `None`,\
104 optional
105 Stack frames for history recording.
106 """
107 if self._config._frozen:
108 raise FieldValidationError(self._field, self._config, "Cannot modify a frozen Config")
109
110 if at is None:
111 at = getCallStack()
112
113 if value not in self._dict:
114 # invoke __getitem__ to make sure it's present
115 self._dict.__getitem__(value, at=at)
116
117 self.__history.append((f"added {value} to selection", at, "selection"))
118 self._set.add(value)
119

◆ discard()

lsst.pex.config.configChoiceField.SelectionSet.discard ( self,
value,
at = None )
Discard a value from the selected set.

Parameters
----------
value : `~typing.Any`
    The selected key.
at : `list` of `~lsst.pex.config.callStack.StackFrame` or `None`,\
        optional
    Stack frames for history recording.

Definition at line 120 of file configChoiceField.py.

120 def discard(self, value, at=None):
121 """Discard a value from the selected set.
122
123 Parameters
124 ----------
125 value : `~typing.Any`
126 The selected key.
127 at : `list` of `~lsst.pex.config.callStack.StackFrame` or `None`,\
128 optional
129 Stack frames for history recording.
130 """
131 if self._config._frozen:
132 raise FieldValidationError(self._field, self._config, "Cannot modify a frozen Config")
133
134 if value not in self._dict:
135 return
136
137 if at is None:
138 at = getCallStack()
139
140 self.__history.append((f"removed {value} from selection", at, "selection"))
141 self._set.discard(value)
142

Member Data Documentation

◆ _config

lsst.pex.config.configChoiceField.SelectionSet._config
protected

Definition at line 81 of file configChoiceField.py.

◆ _config_

lsst.pex.config.configChoiceField.SelectionSet._config_
protected

Definition at line 71 of file configChoiceField.py.

◆ _dict

lsst.pex.config.configChoiceField.SelectionSet._dict
protected

Definition at line 69 of file configChoiceField.py.

◆ _field

lsst.pex.config.configChoiceField.SelectionSet._field
protected

Definition at line 70 of file configChoiceField.py.

◆ _set

lsst.pex.config.configChoiceField.SelectionSet._set
protected

Definition at line 82 of file configChoiceField.py.


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