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

Function _set_decorators

lib/sqlalchemy/orm/collections.py:1332–1491  ·  view source on GitHub ↗

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 """Tailored instrumentation wrappers for any set-like class."""
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 # 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 # testlib.pragma exempt:__hash__
1354 if value in self:
1355 __del(self, value, _sa_initiator, NO_KEY)
1356 # 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 # testlib.pragma exempt:__hash__
1365 if value in self:
1366 __del(self, value, _sa_initiator, NO_KEY)
1367 # 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 # for set in particular, we have no way to access the item
1378 # 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