Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/pr/137' into pr137
Browse files Browse the repository at this point in the history
  • Loading branch information
zzzeek committed Oct 21, 2014
2 parents ade27f3 + ba951b9 commit 233d9c1
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 7 deletions.
19 changes: 12 additions & 7 deletions lib/sqlalchemy/orm/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -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" %
Expand Down Expand Up @@ -70,6 +67,14 @@ def __repr__(self):
",".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):
Expand Down
8 changes: 8 additions & 0 deletions test/orm/test_cascade.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import copy

from sqlalchemy.testing import assert_raises, assert_raises_message
from sqlalchemy import Integer, String, ForeignKey, Sequence, \
Expand All @@ -13,6 +14,7 @@
from sqlalchemy.testing import fixtures
from test.orm import _fixtures


class CascadeArgTest(fixtures.MappedTest):
run_inserts = None
run_create_tables = None
Expand Down Expand Up @@ -85,6 +87,12 @@ def test_cascade_immutable(self):
orm_util.CascadeOptions("all, delete-orphan"),
frozenset)

def test_cascade_deepcopy(self):
old = orm_util.CascadeOptions("all, delete-orphan")
new = copy.deepcopy(old)
eq_(old, new)


def test_cascade_assignable(self):
User, Address = self.classes.User, self.classes.Address
users, addresses = self.tables.users, self.tables.addresses
Expand Down

0 comments on commit 233d9c1

Please sign in to comment.