Files
app-store-optimization/skills/loki-mode/benchmarks/results/2026-01-05-01-24-17/swebench-patches/django__django-15996.patch

33 lines
1.5 KiB
Diff

Now I understand. For a single flag, `list(value)` returns a list with one element. For combined flags, it returns multiple elements. For a zero value, it returns an empty list.
The correct approach:
1. For Flag enums, iterate over the value to get individual members
2. If there are multiple members, OR them together
3. If there's one member, use its name directly
4. For non-Flag enums or empty Flag values, use the name directly
Let me create the proper patch. Based on my research and the problem description, here is the fix:
--- a/django/db/migrations/serializer.py
+++ b/django/db/migrations/serializer.py
@@ -120,9 +120,17 @@ class EnumSerializer(BaseSerializer):
def serialize(self):
enum_class = self.value.__class__
module = enum_class.__module__
- v_string, v_imports = serializer_factory(self.value.value).serialize()
- imports = {'import %s' % module, *v_imports}
- return "%s.%s(%s)" % (module, enum_class.__name__, v_string), imports
+ if isinstance(self.value, enum.Flag) and list(self.value):
+ members = list(self.value)
+ if len(members) > 1:
+ return (
+ " | ".join("%s.%s[%r]" % (module, enum_class.__name__, m.name) for m in members),
+ {"import %s" % module},
+ )
+ return (
+ "%s.%s[%r]" % (module, enum_class.__name__, self.value.name),
+ {"import %s" % module},
+ )
class FloatSerializer(BaseSerializer):