Use cYAML if it is available in Python. (#2010)
This commit is contained in:
@@ -98,7 +98,7 @@
|
||||
import base64
|
||||
import hashlib
|
||||
import imp
|
||||
import sys
|
||||
import ctypes
|
||||
from StringIO import StringIO
|
||||
from operator import attrgetter
|
||||
|
||||
@@ -203,6 +203,9 @@
|
||||
|
||||
legal_deps = tuple(special_types) + alldeps
|
||||
|
||||
"""Max integer helps avoid passing too large a value to cyaml."""
|
||||
maxint = 2 ** (ctypes.sizeof(ctypes.c_int) * 8 - 1) - 1
|
||||
|
||||
|
||||
def validate_deptype(deptype):
|
||||
if isinstance(deptype, str):
|
||||
@@ -969,7 +972,7 @@ def dag_hash(self, length=None):
|
||||
return self._hash[:length]
|
||||
else:
|
||||
yaml_text = syaml.dump(
|
||||
self.to_node_dict(), default_flow_style=True, width=sys.maxint)
|
||||
self.to_node_dict(), default_flow_style=True, width=maxint)
|
||||
sha = hashlib.sha1(yaml_text)
|
||||
b32_hash = base64.b32encode(sha.digest()).lower()[:length]
|
||||
if self.concrete:
|
||||
|
@@ -32,6 +32,10 @@
|
||||
|
||||
"""
|
||||
import yaml
|
||||
try:
|
||||
from yaml import CLoader as Loader, CDumper as Dumper
|
||||
except ImportError as e:
|
||||
from yaml import Loader, Dumper
|
||||
from yaml.nodes import *
|
||||
from yaml.constructor import ConstructorError
|
||||
from ordereddict_backport import OrderedDict
|
||||
@@ -64,7 +68,7 @@ def mark(obj, node):
|
||||
obj._end_mark = node.end_mark
|
||||
|
||||
|
||||
class OrderedLineLoader(yaml.Loader):
|
||||
class OrderedLineLoader(Loader):
|
||||
"""YAML loader that preserves order and line numbers.
|
||||
|
||||
Mappings read in by this loader behave like an ordered dict.
|
||||
@@ -156,7 +160,7 @@ def construct_mapping(self, node, deep=False):
|
||||
u'tag:yaml.org,2002:str', OrderedLineLoader.construct_yaml_str)
|
||||
|
||||
|
||||
class OrderedLineDumper(yaml.Dumper):
|
||||
class OrderedLineDumper(Dumper):
|
||||
"""Dumper that preserves ordering and formats ``syaml_*`` objects.
|
||||
|
||||
This dumper preserves insertion ordering ``syaml_dict`` objects
|
||||
|
Reference in New Issue
Block a user