Skip to content

Commit 13eb147

Browse files
authored
fix: import PolarsDataframeSerializer (#105)
* fix: import PolarsDataframeSerializer * docs: update CHANGELOG.md * fix: import PolarsDataframeSerializer
1 parent 65d64e2 commit 13eb147

File tree

3 files changed

+41
-4
lines changed

3 files changed

+41
-4
lines changed

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,14 @@
22

33
## 0.8.0 [unreleased]
44

5+
### Features
6+
7+
1. [#101](https://github.com/InfluxCommunity/influxdb3-python/pull/101): Add support for InfluxDB Edge (OSS) authentication
8+
59
### Bug Fixes
610

711
1. [#100](https://github.com/InfluxCommunity/influxdb3-python/pull/100): InfluxDB Edge (OSS) error handling
8-
1. [#101](https://github.com/InfluxCommunity/influxdb3-python/pull/101): Add support for InfluxDB Edge authentication
12+
1. [#105](https://github.com/InfluxCommunity/influxdb3-python/pull/105): Importing Polars serialization module
913

1014
## 0.7.0 [2024-07-11]
1115

influxdb_client_3/write_client/client/_base.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,8 @@ def _serialize(self, record, write_precision, payload, **kwargs):
248248
self._serialize(Point.from_dict(record, write_precision=write_precision, **kwargs),
249249
write_precision, payload, **kwargs)
250250
elif 'polars' in str(type(record)):
251-
from influxdb_client_3.write_client.client.write.dataframe_serializer import PolarsDataframeSerializer
251+
from influxdb_client_3.write_client.client.write.polars_dataframe_serializer import \
252+
PolarsDataframeSerializer
252253
serializer = PolarsDataframeSerializer(record, self._point_settings, write_precision, **kwargs)
253254
self._serialize(serializer.serialize(), write_precision, payload, **kwargs)
254255

tests/test_polars_dataframe_serializer.py renamed to tests/test_polars.py

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
import unittest
21
import importlib.util
2+
import unittest
3+
from unittest.mock import Mock
34

4-
from influxdb_client_3 import PointSettings
5+
from influxdb_client_3 import PointSettings, InfluxDBClient3
6+
from influxdb_client_3.write_client import WriteService
57
from influxdb_client_3.write_client.client.write.polars_dataframe_serializer import polars_data_frame_to_list_of_points
68

79

@@ -29,3 +31,33 @@ def test_to_list_of_points(self):
2931
'iot-devices,building=5a name="iot-devices",temperature=72.2 1664798460000000000'
3032
]
3133
self.assertEqual(expected, actual)
34+
35+
36+
@unittest.skipIf(importlib.util.find_spec("polars") is None, 'Polars package not installed')
37+
class TestWritePolars(unittest.TestCase):
38+
def setUp(self):
39+
self.client = InfluxDBClient3(
40+
host="localhost",
41+
org="my_org",
42+
database="my_db",
43+
token="my_token"
44+
)
45+
46+
def test_write_polars(self):
47+
import polars as pl
48+
df = pl.DataFrame({
49+
"time": pl.Series(["2024-08-01 00:00:00", "2024-08-01 01:00:00"]).str.to_datetime(time_unit='ns'),
50+
"temperature": [22.4, 21.8],
51+
})
52+
self.client._write_api._write_service = Mock(spec=WriteService)
53+
54+
self.client.write(
55+
database="database",
56+
record=df,
57+
data_frame_measurement_name="measurement",
58+
data_frame_timestamp_column="time",
59+
)
60+
61+
actual = self.client._write_api._write_service.post_write.call_args[1]['body']
62+
self.assertEqual(b'measurement temperature=22.4 1722470400000000000\n'
63+
b'measurement temperature=21.8 1722474000000000000', actual)

0 commit comments

Comments
 (0)