@hep2marc.over('<STR_LIT:100>', '<STR_LIT>')<EOL>def authors2marc(self, key, value):
value = force_list(value)<EOL>def _get_ids(value):<EOL><INDENT>ids = {<EOL>'<STR_LIT:i>': [],<EOL>'<STR_LIT>': [],<EOL>}<EOL>if value.get('<STR_LIT>'):<EOL><INDENT>for _id in value.get('<STR_LIT>'):<EOL><INDENT>if _id.get('<STR_LIT>') == '<STR_LIT>':<EOL><INDENT>ids['<STR_LIT:i>'].append(_id.get('<STR_LIT:value>'))<EOL><DEDENT>elif _id.get('<STR_LIT>') == '<STR_LIT>':<EOL><INDENT>ids['<STR_LIT>'].append('<STR_LIT>' + _id.get('<STR_LIT:value>'))<EOL><DEDENT>elif _id.get('<STR_LIT>') == '<STR_LIT>':<EOL><INDENT>ids['<STR_LIT>'].append(_id.get('<STR_LIT:value>'))<EOL><DEDENT>elif _id.get('<STR_LIT>') == '<STR_LIT>':<EOL><INDENT>ids['<STR_LIT>'].append('<STR_LIT>' + _id.get('<STR_LIT:value>')[<NUM_LIT:5>:])<EOL><DEDENT><DEDENT><DEDENT>return ids<EOL><DEDENT>def _get_affiliations(value):<EOL><INDENT>return [<EOL>aff.get('<STR_LIT:value>') for aff in value.get('<STR_LIT>', [])<EOL>]<EOL><DEDENT>def _get_affiliations_identifiers(value):<EOL><INDENT>return [<EOL>u'<STR_LIT>'.format(aff.get('<STR_LIT>'), aff.get('<STR_LIT:value>')) for aff in value.get('<STR_LIT>', [])<EOL>]<EOL><DEDENT>def _get_inspire_roles(value):<EOL><INDENT>values = force_list(value.get('<STR_LIT>'))<EOL>return ['<STR_LIT>' for role in values if role == '<STR_LIT>']<EOL><DEDENT>def _get_raw_affiliations(value):<EOL><INDENT>return [<EOL>aff.get('<STR_LIT:value>') for aff in value.get('<STR_LIT>', [])<EOL>]<EOL><DEDENT>def get_value_100_700(value):<EOL><INDENT>ids = _get_ids(value)<EOL>return {<EOL>'<STR_LIT:a>': value.get('<STR_LIT>'),<EOL>'<STR_LIT:e>': _get_inspire_roles(value),<EOL>'<STR_LIT:q>': value.get('<STR_LIT>'),<EOL>'<STR_LIT:i>': ids.get('<STR_LIT:i>'),<EOL>'<STR_LIT>': ids.get('<STR_LIT>'),<EOL>'<STR_LIT:m>': value.get('<STR_LIT>'),<EOL>'<STR_LIT:t>': _get_affiliations_identifiers(value),<EOL>'<STR_LIT:u>': _get_affiliations(value),<EOL>'<STR_LIT:v>': _get_raw_affiliations(value),<EOL>}<EOL><DEDENT>def get_value_701(value):<EOL><INDENT>ids = _get_ids(value)<EOL>return {<EOL>'<STR_LIT:a>': value.get('<STR_LIT>'),<EOL>'<STR_LIT:q>': value.get('<STR_LIT>'),<EOL>'<STR_LIT:i>': ids.get('<STR_LIT:i>'),<EOL>'<STR_LIT>': ids.get('<STR_LIT>'),<EOL>'<STR_LIT:u>': _get_affiliations(value),<EOL>'<STR_LIT:v>': _get_raw_affiliations(value),<EOL>}<EOL><DEDENT>if len(value) > <NUM_LIT:1>:<EOL><INDENT>self["<STR_LIT>"] = []<EOL>self["<STR_LIT>"] = []<EOL><DEDENT>for author in value[<NUM_LIT:1>:]:<EOL><INDENT>is_supervisor = '<STR_LIT>' in author.get('<STR_LIT>', [])<EOL>if is_supervisor:<EOL><INDENT>self["<STR_LIT>"].append(get_value_701(author))<EOL><DEDENT>else:<EOL><INDENT>self["<STR_LIT>"].append(get_value_100_700(author))<EOL><DEDENT><DEDENT>return get_value_100_700(value[<NUM_LIT:0>])<EOL>
Populate the ``100`` MARC field.

    Also populates the ``700`` and the ``701`` MARC fields through side effects.