2010-09-25 11:49:21 +02:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
2010-09-25 22:49:21 +02:00
|
|
|
""" Tablib - YAML Support.
|
|
|
|
"""
|
|
|
|
|
2011-03-23 07:02:56 +01:00
|
|
|
import sys
|
|
|
|
|
2010-10-06 18:23:58 +02:00
|
|
|
try:
|
2011-02-17 22:31:52 +01:00
|
|
|
import yaml
|
2010-10-06 18:23:58 +02:00
|
|
|
except ImportError:
|
2011-03-23 07:17:26 +01:00
|
|
|
if sys.version_info[0] > 2:
|
2011-03-23 07:02:56 +01:00
|
|
|
import tablib.packages.yaml3 as yaml
|
|
|
|
else:
|
|
|
|
import tablib.packages.yaml as yaml
|
2011-05-23 01:52:24 +02:00
|
|
|
|
2010-10-06 18:23:58 +02:00
|
|
|
|
2010-09-25 11:49:21 +02:00
|
|
|
import tablib
|
|
|
|
|
2010-09-25 22:49:21 +02:00
|
|
|
|
|
|
|
|
2010-09-25 11:49:21 +02:00
|
|
|
title = 'yaml'
|
2012-06-08 09:10:43 +02:00
|
|
|
extensions = ('yaml', 'yml')
|
2010-09-25 11:49:21 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def export_set(dataset):
|
2011-02-17 22:31:52 +01:00
|
|
|
"""Returns YAML representation of Dataset."""
|
2011-05-23 01:52:24 +02:00
|
|
|
|
2013-08-27 15:58:30 +02:00
|
|
|
return yaml.safe_dump(dataset._package(ordered=False))
|
2010-09-25 11:49:21 +02:00
|
|
|
|
|
|
|
|
|
|
|
def export_book(databook):
|
2011-02-17 22:31:52 +01:00
|
|
|
"""Returns YAML representation of Databook."""
|
2013-08-27 15:58:30 +02:00
|
|
|
return yaml.safe_dump(databook._package(ordered=False))
|
2010-09-25 11:49:21 +02:00
|
|
|
|
|
|
|
|
2010-09-25 21:39:09 +02:00
|
|
|
def import_set(dset, in_stream):
|
2011-02-17 22:31:52 +01:00
|
|
|
"""Returns dataset from YAML stream."""
|
2010-09-25 11:49:21 +02:00
|
|
|
|
2011-02-17 22:31:52 +01:00
|
|
|
dset.wipe()
|
2011-11-02 06:35:59 +01:00
|
|
|
dset.dict = yaml.safe_load(in_stream)
|
2010-09-25 12:20:34 +02:00
|
|
|
|
|
|
|
|
2010-09-25 21:56:20 +02:00
|
|
|
def import_book(dbook, in_stream):
|
2011-02-17 22:31:52 +01:00
|
|
|
"""Returns databook from YAML stream."""
|
2010-09-25 12:20:34 +02:00
|
|
|
|
2011-02-17 22:31:52 +01:00
|
|
|
dbook.wipe()
|
2010-09-25 21:56:20 +02:00
|
|
|
|
2013-08-28 17:24:56 +02:00
|
|
|
for sheet in yaml.load(in_stream):
|
2011-03-23 08:56:07 +01:00
|
|
|
data = tablib.Dataset()
|
2011-02-17 22:31:52 +01:00
|
|
|
data.title = sheet['title']
|
|
|
|
data.dict = sheet['data']
|
|
|
|
dbook.add_sheet(data)
|
2011-05-23 01:52:24 +02:00
|
|
|
|
2010-09-26 00:03:03 +02:00
|
|
|
def detect(stream):
|
2011-02-17 22:31:52 +01:00
|
|
|
"""Returns True if given stream is valid YAML."""
|
|
|
|
try:
|
2011-11-02 06:35:59 +01:00
|
|
|
_yaml = yaml.safe_load(stream)
|
2011-02-17 22:31:52 +01:00
|
|
|
if isinstance(_yaml, (list, tuple, dict)):
|
|
|
|
return True
|
|
|
|
else:
|
|
|
|
return False
|
2012-01-29 17:18:30 +01:00
|
|
|
except (yaml.parser.ParserError, yaml.reader.ReaderError,
|
|
|
|
yaml.scanner.ScannerError):
|
2012-01-06 01:12:06 +01:00
|
|
|
return False
|