16 from itertools
import chain
17 from operator
import attrgetter
21 from .itemlist
import ItemList
22 from .message
import Message, Messages
23 from .modelobject
import ModelObject
24 from .tags
import Tags
33 __slots__ = [
'_name',
'doc',
'args',
'assign',
'timeout',
'type',
34 '_sort_key',
'_next_child_sort_key']
37 TEARDOWN_TYPE =
'teardown'
39 FOR_ITEM_TYPE =
'foritem'
41 message_class = Message
43 def __init__(self, name='', doc='', args=(), assign=(), tags=(),
44 timeout=
None, type=KEYWORD_TYPE):
65 return self.
_name_name
70 self.
_name_name = name
76 self.
_sort_key_sort_key = getattr(parent,
'_child_sort_key', -1)
80 _child_sort_key = property
110 key=attrgetter(
'_sort_key'))
127 visitor.visit_keyword(self)
138 def __init__(self, keyword_class=Keyword, parent=None, keywords=None):
139 ItemList.__init__(self, keyword_class, {
'parent': parent}, keywords)
149 return self[0]
if (self
and self[0].type ==
'setup')
else None
154 if kw
is not None and kw.type !=
'setup':
155 raise TypeError(
"Setup keyword type must be 'setup', "
156 "got '%s'." % kw.type)
170 return self[-1]
if (self
and self[-1].type ==
'teardown')
else None
175 if kw
is not None and kw.type !=
'teardown':
176 raise TypeError(
"Teardown keyword type must be 'teardown', "
177 "got '%s'." % kw.type)
195 kws = [kw
for kw
in self
if kw.type
not in (
'setup',
'teardown')]
200 ItemList.__setitem__(self, index, item)
201 self[index]._sort_key = old._sort_key
def insert(self, index, item)
Base model for a single keyword.
def keywords(self, keywords)
Child keywords as a :class:~.Keywords object.
def parent(self, parent)
Parent test suite, test case or keyword.
def tags(self, tags)
Keyword tags as a :class:~.model.tags.Tags object.
def visit(self, visitor)
:mod:Visitor interface <robot.model.visitor> entry-point.
id
Keyword id in format like s1-t3-k1.
def messages(self, messages)
Messages as a :class:~.model.message.Messages object.
children
Child :attr:keywords and :attr:messages in creation order.
def __init__(self, name='', doc='', args=(), assign=(), tags=(), timeout=None, type=KEYWORD_TYPE)
A list-like object representing keywords in a suite, a test or a keyword.
setup
Keyword used as the setup or None if no setup.
def __init__(self, keyword_class=Keyword, parent=None, keywords=None)
normal
Iterates over normal keywords, omitting setup and teardown.
def __setitem__(self, index, item)
all
Iterates over all keywords, including setup and teardown.
teardown
Keyword used as the teardown or None if no teardown.