1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

 

# Abstract classes. 

 

class Event(object): 

def __init__(self, start_mark=None, end_mark=None): 

self.start_mark = start_mark 

self.end_mark = end_mark 

def __repr__(self): 

attributes = [key for key in ['anchor', 'tag', 'implicit', 'value'] 

if hasattr(self, key)] 

arguments = ', '.join(['%s=%r' % (key, getattr(self, key)) 

for key in attributes]) 

return '%s(%s)' % (self.__class__.__name__, arguments) 

 

class NodeEvent(Event): 

def __init__(self, anchor, start_mark=None, end_mark=None): 

self.anchor = anchor 

self.start_mark = start_mark 

self.end_mark = end_mark 

 

class CollectionStartEvent(NodeEvent): 

def __init__(self, anchor, tag, implicit, start_mark=None, end_mark=None, 

flow_style=None): 

self.anchor = anchor 

self.tag = tag 

self.implicit = implicit 

self.start_mark = start_mark 

self.end_mark = end_mark 

self.flow_style = flow_style 

 

class CollectionEndEvent(Event): 

pass 

 

# Implementations. 

 

class StreamStartEvent(Event): 

def __init__(self, start_mark=None, end_mark=None, encoding=None): 

self.start_mark = start_mark 

self.end_mark = end_mark 

self.encoding = encoding 

 

class StreamEndEvent(Event): 

pass 

 

class DocumentStartEvent(Event): 

def __init__(self, start_mark=None, end_mark=None, 

explicit=None, version=None, tags=None): 

self.start_mark = start_mark 

self.end_mark = end_mark 

self.explicit = explicit 

self.version = version 

self.tags = tags 

 

class DocumentEndEvent(Event): 

def __init__(self, start_mark=None, end_mark=None, 

explicit=None): 

self.start_mark = start_mark 

self.end_mark = end_mark 

self.explicit = explicit 

 

class AliasEvent(NodeEvent): 

pass 

 

class ScalarEvent(NodeEvent): 

def __init__(self, anchor, tag, implicit, value, 

start_mark=None, end_mark=None, style=None): 

self.anchor = anchor 

self.tag = tag 

self.implicit = implicit 

self.value = value 

self.start_mark = start_mark 

self.end_mark = end_mark 

self.style = style 

 

class SequenceStartEvent(CollectionStartEvent): 

pass 

 

class SequenceEndEvent(CollectionEndEvent): 

pass 

 

class MappingStartEvent(CollectionStartEvent): 

pass 

 

class MappingEndEvent(CollectionEndEvent): 

pass