1 '''
2 Miscellaneous functions, classes etc
3 '''
4 import sys
5 IS_PYTHON3 = sys.version_info[0] >= 3
6
8 '''
9 A wrapper class for iterators so that the .has_next() method is implemented
10
11 See - http://stackoverflow.com/questions/1966591/hasnext-in-python-iterators
12 '''
14 self.it = iter(it)
15 self._has_next = None
18 if self._has_next:
19 result = self._the_next
20 else:
21 if IS_PYTHON3:
22 result = next(self.it)
23 else:
24 result = self.it.next()
25 self._has_next = None
26 return result
28 if self._has_next:
29 result = self._the_next
30 else:
31 if IS_PYTHON3:
32 result = next(self.it)
33 else:
34 result = self.it.next()
35 self._has_next = None
36 return result
38 if self._has_next is None:
39 try:
40 if IS_PYTHON3:
41 self._the_next = next(self.it)
42 else:
43 self._the_next = self.it.next()
44 except StopIteration: self._has_next = False
45 else: self._has_next = True
46 return self._has_next
47
48
50 expanded_eds = []
51 for ed in eds:
52 if hasattr(ed, 'repeat') and (ed.repeat is not None):
53 expanded_eds.extend(ed.repeat * [ed])
54 else:
55 expanded_eds.append(ed)
56 return expanded_eds
57