@classmethod<EOL><INDENT>def search(cls, query, search_opts=None):<DEDENT>
if search_opts is None:<EOL><INDENT>search_opts = {}<EOL><DEDENT>xmlrpc = XMLRPCConnection()<EOL>try:<EOL><INDENT>search_result = xmlrpc.connection.search_tag(<EOL>{<EOL>'<STR_LIT>': query,<EOL>'<STR_LIT>': search_opts,<EOL>'<STR_LIT>': AuthOptions().options<EOL>})<EOL><DEDENT>except xmlrpclib.Fault as xml_fault:<EOL><INDENT>raise _fault_to_exception(xml_fault)<EOL><DEDENT>result = dict()<EOL>result['<STR_LIT:result>'] = []<EOL>result['<STR_LIT>'] = search_result['<STR_LIT>']<EOL>for xml_tag in search_result['<STR_LIT:result>']:<EOL><INDENT>result['<STR_LIT:result>'].append(Tag.from_dict(xml_tag))<EOL><DEDENT>return result<EOL>
Search tags.

            For more information, see the backend function
            :py:func:`nipap.backend.Nipap.search_tag`.