Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
119 commits
Select commit Hold shift + click to select a range
4925446
Refactor hybrid queries to use `alpha_param` and remove `0.7` default…
tsmith023 Mar 13, 2026
1899ffd
Remove mistakenly commited local change to `regen.sh`
tsmith023 Mar 16, 2026
c057270
Update logic to use new proto message
tsmith023 Mar 16, 2026
8e5d54d
Change formatting
tsmith023 Mar 16, 2026
367ce79
Tidy version check code
tsmith023 Mar 16, 2026
81414a1
Parse correct default for BC if server < 1.36
tsmith023 Mar 16, 2026
a13da23
Update CI image
tsmith023 Mar 16, 2026
7abe7f5
Fix wrong version comparison
tsmith023 Mar 16, 2026
b5f5e55
Fix typo in ci
tsmith023 Mar 16, 2026
47841d4
Update CI image
tsmith023 Mar 16, 2026
e305b33
Remove client-side default from aggregate queries
tsmith023 Mar 16, 2026
c4d6e87
Merge pull request #1985 from weaviate/tsmith023/remove-default-hybri…
tsmith023 Mar 17, 2026
8520a1c
Update ver check and CI tags
tsmith023 Mar 20, 2026
ed37375
Remove test of lazy loading shards
tsmith023 Mar 20, 2026
454e0e4
Merge branch 'main' into dev/1.37
tsmith023 Mar 20, 2026
1433985
Refactor client test for new server lazy shard loading
tsmith023 Mar 20, 2026
d5d5117
Merge branch 'dev/1.37' of https://github.com/weaviate/weaviate-pytho…
tsmith023 Mar 20, 2026
dd6c835
Debug failing ci test
tsmith023 Mar 20, 2026
cf96ccb
Remove outdated lazy shard load test
tsmith023 Mar 20, 2026
4b669e1
Update CI images
tsmith023 Mar 20, 2026
890a414
Add per-test timeouts and stack dump on timeout
tsmith023 Mar 20, 2026
2893822
Reduce per-test timeout to 5 mins
tsmith023 Mar 20, 2026
6edd0e1
Fix inc backups test
tsmith023 Mar 20, 2026
e7cb697
Add server version check for incremental backups
tsmith023 Mar 20, 2026
12d064f
Remove comment
tsmith023 Mar 20, 2026
fe5c522
Hard kill the process on timeout detection
tsmith023 Mar 20, 2026
2d961d1
Timeout putting the sentinel to avoid deadlocking
tsmith023 Mar 20, 2026
fadcebb
Handle the timeout of sentinel pushing gracefully
tsmith023 Mar 20, 2026
78ff5ec
feat: add TextAnalyzerConfig for ASCII folding in text properties
amourao Apr 9, 2026
6931a6f
refactor: ruff format
amourao Apr 9, 2026
bda3008
feat: add min version check
amourao Apr 9, 2026
9bea05a
Merge branch 'main' into dev/1.37
dirkkul Apr 9, 2026
77fc0ff
feat: update TextAnalyzerConfig docstring for ascii_fold attributes
amourao Apr 9, 2026
a8d6927
feat: add asciiFold check in _text_analyzer_from_config function
amourao Apr 9, 2026
e8919a3
test: fix ASCII folding tests
amourao Apr 9, 2026
3cc6306
feat: add support for stopword presets in inverted index configuratio…
amourao Apr 9, 2026
ef04dea
test: added live and config tests
amourao Apr 9, 2026
8f1b33b
refactor: improve docstrings for stopword presets and asciiFold tests
amourao Apr 9, 2026
03d6ff4
refactor: simplify _any_property_has_text_analyzer function using _pr…
amourao Apr 13, 2026
1342204
test: remove redundant insertion ascii fold tests from test_collectio…
amourao Apr 13, 2026
cb53d6a
test: add stopwords roundtrip test for collection configuration
amourao Apr 13, 2026
9de03f3
feat: add model validator to enforce asciiFoldIgnore constraints in T…
amourao Apr 13, 2026
7018927
feat: add factory class for text analyzer configurations with ASCII f…
amourao Apr 13, 2026
8e91984
refactor: update TextAnalyzerConfig usage to new Configure class methods
amourao Apr 13, 2026
30814fc
Merge branch 'feat/ascii-fold' into feat/stopword-presets
amourao Apr 13, 2026
db3009c
test: remove redundant line in stopword presets merge test
amourao Apr 13, 2026
50f7768
refactor: use factory pattern
amourao Apr 13, 2026
6a1b0bc
Add MCP permission
g-despot Apr 14, 2026
a0efe43
refactor: format text analyzer configuration for better readability
amourao Apr 14, 2026
fa92fc2
refactor: remove server side behavior tests
amourao Apr 14, 2026
27cd0a4
test: add stopword presets roundtrip tests for Weaviate collections
amourao Apr 14, 2026
a241d8c
Fix formatting
g-despot Apr 14, 2026
83c2431
refactor: remove unnecessary stopword preset coercion from _TextAnaly…
amourao Apr 14, 2026
4e0a0f2
refactor: replace custom text analyzer method with a direct function …
amourao Apr 14, 2026
eaea155
Merge branch 'dev/1.37' into feat/ascii-fold
amourao Apr 14, 2026
38c7f44
chore: remove unused deprecated import from config.py
amourao Apr 14, 2026
ec43d53
Merge branch 'feat/stopword-presets' into feat/ascii-fold
amourao Apr 14, 2026
b3eb0ac
chore: update WEAVIATE_137 version to 1.37.0-rc.1-578c4eb in workflow
amourao Apr 14, 2026
ceef271
refactor: update text analyzer method to use new static method in Con…
amourao Apr 14, 2026
5e751bf
test: add stopwords roundtrip test with ASCII folding configuration
amourao Apr 14, 2026
31737e9
Merge pull request #2006 from weaviate/feat/ascii-fold
dirkkul Apr 14, 2026
9c4295b
Add query profiling
g-despot Apr 14, 2026
6fd60b5
Reformatted
g-despot Apr 14, 2026
a1df098
Skip test for lower versions
g-despot Apr 14, 2026
239ed32
feat: add tokenizer module with sync and async support, including int…
amourao Apr 14, 2026
480dbe0
Add support for collection export endpoint
dirkkul Mar 9, 2026
92c3d1f
Small cleanup after review
dirkkul Mar 9, 2026
3dc9259
Rename ENum
dirkkul Mar 10, 2026
c36e540
adapt to latest version
dirkkul Mar 31, 2026
54eea32
Update UX
dirkkul Mar 31, 2026
42bfc5c
Remove export path parameter
dirkkul Apr 7, 2026
2c74967
Self-review of changes
dirkkul Apr 13, 2026
ed9f288
Review fixes
dirkkul Apr 13, 2026
e9192f8
Add version guard for export integration tests
dirkkul Apr 13, 2026
338195a
Update to latest image
dirkkul Apr 14, 2026
90840ce
Lowercase export ID
dirkkul Apr 14, 2026
584f8a6
Enforce kwargs for export
dirkkul Apr 15, 2026
96ca193
Fix tests
dirkkul Apr 15, 2026
594e8ee
Fix tests
g-despot Apr 15, 2026
b83a948
Add negative assertions
g-despot Apr 15, 2026
9e8c7b1
Merge branch 'dev/1.37' into query-profiling
g-despot Apr 15, 2026
b9a7c69
Merge pull request #1981 from weaviate/export_collection
dirkkul Apr 15, 2026
8b2caaf
refactor: names don't shadow existing
amourao Apr 15, 2026
ede0b96
fix: add version gate
amourao Apr 15, 2026
8d379f4
refactor: update tokenization type to use Tokenization enum in Tokeni…
amourao Apr 15, 2026
91a359a
refactor: models
amourao Apr 15, 2026
61665e7
refactor: move tokenize property to class config
amourao Apr 15, 2026
3f78571
Merge branch 'dev/1.37' into feat/tokenizer-endpoint
amourao Apr 15, 2026
aea0327
fix: remove trailing whitespace in __init__.py
amourao Apr 15, 2026
ef55ce2
test: add version gate for Weaviate >= 1.37.0 in tokenization tests
amourao Apr 15, 2026
dff05f5
feat: add support for blobHash property type
antas-marcin Mar 14, 2026
1f256b5
Merge pull request #1986 from weaviate/add-support-for-blob-hash-prop…
dirkkul Apr 16, 2026
1b4eea1
Merge pull request #2012 from weaviate/feat/tokenizer-endpoint
dirkkul Apr 16, 2026
906b35b
Add full_with_profile
g-despot Apr 16, 2026
7e5b1be
Merge pull request #2011 from weaviate/query-profiling
g-despot Apr 17, 2026
66a2fb2
Refactor RBAC permissions
g-despot Apr 17, 2026
c116257
Merge branch 'dev/1.37' into mcp-rbac
g-despot Apr 17, 2026
0955364
Bump Weaviate version
g-despot Apr 20, 2026
ca1cb88
Merge pull request #2010 from weaviate/mcp-rbac
tsmith023 Apr 20, 2026
3624e8b
refactor: tokenization executor and models to support stopword config…
amourao Apr 20, 2026
5a12f13
fix: update Weaviate 1.37.1 version to include specific build identifier
amourao Apr 20, 2026
633af0f
Merge branch 'main' of https://github.com/weaviate/weaviate-python-cl…
tsmith023 Apr 20, 2026
7b0042a
Merge branch 'dev/1.37' of https://github.com/weaviate/weaviate-pytho…
tsmith023 Apr 20, 2026
d760577
Reduce timeouts in batch tests
tsmith023 Apr 20, 2026
60887f3
fix: update Weaviate 1.37.1 version to include architecture suffix
amourao Apr 20, 2026
9fd83b8
fix: refactor tokenization tests to use parameterized cases for impro…
amourao Apr 21, 2026
e9d6812
fix: update Weaviate 1.37.1 version and enhance tokenization tests wi…
amourao Apr 21, 2026
202948a
Merge branch 'dev/1.37' into fix/tokenize_simple_output
amourao Apr 21, 2026
959f554
refactor: ruff format
amourao Apr 21, 2026
0f7fe47
test: refactor output types and tests to config
amourao Apr 21, 2026
52c2c8c
refactor: remove unused imports in tokenization models and format
amourao Apr 21, 2026
3de0955
Use public classes for .text endpoint
dirkkul Apr 21, 2026
55b136a
Add overloads for exclusivity of stopwrods
dirkkul Apr 21, 2026
7924e45
Accept collection config classes as stopwords
dirkkul Apr 21, 2026
64bed62
Improve docstring
dirkkul Apr 21, 2026
220e839
Hook up tokenization and clean up model
dirkkul Apr 21, 2026
081aaef
Move property back to tokenization
dirkkul Apr 22, 2026
cae3e33
Merge pull request #2019 from weaviate/fix/tokenize_simple_output
dirkkul Apr 22, 2026
846344f
Add changelog
tsmith023 Apr 23, 2026
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
6 changes: 3 additions & 3 deletions .github/workflows/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ env:
WEAVIATE_132: 1.32.27
WEAVIATE_133: 1.33.18
WEAVIATE_134: 1.34.19
WEAVIATE_135: 1.35.15
WEAVIATE_136: 1.36.6-8edcf08.amd64
WEAVIATE_137: 1.37.0-dev-29d5c87.amd64
WEAVIATE_135: 1.35.18
WEAVIATE_136: 1.36.12
WEAVIATE_137: 1.37.1-4e61e26.amd64

jobs:
lint-and-format:
Expand Down
2 changes: 2 additions & 0 deletions ci/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ services:
DISABLE_LAZY_LOAD_SHARDS: 'true'
GRPC_MAX_MESSAGE_SIZE: 100000000 # 100mb
OBJECTS_TTL_DELETE_SCHEDULE: "@every 12h" # for objectTTL tests to work
EXPORT_ENABLED: 'true'
EXPORT_DEFAULT_PATH: "/var/lib/weaviate/exports"

contextionary:
environment:
Expand Down
15 changes: 15 additions & 0 deletions docs/changelog.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,21 @@
Changelog
=========

Version 4.21.0
--------------
This minor version includes:
- Support for new 1.37 features:
- Add support for the new ``blobHash`` property data type
- Add support for returning profiling when making queries with the ``return_metadata=["query_profile"]`` parameter
- Add support for on-demaned tokenization through the ``client.tokenize`` namespace
- Add support for managing permissions for accessing the native MCP server
- Add support for collection export
- Add support for incremental backups
- Minor bug fixes and improvements:
- Change ``alpha`` queries and aggregations to use server-side default parameter
- Fixes rare flakey behaviour of ``client.batch.stream`` on server hangup


Version 4.20.5
--------------
This patch version includes:
Expand Down
68 changes: 67 additions & 1 deletion integration/conftest.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
import os
import time
import sys
import threading
import traceback
import pytest
from typing import (
Any,
AsyncGenerator,
Expand All @@ -14,7 +18,6 @@
)
from typing import Callable, TypeVar

import pytest
import pytest_asyncio
from _pytest.fixtures import SubRequest

Expand Down Expand Up @@ -500,3 +503,66 @@ def retry_on_http_error(
raise
# This should never be reached, but satisfies the type checker
raise last_exception # type: ignore


TIMEOUT_SECONDS = 300


def dump_all_stacks():
frames = sys._current_frames()
lines = ["\n===== DEADLOCK DETECTED — THREAD DUMP =====\n"]
for thread in threading.enumerate():
frame = frames.get(thread.ident) # pyright: ignore
lines.append(f"\n--- Thread: {thread.name} (id={thread.ident}) ---")
if frame:
lines.append("".join(traceback.format_stack(frame)))
else:
lines.append(" (no frame)\n")
lines.append("===========================================\n")
return "\n".join(lines)


class DeadlockWatchdog:
def __init__(self, timeout):
self.timeout = timeout
self._timer = None

def start(self, label):
self._label = label
self._timer = threading.Timer(self.timeout, self._on_timeout)
self._timer.daemon = True
self._timer.start()

def stop(self):
if self._timer:
self._timer.cancel()
self._timer = None

def _on_timeout(self):
sys.stderr.write(f"\n[WATCHDOG] Hung at: '{self._label}' after {self.timeout}s\n")
sys.stderr.write(dump_all_stacks())
sys.stderr.flush()
os._exit(1) # Hard kill — works reliably in xdist workers


_watchdog = DeadlockWatchdog(TIMEOUT_SECONDS)


# Covers setup + call + teardown
@pytest.hookimpl(hookwrapper=True)
def pytest_runtest_protocol(item, nextitem):
_watchdog.start(item.nodeid)
try:
yield
finally:
_watchdog.stop()


# Separately watch session-scoped fixture setup
@pytest.hookimpl(hookwrapper=True)
def pytest_sessionstart(session):
_watchdog.start("session startup / session-scoped fixtures")
try:
yield
finally:
_watchdog.stop()
6 changes: 3 additions & 3 deletions integration/test_batch_v4.py
Original file line number Diff line number Diff line change
Expand Up @@ -718,7 +718,7 @@ def test_non_existant_collection(client_factory: ClientFactory) -> None:
# not, so we do not check for errors here


@pytest.mark.timeout(600)
@pytest.mark.timeout(60)
def test_number_of_stored_results_in_batch(client_factory: ClientFactory) -> None:
client, name = client_factory()
with client.batch.dynamic() as batch:
Expand Down Expand Up @@ -818,7 +818,7 @@ def test_references_with_to_uuids(client_factory: ClientFactory) -> None:


@pytest.mark.asyncio
@pytest.mark.timeout(600)
@pytest.mark.timeout(60)
async def test_add_one_hundred_thousand_objects_async_client(
async_client_factory: AsyncClientFactory,
) -> None:
Expand Down Expand Up @@ -849,7 +849,7 @@ async def test_add_one_hundred_thousand_objects_async_client(
await client.collections.delete(name)


@pytest.mark.timeout(600)
@pytest.mark.timeout(60)
def test_add_one_hundred_thousand_objects_sync_client(
client_factory: ClientFactory,
) -> None:
Expand Down
2 changes: 1 addition & 1 deletion integration/test_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ def test_collection_name_capitalization(
client.collections.delete(name_big)


def test_client_cluster_with_lazy_shard_loading(
def test_client_cluster_without_lazy_shard_loading(
client: weaviate.WeaviateClient, request: SubRequest
) -> None:
try:
Expand Down
6 changes: 3 additions & 3 deletions integration/test_collection_batch.py
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@ def test_non_existant_collection(collection_factory_get: CollectionFactoryGet) -


@pytest.mark.asyncio
@pytest.mark.timeout(600)
@pytest.mark.timeout(60)
async def test_batch_one_hundred_thousand_objects_async_collection(
batch_collection_async: BatchCollectionAsync,
) -> None:
Expand Down Expand Up @@ -299,7 +299,7 @@ async def test_batch_one_hundred_thousand_objects_async_collection(


@pytest.mark.asyncio
@pytest.mark.timeout(600)
@pytest.mark.timeout(60)
async def test_ingest_one_hundred_thousand_data_objects_async(
batch_collection_async: BatchCollectionAsync,
) -> None:
Expand All @@ -321,7 +321,7 @@ async def test_ingest_one_hundred_thousand_data_objects_async(
assert len(results.errors) == 0, [obj.message for obj in results.errors.values()]


@pytest.mark.timeout(600)
@pytest.mark.timeout(60)
def test_ingest_one_hundred_thousand_data_objects(
batch_collection: BatchCollection,
) -> None:
Expand Down
Loading
Loading