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

1""" Tablib - YAML Support. 

2""" 

3 

4import yaml 

5 

6import tablib 

7 

8 

9class YAMLFormat: 

10 title = 'yaml' 

11 extensions = ('yaml', 'yml') 

12 

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 ) 

19 

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 ) 

26 

27 @classmethod 

28 def import_set(cls, dset, in_stream): 

29 """Returns dataset from YAML stream.""" 

30 

31 dset.wipe() 

32 dset.dict = yaml.safe_load(in_stream) 

33 

34 @classmethod 

35 def import_book(cls, dbook, in_stream): 

36 """Returns databook from YAML stream.""" 

37 

38 dbook.wipe() 

39 

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) 

45 

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