def get_epublication(self):
if not self.is_valid():<EOL><INDENT>bad_fields = filter(lambda x: not x.is_valid(), self.fields)<EOL>bad_fields = map(<EOL>lambda x: "<STR_LIT>" % (x.keyword, x.descr),<EOL>bad_fields<EOL>)<EOL>raise MetaParsingException(<EOL>"<STR_LIT>" + "<STR_LIT>".join(bad_fields)<EOL>)<EOL><DEDENT>relevant_fields = self.fields<EOL>relevant_fields += filter(lambda x: x.is_valid(), self.optional)<EOL>epub_dict = dict(map(lambda x: (x.epub, x.value), relevant_fields))<EOL>for epublication_part in EPublication._fields:<EOL><INDENT>if epublication_part not in epub_dict:<EOL><INDENT>epub_dict[epublication_part] = None<EOL><DEDENT><DEDENT>if not is_valid_isbn(epub_dict["<STR_LIT>"]):<EOL><INDENT>raise MetaParsingException(<EOL>"<STR_LIT>" % epub_dict["<STR_LIT>"]<EOL>)<EOL><DEDENT>return EPublication(**epub_dict)<EOL>
Returns:
    EPublication: Structure when the object :meth:`is_valid`.

Raises:
    MetaParsingException: When the object is not valid.