OK I managed to fix it... wasn't sure what value to provide append() when there was no value returned by readline so did this and it worked:
def complete(self,text,state):
try:
tokens = readline.get_line_buffer().split()
if not tokens or readline.get_line_buffer()[-1] == ' ':
tokens.append(text)
Thanks guys!