comparison env/lib/python3.7/site-packages/planemo/training/utils.py @ 5:9b1c78e6ba9c draft default tip

"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author shellac
date Mon, 01 Jun 2020 08:59:25 -0400
parents 79f47841a781
children
comparison
equal deleted inserted replaced
4:79f47841a781 5:9b1c78e6ba9c
1 """Module contains code for the Requirement, Reference and some general functions for training."""
2
3 import collections
4
5 import oyaml as yaml
6
7
8 class Requirement(object):
9 """Class to describe a training requirement."""
10
11 def __init__(self, req_type="internal", topic_name="introduction", title=None, tutorials=None, link=None):
12 """Init a Requirement instance."""
13 self.type = req_type
14 self.topic_name = topic_name
15 self.tutorials = tutorials
16 self.title = title
17 self.link = link
18
19 def init_from_dict(self, metadata):
20 """Init from a dictionary generated by export_to_ordered_dict."""
21 self.type = metadata['type']
22 if self.type == 'internal':
23 self.topic_name = metadata['topic_name']
24 if 'tutorials' in metadata:
25 self.tutorials = metadata['tutorials']
26 else:
27 self.title = metadata['title']
28 if self.type == 'external':
29 self.link = metadata['link']
30
31 def export_to_ordered_dict(self):
32 """Export the requirement into an ordered dictionary."""
33 req = collections.OrderedDict()
34 req['type'] = self.type
35 if self.type == 'internal':
36 req['topic_name'] = self.topic_name
37 if self.tutorials:
38 req['tutorials'] = self.tutorials
39 else:
40 req['title'] = self.title
41 if self.type == 'external':
42 req['link'] = self.link
43 return req
44
45
46 def load_yaml(filepath):
47 """Load the content of a YAML file to a dictionary."""
48 with open(filepath, "r") as m_file:
49 content = yaml.safe_load(m_file)
50 return content
51
52
53 def save_to_yaml(content, filepath):
54 """Save a dictionary to a YAML file."""
55 with open(filepath, 'w') as stream:
56 yaml.safe_dump(content,
57 stream,
58 indent=2,
59 default_flow_style=False,
60 default_style='',
61 explicit_start=True,
62 encoding='utf-8',
63 allow_unicode=True)