diff options
author | robot-contrib <robot-contrib@yandex-team.com> | 2023-12-09 00:23:15 +0300 |
---|---|---|
committer | robot-contrib <robot-contrib@yandex-team.com> | 2023-12-09 01:13:53 +0300 |
commit | 89c24615f58622ebf40a727d10506d7217b7faaf (patch) | |
tree | 189dd8328e8964d1ab6841d698dc3ce07341ed73 /contrib | |
parent | 83b8a2f9228353759e59a093cb3c1270ea2c9d5b (diff) | |
download | ydb-89c24615f58622ebf40a727d10506d7217b7faaf.tar.gz |
Update contrib/python/clickhouse-connect to 0.6.21
Diffstat (limited to 'contrib')
10 files changed, 40 insertions, 11 deletions
diff --git a/contrib/python/clickhouse-connect/.dist-info/METADATA b/contrib/python/clickhouse-connect/.dist-info/METADATA index 2cc7883742..74a30402bf 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.6.20 +Version: 0.6.21 Summary: ClickHouse Database Core Driver for Python, Pandas, and Superset Home-page: https://github.com/ClickHouse/clickhouse-connect Author: ClickHouse Inc. diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py b/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py index 61f0ae1784..ecb766dd57 100644 --- a/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py +++ b/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py @@ -1 +1 @@ -version = '0.6.20' +version = '0.6.21' 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 d611f18912..dc4fd0895e 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 @@ -198,6 +198,10 @@ class UUID(ChSqlaType, UserDefinedType): python_type = None +class Point(ChSqlaType, UserDefinedType): + python_type = None + + class Date(ChSqlaType, SqlaDate): pass diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/container.py b/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/container.py index 36e4c23780..445b24140d 100644 --- a/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/container.py +++ b/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/container.py @@ -154,6 +154,13 @@ 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/registry.py b/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/registry.py index 47da6e05af..3544b3776c 100644 --- a/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/registry.py +++ b/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/registry.py @@ -35,6 +35,8 @@ def parse_name(name: str) -> Tuple[str, str, TypeDef]: elif base.startswith('Tuple'): keys, values = parse_columns(base[5:]) base = 'Tuple' + elif base == 'Point': + values = ['Float64', 'Float64'] else: try: base, values, _ = parse_callable(base) diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/string.py b/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/string.py index 0b5a81cbcb..efc04df015 100644 --- a/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/string.py +++ b/contrib/python/clickhouse-connect/clickhouse_connect/datatypes/string.py @@ -3,6 +3,7 @@ from typing import Sequence, MutableSequence, Union, Collection from clickhouse_connect.driver.ctypes import data_conv from clickhouse_connect.datatypes.base import ClickHouseType, TypeDef +from clickhouse_connect.driver.errors import handle_error from clickhouse_connect.driver.exceptions import DataError from clickhouse_connect.driver.insert import InsertContext from clickhouse_connect.driver.query import QueryContext @@ -42,12 +43,11 @@ class String(ClickHouseType): return np.array(column, dtype=f'<U{ctx.max_str_len}') return column - # pylint: disable=duplicate-code,too-many-nested-blocks,too-many-branches def _write_column_binary(self, column: Union[Sequence, MutableSequence], dest: bytearray, ctx: InsertContext): encoding = None if not isinstance(self._first_value(column), bytes): encoding = ctx.encoding or self.encoding - data_conv.write_str_col(column, self.nullable, encoding, dest) + handle_error(data_conv.write_str_col(column, self.nullable, encoding, dest)) def _active_null(self, ctx): if ctx.use_none: diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/driver/dataconv.py b/contrib/python/clickhouse-connect/clickhouse_connect/driver/dataconv.py index 2427272572..c1a9b62aad 100644 --- a/contrib/python/clickhouse-connect/clickhouse_connect/driver/dataconv.py +++ b/contrib/python/clickhouse-connect/clickhouse_connect/driver/dataconv.py @@ -5,7 +5,7 @@ from typing import Sequence, Optional, Any from uuid import UUID, SafeUUID from clickhouse_connect.driver.common import int_size -from clickhouse_connect.driver.exceptions import DataError +from clickhouse_connect.driver.errors import NONE_IN_NULLABLE_COLUMN from clickhouse_connect.driver.types import ByteSource from clickhouse_connect.driver.options import np @@ -111,12 +111,12 @@ def pivot(data: Sequence[Sequence], start_row: int, end_row: int) -> Sequence[Se return tuple(zip(*data[start_row: end_row])) -def write_str_col(column: Sequence, nullable: bool, encoding: Optional[str], dest: bytearray): +def write_str_col(column: Sequence, nullable: bool, encoding: Optional[str], dest: bytearray) -> int: app = dest.append for x in column: if not x: if not nullable and x is None: - raise DataError('Invalid None value in non-Nullable column') + return NONE_IN_NULLABLE_COLUMN app(0) else: if encoding: @@ -132,3 +132,4 @@ def write_str_col(column: Sequence, nullable: bool, encoding: Optional[str], des break app(0x80 | b) dest += x + return 0 diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/driver/errors.py b/contrib/python/clickhouse-connect/clickhouse_connect/driver/errors.py new file mode 100644 index 0000000000..0d37890b7e --- /dev/null +++ b/contrib/python/clickhouse-connect/clickhouse_connect/driver/errors.py @@ -0,0 +1,13 @@ +from clickhouse_connect.driver.exceptions import DataError + + +# Error codes used in the Cython API +NO_ERROR = 0 +NONE_IN_NULLABLE_COLUMN = 1 + +error_messages = {NONE_IN_NULLABLE_COLUMN: 'Invalid None value in non-Nullable column'} + + +def handle_error(error_num: int): + if error_num > 0: + raise DataError(error_messages[error_num]) diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/driverc/dataconv.pyx b/contrib/python/clickhouse-connect/clickhouse_connect/driverc/dataconv.pyx index 0c9bbc19ae..da3718d116 100644 --- a/contrib/python/clickhouse-connect/clickhouse_connect/driverc/dataconv.pyx +++ b/contrib/python/clickhouse-connect/clickhouse_connect/driverc/dataconv.pyx @@ -19,7 +19,7 @@ from uuid import UUID, SafeUUID from libc.string cimport memcpy from datetime import tzinfo -from clickhouse_connect.driver.exceptions import DataError +from clickhouse_connect.driver.errors import NONE_IN_NULLABLE_COLUMN @cython.boundscheck(False) @cython.wraparound(False) @@ -255,7 +255,7 @@ cdef inline extend_byte_array(target: bytearray, int start, object source, Py_ss @cython.boundscheck(False) @cython.wraparound(False) -def write_str_col(column: Sequence, nullable: bool, encoding: Optional[str], dest: bytearray): +def write_str_col(column: Sequence, nullable: bool, encoding: Optional[str], dest: bytearray) -> int: cdef unsigned long long buff_size = len(column) << 5 cdef unsigned long long buff_loc = 0, sz = 0, dsz = 0 cdef unsigned long long array_size = PyByteArray_GET_SIZE(dest) @@ -268,7 +268,7 @@ def write_str_col(column: Sequence, nullable: bool, encoding: Optional[str], des for x in column: if not x: if not nullable and x is None: - raise DataError('Invalid None value in non-Nullable column') + return NONE_IN_NULLABLE_COLUMN temp_buff[buff_loc] = 0 buff_loc += 1 if buff_loc == buff_size: @@ -315,3 +315,4 @@ def write_str_col(column: Sequence, nullable: bool, encoding: Optional[str], des finally: mv.release() PyMem_Free(<void *>temp_buff) + return 0 diff --git a/contrib/python/clickhouse-connect/ya.make b/contrib/python/clickhouse-connect/ya.make index 292739d8da..01eb1e5ef9 100644 --- a/contrib/python/clickhouse-connect/ya.make +++ b/contrib/python/clickhouse-connect/ya.make @@ -2,7 +2,7 @@ PY3_LIBRARY() -VERSION(0.6.20) +VERSION(0.6.21) LICENSE(Apache-2.0) @@ -62,6 +62,7 @@ PY_SRCS( clickhouse_connect/driver/ctypes.py clickhouse_connect/driver/dataconv.py clickhouse_connect/driver/ddl.py + clickhouse_connect/driver/errors.py clickhouse_connect/driver/exceptions.py clickhouse_connect/driver/external.py clickhouse_connect/driver/httpclient.py |