"""The R/qtl2 parsing and processing code.""" import json import yaml from pathlib import Path from typing import List, Union from zipfile import ZipFile, ZipInfo, is_zipfile from quality_control.debug import __pk__ from r_qtl.errors import InvalidFormat def control_data(zfile: ZipFile) -> dict: """Retrieve the control file from the zip file info.""" files = tuple(filename for filename in zfile.namelist() if (filename.endswith(".yaml") or filename.endswith(".json"))) num_files = len(files) if num_files == 0: raise InvalidFormat("Expected a json or yaml control file.") if num_files > 1: raise InvalidFormat("Found more than one possible control file.") return (json.loads(zfile.read(files[0])) if files[0].endswith(".json") else yaml.safe_load(zfile.read(files[0]))) def read_r_qtl2_files(filepath: Path): """Read R/qtl2 format zip files.""" with ZipFile(filepath, "r") as zfile: cf = control_data(zfile) raise NotImplementedError("Implementation is incomplete.")