Skip to content
Browse files

Fixed #10240 -- Restored YAML serialization with Decimal objects that…

… broke with r9823. Thanks Alex Gaynor for the report.

git-svn-id: bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
1 parent e5cd43e commit e4e964510c917dc668929e9cb6eb0fe0f6d4a576 @brosner brosner committed
Showing with 12 additions and 1 deletion.
  1. +12 −1 django/core/serializers/
13 django/core/serializers/
@@ -7,10 +7,21 @@
from StringIO import StringIO
import yaml
+ import decimal
+except ImportError:
+ from django.utils import _decimal as decimal # Python 2.3 fallback
from django.db import models
from django.core.serializers.python import Serializer as PythonSerializer
from django.core.serializers.python import Deserializer as PythonDeserializer
+class DjangoSafeDumper(yaml.SafeDumper):
+ def represent_decimal(self, data):
+ return self.represent_scalar(',2002:str', str(data))
+DjangoSafeDumper.add_representer(decimal.Decimal, DjangoSafeDumper.represent_decimal)
class Serializer(PythonSerializer):
Convert a queryset to YAML.
@@ -33,7 +44,7 @@ def handle_field(self, obj, field):
def end_serialization(self):
self.options.pop('stream', None)
self.options.pop('fields', None)
- yaml.safe_dump(self.objects,, **self.options)
+ yaml.dump(self.objects,, Dumper=DjangoSafeDumper, **self.options)
def getvalue(self):

0 comments on commit e4e9645

Please sign in to comment.
Something went wrong with that request. Please try again.