From 925f4cab7ad18b9ec48bdd16fce72c812505c52d Mon Sep 17 00:00:00 2001 From: Vladimir Blagojevic Date: Thu, 13 Nov 2025 13:49:37 +0100 Subject: [PATCH] archive google-ai and google-vertex integrations, migrate path to google-genai-haystack --- .github/utils/validate_version.py | 19 ++++++++++++++++++- .github/workflows/CI_docusaurus_sync.yml | 4 ++-- .github/workflows/CI_pypi_release.yml | 7 ++++++- README.md | 4 ++-- integrations/google_ai/README.md | 9 +++++++++ integrations/google_vertex/README.md | 9 +++++++++ 6 files changed, 46 insertions(+), 6 deletions(-) diff --git a/.github/utils/validate_version.py b/.github/utils/validate_version.py index 2858ff4151..874ecd54be 100644 --- a/.github/utils/validate_version.py +++ b/.github/utils/validate_version.py @@ -2,12 +2,14 @@ import requests # * integrations/-v1.0.0 -INTEGRATION_VERSION_REGEX = r"integrations/([a-zA-Z_]+)-v([0-9]\.[0-9]+\.[0-9]+)" +# * integrations/-v1.0.0.post0 (for post-releases) +INTEGRATION_VERSION_REGEX = r"integrations/([a-zA-Z_]+)-v([0-9]\.[0-9]+\.[0-9]+(?:\.post[0-9]+)?)" def validate_version_number(tag: str): """ Verify that a release version number follows semantic versioning rules by checking the latest version on PyPI. + Supports both regular versions (x.y.z) and post-release versions (x.y.z.postN) per PEP 440. """ matches = re.match(INTEGRATION_VERSION_REGEX, tag) @@ -34,6 +36,21 @@ def validate_version_number(tag: str): return raise e + # Check if this is a post-release version + if ".post" in version_to_release: + # For post-releases (e.g., 5.4.0.post0), the base version should match the latest on PyPI + base_version = version_to_release.split(".post")[0] + if base_version == latest_version: + print(f"Post-release version {version_to_release} is valid for base version {base_version}") + return + else: + msg = ( + f"Invalid post-release version: {version_to_release}. " + f"Post-release must be based on the latest PyPI version: {latest_version}" + ) + raise ValueError(msg) + + # Regular version check x, y, z = [int(i) for i in latest_version.split(".")] acceptable_new_versions = [ diff --git a/.github/workflows/CI_docusaurus_sync.yml b/.github/workflows/CI_docusaurus_sync.yml index 75cf88d057..496146986e 100644 --- a/.github/workflows/CI_docusaurus_sync.yml +++ b/.github/workflows/CI_docusaurus_sync.yml @@ -3,12 +3,12 @@ name: Core / Sync API reference with Docusaurus on: push: tags: - - "**-v[0-9].[0-9]+.[0-9]+" + - "**-v[0-9].[0-9]+.[0-9]+*" workflow_dispatch: # Activate this workflow manually inputs: tag: - description: "Tag with this format: integrations/-v1.0.0. When running this workflow manually, version is irrelevant so you can use any value." + description: "Tag with this format: integrations/-v1.0.0 or integrations/-v1.0.0.post0. When running this workflow manually, version is irrelevant so you can use any value." required: true type: string default: integrations/-v1.0.0 diff --git a/.github/workflows/CI_pypi_release.yml b/.github/workflows/CI_pypi_release.yml index 96e706cdc4..d3434ca5a4 100644 --- a/.github/workflows/CI_pypi_release.yml +++ b/.github/workflows/CI_pypi_release.yml @@ -2,16 +2,21 @@ name: Core / Project release on PyPi # The pushed tag must be formatted like so: # * integrations/-v1.0.0 +# * integrations/-v1.0.0.post0 (for post-releases) # # For example, if we want to release version 1.0.99 # of the google-vertex-haystack integration we'd have to push the tag: # # integrations/google_vertex-v1.0.99 +# +# For a final post-release (e.g., for archiving): +# +# integrations/google_vertex-v1.0.99.post0 on: push: tags: - - "**-v[0-9].[0-9]+.[0-9]+" + - "**-v[0-9].[0-9]+.[0-9]+*" jobs: release-on-pypi: diff --git a/README.md b/README.md index 945241b367..68dfffe52f 100644 --- a/README.md +++ b/README.md @@ -38,9 +38,9 @@ Please check out our [Contribution Guidelines](CONTRIBUTING.md) for all the deta | [elasticsearch-haystack](integrations/elasticsearch/) | Document Store | [![PyPI - Version](https://img.shields.io/pypi/v/elasticsearch-haystack.svg)](https://pypi.org/project/elasticsearch-haystack) | [![Test / elasticsearch](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/elasticsearch.yml/badge.svg)](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/elasticsearch.yml) | | [fastembed-haystack](integrations/fastembed/) | Embedder, Ranker | [![PyPI - Version](https://img.shields.io/pypi/v/fastembed-haystack.svg)](https://pypi.org/project/fastembed-haystack/) | [![Test / fastembed](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/fastembed.yml/badge.svg)](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/fastembed.yml) | | [github-haystack](integrations/github/) | Connector | [![PyPI - Version](https://img.shields.io/pypi/v/github-haystack.svg)](https://pypi.org/project/github-haystack) | [![Test / github](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/github.yml/badge.svg)](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/github.yml) | -| [google-ai-haystack](integrations/google_ai/) | Generator | [![PyPI - Version](https://img.shields.io/pypi/v/google-ai-haystack.svg)](https://pypi.org/project/google-ai-haystack) | [![Test / google-ai](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/google_ai.yml/badge.svg)](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/google_ai.yml) | +| [google-ai-haystack](integrations/google_ai/) | Generator | [![PyPI - Version](https://img.shields.io/pypi/v/google-ai-haystack.svg)](https://pypi.org/project/google-ai-haystack) | **Archived** - use [google-genai-haystack](https://pypi.org/project/google-genai-haystack) instead | | [google-genai-haystack](integrations/google_genai/) | Embedder, Generator | [![PyPI - Version](https://img.shields.io/pypi/v/google-genai-haystack.svg)](https://pypi.org/project/google-genai-haystack) | [![Test / google-genai](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/google_genai.yml/badge.svg)](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/google_genai.yml) | -| [google-vertex-haystack](integrations/google_vertex/) | Embedder, Generator | [![PyPI - Version](https://img.shields.io/pypi/v/google-vertex-haystack.svg)](https://pypi.org/project/google-vertex-haystack) | [![Test / google-vertex](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/google_vertex.yml/badge.svg)](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/google_vertex.yml) | +| [google-vertex-haystack](integrations/google_vertex/) | Embedder, Generator | [![PyPI - Version](https://img.shields.io/pypi/v/google-vertex-haystack.svg)](https://pypi.org/project/google-vertex-haystack) | **Archived** - use [google-genai-haystack](https://pypi.org/project/google-genai-haystack) instead | | [hanlp-haystack](integrations/hanlp/) | Preprocessor | [![PyPI - Version](https://img.shields.io/pypi/v/hanlp-haystack.svg)](https://pypi.org/project/hanlp-haystack) | [![Test / hanlp](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/hanlp.yml/badge.svg)](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/hanlp.yml) | | [jina-haystack](integrations/jina/) | Connector, Embedder, Ranker | [![PyPI - Version](https://img.shields.io/pypi/v/jina-haystack.svg)](https://pypi.org/project/jina-haystack) | [![Test / jina](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/jina.yml/badge.svg)](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/jina.yml) | | [langfuse-haystack](integrations/langfuse/) | Tracer | [![PyPI - Version](https://img.shields.io/pypi/v/langfuse-haystack.svg?color=orange)](https://pypi.org/project/langfuse-haystack) | [![Test / langfuse](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/langfuse.yml/badge.svg)](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/langfuse.yml) | diff --git a/integrations/google_ai/README.md b/integrations/google_ai/README.md index ef196b4838..196acecdd4 100644 --- a/integrations/google_ai/README.md +++ b/integrations/google_ai/README.md @@ -1,5 +1,14 @@ # google-ai-haystack +> [!WARNING] +> This integration is **archived** and no longer maintained. +> +> Please use **[google-genai-haystack](https://pypi.org/project/google-genai-haystack)** instead. +> +> [Installation and documentation](https://haystack.deepset.ai/integrations/google-genai) + +--- + [![PyPI - Version](https://img.shields.io/pypi/v/google-ai-haystack.svg)](https://pypi.org/project/google-ai-haystack) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/google-ai-haystack.svg)](https://pypi.org/project/google-ai-haystack) diff --git a/integrations/google_vertex/README.md b/integrations/google_vertex/README.md index f91f5bcb98..10959657c8 100644 --- a/integrations/google_vertex/README.md +++ b/integrations/google_vertex/README.md @@ -1,5 +1,14 @@ # google-vertex-haystack +> [!WARNING] +> This integration is **archived** and no longer maintained. +> +> Please use **[google-genai-haystack](https://pypi.org/project/google-genai-haystack)** instead. +> +> [Installation and documentation](https://haystack.deepset.ai/integrations/google-genai) + +--- + [![PyPI - Version](https://img.shields.io/pypi/v/google-vertex-haystack.svg)](https://pypi.org/project/google-vertex-haystack) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/google-vertex-haystack.svg)](https://pypi.org/project/google-vertex-haystack)