diff --git a/pygac/pod_reader.py b/pygac/pod_reader.py index ae3f7e34..c272741a 100644 --- a/pygac/pod_reader.py +++ b/pygac/pod_reader.py @@ -38,6 +38,7 @@ import datetime import logging + try: from enum import IntFlag except ImportError: @@ -45,13 +46,12 @@ IntFlag = object import numpy as np - -from pyorbital.geoloc_instrument_definitions import avhrr_gac from pyorbital.geoloc import compute_pixels, get_lonlatalt +from pyorbital.geoloc_instrument_definitions import avhrr_gac from pygac.clock_offsets_converter import get_offsets from pygac.correct_tsm_issue import TSM_AFFECTED_INTERVALS_POD, get_tsm_idx -from pygac.reader import Reader, ReaderError, NoTLEData +from pygac.reader import NoTLEData, Reader, ReaderError from pygac.slerp import slerp from pygac.utils import file_opener @@ -321,9 +321,14 @@ def read_header(cls, filename, fileobj=None, header_date="auto"): _tbm_head, = np.frombuffer( fd_.read(tbm_header.itemsize), dtype=tbm_header, count=1) - try: - data_set_name = _tbm_head['data_set_name'].decode() - except UnicodeDecodeError: + for encoding in ("utf-8", "cp500"): + try: + data_set_name = _tbm_head['data_set_name'].decode(encoding) + except ValueError: + continue + else: + break + else: data_set_name = '---' allowed_empty = (42*b'\x00' + b' ') if (cls.data_set_pattern.match(data_set_name) diff --git a/pygac/tests/test_reader.py b/pygac/tests/test_reader.py index aef9dcb7..fded5451 100644 --- a/pygac/tests/test_reader.py +++ b/pygac/tests/test_reader.py @@ -24,20 +24,20 @@ import os import sys import unittest -import pytest - from unittest import mock + import numpy as np import numpy.testing -from pygac.gac_reader import GACReader, ReaderError -from pygac.lac_reader import LACReader -from pygac.pod_reader import POD_QualityIndicator +import pytest + from pygac.gac_pod import scanline -from pygac.reader import NoTLEData +from pygac.gac_reader import GACReader, ReaderError from pygac.lac_pod import LACPODReader - -from pygac.pod_reader import tbm_header as tbm_header_dtype, header3 from pygac.lac_pod import scanline as lacpod_scanline +from pygac.lac_reader import LACReader +from pygac.pod_reader import POD_QualityIndicator, header3 +from pygac.pod_reader import tbm_header as tbm_header_dtype +from pygac.reader import NoTLEData class TestPath(os.PathLike): @@ -688,7 +688,7 @@ def pod_file_with_tbm_header(tmp_path): number_of_scans = 3 tbm_header = np.zeros(1, dtype=tbm_header_dtype) - tbm_header["data_set_name"] = b"BRN.HRPT.NJ.D00322.S0334.E0319.B3031919.BL " + tbm_header["data_set_name"] = "BRN.HRPT.NJ.D00322.S0334.E0319.B3031919.BL\x80\x80".encode("cp500") tbm_header["select_flag"] = b"S" tbm_header["beginning_latitude"] = b"+77" tbm_header["ending_latitude"] = b"+22"