tsio/update: add the `keepnans` parameter

By default we do not keep them.
4 files changed, 25 insertions(+), 11 deletions(-)

M test/test_api.py
M test/test_http.py
M test/test_supervision.py
M tshistory_supervision/tsio.py
M test/test_api.py +1 -1
@@ 42,7 42,7 @@ 2020-01-03    False
 
     edited = series.copy()
     edited.iloc[1] = np.NaN
-    tsx.update('multi-local', edited, 'test', manual=True)
+    tsx.update('multi-local', edited, 'test', manual=True, keepnans=True)
 
     ts, marker = tsx.edited('multi-local', _keep_nans=True)
     assert_df("""

          
M test/test_http.py +1 -0
@@ 183,6 183,7 @@ def test_edited_with_timezone(client):
         'series': util.tojson(ts),
         'author': 'Babar',
         'insertion_date': utcdt(2023, 1, 2),
+        'keepnans': json.dumps(True),
         'tzaware': util.tzaware_series(ts),
         'supervision': json.dumps(False),
     })

          
M test/test_supervision.py +1 -1
@@ 459,7 459,7 @@ def test_more_manual(engine, tsh):
     ts_man = genserie(datetime(2015, 1, 3), 'D', 3, -1)
     ts_man.iloc[-1] = np.nan
     # erasing of the laste value for the date 5/1/2015
-    tsh.update(engine, ts_man, 'ts_exp1', 'test', manual=True)
+    tsh.update(engine, ts_man, 'ts_exp1', 'test', manual=True, keepnans=True)
 
     ts_get = tsh.get(engine, 'ts_exp1')
 

          
M tshistory_supervision/tsio.py +22 -9
@@ 97,7 97,9 @@ class timeseries(basets):
     @tx
     def __supervise__(self, cn, ts, name, author,
                       metadata=None,
-                      insertion_date=None, manual=False,
+                      insertion_date=None,
+                      keepnans=False,
+                      manual=False,
                       __supermethod__=None,
                       __upmethod__=None):
 

          
@@ 111,7 113,8 @@ class timeseries(basets):
             series_diff = __supermethod__(
                 cn, ts, name, author,
                 metadata=metadata,
-                insertion_date=insertion_date
+                insertion_date=insertion_date,
+                keepnans=keepnans
             )
             if series_diff is None or not len(series_diff):
                 return series_diff

          
@@ 133,7 136,8 @@ class timeseries(basets):
                 __upmethod__(
                     cn, current, name, author,
                     metadata=metadata,
-                    insertion_date=insertion_date
+                    insertion_date=insertion_date,
+                    keepnans=keepnans
                 )
                 # update supervision status
                 meta = {'supervision_status': 'supervised'}

          
@@ 143,7 147,8 @@ class timeseries(basets):
             return __supermethod__(
                 cn, ts, name, author,
                 metadata=metadata,
-                insertion_date=insertion_date
+                insertion_date=insertion_date,
+                keepnans=keepnans
             )
 
         assert supervision_status in ('supervised', 'handcrafted')

          
@@ 154,7 159,8 @@ class timeseries(basets):
             series_diff = __upmethod__(
                 cn, ts, name, author,
                 metadata=metadata,
-                insertion_date=insertion_date
+                insertion_date=insertion_date,
+                keepnans=keepnans
             )
 
             if supervision_status == 'handcrafted':

          
@@ 169,18 175,22 @@ class timeseries(basets):
         a = __supermethod__(
             cn, series_diff, name, author,
             metadata=metadata,
-            insertion_date=insertion_date
+            insertion_date=insertion_date,
+            keepnans=keepnans
         )
         return a
 
     @tx
     def update(self, cn, ts, name, author,
                metadata=None,
-               insertion_date=None, manual=False):
+               insertion_date=None,
+               keepnans=False,
+               manual=False):
         return self.__supervise__(
             cn, ts, name, author,
             metadata=metadata,
             insertion_date=insertion_date,
+            keepnans=keepnans,
             manual=manual,
             __supermethod__=super().update,
             __upmethod__=self.upstream.update

          
@@ 188,12 198,15 @@ class timeseries(basets):
 
     @tx
     def replace(self, cn, ts, name, author,
-               metadata=None,
-               insertion_date=None, manual=False):
+                metadata=None,
+                insertion_date=None,
+                keepnans=False,
+                manual=False):
         return self.__supervise__(
             cn, ts, name, author,
             metadata=metadata,
             insertion_date=insertion_date,
+            keepnans=keepnans,
             manual=manual,
             __supermethod__=super().replace,
             __upmethod__=self.upstream.replace