Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
- fix: pass DSN to clickhouse-client if configured.
- feat: #108 Queryset.iterator use clickhouse_driver.Client.execute_iter.
- chore: test for python3.13.
- refactor: Using collections.abc.Iterable instead of deprecated django.utils.itercompat.is_iterable

### 1.3.1

Expand Down
5 changes: 3 additions & 2 deletions clickhouse_backend/models/engines.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from collections.abc import Iterable

from django.db.models import Func, Value
from django.utils.itercompat import is_iterable

__all__ = [
"Distributed",
Expand Down Expand Up @@ -139,7 +140,7 @@ def __init__(
for key in ["order_by", "primary_key", "partition_by"]:
value = getattr(self, key)
if value is not None:
if isinstance(value, str) or not is_iterable(value):
if isinstance(value, str) or not isinstance(value, Iterable):
value = (value,)
setattr(self, key, value)
elif not isinstance(value, tuple):
Expand Down
4 changes: 2 additions & 2 deletions clickhouse_backend/models/fields/__init__.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import ipaddress
from collections.abc import Iterable
from datetime import datetime

from django.core import checks, exceptions
from django.db.models import IntegerChoices, fields
from django.utils.functional import cached_property
from django.utils.itercompat import is_iterable
from django.utils.translation import gettext_lazy as _

from clickhouse_backend.validators import MaxBytesValidator
Expand Down Expand Up @@ -284,7 +284,7 @@ def _check_choices(self):
id="fields.E005",
)
]
if not is_iterable(self.choices) or isinstance(self.choices, str):
if not isinstance(self.choices, Iterable) or isinstance(self.choices, str):
return invalid_errors

if not self.choices:
Expand Down
6 changes: 3 additions & 3 deletions clickhouse_backend/models/fields/array.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import json
from collections.abc import Iterable

from django.contrib.postgres.utils import prefix_validation_error
from django.contrib.postgres.validators import ArrayMaxLengthValidator
from django.core import checks, exceptions
from django.db.models import Field, Func, Value, lookups
from django.db.models.fields.mixins import CheckFieldDefaultMixin
from django.utils.itercompat import is_iterable
from django.utils.translation import gettext_lazy as _

from .base import FieldMixin
Expand Down Expand Up @@ -97,15 +97,15 @@ def cast_db_type(self, connection):
return "Array(%s)" % self.base_field.cast_db_type(connection)

def get_db_prep_value(self, value, connection, prepared=False):
if is_iterable(value) and not isinstance(value, (str, bytes)):
if isinstance(value, Iterable) and not isinstance(value, (str, bytes)):
return [
self.base_field.get_db_prep_value(i, connection, prepared=prepared)
for i in value
]
return value

def get_db_prep_save(self, value, connection):
if is_iterable(value) and not isinstance(value, (str, bytes)):
if isinstance(value, Iterable) and not isinstance(value, (str, bytes)):
return [self.base_field.get_db_prep_save(i, connection) for i in value]
return value

Expand Down
8 changes: 4 additions & 4 deletions clickhouse_backend/models/fields/tuple.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
import collections.abc
import copy
import json
from collections.abc import Iterable

from django.contrib.postgres.utils import prefix_validation_error
from django.core import checks, exceptions
from django.db.models import Field, Func, Value, lookups
from django.utils.functional import cached_property
from django.utils.itercompat import is_iterable
from django.utils.translation import gettext_lazy as _

from .base import FieldMixin
Expand Down Expand Up @@ -38,7 +38,7 @@ def _check_base_fields(self, base_fields):
"field instances or (field name, field instance) tuples, "
"and field name must be valid python identifier."
)
if not is_iterable(base_fields) or isinstance(base_fields, str):
if not isinstance(base_fields, Iterable) or isinstance(base_fields, str):
raise invalid_error

fields = []
Expand Down Expand Up @@ -192,15 +192,15 @@ def call_base_fields(self, func_name, value, *args, **kwargs):
return values

def get_db_prep_value(self, value, connection, prepared=False):
if is_iterable(value) and not isinstance(value, (str, bytes)):
if isinstance(value, Iterable) and not isinstance(value, (str, bytes)):
values = self.call_base_fields(
"get_db_prep_value", value, connection, prepared=prepared
)
return tuple(values)
return value

def get_db_prep_save(self, value, connection):
if is_iterable(value) and not isinstance(value, (str, bytes)):
if isinstance(value, Iterable) and not isinstance(value, (str, bytes)):
values = self.call_base_fields("get_db_prep_save", value, connection)
return tuple(values)
return value
Expand Down
Loading