diff --git a/django/core/serializers/pyyaml.py b/django/core/serializers/pyyaml.py index 5effda5b46..e490b8607d 100644 --- a/django/core/serializers/pyyaml.py +++ b/django/core/serializers/pyyaml.py @@ -12,6 +12,8 @@ from django.db import models from django.core.serializers.base import DeserializationError from django.core.serializers.python import Serializer as PythonSerializer from django.core.serializers.python import Deserializer as PythonDeserializer +from django.utils.encoding import smart_str + class DjangoSafeDumper(yaml.SafeDumper): def represent_decimal(self, data): @@ -48,8 +50,10 @@ def Deserializer(stream_or_string, **options): """ Deserialize a stream or string of YAML data. """ - if isinstance(stream_or_string, basestring): + if isinstance(stream_or_string, bytes): stream = BytesIO(stream_or_string) + if isinstance(stream_or_string, unicode): + stream = BytesIO(smart_str(stream_or_string)) else: stream = stream_or_string try: