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

Method __new__

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

Source from the content-addressed store, hash-verified

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