diff options
Diffstat (limited to 'r_qtl/r_qtl2.py')
| -rw-r--r-- | r_qtl/r_qtl2.py | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/r_qtl/r_qtl2.py b/r_qtl/r_qtl2.py index 06175ce..ce1dbf8 100644 --- a/r_qtl/r_qtl2.py +++ b/r_qtl/r_qtl2.py @@ -411,22 +411,19 @@ def file_data(zfile: ZipFile, try: if isinstance(cdata[member_key], list): - for row in (line for lines in + yield from (line for lines in (file_data( zfile, member_key, {**cdata, member_key: innerfile}, process_value, process_transposed_value) for innerfile in cdata[member_key]) - for line in lines): - yield row + for line in lines) return if not cdata.get(f"{member_key}_transposed", False): - for row in with_non_transposed(zfile, member_key, cdata, process_value): - yield row + yield from with_non_transposed(zfile, member_key, cdata, process_value) return - for row in with_transposed( - zfile, member_key, cdata, process_transposed_value): - yield row + yield from with_transposed( + zfile, member_key, cdata, process_transposed_value) except KeyError as exc: raise MissingFileException(*exc.args) from exc @@ -477,8 +474,7 @@ def raw_file_data(zipfilepath: Union[str, Path], with (ZipFile(str(zipfilepath), "r") as zfile, zfile.open(memberfilename) as innerfile): wrappedfile = io.TextIOWrapper(innerfile) - for line in wrappedfile: - yield line + yield from wrappedfile def strip_comments(rawdata: Iterator[str], commentchar) -> Iterator[str]: """Remove comments from raw text.""" @@ -568,8 +564,7 @@ def load_samples(zipfilepath: Union[str, Path], def read_text_file(filepath: Union[str, Path]) -> Iterator[str]: """Read the raw text from a text file.""" with open(filepath, "r", encoding="utf8") as _file: - for line in _file: - yield line + yield from _file def read_csv_file(filepath: Union[str, Path], @@ -589,16 +584,16 @@ def read_csv_file_headers( comment_char: str = "#" ) -> tuple[str, ...]: """Read the 'true' headers of a CSV file.""" - headers = tuple() + headers: tuple[str, ...] = tuple() for line in read_text_file(filepath): if line.startswith(comment_char): continue - line = tuple(field.strip() for field in line.split(separator)) + row = tuple(field.strip() for field in line.split(separator)) if not transposed: - return line + return row - headers = headers + (line[0],) + headers = headers + (row[0],) continue return headers |
