diff --git a/.github/workflows/indexability_tests.yml b/.github/workflows/indexability_tests.yml index f410a384..6f6bdf4d 100644 --- a/.github/workflows/indexability_tests.yml +++ b/.github/workflows/indexability_tests.yml @@ -37,6 +37,9 @@ jobs: - name: Run HTML structure tests id: html-tests continue-on-error: true + env: + # This job manages no containers of its own — skip conftest's docker startup. + DOCS_GITHUB_ENV: "true" run: | echo "Running HTML indexability tests..." uv run pytest -m "indexability" -v --tb=short --junitxml=pytest-results.xml @@ -46,6 +49,8 @@ jobs: continue-on-error: true if: env.ANTHROPIC_API_KEY != '' && env.OPENAI_API_KEY != '' env: + # This job manages no containers of its own — skip conftest's docker startup. + DOCS_GITHUB_ENV: "true" ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} run: | diff --git a/.github/workflows/llms_txt_tests.yml b/.github/workflows/llms_txt_tests.yml index c5f1e881..4346f541 100644 --- a/.github/workflows/llms_txt_tests.yml +++ b/.github/workflows/llms_txt_tests.yml @@ -38,6 +38,8 @@ jobs: id: run-tests continue-on-error: true env: + # This job manages no containers of its own — skip conftest's docker startup. + DOCS_GITHUB_ENV: "true" # Raises GitHub's anonymous rate limit (60/hr → 5000/hr) for the # version-freshness test, which hits /releases/latest per library. GH_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/_build_scripts/update-config-versions.js b/_build_scripts/update-config-versions.js index 9ed48be3..2b8846e3 100644 --- a/_build_scripts/update-config-versions.js +++ b/_build_scripts/update-config-versions.js @@ -99,6 +99,7 @@ const appendVersionsToConfig = async (config) => { config.go_client_version = await getRepoVersion('weaviate-go-client'); config.java_client_version = await getRepoVersion('weaviate-java-client'); config.typescript_client_version = await getRepoVersion('typescript-client'); + config.csharp_client_version = await getRepoVersion('csharp-client'); config.helm_version = await getRepoVersion('weaviate-helm'); config.weaviate_cli_version = await getRepoVersion('weaviate-cli'); config.agents_python_version = await getRepoVersion('weaviate-agents-python-client'); diff --git a/_includes/code/howto/search.bm25.gql.py b/_includes/code/howto/search.bm25.gql.py index 328170f0..d1196950 100644 --- a/_includes/code/howto/search.bm25.gql.py +++ b/_includes/code/howto/search.bm25.gql.py @@ -80,6 +80,7 @@ limit: 3 bm25: { query: "Australian mammal cute" + properties: ["question", "answer"] # highlight-start searchOperator: { operator: AndCross, diff --git a/_includes/code/howto/search.bm25.py b/_includes/code/howto/search.bm25.py index 36ad62f4..f9ccf704 100644 --- a/_includes/code/howto/search.bm25.py +++ b/_includes/code/howto/search.bm25.py @@ -120,6 +120,8 @@ response = jeopardy.query.bm25( # highlight-start query="African desert wind", + # and_cross errors unless every searched property shares tokenization settings + query_properties=["question", "answer"], # Each token must be matched by at least one searched property, # but not necessarily all by the same property operator=BM25Operator.and_cross(), diff --git a/_includes/release-history.md b/_includes/release-history.md index ba65becc..d0db00be 100644 --- a/_includes/release-history.md +++ b/_includes/release-history.md @@ -2,11 +2,11 @@ This table lists recent Weaviate Database versions and corresponding client libr | Weaviate Database
([GitHub][cWeaviate]) | First
release date | Python
([GitHub][cPython]) | TypeScript/
JavaScript
([GitHub][cTypeScript]) | Go
([GitHub][cGo]) | Java
([GitHub][cJava]) | C#
([GitHub][cCSharp]) | | :------------------------------------------------------------------ | :---------------------- | :-------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: | :-------------------------------------------------------------------------: | :-----------------------------------------------------------------: | :-----------------------------------------------------------------------------: | -| [1.39.x](https://github.com/weaviate/weaviate/releases/tag/v1.39.0) | 2026-08-04 | [4.23.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.23.0) | - | - | [6.3.1](https://github.com/weaviate/java-client/releases/tag/6.3.1) | - | -| [1.38.x](https://github.com/weaviate/weaviate/releases/tag/v1.38.0) | 2026-06-05 | [4.22.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.22.0) | [3.14.x](https://github.com/weaviate/typescript-client/releases/tag/v3.14.0) | - | [6.3.0](https://github.com/weaviate/java-client/releases/tag/6.3.0) | - | -| [1.37.x](https://github.com/weaviate/weaviate/releases/tag/v1.37.0) | 2026-04-16 | [4.21.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.21.0) | [3.13.x](https://github.com/weaviate/typescript-client/releases/tag/v3.13.0) | [5.7.3](https://github.com/weaviate/weaviate-go-client/releases/tag/v5.7.3) | [6.2.0](https://github.com/weaviate/java-client/releases/tag/6.2.0) | N/A | -| [1.36.x](https://github.com/weaviate/weaviate/releases/tag/v1.36.0) | 2026-02-24 | [4.20.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.20.0) | [3.12.x](https://github.com/weaviate/typescript-client/releases/tag/v3.12.0) | [5.7.x](https://github.com/weaviate/weaviate-go-client/releases/tag/v5.7.0) | [6.1.0](https://github.com/weaviate/java-client/releases/tag/6.1.0) | [1.0.1](https://github.com/weaviate/weaviate-dotnet-client/releases/tag/v1.0.1) | -| [1.35.x](https://github.com/weaviate/weaviate/releases/tag/v1.35.0) | 2025-12-17 | [4.19.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.19.0) | [3.11.x](https://github.com/weaviate/typescript-client/releases/tag/v3.11.0) | [5.6.x](https://github.com/weaviate/weaviate-go-client/releases/tag/v5.6.0) | [6.0.0](https://github.com/weaviate/java-client/releases/tag/6.0.0) | [1.0.0](https://github.com/weaviate/weaviate-dotnet-client/releases/tag/v1.0.0) | +| [1.39.x](https://github.com/weaviate/weaviate/releases/tag/v1.39.0) | 2026-08-04 | [4.23.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.23.0) | - | - | [6.3.1](https://github.com/weaviate/java-client/releases/tag/6.3.1) | [1.2.0](https://github.com/weaviate/csharp-client/releases/tag/1.2.0) | +| [1.38.x](https://github.com/weaviate/weaviate/releases/tag/v1.38.0) | 2026-06-05 | [4.22.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.22.0) | [3.14.x](https://github.com/weaviate/typescript-client/releases/tag/v3.14.0) | - | [6.3.0](https://github.com/weaviate/java-client/releases/tag/6.3.0) | [1.2.0](https://github.com/weaviate/csharp-client/releases/tag/1.2.0) | +| [1.37.x](https://github.com/weaviate/weaviate/releases/tag/v1.37.0) | 2026-04-16 | [4.21.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.21.0) | [3.13.x](https://github.com/weaviate/typescript-client/releases/tag/v3.13.0) | [5.7.3](https://github.com/weaviate/weaviate-go-client/releases/tag/v5.7.3) | [6.2.0](https://github.com/weaviate/java-client/releases/tag/6.2.0) | [1.1.1](https://github.com/weaviate/csharp-client/releases/tag/1.1.1) | +| [1.36.x](https://github.com/weaviate/weaviate/releases/tag/v1.36.0) | 2026-02-24 | [4.20.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.20.0) | [3.12.x](https://github.com/weaviate/typescript-client/releases/tag/v3.12.0) | [5.7.x](https://github.com/weaviate/weaviate-go-client/releases/tag/v5.7.0) | [6.1.0](https://github.com/weaviate/java-client/releases/tag/6.1.0) | [1.0.1](https://github.com/weaviate/csharp-client/releases/tag/1.0.1) | +| [1.35.x](https://github.com/weaviate/weaviate/releases/tag/v1.35.0) | 2025-12-17 | [4.19.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.19.0) | [3.11.x](https://github.com/weaviate/typescript-client/releases/tag/v3.11.0) | [5.6.x](https://github.com/weaviate/weaviate-go-client/releases/tag/v5.6.0) | [6.0.0](https://github.com/weaviate/java-client/releases/tag/6.0.0) | [1.0.0](https://github.com/weaviate/csharp-client/releases/tag/1.0.0) |
Older releases @@ -59,6 +59,6 @@ The [TypeScript client](https://github.com/weaviate/typescript-client) replaced [cTypeScript]: https://github.com/weaviate/typescript-client/releases [cGo]: https://github.com/weaviate/weaviate-go-client/releases [cJava]: https://github.com/weaviate/java-client/releases -[cCSharp]: https://github.com/weaviate/weaviate-dotnet-client/releases +[cCSharp]: https://github.com/weaviate/csharp-client/releases
diff --git a/docs/weaviate/api/graphql/search-operators.md b/docs/weaviate/api/graphql/search-operators.md index b2474aad..d2a3c912 100644 --- a/docs/weaviate/api/graphql/search-operators.md +++ b/docs/weaviate/api/graphql/search-operators.md @@ -555,7 +555,7 @@ The available options are `And`, `Or`, and `AndCross`: If not set, the keyword search behaves as if `Or` was set with a `minimumOrTokensMatch` of `1`. -An `AndCross` query example: +An `AndCross` query example, restricted to `question` and `answer` because the `JeopardyQuestion` collection mixes tokenizations across its properties: ```graphql { @@ -564,6 +564,7 @@ An `AndCross` query example: limit: 3 bm25: { query: "African desert wind" + properties: ["question", "answer"] searchOperator: { operator: AndCross } diff --git a/docs/weaviate/search/bm25.md b/docs/weaviate/search/bm25.md index 0f24fd76..f80aa409 100644 --- a/docs/weaviate/search/bm25.md +++ b/docs/weaviate/search/bm25.md @@ -200,7 +200,7 @@ If a collection mixes tokenizations, restrict the search to a compatible set of ::: -The examples below use Python and GraphQL, because `and_cross` is currently available in the Python client and not yet in the TypeScript, Go, Java, or C# clients. +The examples below use Python and GraphQL: `and_cross` is available in the Python client and, from version `1.2.0`, the C# client, but not yet in the TypeScript, Go, or Java clients. Both examples restrict the search to `question` and `answer`, because the `JeopardyQuestion` collection mixes tokenizations across its properties. diff --git a/tests/test_docs_indexability.py b/tests/test_docs_indexability.py index ff5ad51d..fadff628 100644 --- a/tests/test_docs_indexability.py +++ b/tests/test_docs_indexability.py @@ -641,9 +641,14 @@ def test_chatgpt_can_search_code_tabs(): text = response.output_text text_lower = text.lower() - # Must find the correct quickstart URL - assert "docs.weaviate.io/weaviate/quickstart" in text, ( - f"ChatGPT didn't find the quickstart URL. Response:\n{text[:1000]}" + # The live web-search model cites either /weaviate/quickstart or /cloud/quickstart, + # so the URL is not a reliable assertion target; the content assertions below carry the signal. + found_quickstart_url = ( + "docs.weaviate.io/weaviate/quickstart" in text + or "docs.weaviate.io/cloud/quickstart" in text + ) + assert found_quickstart_url, ( + f"ChatGPT didn't find a quickstart URL. Response:\n{text[:1000]}" ) # Must identify multiple programming languages from the code tabs diff --git a/tests/utils.py b/tests/utils.py index 1ef985b6..30f76036 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -21,6 +21,8 @@ "rate limit", "overloaded", "temporarily unavailable", "error while connecting", "connection error", "weaviate_cloud_connection_error", + # Embedded Weaviate's gRPC port is fixed but ephemeral-range, so a transient holder can free it before a retry. + "address already in use", "did not start listening", ) diff --git a/versions-config.json b/versions-config.json index 6ea2e290..f8de9e22 100644 --- a/versions-config.json +++ b/versions-config.json @@ -12,5 +12,5 @@ "java_client_version": "6.2.0", "typescript_client_version": "3.13.1", "spark_connector_version": "1.4.0", - "csharp_client_version": "1.1.1" + "csharp_client_version": "1.2.0" }