diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index b833369..f46b7db 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-22.04 strategy: matrix: - python-version: [3.8, 3.9, '3.10', '3.11', '3.12'] + python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] fail-fast: false steps: @@ -31,6 +31,11 @@ jobs: pip install pytest pip install -r requirements.txt + - name: Backport to 3.8 + if: matrix.python-version == '3.8' + run: | + pip install backports.zoneinfo + - name: Test with pytest run: | cd tests diff --git a/libeos/file_reader.py b/libeos/file_reader.py index 6ab0aa9..e0a68d3 100644 --- a/libeos/file_reader.py +++ b/libeos/file_reader.py @@ -3,6 +3,11 @@ import os import subprocess import sys from datetime import datetime, timezone +try: + import zoneinfo +except ImportError: + # for python versions < 3.9 try to use the backports version + from backports import zoneinfo from typing import List import h5py @@ -20,6 +25,9 @@ try: except Exception: nb_helpers = None +# Time zone used to interpret time strings +AMOR_LOCAL_TIMEZONE = zoneinfo.ZoneInfo(key='Europe/Zurich') + class AmorData: """read meta-data and event streams from .hdf file(s), apply filters and conversions""" chopperDetectorDistance: float @@ -373,7 +381,7 @@ class AmorData: self.pixelID_e = self.pixelID_e[filter_e] self.wallTime_e = self.wallTime_e[filter_e] if np.shape(filter_e)[0]-np.shape(self.tof_e)[0]>0.5: - logging.warning(f'# strange times: {np.shape(filter_e)[0]-np.shape(self.tof_e)[0]}') + logging.warning(f' strange times: {np.shape(filter_e)[0]-np.shape(self.tof_e)[0]}') def read_event_stream(self): self.tof_e = np.array(self.hdf['/entry1/Amor/detector/data/event_time_offset'][:])/1.e9 @@ -437,7 +445,8 @@ class AmorData: self.nu = self.config.nu # extract start time as unix time, adding UTC offset of 1h to time string - self.fileDate = datetime.fromisoformat( self.hdf['/entry1/start_time'][0].decode('utf-8')+"+01:00" ) + dz = datetime.fromisoformat(self.hdf['/entry1/start_time'][0].decode('utf-8')) + self.fileDate=dz.replace(tzinfo=AMOR_LOCAL_TIMEZONE) self.startTime = np.int64( (self.fileDate.timestamp() ) * 1e9 ) if self.seriesStartTime is None: self.seriesStartTime = self.startTime