Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions python/tskit/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import numbers
import os
import textwrap
import sys
from typing import Union

import numpy as np
Expand Down Expand Up @@ -878,6 +879,10 @@ def raise_known_file_format_errors(open_file, existing_exception):
Sniffs the file for pk-zip or hdf header bytes, then raises an exception
if these are detected, if not raises the existing exception.
"""
if (sys.version_info[0] >= 3) & (sys.version_info[1] > 10):
# add_note has been added in python 3.11
# This condition can be removed once 3.10 is end-of-life
existing_exception.add_note(f"While trying to load {open_file.name}")
# Check for HDF5 header bytes
try:
open_file.seek(0)
Expand All @@ -887,14 +892,14 @@ def raise_known_file_format_errors(open_file, existing_exception):
raise existing_exception
if header == b"\x89HDF":
raise tskit.FileFormatError(
"The specified file appears to be in HDF5 format. This file "
f"The file {open_file.name} appears to be in HDF5 format. This file "
"may have been generated by msprime < 0.6.0 (June 2018) which "
"can no longer be read directly. Please convert to the new "
"kastore format using the ``tskit upgrade`` command from tskit version<0.6.2"
) from existing_exception
if header[:2] == b"\x50\x4b":
raise tskit.FileFormatError(
"The specified file appears to be in zip format, so may be a compressed "
f"The file {open_file.name} appears to be in zip format, so may be a compressed "
"tree sequence. Try using the tszip module to decompress this file before "
"loading. `pip install tszip; tsunzip <filename>` or use "
"`tszip.decompress` in Python code."
Expand Down
Loading