From 630e6856b7c96a72e0de91185949d14bd41e0422 Mon Sep 17 00:00:00 2001
From: Olivier Jossoud <olivier.jossoud@lsce.ipsl.fr>
Date: Fri, 8 Nov 2019 14:23:35 +0100
Subject: [PATCH] PicarroProvider. Better manage case when Picarro data are
 unavailable.

---
 src/dataprovider/exploprovider.py   | 7 ++++---
 src/dataprovider/picarroprovider.py | 4 ++++
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/dataprovider/exploprovider.py b/src/dataprovider/exploprovider.py
index ab59eac..a415723 100644
--- a/src/dataprovider/exploprovider.py
+++ b/src/dataprovider/exploprovider.py
@@ -116,8 +116,8 @@ class Dataset:
                 picarro_df = self.picarro_prvd.get_df(self.first_data_datetime,
                                                       self.last_data_datetime,
                                                       ["H2O", "Delta_D_H", "Delta_18_16"])
-            except:
-                print("Failed to get Picarro data")
+            except ValueError as e:
+                print("Failed to get Picarro data: " + str(e))
                 return
 
             picarro_df.to_csv(path_or_buf=self.full_directory_name + "/" + picarro_filename,
@@ -340,7 +340,8 @@ class InstrumentPeriodicLog(InstrumentLog):
 
     def __get_df__(self) -> pd.DataFrame:
         df = pd.read_csv(self.full_file_name, sep="\t", parse_dates=["datetime"])
-        df["datetime"] = df["datetime"].dt.tz_localize('UTC')
+        if not df.empty:
+            df["datetime"] = df["datetime"].dt.tz_localize('UTC')
         return df
 
     def get_variables(self):
diff --git a/src/dataprovider/picarroprovider.py b/src/dataprovider/picarroprovider.py
index 5d7e0f4..11bccda 100644
--- a/src/dataprovider/picarroprovider.py
+++ b/src/dataprovider/picarroprovider.py
@@ -2,6 +2,7 @@ import pandas as pd
 import numpy as np
 import datetime
 import os
+import utils
 import re
 
 from config import Config
@@ -38,6 +39,9 @@ class PicarroProvider:
             picarro_df["datetime"] = pd.to_datetime(picarro_df["DATE"] + " " + picarro_df["TIME"]).dt.tz_localize('UTC')
             picarro_df = picarro_df.drop(columns=["DATE", "TIME"])
             picarro_df = picarro_df[(picarro_df["datetime"] >= first_datetime) & (picarro_df["datetime"] <= last_datetime)]
+            if picarro_df.empty:
+                raise ValueError("No Picarro data available between " + first_datetime.strftime(utils.datetime_format) +
+                                 " and " + last_datetime.strftime(utils.datetime_format))
 
             picarro_df = picarro_df.sort_values(by=['datetime'])
 
-- 
GitLab