Commit 1aadade3 authored by Baptiste Mispelon's avatar Baptiste Mispelon
Browse files

Fixed #24521 -- Added support for serializing frozensets in migrations.

parent 00e66772
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -302,7 +302,7 @@ class MigrationWriter(object):
            value = force_text(value)

        # Sequences
        if isinstance(value, (list, set, tuple)):
        if isinstance(value, (frozenset, list, set, tuple)):
            imports = set()
            strings = []
            for item in value:
@@ -312,6 +312,8 @@ class MigrationWriter(object):
            if isinstance(value, set):
                # Don't use the literal "{%s}" as it doesn't support empty set
                format = "set([%s])"
            elif isinstance(value, frozenset):
                format = "frozenset([%s])"
            elif isinstance(value, tuple):
                # When len(value)==0, the empty tuple should be serialized as
                # "()", not "(,)" because (,) is invalid Python syntax.
+4 −0
Original line number Diff line number Diff line
@@ -347,6 +347,10 @@ class WriterTests(TestCase):
        self.assertSerializedEqual(FoodManager('a', 'b'))
        self.assertSerializedEqual(FoodManager('x', 'y', c=3, d=4))

    def test_serialize_frozensets(self):
        self.assertSerializedEqual(frozenset())
        self.assertSerializedEqual(frozenset("let it go"))

    def test_simple_migration(self):
        """
        Tests serializing a simple migration.