def parse(self, infile): """Parse a ZincAnalysis instance from an open text file.""" def parse_element(cls): parsed_sections = [self._parse_section(infile, header) for header in cls.headers] return cls(parsed_sections) self._verify_version(infile) compile_setup = parse_element(CompileSetup) relations = parse_element(Relations) stamps = parse_element(Stamps) apis = parse_element(APIs) source_infos = parse_element(SourceInfos) compilations = parse_element(Compilations) return ZincAnalysis(compile_setup, relations, stamps, apis, source_infos, compilations)