MCPcopy Create free account
hub / github.com/sqlalchemy/sqlalchemy / SimpleResultMetaData

Class SimpleResultMetaData

lib/sqlalchemy/engine/result.py:259–425  ·  view source on GitHub ↗

result metadata for in-memory collections.

Source from the content-addressed store, hash-verified

257
258
259class SimpleResultMetaData(ResultMetaData):
260 """result metadata for in-memory collections."""
261
262 __slots__ = (
263 "_keys",
264 "_keymap",
265 "_processors",
266 "_tuplefilter",
267 "_translated_indexes",
268 "_unique_filters",
269 "_key_to_index",
270 "_ambiguous_keys",
271 )
272
273 _keys: Sequence[str]
274
275 def __init__(
276 self,
277 keys: Sequence[str],
278 extra: Optional[Sequence[Any]] = None,
279 _processors: Optional[_ProcessorsType] = None,
280 _tuplefilter: Optional[_TupleGetterType] = None,
281 _translated_indexes: Optional[Sequence[int]] = None,
282 _unique_filters: Optional[Sequence[Callable[[Any], Any]]] = None,
283 _ambiguous_keys: Optional[frozenset[str]] = None,
284 ):
285 self._keys = list(keys)
286 self._tuplefilter = _tuplefilter
287 self._translated_indexes = _translated_indexes
288 self._unique_filters = _unique_filters
289 if extra:
290 recs_names = [
291 (
292 (name,) + (extras if extras else ()),
293 (index, name, extras),
294 )
295 for index, (name, extras) in enumerate(zip(self._keys, extra))
296 ]
297 else:
298 recs_names = [
299 ((name,), (index, name, ()))
300 for index, name in enumerate(self._keys)
301 ]
302
303 self._keymap = {key: rec for keys, rec in recs_names for key in keys}
304
305 if _ambiguous_keys:
306 for name in _ambiguous_keys.intersection(self._keymap):
307 rec = self._keymap[name]
308 self._keymap[name] = (None,) + rec[1:]
309
310 self._processors = _processors
311
312 self._ambiguous_keys = _ambiguous_keys
313
314 self._key_to_index = self._make_key_to_index(self._keymap, 0)
315
316 def _has_key(self, key: object) -> bool:

Callers 10

test_nontuple_rowMethod · 0.90
init_objectsMethod · 0.90
_for_freezeMethod · 0.85
_reduceMethod · 0.85
result_tupleFunction · 0.85
null_resultFunction · 0.85
_for_freezeMethod · 0.85
instancesFunction · 0.85

Calls

no outgoing calls

Tested by 3

test_nontuple_rowMethod · 0.72