From 7184bb6cc592b971fe612b2c408dc95c3652854f Mon Sep 17 00:00:00 2001 From: Jakub Bednar Date: Fri, 20 Aug 2021 12:15:43 +0200 Subject: [PATCH 1/3] feat: delete_api also accept `datetime` as a value for `start` and `stop` --- influxdb_client/client/delete_api.py | 9 +++++++++ tests/test_DeleteApi.py | 27 ++++++++++++++++++++------- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/influxdb_client/client/delete_api.py b/influxdb_client/client/delete_api.py index fda69252..baa9d07c 100644 --- a/influxdb_client/client/delete_api.py +++ b/influxdb_client/client/delete_api.py @@ -1,8 +1,10 @@ """Delete time series data from InfluxDB.""" import datetime +from datetime import datetime from influxdb_client import DeleteService, DeletePredicateRequest +from influxdb_client.client.util.date_utils import get_date_helper class DeleteApi(object): @@ -24,5 +26,12 @@ def delete(self, start: datetime, stop: object, predicate: object, bucket: str, :param org: organization id or name :return: """ + + date_helper = get_date_helper() + if isinstance(start, datetime): + start = date_helper.to_utc(start) + if isinstance(stop, datetime): + stop = date_helper.to_utc(stop) + predicate_request = DeletePredicateRequest(start=start, stop=stop, predicate=predicate) return self._service.post_delete(delete_predicate_request=predicate_request, bucket=bucket, org=org) diff --git a/tests/test_DeleteApi.py b/tests/test_DeleteApi.py index 479bdb80..f11fccf5 100644 --- a/tests/test_DeleteApi.py +++ b/tests/test_DeleteApi.py @@ -1,3 +1,7 @@ +from datetime import datetime + +from pytz import UTC + from influxdb_client import PermissionResource, Permission, InfluxDBClient, Point from influxdb_client.client.write_api import SYNCHRONOUS from tests.base_test import BaseTest @@ -11,7 +15,6 @@ def setUp(self) -> None: for bucket in response.buckets: if bucket.name.endswith("_IT"): - print("Delete bucket: ", bucket.name) self.buckets_api.delete_bucket(bucket) self.bucket = self.create_test_bucket() @@ -25,7 +28,7 @@ def setUp(self) -> None: permissions=[read_bucket, write_bucket]) self.auth_token = authorization.token self.client.close() - self.client = InfluxDBClient(url=self.host, token=self.auth_token, debug=True, org=self.org) + self.client = InfluxDBClient(url=self.host, token=self.auth_token, org=self.org) self.delete_api = self.client.delete_api() def test_delete_buckets(self): @@ -33,7 +36,6 @@ def test_delete_buckets(self): self._write_data() q = f'from(bucket:\"{self.bucket.name}\") |> range(start: 1970-01-01T00:00:00.000000001Z)' - print(q) flux_tables = self.client.query_api().query(query=q, org=self.organization.id) self.assertEqual(len(flux_tables), 1) self.assertEqual(len(flux_tables[0].records), 12) @@ -52,19 +54,30 @@ def test_delete_buckets_by_name(self): self._write_data() q = f'from(bucket:\"{self.bucket.name}\") |> range(start: 1970-01-01T00:00:00.000000001Z)' - print(q) flux_tables = self.client.query_api().query(query=q, org=self.organization.id) self.assertEqual(len(flux_tables), 1) self.assertEqual(len(flux_tables[0].records), 12) start = "1970-01-01T00:00:00.000000001Z" stop = "1970-01-01T00:00:00.000000012Z" + self._delete_and_verify(start, stop) + + def test_start_stop_types(self): + starts_stops = [ + ("1970-01-01T00:00:00.000000001Z", "1970-01-01T00:00:00.000000012Z"), + (datetime(1970, 1, 1, 0, 0, 0, 0, UTC), datetime(1970, 1, 1, 0, 0, 0, 1, UTC)), + (datetime(1970, 1, 1, 0, 0, 0, 0), datetime(1970, 1, 1, 0, 0, 0, 1)) + ] + for start_stop in starts_stops: + self._write_data() + self._delete_and_verify(start_stop[0], start_stop[1]) + + def _delete_and_verify(self, start, stop): self.delete_api.delete(start, stop, "", bucket=self.bucket.name, org=self.organization.name) - - flux_tables2 = self.client.query_api().query( + flux_tables = self.client.query_api().query( f'from(bucket:"{self.bucket.name}") |> range(start: 1970-01-01T00:00:00.000000001Z)', org=self.organization.id) - self.assertEqual(len(flux_tables2), 0) + self.assertEqual(len(flux_tables), 0) def _write_data(self): From 837f64fe0e581fd0769583e28ff76bfc05ce4cf9 Mon Sep 17 00:00:00 2001 From: Jakub Bednar Date: Fri, 20 Aug 2021 12:17:47 +0200 Subject: [PATCH 2/3] docs: update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64b0712c..af167b66 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ### Features 1. [#319](https://github.com/influxdata/influxdb-client-python/pull/319): Add supports for array expressions in query parameters 2. [#320](https://github.com/influxdata/influxdb-client-python/pull/320): Add JSONEncoder to encode query results to JSON +1. [#317](https://github.com/influxdata/influxdb-client-python/pull/317): `delete_api` also accept `datetime` as a value for `start` and `stop` ### Bug Fixes 1. [#321](https://github.com/influxdata/influxdb-client-python/pull/321): Fixes return type for dashboard when `include=properties` is used From 60ac16189fa1496c6580fda5b25e342884a323c0 Mon Sep 17 00:00:00 2001 From: Jakub Bednar Date: Fri, 20 Aug 2021 12:21:41 +0200 Subject: [PATCH 3/3] fix: code style --- influxdb_client/client/delete_api.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/influxdb_client/client/delete_api.py b/influxdb_client/client/delete_api.py index baa9d07c..19fa8714 100644 --- a/influxdb_client/client/delete_api.py +++ b/influxdb_client/client/delete_api.py @@ -1,6 +1,5 @@ """Delete time series data from InfluxDB.""" -import datetime from datetime import datetime from influxdb_client import DeleteService, DeletePredicateRequest @@ -26,7 +25,6 @@ def delete(self, start: datetime, stop: object, predicate: object, bucket: str, :param org: organization id or name :return: """ - date_helper = get_date_helper() if isinstance(start, datetime): start = date_helper.to_utc(start) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy