diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-10-21 17:24:14 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-10-21 17:24:14 -0400 |
commit | 233d9c1bc0d32020293356a420b56d32978d5c38 (patch) | |
tree | 1c6313242a261db9483ec9f78568fabf4258c73a /lib | |
parent | ade27f35cb4911306404dcc74cce8bbf6f7d37bb (diff) | |
parent | ba951b99a6f3bd78a3a90546f0ae686d31c3bfc8 (diff) | |
download | sqlalchemy-233d9c1bc0d32020293356a420b56d32978d5c38.tar.gz |
Merge remote-tracking branch 'origin/pr/137' into pr137
Diffstat (limited to 'lib')
-rw-r--r-- | lib/sqlalchemy/orm/util.py | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/lib/sqlalchemy/orm/util.py b/lib/sqlalchemy/orm/util.py index 8d40ae21c..ad610a4ac 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): |