MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / _set_decorators

Function _set_decorators

lib/sqlalchemy/orm/collections.py:1332–1491  ·  lib/sqlalchemy/orm/collections.py::_set_decorators

Tailored instrumentation wrappers for any set-like class.

()

Source from the content-addressed store, hash-verified

1330
1331
1332def _set_decorators() -> Dict[str, Callable[[_FN], _FN]]:
1333 class="st">""class="st">"Tailored instrumentation wrappers for any set-like class."class="st">""
1334
1335 def _tidy(fn):
1336 fn._sa_instrumented = True
1337 fn.__doc__ = getattr(set, fn.__name__).__doc__
1338
1339 def add(fn):
1340 def add(self, value, _sa_initiator=None):
1341 if value not in self:
1342 value = __set(self, value, _sa_initiator, NO_KEY)
1343 else:
1344 __set_wo_mutation(self, value, _sa_initiator)
1345 class="cm"># testlib.pragma exempt:__hash__
1346 fn(self, value)
1347
1348 _tidy(add)
1349 return add
1350
1351 def discard(fn):
1352 def discard(self, value, _sa_initiator=None):
1353 class="cm"># testlib.pragma exempt:__hash__
1354 if value in self:
1355 __del(self, value, _sa_initiator, NO_KEY)
1356 class="cm"># testlib.pragma exempt:__hash__
1357 fn(self, value)
1358
1359 _tidy(discard)
1360 return discard
1361
1362 def remove(fn):
1363 def remove(self, value, _sa_initiator=None):
1364 class="cm"># testlib.pragma exempt:__hash__
1365 if value in self:
1366 __del(self, value, _sa_initiator, NO_KEY)
1367 class="cm"># testlib.pragma exempt:__hash__
1368 fn(self, value)
1369
1370 _tidy(remove)
1371 return remove
1372
1373 def pop(fn):
1374 def pop(self):
1375 __before_pop(self)
1376 item = fn(self)
1377 class="cm"># for set in particular, we have no way to access the item
1378 class="cm"># that will be popped before pop is called.
1379 __del(self, item, None, NO_KEY)
1380 return item
1381
1382 _tidy(pop)
1383 return pop
1384
1385 def clear(fn):
1386 def clear(self):
1387 for item in list(self):
1388 self.remove(item)
1389

Callers 1

collections.pyFile · 0.85

Calls 3

localsFunction · 0.85
copyMethod · 0.45
popMethod · 0.45

Tested by

no test coverage detected