8000 fix: appending default tags for single Point (#117) · Remalloc/influxdb-client-python@d19ff96 · GitHub
[go: up one dir, main page]

Skip to content
8000

Commit d19ff96

Browse files
authored
fix: appending default tags for single Point (influxdata#117)
1 parent 5ddf643 commit d19ff96

File tree

3 files changed

+49
-8
lines changed

3 files changed

+49
-8
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
### Features
44
1. [#112](https://github.com/influxdata/influxdb-client-python/pull/113): Support timestamp with different timezone in _convert_timestamp
55

6+
### Bug Fixes
7+
1. [#117](https://github.com/influxdata/influxdb-client-python/pull/117): Fixed appending default tags for single Point
8+
69
## 1.8.0 [2020-06-19]
710

811
### Features

influxdb_client/client/write_api.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -202,14 +202,7 @@ def write(self, bucket: str, org: str = None,
202202

203203
if self._point_settings.defaultTags and record is not None:
204204
for key, val in self._point_settings.defaultTags.items():
205-
if isinstance(record, dict):
206-
record.get("tags")[key] = val
207-
else:
208-
for r in record:
209-
if isinstance(r, dict):
210-
r.get("tags")[key] = val
211-
elif i 8000 sinstance(r, Point):
212-
r.tag(key, val)
205+
self._append_default_tag(key, val, record)
213206

214207
if self._write_options.write_type is WriteType.batching:
215208
return self._write_batching(bucket, org, record,
@@ -301,6 +294,15 @@ def _write_batching(self, bucket, org, data,
301294

302295
return None
303296

297+
def _append_default_tag(self, key, val, record):
298+
if isinstance(record, Point):
299+
record.tag(key, val)
300+
elif isinstance(record, dict):
301+
record.get("tags")[key] = val
302+
elif isinstance(record, list):
303+
for item in record:
304+
self._append_default_tag(key, val, item)
305+
304306
def _itertuples(self, data_frame):
305307
cols = [data_frame.iloc[:, k] for k in range(len(data_frame.columns))]
306308
return zip(data_frame.index, *cols)

tests/test_WriteApi.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,42 @@ def test_write_point_different_precision(self):
334334
self.assertEqual(result[1].records[0].get_time(),
335335
datetime.datetime(2020, 4, 20, 6, 30, tzinfo=datetime.timezone.utc))
336336

337+
def test_write_point_with_default_tags(self):
338+
bucket = self.create_test_bucket()
339+
340+
point = Point("h2o_feet")\
341+
.field("water_level", 1)\
342+
.tag("location", "creek level")
343+
344+
self.write_client.write(bucket.name, self.org, point)
345+
346+
flux_result = self.client.query_api().query(f'from(bucket:"{bucket.name}") |> range(start: 1970-01-01T00:00:00.000000001Z)')
347+
self.assertEqual(1, len(flux_result))
348+
349+
record = flux_result[0].records[0]
350+
351+
self.assertEqual(self.id_tag, record["id"])
352+
self.assertEqual(self.customer_tag, record["customer"])
353+
self.assertEqual("LA", record[self.data_center_key])
354+
355+
def test_write_list_of_list_point_with_default_tags(self):
356+
bucket = self.create_test_bucket()
357+
358+
point = Point("h2o_feet")\
359+
.field("water_level", 1)\
360+
.tag("location", "creek level")
361+
362+
self.write_client.write(bucket.name, self.org, [[point]])
363+
364+
flux_result = self.client.query_api().query(f'from(bucket:"{bucket.name}") |> range(start: 1970-01-01T00:00:00.000000001Z)')
365+
self.assertEqual(1, len(flux_result))
366+
367+
record = flux_result[0].records[0]
368+
369+
self.assertEqual(self.id_tag, record["id"])
370+
self.assertEqual(self.customer_tag, record["customer"])
371+
self.assertEqual("LA", record[self.data_center_key])
372+
337373

338374
class AsynchronousWriteTest(BaseTest):
339375

0 commit comments

Comments
 (0)
0