This is an automated email from the ASF dual-hosted git repository.
jiangtian pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/tsfile.git
The following commit(s) were added to refs/heads/develop by this push:
new 7c01e4f00 Fix/infer object column type bool (#737)
7c01e4f00 is described below
commit 7c01e4f003e188af0aac38ca0d9bc4fd1e6204e5
Author: Hongzhi Gao <[email protected]>
AuthorDate: Thu Mar 5 12:31:38 2026 +0800
Fix/infer object column type bool (#737)
* support bool type in infer_object_column_type
* infer_object_column_type ut
---
python/tests/test_dataframe.py | 10 +++++++++-
python/tsfile/tsfile_table_writer.py | 4 +++-
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/python/tests/test_dataframe.py b/python/tests/test_dataframe.py
index c8c543dfb..e40ff32a0 100644
--- a/python/tests/test_dataframe.py
+++ b/python/tests/test_dataframe.py
@@ -26,7 +26,7 @@ from tsfile import ColumnSchema, TableSchema, TSDataType,
TIME_COLUMN
from tsfile import TsFileTableWriter, ColumnCategory
from tsfile import to_dataframe
from tsfile.exceptions import ColumnNotExistError, TypeMismatchError
-from tsfile.tsfile_table_writer import validate_dataframe_for_tsfile
+from tsfile.tsfile_table_writer import validate_dataframe_for_tsfile,
infer_object_column_type
def convert_to_nullable_types(df):
@@ -51,6 +51,14 @@ def convert_to_nullable_types(df):
return df
+def test_infer_object_column_type_bool():
+ """infer_object_column_type should infer BOOLEAN for object column
containing bool values."""
+ s_true = pd.Series([True, False], dtype=object)
+ assert infer_object_column_type(s_true) == TSDataType.BOOLEAN
+ s_false = pd.Series([False], dtype=object)
+ assert infer_object_column_type(s_false) == TSDataType.BOOLEAN
+
+
def test_write_dataframe_basic():
table = TableSchema("test_table",
[ColumnSchema("device", TSDataType.STRING,
ColumnCategory.TAG),
diff --git a/python/tsfile/tsfile_table_writer.py
b/python/tsfile/tsfile_table_writer.py
index 499b5843f..a8f7805d3 100644
--- a/python/tsfile/tsfile_table_writer.py
+++ b/python/tsfile/tsfile_table_writer.py
@@ -69,10 +69,12 @@ def infer_object_column_type(column_series: pd.Series) ->
TSDataType:
return TSDataType.BLOB
if isinstance(value, (date, datetime)):
return TSDataType.DATE
+ if isinstance(value, bool):
+ return TSDataType.BOOLEAN
if isinstance(value, str):
return TSDataType.STRING
raise TypeError(
- f"Cannot infer type from object column: expected str/bytes/date, got
{type(value).__name__}: {value!r}"
+ f"Cannot infer type from object column: expected str/bytes/date/bool,
got {type(value).__name__}: {value!r}"
)