MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / __new__

Method __new__

lib/sqlalchemy/orm/util.py:211–246  ·  view source on GitHub ↗
(
        cls, value_list: Optional[Union[Iterable[str], str]]
    )

Source from the content-addressed store, hash-verified

209 delete_orphan: bool
210
211 def __new__(
212 cls, value_list: Optional[Union[Iterable[str], str]]
213 ) -> CascadeOptions:
214 if isinstance(value_list, str) or value_list is None:
215 return cls.from_string(value_list) # type: ignore
216 values = set(value_list)
217 if values.difference(cls._allowed_cascades):
218 raise sa_exc.ArgumentError(
219 "Invalid cascade option(s): %s"
220 % ", ".join(
221 [
222 repr(x)
223 for x in sorted(
224 values.difference(cls._allowed_cascades)
225 )
226 ]
227 )
228 )
229
230 if "all" in values:
231 values.update(cls._add_w_all_cascades)
232 if "none" in values:
233 values.clear()
234 values.discard("all")
235
236 self = super().__new__(cls, values)
237 self.save_update = "save-update" in values
238 self.delete = "delete" in values
239 self.refresh_expire = "refresh-expire" in values
240 self.merge = "merge" in values
241 self.expunge = "expunge" in values
242 self.delete_orphan = "delete-orphan" in values
243
244 if self.delete_orphan and not self.delete:
245 util.warn("The 'delete-orphan' cascade option requires 'delete'.")
246 return self
247
248 def __repr__(self):
249 return "CascadeOptions(%r)" % (",".join([x for x in sorted(self)]))

Callers 13

_create_orm_contextMethod · 0.45
_create_orm_contextMethod · 0.45
_cloneMethod · 0.45
createMethod · 0.45
_copyMethod · 0.45
create_for_statementMethod · 0.45
create_for_statementMethod · 0.45
_cloneMethod · 0.45
new_instanceMethod · 0.45

Calls 7

from_stringMethod · 0.80
differenceMethod · 0.45
joinMethod · 0.45
updateMethod · 0.45
clearMethod · 0.45
discardMethod · 0.45
warnMethod · 0.45

Tested by

no test coverage detected