From fa69fc5fc4f1b5e6615faaaf9bea67dd2b766bbe Mon Sep 17 00:00:00 2001 From: Ivan Despot <66276597+g-despot@users.noreply.github.com> Date: Tue, 13 Oct 2026 11:03:17 +0200 Subject: [PATCH 1/3] ci: test against Weaviate 1.40.0 and prepare the 4.24.0 changelog Add 1.40.0 to the matrix and bump 1.39 and 1.38 to their latest patches. The shards test compared per_node_status keys, which 1.40 populates, so compare its values. Servers from 1.38.19, 1.39.10 and 1.40.0 reject an empty alias pattern, so drop the role case that relied on it. Default embedded instances to 1.40.0, bump the authlib dev pin to the package requirement, and write the 4.24.0 changelog section. --- .github/workflows/main.yaml | 30 ++++++++++++++------------ docs/changelog.rst | 31 ++++++++++++++++++++++++--- integration/test_collection_config.py | 2 +- integration/test_rbac.py | 25 --------------------- requirements-devel.txt | 2 +- weaviate/embedded.py | 2 +- 6 files changed, 47 insertions(+), 45 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 266224164..40d2d3b3f 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -29,8 +29,9 @@ env: WEAVIATE_135: 1.35.23 WEAVIATE_136: 1.36.23 WEAVIATE_137: 1.37.14 - WEAVIATE_138: 1.38.9 - WEAVIATE_139: 1.39.0 + WEAVIATE_138: 1.38.20 + WEAVIATE_139: 1.39.10 + WEAVIATE_140: 1.40.0 jobs: lint-and-format: @@ -150,7 +151,7 @@ jobs: - name: start weaviate run: | source ./ci/compose.sh - export WEAVIATE_VERSION=$WEAVIATE_139 + export WEAVIATE_VERSION=$WEAVIATE_140 docker compose -f ci/docker-compose-async.yml up -d wait "http://localhost:8090" - name: Run the e2e suite inside Pyodide under Node @@ -223,11 +224,11 @@ jobs: fail-fast: false matrix: versions: [ - { py: "3.10", weaviate: $WEAVIATE_139, grpc: "1.59.0"}, - { py: "3.11", weaviate: $WEAVIATE_139, grpc: "1.66.0"}, - { py: "3.12", weaviate: $WEAVIATE_139, grpc: "1.70.0"}, - { py: "3.13", weaviate: $WEAVIATE_139, grpc: "1.72.1"}, - { py: "3.14", weaviate: $WEAVIATE_139, grpc: "1.76.0"} + { py: "3.10", weaviate: $WEAVIATE_140, grpc: "1.59.0"}, + { py: "3.11", weaviate: $WEAVIATE_140, grpc: "1.66.0"}, + { py: "3.12", weaviate: $WEAVIATE_140, grpc: "1.70.0"}, + { py: "3.13", weaviate: $WEAVIATE_140, grpc: "1.72.1"}, + { py: "3.14", weaviate: $WEAVIATE_140, grpc: "1.76.0"} ] optional_dependencies: [false] steps: @@ -279,11 +280,11 @@ jobs: fail-fast: false matrix: versions: [ - { py: "3.10", weaviate: $WEAVIATE_139}, - { py: "3.11", weaviate: $WEAVIATE_139}, - { py: "3.12", weaviate: $WEAVIATE_139}, - { py: "3.13", weaviate: $WEAVIATE_139}, - { py: "3.14", weaviate: $WEAVIATE_139} + { py: "3.10", weaviate: $WEAVIATE_140}, + { py: "3.11", weaviate: $WEAVIATE_140}, + { py: "3.12", weaviate: $WEAVIATE_140}, + { py: "3.13", weaviate: $WEAVIATE_140}, + { py: "3.14", weaviate: $WEAVIATE_140} ] optional_dependencies: [false] steps: @@ -385,7 +386,8 @@ jobs: $WEAVIATE_136, $WEAVIATE_137, $WEAVIATE_138, - $WEAVIATE_139 + $WEAVIATE_139, + $WEAVIATE_140 ] steps: - name: Checkout diff --git a/docs/changelog.rst b/docs/changelog.rst index 007e75ab7..1309d8f2d 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -4,15 +4,40 @@ Changelog Version 4.24.0 -------------- This minor version includes: - - Public names for the collection configuration types, so a helper that passes one around no longer has to import a private class: + - Add support for running the async client in Pyodide and WebAssembly environments such as the browser and marimo notebooks, with gRPC sent over grpc-web to the server's ``/v1/grpc-web`` endpoint: + - Install it with ``weaviate-client[grpc-web]``, which pulls in the new ``weaviate-client-web`` companion package under Pyodide and does nothing on CPython + - ``use_async_with_local()``, ``use_async_with_weaviate_cloud()`` and ``use_async_with_custom()`` route gRPC through the REST endpoint automatically when running under Pyodide + - The sync client, ``batch.stream()`` and embedded Weaviate are not available in the browser, so imports use ``insert_many()`` instead + - Support for new 1.40 features: + - Add support for the ``PATHSEER`` HNSW filter strategy through ``VectorFilterStrategy.PATHSEER`` + - Add support for dropping the index of a named vector through ``collection.config.delete_vector_index()`` + - Add ``per_node_status`` to the shard status and use it in ``wait_for_vector_indexing()`` to wait until every replica is ready + - Add the ``LOADING``, ``LAZY_LOADING``, ``SHUTDOWN``, ``UNAVAILABLE`` and ``RECOVERING`` shard statuses to ``ShardTypes``, and type ``ShardStatus.per_node_status`` with it + - Add the ``read_backups`` permission through ``Permissions.backup(read=True)`` and ``Actions.Backups.READ`` + - Add ``include_roles`` and ``include_users`` to ``backup.create()``, which are only sent when set and require Weaviate 1.40 + - Read the HFresh multi-vector and MUVERA settings back from the server in ``collection.config.get()`` + - Change the default Weaviate version of embedded instances to 1.40.0 + - Add support for the new ``generative-meta`` module through ``Configure.Generative.meta()`` and ``GenerativeConfig.meta()`` + - Add public names for the collection configuration types, so a helper that passes one around no longer has to import a private class: - Every non-deprecated type accepted by ``collections.create()`` and ``collections.config.update()`` now has a public name exported from ``weaviate.classes.config``, among them ``VectorConfigCreate``, ``VectorConfigUpdate``, ``InvertedIndexConfigCreate``, ``ReplicationConfigUpdate``, ``ObjectTTLConfigCreate``, ``GenerativeProvider`` and ``RerankerProvider`` - The types behind the deprecated ``vectorizer_config`` argument and the ``Configure.NamedVectors`` factories are deliberately left private, so that the signatures keep pointing at ``vector_config`` and ``Configure.Vectors`` - Both halves of the vector index families are exported: ``VectorIndexConfigCreate`` with ``VectorIndexConfigHNSWCreate``, ``VectorIndexConfigFlatCreate``, ``VectorIndexConfigDynamicCreate``, ``VectorIndexConfigHFreshCreate`` and ``VectorIndexConfigSkipCreate``, and ``VectorIndexConfigUpdate`` with the matching ``Update`` variants - The public name is now the class itself rather than an alias to it, so error messages, ``repr`` output, IDE hovers and the API reference show the public name - Query and generative-query methods annotate ``boost`` with the public ``BoostReturn`` instead of ``_Boost`` - - Backwards compatibility: + - Backwards compatibility of the public configuration type names: - Every ``_``-prefixed spelling is still importable from the module that defines it, and is the same object as its public counterpart, so ``isinstance`` checks and existing imports of it are unaffected - - A private spelling that was only ever reachable through a module that happened to import it — the executor modules, and a few of the ``config_*`` modules — is no longer reachable there. Import configuration types from ``weaviate.classes.config``, or from ``weaviate.collections.classes.config`` + - A private spelling that was only reachable through a module that happened to import it, such as the executor modules and a few of the ``config_*`` modules, is no longer reachable there, so import configuration types from ``weaviate.classes.config`` or ``weaviate.collections.classes.config`` + - Minor bug fixes and improvements: + - Fix ``roles.has_permissions()`` returning ``True`` for permissions the role does not hold, by reading the boolean in the response body + - Fix ``collection.config.update(object_ttl_config=...)`` writing under the wrong key and dropping the stored TTL settings, so updates now go under ``objectTtlConfig`` and merge onto the existing block + - Fix ``Reconfigure.ObjectTTL.delete_by_date_property()`` sending an omitted ``ttl_offset`` as ``0`` instead of leaving the stored offset unchanged + - Fix ``CollectionConfig.to_dict()`` losing the multi-vector settings, so a collection recreated from it gets a multi-vector index again + - Fix the OIDC token refresher running on after ``close()``, and refresh tokens 30 seconds before they expire + - Fix closing a client from a different event loop, for example across consecutive ``asyncio.run()`` calls + - Deprecate the ``async_enabled`` argument of ``Configure.replication()`` and ``Reconfigure.replication()``, which the server no longer accepts, and keep ``asyncConfig`` when disabling it + - Reject near-vector and hybrid queries whose vector names do not match the target vectors, naming the mismatched names in the error + - Return ``None`` with a warning for an empty date string from the server instead of raising ``IndexError`` + - Raise the minimum ``authlib`` version to 1.7.1 Version 4.23.1 -------------- diff --git a/integration/test_collection_config.py b/integration/test_collection_config.py index d0ecad251..70f0af070 100644 --- a/integration/test_collection_config.py +++ b/integration/test_collection_config.py @@ -881,7 +881,7 @@ def test_collection_update_shards(collection_factory: CollectionFactory) -> None collection.tenants.create([Tenant(name="tenant1"), Tenant(name="tenant2")]) for shard in collection.config.get_shards(): if shard.per_node_status: - assert all(per_node == "READY" for per_node in shard.per_node_status) + assert all(per_node == "READY" for per_node in shard.per_node_status.values()) assert shard.status == "READY" # all possibilites of calling the function diff --git a/integration/test_rbac.py b/integration/test_rbac.py index 4f89cf6d2..5f0fe5479 100644 --- a/integration/test_rbac.py +++ b/integration/test_rbac.py @@ -372,31 +372,6 @@ ), 32, ), - ( - Permissions.alias(alias="", collection="*", read=True, delete=True), - Role( - name="AlliasRole2", - alias_permissions=[ - AliasPermissionOutput( - alias="*", - collection="*", - actions={Actions.Alias.READ, Actions.Alias.DELETE}, - ) - ], - cluster_permissions=[], - users_permissions=[], - collections_permissions=[], - roles_permissions=[], - data_permissions=[], - backups_permissions=[], - mcp_permissions=[], - nodes_permissions=[], - tenants_permissions=[], - replicate_permissions=[], - groups_permissions=[], - ), - 32, # Minimum version for alias permissions - ), ( Permissions.alias(alias="*", collection="*", read=True, delete=True), Role( diff --git a/requirements-devel.txt b/requirements-devel.txt index b66b0b5e7..340f43093 100644 --- a/requirements-devel.txt +++ b/requirements-devel.txt @@ -1,6 +1,6 @@ httpx==0.26.0 validators==0.34.0 -authlib==1.6.12 +authlib==1.7.2 grpcio==1.75.1 grpcio-tools==1.75.1 grpcio-health-checking==1.75.1 diff --git a/weaviate/embedded.py b/weaviate/embedded.py index 545b3bbc4..6deef4684 100644 --- a/weaviate/embedded.py +++ b/weaviate/embedded.py @@ -31,7 +31,7 @@ DEFAULT_PORT = 8079 DEFAULT_GRPC_PORT = 50060 -WEAVIATE_VERSION = "1.39.7" +WEAVIATE_VERSION = "1.40.0" @dataclass From e69e78a61d941592adb5efce11bfff3dfaf7661c Mon Sep 17 00:00:00 2001 From: Ivan Despot <66276597+g-despot@users.noreply.github.com> Date: Tue, 13 Oct 2026 12:53:02 +0200 Subject: [PATCH 2/3] ci: bump the matrix to 1.40.1, 1.39.12 and 1.38.21 and the embedded default to 1.40.1 --- .github/workflows/main.yaml | 6 +++--- docs/changelog.rst | 2 +- weaviate/embedded.py | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 40d2d3b3f..1ad75a063 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -29,9 +29,9 @@ env: WEAVIATE_135: 1.35.23 WEAVIATE_136: 1.36.23 WEAVIATE_137: 1.37.14 - WEAVIATE_138: 1.38.20 - WEAVIATE_139: 1.39.10 - WEAVIATE_140: 1.40.0 + WEAVIATE_138: 1.38.21 + WEAVIATE_139: 1.39.12 + WEAVIATE_140: 1.40.1 jobs: lint-and-format: diff --git a/docs/changelog.rst b/docs/changelog.rst index 1309d8f2d..334c0cc6f 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -16,7 +16,7 @@ This minor version includes: - Add the ``read_backups`` permission through ``Permissions.backup(read=True)`` and ``Actions.Backups.READ`` - Add ``include_roles`` and ``include_users`` to ``backup.create()``, which are only sent when set and require Weaviate 1.40 - Read the HFresh multi-vector and MUVERA settings back from the server in ``collection.config.get()`` - - Change the default Weaviate version of embedded instances to 1.40.0 + - Change the default Weaviate version of embedded instances to 1.40.1 - Add support for the new ``generative-meta`` module through ``Configure.Generative.meta()`` and ``GenerativeConfig.meta()`` - Add public names for the collection configuration types, so a helper that passes one around no longer has to import a private class: - Every non-deprecated type accepted by ``collections.create()`` and ``collections.config.update()`` now has a public name exported from ``weaviate.classes.config``, among them ``VectorConfigCreate``, ``VectorConfigUpdate``, ``InvertedIndexConfigCreate``, ``ReplicationConfigUpdate``, ``ObjectTTLConfigCreate``, ``GenerativeProvider`` and ``RerankerProvider`` diff --git a/weaviate/embedded.py b/weaviate/embedded.py index 6deef4684..726a5457e 100644 --- a/weaviate/embedded.py +++ b/weaviate/embedded.py @@ -31,7 +31,7 @@ DEFAULT_PORT = 8079 DEFAULT_GRPC_PORT = 50060 -WEAVIATE_VERSION = "1.40.0" +WEAVIATE_VERSION = "1.40.1" @dataclass From b18c4431504a11f3a2667638ef663892028c057c Mon Sep 17 00:00:00 2001 From: Ivan Despot <66276597+g-despot@users.noreply.github.com> Date: Mon, 26 Oct 2026 08:56:19 +0100 Subject: [PATCH 3/3] ci: bump Weaviate patch versions and the embedded default to 1.40.2 --- .github/workflows/main.yaml | 12 ++++++------ docs/changelog.rst | 2 +- weaviate/embedded.py | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 1ad75a063..51bd2e25e 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -21,17 +21,17 @@ env: WEAVIATE_127: 1.27.27 WEAVIATE_128: 1.28.16 WEAVIATE_129: 1.29.11 - WEAVIATE_130: 1.30.22 + WEAVIATE_130: 1.30.23 WEAVIATE_131: 1.31.22 WEAVIATE_132: 1.32.27 WEAVIATE_133: 1.33.18 WEAVIATE_134: 1.34.20 WEAVIATE_135: 1.35.23 - WEAVIATE_136: 1.36.23 - WEAVIATE_137: 1.37.14 - WEAVIATE_138: 1.38.21 - WEAVIATE_139: 1.39.12 - WEAVIATE_140: 1.40.1 + WEAVIATE_136: 1.36.24 + WEAVIATE_137: 1.37.18 + WEAVIATE_138: 1.38.22 + WEAVIATE_139: 1.39.13 + WEAVIATE_140: 1.40.2 jobs: lint-and-format: diff --git a/docs/changelog.rst b/docs/changelog.rst index 47b552e0c..b054122b7 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -5,7 +5,7 @@ Version 4.24.1 -------------- This patch version includes: - Deprecate ``client.graphql_raw_query()`` (Dep031), which will be removed in a release after May 1, 2027, when Weaviate retires the GraphQL API. Use the collection query methods or the REST Search API instead - - Bump the default embedded Weaviate version from 1.39.7 to 1.40.1 + - Bump the default embedded Weaviate version from 1.39.7 to 1.40.2 Version 4.24.0 -------------- diff --git a/weaviate/embedded.py b/weaviate/embedded.py index d12ea83ba..909f78cb9 100644 --- a/weaviate/embedded.py +++ b/weaviate/embedded.py @@ -32,7 +32,7 @@ DEFAULT_PORT = 8079 DEFAULT_GRPC_PORT = 50060 -WEAVIATE_VERSION = "1.40.1" +WEAVIATE_VERSION = "1.40.2" @dataclass