gensor 0.2.5__tar.gz → 0.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. {gensor-0.2.5 → gensor-0.4.0}/PKG-INFO +1 -1
  2. {gensor-0.2.5 → gensor-0.4.0}/gensor/__init__.py +6 -2
  3. {gensor-0.2.5 → gensor-0.4.0}/gensor/core/base.py +17 -6
  4. gensor-0.4.0/gensor/core/dataset.py +944 -0
  5. gensor-0.4.0/gensor/parse/utils.py +143 -0
  6. {gensor-0.2.5 → gensor-0.4.0}/gensor/parse/vanessen.py +42 -12
  7. gensor-0.4.0/gensor/processing/compensation.py +317 -0
  8. {gensor-0.2.5 → gensor-0.4.0}/pyproject.toml +1 -1
  9. gensor-0.2.5/gensor/core/dataset.py +0 -207
  10. gensor-0.2.5/gensor/parse/utils.py +0 -87
  11. gensor-0.2.5/gensor/processing/compensation.py +0 -195
  12. {gensor-0.2.5 → gensor-0.4.0}/LICENSE +0 -0
  13. {gensor-0.2.5 → gensor-0.4.0}/README.md +0 -0
  14. {gensor-0.2.5 → gensor-0.4.0}/gensor/analysis/__init__.py +0 -0
  15. {gensor-0.2.5 → gensor-0.4.0}/gensor/analysis/outliers.py +0 -0
  16. {gensor-0.2.5 → gensor-0.4.0}/gensor/analysis/stats.py +0 -0
  17. {gensor-0.2.5 → gensor-0.4.0}/gensor/config.py +0 -0
  18. {gensor-0.2.5 → gensor-0.4.0}/gensor/core/__init__.py +0 -0
  19. {gensor-0.2.5 → gensor-0.4.0}/gensor/core/indexer.py +0 -0
  20. {gensor-0.2.5 → gensor-0.4.0}/gensor/core/timeseries.py +0 -0
  21. {gensor-0.2.5 → gensor-0.4.0}/gensor/db/__init__.py +0 -0
  22. {gensor-0.2.5 → gensor-0.4.0}/gensor/db/connection.py +0 -0
  23. {gensor-0.2.5 → gensor-0.4.0}/gensor/exceptions.py +0 -0
  24. {gensor-0.2.5 → gensor-0.4.0}/gensor/io/__init__.py +0 -0
  25. {gensor-0.2.5 → gensor-0.4.0}/gensor/io/read.py +0 -0
  26. {gensor-0.2.5 → gensor-0.4.0}/gensor/log.py +0 -0
  27. {gensor-0.2.5 → gensor-0.4.0}/gensor/parse/__init__.py +0 -0
  28. {gensor-0.2.5 → gensor-0.4.0}/gensor/parse/plain.py +0 -0
  29. {gensor-0.2.5 → gensor-0.4.0}/gensor/processing/__init__.py +0 -0
  30. {gensor-0.2.5 → gensor-0.4.0}/gensor/processing/smoothing.py +0 -0
  31. {gensor-0.2.5 → gensor-0.4.0}/gensor/processing/transform.py +0 -0
  32. {gensor-0.2.5 → gensor-0.4.0}/gensor/testdata/Barodiver_220427183008_BY222.csv +0 -0
  33. {gensor-0.2.5 → gensor-0.4.0}/gensor/testdata/PB01A_moni_AV319_220427183019_AV319.csv +0 -0
  34. {gensor-0.2.5 → gensor-0.4.0}/gensor/testdata/PB02A_plain.csv +0 -0
  35. {gensor-0.2.5 → gensor-0.4.0}/gensor/testdata/__init__.py +0 -0
  36. {gensor-0.2.5 → gensor-0.4.0}/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gensor
3
- Version: 0.2.5
3
+ Version: 0.4.0
4
4
  Summary: Library for handling groundwater sensor data.
5
5
  Home-page: https://github.com/zawadzkim/gensor
6
6
  Author: Mateusz Zawadzki
@@ -1,16 +1,20 @@
1
1
  import logging
2
2
 
3
- from .core.dataset import Dataset
3
+ from .core.dataset import Dataset, Where, diff
4
4
  from .core.timeseries import Timeseries
5
5
  from .io.read import read_from_csv, read_from_sql
6
6
  from .log import set_log_level
7
- from .processing.compensation import compensate
7
+ from .processing.compensation import compensate, water_column
8
8
 
9
9
  __all__ = [
10
10
  # basic data types
11
11
  "Dataset",
12
12
  "Timeseries",
13
+ "Where",
13
14
  "compensate",
15
+ "water_column",
16
+ # comparison
17
+ "diff",
14
18
  # getters
15
19
  "read_from_csv",
16
20
  "read_from_sql",
@@ -304,9 +304,18 @@ class BaseTimeseries(pyd.BaseModel):
304
304
  message = "The index is not a DatetimeIndex and cannot be converted to UTC."
305
305
  raise TypeError(message)
306
306
 
307
- series_as_records = list(
308
- zip(utc_index.strftime("%Y-%m-%dT%H:%M:%S%z"), self.ts, strict=False)
309
- )
307
+ # Records as dicts keyed by column name so the insert can run as an
308
+ # executemany (one row per parameter set) instead of a single multi-row
309
+ # VALUES clause - the latter blows SQLite's bound-variable limit for long
310
+ # series. ``tolist()`` also yields native Python floats/strings.
311
+ series_as_records = [
312
+ {"timestamp": timestamp, self.variable: value}
313
+ for timestamp, value in zip(
314
+ utc_index.strftime("%Y-%m-%dT%H:%M:%S%z").tolist(),
315
+ self.ts.tolist(),
316
+ strict=False,
317
+ )
318
+ ]
310
319
 
311
320
  # Extra metadata are attributes additional to BaseTimeseries
312
321
  core_metadata, extra_metadata = separate_metadata()
@@ -340,9 +349,11 @@ class BaseTimeseries(pyd.BaseModel):
340
349
  metadata_entry.update({"table_name": schema_name})
341
350
 
342
351
  if isinstance(schema, Table):
343
- stmt = sqlite_insert(schema).values(series_as_records)
344
- stmt = stmt.on_conflict_do_nothing(index_elements=["timestamp"])
345
- con.execute(stmt)
352
+ if series_as_records:
353
+ stmt = sqlite_insert(schema).on_conflict_do_nothing(
354
+ index_elements=["timestamp"]
355
+ )
356
+ con.execute(stmt, series_as_records)
346
357
 
347
358
  metadata_stmt = sqlite_insert(metadata_schema).values(metadata_entry)
348
359
  metadata_stmt = metadata_stmt.on_conflict_do_update(