summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjona <jona.klemenc@hotmail.com>2014-09-16 20:19:03 +0200
committerjona <jona.klemenc@hotmail.com>2014-09-16 20:19:03 +0200
commitba951b99a6f3bd78a3a90546f0ae686d31c3bfc8 (patch)
treed89ad2296f7b30b4945fa2ed4300af21381f1974
parent98a011453537f1516def7acaa25c88ea942965ad (diff)
downloadsqlalchemy-pr/137.tar.gz
change functionspr/137
-rw-r--r--lib/sqlalchemy/orm/util.py19
1 files changed, 12 insertions, 7 deletions
diff --git a/lib/sqlalchemy/orm/util.py b/lib/sqlalchemy/orm/util.py
index 734f9d5e6..3bb2685fb 100644
--- a/lib/sqlalchemy/orm/util.py
+++ b/lib/sqlalchemy/orm/util.py
@@ -30,13 +30,10 @@ class CascadeOptions(frozenset):
'all', 'none', 'delete-orphan'])
_allowed_cascades = all_cascades
- def __new__(cls, arg):
- values = set([
- c for c
- in re.split('\s*,\s*', arg or "")
- if c
- ])
-
+ def __new__(cls, value_list):
+ if isinstance(value_list, str) or value_list is None:
+ return cls.from_string(value_list)
+ values = set(value_list)
if values.difference(cls._allowed_cascades):
raise sa_exc.ArgumentError(
"Invalid cascade option(s): %s" %
@@ -70,6 +67,14 @@ class CascadeOptions(frozenset):
",".join([x for x in sorted(self)])
)
+ @classmethod
+ def from_string(cls, arg):
+ values = [
+ c for c
+ in re.split('\s*,\s*', arg or "")
+ if c
+ ]
+ return cls(values)
def _validator_events(
desc, key, validator, include_removes, include_backrefs):