def _produce_author_lists(self):
<EOL>self.authors = self.authors.replace('<STR_LIT>', '<STR_LIT:U+002CU+0020>')<EOL>self.authors = self.authors.replace('<STR_LIT>', '<STR_LIT:U+002CU+0020>')<EOL>self.authors = self.authors.replace('<STR_LIT>', '<STR_LIT:U+002CU+0020>')<EOL>self.authors = self.authors.replace('<STR_LIT:;>', '<STR_LIT:U+002C>')<EOL>self.authors_list = [author.strip() for author in self.authors.split('<STR_LIT:U+002C>')]<EOL>self.authors_list_simple = []<EOL>self.authors_list_split = []<EOL>self.title_ends_with_punct = self.title[-<NUM_LIT:1>] in ['<STR_LIT:.>', '<STR_LIT:!>', '<STR_LIT:?>']if len(self.title) > <NUM_LIT:0> else False<EOL>suffixes = ['<STR_LIT:I>', '<STR_LIT>', '<STR_LIT>', '<STR_LIT>', '<STR_LIT>', '<STR_LIT>', '<STR_LIT>', '<STR_LIT>', "<STR_LIT>", "<STR_LIT>"]<EOL>prefixes = ['<STR_LIT>']<EOL>prepositions = ['<STR_LIT>', '<STR_LIT>', '<STR_LIT>', '<STR_LIT>', '<STR_LIT>']<EOL>for i, author in enumerate(self.authors_list):<EOL><INDENT>if author == '<STR_LIT>':<EOL><INDENT>continue<EOL><DEDENT>names = author.split('<STR_LIT:U+0020>')<EOL>if (len(names[-<NUM_LIT:1>]) <= <NUM_LIT:3>)and names[-<NUM_LIT:1>] not in suffixesand all(c in ascii_uppercase for c in names[-<NUM_LIT:1>]):<EOL><INDENT>names = [c + '<STR_LIT:.>' for c in names[-<NUM_LIT:1>]] + names[:-<NUM_LIT:1>]<EOL><DEDENT>num_suffixes = <NUM_LIT:0><EOL>for name in names[::-<NUM_LIT:1>]:<EOL><INDENT>if name in suffixes:<EOL><INDENT>num_suffixes += <NUM_LIT:1><EOL><DEDENT>else:<EOL><INDENT>break<EOL><DEDENT><DEDENT>for j, name in enumerate(names[:-<NUM_LIT:1> - num_suffixes]):<EOL><INDENT>if j == <NUM_LIT:0> and name in prefixes:<EOL><INDENT>continue<EOL><DEDENT>if j > <NUM_LIT:0> and name in prepositions:<EOL><INDENT>continue<EOL><DEDENT>if (len(name) > <NUM_LIT:2>) or (len(name) and (name[-<NUM_LIT:1>] != '<STR_LIT:.>')):<EOL><INDENT>k = name.find('<STR_LIT:->')<EOL>if <NUM_LIT:0> < k + <NUM_LIT:1> < len(name):<EOL><INDENT>names[j] = name[<NUM_LIT:0>] + '<STR_LIT>' + name[k + <NUM_LIT:1>] + '<STR_LIT:.>'<EOL><DEDENT>else:<EOL><INDENT>names[j] = name[<NUM_LIT:0>] + '<STR_LIT:.>'<EOL><DEDENT><DEDENT><DEDENT>if len(names):<EOL><INDENT>self.authors_list[i] = '<STR_LIT:U+0020>'.join(names)<EOL>if len(names) > <NUM_LIT:1>:<EOL><INDENT>for name in names[<NUM_LIT:0>].split('<STR_LIT:->'):<EOL><INDENT>name_simple = self.simplify_name('<STR_LIT:U+0020>'.join([name, names[-<NUM_LIT:1>]]))<EOL>self.authors_list_simple.append(name_simple)<EOL><DEDENT><DEDENT>else:<EOL><INDENT>self.authors_list_simple.append(self.simplify_name(names[<NUM_LIT:0>]))<EOL><DEDENT>num_prepositions = <NUM_LIT:0><EOL>for name in names:<EOL><INDENT>if name in prepositions:<EOL><INDENT>num_prepositions += <NUM_LIT:1><EOL><DEDENT><DEDENT>sp = <NUM_LIT:1> + num_suffixes + num_prepositions<EOL>self.authors_list_split.append(<EOL>('<STR_LIT:U+0020>'.join(names[:-sp]), '<STR_LIT:U+0020>'.join(names[-sp:])))<EOL><DEDENT><DEDENT>self.authors_bibtex = '<STR_LIT>'.join(self.authors_list)<EOL>if len(self.authors_list) > <NUM_LIT:2>:<EOL><INDENT>self.authors = '<STR_LIT>'.join([<EOL>'<STR_LIT:U+002CU+0020>'.join(self.authors_list[:-<NUM_LIT:1>]),<EOL>self.authors_list[-<NUM_LIT:1>]])<EOL><DEDENT>elif len(self.authors_list) > <NUM_LIT:1>:<EOL><INDENT>self.authors = '<STR_LIT>'.join(self.authors_list)<EOL><DEDENT>else:<EOL><INDENT>self.authors = self.authors_list[<NUM_LIT:0>]<EOL><DEDENT>
Parse authors string to create lists of authors.