diff --git a/tablib/packages/yaml/__init__.py b/tablib/packages/yaml/__init__.py index cd2ea5a..f36267a 100644 --- a/tablib/packages/yaml/__init__.py +++ b/tablib/packages/yaml/__init__.py @@ -9,14 +9,13 @@ from .loader import * from .dumper import * __version__ = '3.09' + try: - from .cyaml import * + from cyaml import * __with_libyaml__ = True except ImportError: __with_libyaml__ = False -import io - def scan(stream, Loader=Loader): """ Scan a YAML stream and produce scanning tokens. @@ -92,7 +91,8 @@ def emit(events, stream=None, Dumper=Dumper, """ getvalue = None if stream is None: - stream = io.StringIO() + from StringIO import StringIO + stream = StringIO() getvalue = stream.getvalue dumper = Dumper(stream, canonical=canonical, indent=indent, width=width, allow_unicode=allow_unicode, line_break=line_break) @@ -104,7 +104,7 @@ def emit(events, stream=None, Dumper=Dumper, def serialize_all(nodes, stream=None, Dumper=Dumper, canonical=None, indent=None, width=None, allow_unicode=None, line_break=None, - encoding=None, explicit_start=None, explicit_end=None, + encoding='utf-8', explicit_start=None, explicit_end=None, version=None, tags=None): """ Serialize a sequence of representation trees into a YAML stream. @@ -113,9 +113,10 @@ def serialize_all(nodes, stream=None, Dumper=Dumper, getvalue = None if stream is None: if encoding is None: - stream = io.StringIO() + from StringIO import StringIO else: - stream = io.BytesIO() + from cStringIO import StringIO + stream = StringIO() getvalue = stream.getvalue dumper = Dumper(stream, canonical=canonical, indent=indent, width=width, allow_unicode=allow_unicode, line_break=line_break, @@ -139,7 +140,7 @@ def dump_all(documents, stream=None, Dumper=Dumper, default_style=None, default_flow_style=None, canonical=None, indent=None, width=None, allow_unicode=None, line_break=None, - encoding=None, explicit_start=None, explicit_end=None, + encoding='utf-8', explicit_start=None, explicit_end=None, version=None, tags=None): """ Serialize a sequence of Python objects into a YAML stream. @@ -148,9 +149,10 @@ def dump_all(documents, stream=None, Dumper=Dumper, getvalue = None if stream is None: if encoding is None: - stream = io.StringIO() + from io import StringIO else: - stream = io.BytesIO() + from io import StringIO + stream = StringIO() getvalue = stream.getvalue dumper = Dumper(stream, default_style=default_style, default_flow_style=default_flow_style, @@ -254,12 +256,13 @@ class YAMLObjectMetaclass(type): cls.yaml_loader.add_constructor(cls.yaml_tag, cls.from_yaml) cls.yaml_dumper.add_representer(cls, cls.to_yaml) -class YAMLObject(metaclass=YAMLObjectMetaclass): +class YAMLObject(object): """ An object that can dump itself to a YAML stream and load itself from a YAML stream. """ + __metaclass__ = YAMLObjectMetaclass __slots__ = () # no direct instantiation, so allow immutable subclasses yaml_loader = Loader @@ -268,18 +271,18 @@ class YAMLObject(metaclass=YAMLObjectMetaclass): yaml_tag = None yaml_flow_style = None - @classmethod def from_yaml(cls, loader, node): """ Convert a representation node to a Python object. """ return loader.construct_yaml_object(node, cls) + from_yaml = classmethod(from_yaml) - @classmethod def to_yaml(cls, dumper, data): """ Convert a Python object to a representation node. """ return dumper.represent_yaml_object(cls.yaml_tag, data, cls, flow_style=cls.yaml_flow_style) + to_yaml = classmethod(to_yaml)