'parse_info is a list of item_parse_info objects
There should only be one use_leftover set to True in the list.
Also check that the req_items is not empty after parsing.'

def parse(self, parse_info=[], req_items=None):

    (options, leftover) = self.parse_global()
    all_parse_info = parse_info[:]
    all_parse_info.append(self.topic_parse_info)
    try:
        for item_parse_info in all_parse_info:
            (values, leftover) = item_parse_info.get_values(options, leftover)
            setattr(self, item_parse_info.attribute_name, values)
    except CliError as s:
        self.invalid_syntax(s)
    if (req_items and (not getattr(self, req_items, None))):
        self.invalid_syntax(('%s    %s    requires    at    least    one    %s' % (self.msg_topic, self.usage_action, self.msg_topic)))
    return (options, leftover)
