import gzip
import tempfile
import magic
import io
import sys
path_fasta = sys.argv[1]
format_to_check = sys.argv[2]
path_valid_formats = sys.argv[3]
with tempfile.NamedTemporaryFile() as tmp:
with open(path_valid_formats, 'rb') as f:
tmp.write(f.read())
tmp.flush()
check_format = magic.Magic(magic_file=tmp.name, uncompress=False, mime=True)
with open(path_fasta, "rb") as f:
gz = ""
if path_fasta.endswith(".gz"):
gz = ".gz"
f = gzip.GzipFile(fileobj=f, mode='rb')
f = io.TextIOWrapper(f)
buffer = f.read(4096)
seq_type = check_format.from_buffer(buffer).lower()
f.detach()
if seq_type != format_to_check:
raise ValueError(f"Input file ({path_fasta}) does not look like a {format_to_check}")