|  |  | 
|  | # 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 | 
|  |  |