Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fixed #12914 -- Use yaml faster C implementation when available

Thanks Beuc for the report and the initial patch.
  • Loading branch information...
commit a843539af2f557e9bdc71b9b5ef66eabe0e39e3c 1 parent c8eff0d
@claudep claudep authored
Showing with 9 additions and 2 deletions.
  1. +9 −2 django/core/serializers/pyyaml.py
View
11 django/core/serializers/pyyaml.py
@@ -14,8 +14,15 @@
from django.core.serializers.python import Deserializer as PythonDeserializer
from django.utils import six
+# Use the C (faster) implementation if possible
+try:
+ from yaml import CSafeLoader as SafeLoader
+ from yaml import CSafeDumper as SafeDumper
+except ImportError:
+ from yaml import SafeLoader, SafeDumper
-class DjangoSafeDumper(yaml.SafeDumper):
+
+class DjangoSafeDumper(SafeDumper):
def represent_decimal(self, data):
return self.represent_scalar('tag:yaml.org,2002:str', str(data))
@@ -58,7 +65,7 @@ def Deserializer(stream_or_string, **options):
else:
stream = stream_or_string
try:
- for obj in PythonDeserializer(yaml.safe_load(stream), **options):
+ for obj in PythonDeserializer(yaml.load(stream, Loader=SafeLoader), **options):
yield obj
except GeneratorExit:
raise
Please sign in to comment.
Something went wrong with that request. Please try again.