aboutsummaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authorrobot-piglet <robot-piglet@yandex-team.com>2024-12-07 10:57:24 +0300
committerrobot-piglet <robot-piglet@yandex-team.com>2024-12-07 11:13:16 +0300
commitaef7a507c07498e9f36d97195449f6f85ff8b77e (patch)
tree65dc4e7d92aa2e3e27f07c2e251deb340fbf5555 /contrib
parent68fda54bc37a4dba027e7690f06343ffea2385d4 (diff)
downloadydb-aef7a507c07498e9f36d97195449f6f85ff8b77e.tar.gz
Intermediate changes
commit_hash:def0ea45cc1b150111c4e691df1d2cfc3e60813e
Diffstat (limited to 'contrib')
-rw-r--r--contrib/python/clickhouse-connect/.dist-info/METADATA22
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/__version__.py2
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/cc_sqlalchemy/datatypes/sqltypes.py20
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/datatypes/__init__.py1
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/datatypes/container.py7
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/datatypes/geometric.py51
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/datatypes/postinit.py12
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/driver/client.py3
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/driver/httpclient.py1
-rw-r--r--contrib/python/clickhouse-connect/ya.make3
10 files changed, 100 insertions, 22 deletions
diff --git a/contrib/python/clickhouse-connect/.dist-info/METADATA b/contrib/python/clickhouse-connect/.dist-info/METADATA
index 9db3c9cfbd..2c5f8da23f 100644
--- a/contrib/python/clickhouse-connect/.dist-info/METADATA
+++ b/contrib/python/clickhouse-connect/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: clickhouse-connect
-Version: 0.8.6
+Version: 0.8.7
Summary: ClickHouse Database Core Driver for Python, Pandas, and Superset
Home-page: https://github.com/ClickHouse/clickhouse-connect
Author: ClickHouse Inc.
@@ -20,22 +20,22 @@ Requires-Python: ~=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: certifi
-Requires-Dist: urllib3 >=1.26
+Requires-Dist: urllib3>=1.26
Requires-Dist: pytz
Requires-Dist: zstandard
Requires-Dist: lz4
-Provides-Extra: arrow
-Requires-Dist: pyarrow ; extra == 'arrow'
+Provides-Extra: sqlalchemy
+Requires-Dist: sqlalchemy<2.0,>1.3.21; extra == "sqlalchemy"
Provides-Extra: numpy
-Requires-Dist: numpy ; extra == 'numpy'
-Provides-Extra: orjson
-Requires-Dist: orjson ; extra == 'orjson'
+Requires-Dist: numpy; extra == "numpy"
Provides-Extra: pandas
-Requires-Dist: pandas ; extra == 'pandas'
-Provides-Extra: sqlalchemy
-Requires-Dist: sqlalchemy <2.0,>1.3.21 ; extra == 'sqlalchemy'
+Requires-Dist: pandas; extra == "pandas"
+Provides-Extra: arrow
+Requires-Dist: pyarrow; extra == "arrow"
+Provides-Extra: orjson
+Requires-Dist: orjson; extra == "orjson"
Provides-Extra: tzlocal
-Requires-Dist: tzlocal >=4.0 ; extra == 'tzlocal'
+Requires-Dist: tzlocal>=4.0; extra == "tzlocal"
## ClickHouse Connect
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py b/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py
index 83918bb25d..5cc50020e8 100644
--- a/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py
@@ -1 +1 @@
-version = '0.8.6'
+version = '0.8.7'
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/cc_sqlalchemy/datatypes/sqltypes.py b/contrib/python/clickhouse-connect/clickhouse_connect/cc_sqlalchemy/datatypes/sqltypes.py
index 099edde9a7..cc5e8300f6 100644
--- a/contrib/python/clickhouse-connect/clickhouse_connect/cc_sqlalchemy/datatypes/sqltypes.py
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/cc_sqlalchemy/datatypes/sqltypes.py
@@ -206,6 +206,26 @@ class Point(ChSqlaType, UserDefinedType):
python_type = None
+class Ring(ChSqlaType, UserDefinedType):
+ python_type = None
+
+
+class Polygon(ChSqlaType, UserDefinedType):
+ python_type = None
+
+
+class MultiPolygon(ChSqlaType, UserDefinedType):
+ python_type = None
+
+
+class LineString(ChSqlaType, UserDefinedType):
+ python_type = None
+
+
+class MultiLineString(ChSqlaType, UserDefinedType):
+ python_type = None
+
+
class Date(ChSqlaType, SqlaDate):
pass
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/__init__.py b/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/__init__.py
index e4229f66c3..7a15b49a92 100644
--- a/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/__init__.py
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/__init__.py
@@ -4,6 +4,7 @@ import clickhouse_connect.datatypes.numeric
import clickhouse_connect.datatypes.special
import clickhouse_connect.datatypes.string
import clickhouse_connect.datatypes.temporal
+import clickhouse_connect.datatypes.geometric
import clickhouse_connect.datatypes.dynamic
import clickhouse_connect.datatypes.registry
import clickhouse_connect.datatypes.postinit
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/container.py b/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/container.py
index b8244eefdb..c36577127c 100644
--- a/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/container.py
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/container.py
@@ -155,13 +155,6 @@ class Tuple(ClickHouseType):
return col
-class Point(Tuple):
-
- def __init__(self, type_def):
- super().__init__(type_def)
- self._name_suffix = ''
-
-
class Map(ClickHouseType):
_slots = 'key_type', 'value_type'
python_type = dict
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/geometric.py b/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/geometric.py
new file mode 100644
index 0000000000..67b342b895
--- /dev/null
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/geometric.py
@@ -0,0 +1,51 @@
+from typing import Sequence
+
+from clickhouse_connect.datatypes.base import ClickHouseType
+from clickhouse_connect.driver.insert import InsertContext
+from clickhouse_connect.driver.query import QueryContext
+from clickhouse_connect.driver.types import ByteSource
+
+POINT_DATA_TYPE: ClickHouseType
+RING_DATA_TYPE: ClickHouseType
+POLYGON_DATA_TYPE: ClickHouseType
+MULTI_POLYGON_DATA_TYPE: ClickHouseType
+
+
+class Point(ClickHouseType):
+ def write_column(self, column: Sequence, dest: bytearray, ctx: InsertContext):
+ return POINT_DATA_TYPE.write_column(column, dest, ctx)
+
+ def read_column_data(self, source: ByteSource, num_rows: int, ctx: QueryContext) -> Sequence:
+ return POINT_DATA_TYPE.read_column_data(source, num_rows, ctx)
+
+
+class Ring(ClickHouseType):
+ def write_column(self, column: Sequence, dest: bytearray, ctx: InsertContext):
+ return RING_DATA_TYPE.write_column(column, dest, ctx)
+
+ def read_column_data(self, source: ByteSource, num_rows: int, ctx: QueryContext) -> Sequence:
+ return RING_DATA_TYPE.read_column_data(source, num_rows, ctx)
+
+
+class Polygon(ClickHouseType):
+ def write_column(self, column: Sequence, dest: bytearray, ctx: InsertContext):
+ return POLYGON_DATA_TYPE.write_column(column, dest, ctx)
+
+ def read_column_data(self, source: ByteSource, num_rows: int, ctx: QueryContext) -> Sequence:
+ return POLYGON_DATA_TYPE.read_column_data(source, num_rows, ctx)
+
+
+class MultiPolygon(ClickHouseType):
+ def write_column(self, column: Sequence, dest: bytearray, ctx: InsertContext):
+ return MULTI_POLYGON_DATA_TYPE.write_column(column, dest, ctx)
+
+ def read_column_data(self, source: ByteSource, num_rows: int, ctx: QueryContext) -> Sequence:
+ return MULTI_POLYGON_DATA_TYPE.read_column_data(source, num_rows, ctx)
+
+
+class LineString(Ring):
+ pass
+
+
+class MultiLineString(Polygon):
+ pass
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/postinit.py b/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/postinit.py
index 3536c65195..98c464ee3f 100644
--- a/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/postinit.py
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/postinit.py
@@ -1,4 +1,14 @@
-from clickhouse_connect.datatypes import registry, dynamic
+from clickhouse_connect.datatypes import registry, dynamic, geometric
dynamic.SHARED_DATA_TYPE = registry.get_from_name('Array(String, String)')
dynamic.STRING_DATA_TYPE = registry.get_from_name('String')
+
+point = 'Tuple(Float64, Float64)'
+ring = f'Array({point})'
+polygon = f'Array({ring})'
+multi_polygon = f'Array({polygon})'
+
+geometric.POINT_DATA_TYPE = registry.get_from_name(point)
+geometric.RING_DATA_TYPE = registry.get_from_name(ring)
+geometric.POLYGON_DATA_TYPE = registry.get_from_name(polygon)
+geometric.MULTI_POLYGON_DATA_TYPE = registry.get_from_name(multi_polygon)
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/driver/client.py b/contrib/python/clickhouse-connect/clickhouse_connect/driver/client.py
index d6b84885e4..717a909313 100644
--- a/contrib/python/clickhouse-connect/clickhouse_connect/driver/client.py
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/driver/client.py
@@ -100,7 +100,8 @@ class Client(ABC):
self.protocol_version = PROTOCOL_VERSION_WITH_LOW_CARD
if self._setting_status('date_time_input_format').is_writable:
self.set_client_setting('date_time_input_format', 'best_effort')
- if self._setting_status('allow_experimental_json_type').is_set:
+ if self._setting_status('allow_experimental_json_type').is_set and \
+ self._setting_status('cast_string_to_dynamic_user_inference').is_writable:
self.set_client_setting('cast_string_to_dynamic_use_inference', '1')
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/driver/httpclient.py b/contrib/python/clickhouse-connect/clickhouse_connect/driver/httpclient.py
index a0e74e9643..793ca3f953 100644
--- a/contrib/python/clickhouse-connect/clickhouse_connect/driver/httpclient.py
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/driver/httpclient.py
@@ -80,6 +80,7 @@ class HttpClient(Client):
"""
self.url = f'{interface}://{host}:{port}'
self.headers = {}
+ self.params = dict_copy(HttpClient.params)
ch_settings = dict_copy(settings, self.params)
self.http = pool_mgr
if interface == 'https':
diff --git a/contrib/python/clickhouse-connect/ya.make b/contrib/python/clickhouse-connect/ya.make
index b91d547356..2f0e645111 100644
--- a/contrib/python/clickhouse-connect/ya.make
+++ b/contrib/python/clickhouse-connect/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(0.8.6)
+VERSION(0.8.7)
LICENSE(Apache-2.0)
@@ -44,6 +44,7 @@ PY_SRCS(
clickhouse_connect/datatypes/container.py
clickhouse_connect/datatypes/dynamic.py
clickhouse_connect/datatypes/format.py
+ clickhouse_connect/datatypes/geometric.py
clickhouse_connect/datatypes/network.py
clickhouse_connect/datatypes/numeric.py
clickhouse_connect/datatypes/postinit.py