diff options
author | robot-piglet <robot-piglet@yandex-team.com> | 2024-12-07 10:57:24 +0300 |
---|---|---|
committer | robot-piglet <robot-piglet@yandex-team.com> | 2024-12-07 11:13:16 +0300 |
commit | aef7a507c07498e9f36d97195449f6f85ff8b77e (patch) | |
tree | 65dc4e7d92aa2e3e27f07c2e251deb340fbf5555 /contrib | |
parent | 68fda54bc37a4dba027e7690f06343ffea2385d4 (diff) | |
download | ydb-aef7a507c07498e9f36d97195449f6f85ff8b77e.tar.gz |
Intermediate changes
commit_hash:def0ea45cc1b150111c4e691df1d2cfc3e60813e
Diffstat (limited to 'contrib')
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 |