Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/tablib/formats/_yaml.py: 45%
32 statements
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
1""" Tablib - YAML Support.
2"""
4import yaml
6import tablib
9class YAMLFormat:
10 title = 'yaml'
11 extensions = ('yaml', 'yml')
13 @classmethod
14 def export_set(cls, dataset):
15 """Returns YAML representation of Dataset."""
16 return yaml.safe_dump(
17 dataset._package(ordered=False), default_flow_style=None, allow_unicode=True
18 )
20 @classmethod
21 def export_book(cls, databook):
22 """Returns YAML representation of Databook."""
23 return yaml.safe_dump(
24 databook._package(ordered=False), default_flow_style=None, allow_unicode=True
25 )
27 @classmethod
28 def import_set(cls, dset, in_stream):
29 """Returns dataset from YAML stream."""
31 dset.wipe()
32 dset.dict = yaml.safe_load(in_stream)
34 @classmethod
35 def import_book(cls, dbook, in_stream):
36 """Returns databook from YAML stream."""
38 dbook.wipe()
40 for sheet in yaml.safe_load(in_stream):
41 data = tablib.Dataset()
42 data.title = sheet['title']
43 data.dict = sheet['data']
44 dbook.add_sheet(data)
46 @classmethod
47 def detect(cls, stream):
48 """Returns True if given stream is valid YAML."""
49 try:
50 _yaml = yaml.safe_load(stream)
51 if isinstance(_yaml, (list, tuple, dict)):
52 return True
53 else:
54 return False
55 except (yaml.parser.ParserError, yaml.reader.ReaderError,
56 yaml.scanner.ScannerError):
57 return False