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: 0 additions & 1 deletion dev/breeze/tests/test_selective_checks.py
Original file line number Diff line number Diff line change
Expand Up @@ -1385,7 +1385,6 @@ def test_excluded_providers():
"3.14": [
"amazon", # Depends on lxml<6
"apache.cassandra", # Enable when the next release after 3.29.3 is available
"google", # Depends on ray, which does not yet support python 3.14 (due to pydantic v1)
],
}
),
Expand Down
8 changes: 7 additions & 1 deletion providers/google/docs/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@ Changelog
21.0.0
......

.. note::
This version of the provider introduces support for Python 3.14.
However, the Ray package doesn't yet support Python 3.14, thus ``RayJobHook`` will not work.
If you use ``RayJobHook`` you should stay on Python<3.14 until the upstream library issues a fix.

.. warning::
Deprecated classes, parameters and features have been removed from the Google provider package.
The following breaking changes were introduced:
Expand Down Expand Up @@ -193,7 +198,8 @@ Doc-only
......

.. warning::
We have identified the following regressions for this version.
We have identified the following regressions for this version:

- The return value of the ``GenAIGeminiCreateBatchJobOperator`` and ``GenAIGeminiGetBatchJobOperator`` were incompatible with Airflow 2. The issues fixed in the following PRs #61253 and #61842.
- The ``transport`` parameter broke the deferrable mode for ``CloudRunExecuteJobOperator``. The issue fixed in #61546.

Expand Down
3 changes: 0 additions & 3 deletions providers/google/provider.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -123,9 +123,6 @@ versions:
- 2.0.0
- 1.0.0

excluded-python-versions:
- "3.14"

integrations:
- integration-name: Google Analytics (GA4)
external-doc-url: https://analytics.google.com/
Expand Down
3 changes: 2 additions & 1 deletion providers/google/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,10 @@ classifiers = [
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: System :: Monitoring",
]
requires-python = ">=3.10,!=3.14.*"
requires-python = ">=3.10"

# The dependencies should be modified in place in the generated file.
# Any change in the dependencies is preserved when the file is regenerated
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,14 @@

from __future__ import annotations

import sys
from typing import TYPE_CHECKING, Any
from urllib.parse import urlparse

# Remove the below after https://github.com/ray-project/ray/issues/56434 is resolved
if sys.version_info >= (3, 14):
raise ImportError("Ray is not supported on Python 3.14 yet")

from ray.job_submission import JobSubmissionClient

from airflow.providers.google.common.hooks.base_google import GoogleBaseHook
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,10 +134,6 @@ def mock_client(self):
f"{self.HOOK_MODULE_PATH}.AsyncBiqQueryDataTransferServiceHook._get_conn",
new_callable=AsyncMock,
) as mock_client:
transfer_result = Future()
transfer_result.set_result(mock.MagicMock())

mock_client.return_value.get_transfer_run = mock.MagicMock(return_value=transfer_result)
yield mock_client

@pytest.fixture
Expand All @@ -147,6 +143,10 @@ def hook(self):
@pytest.mark.db_test
@pytest.mark.asyncio
async def test_get_transfer_run(self, mock_client, hook):
transfer_result = Future()
transfer_result.set_result(mock.MagicMock())
mock_client.return_value.get_transfer_run = mock.MagicMock(return_value=transfer_result)

await hook.get_transfer_run(
run_id=RUN_ID,
config_id=TRANSFER_CONFIG_ID,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,16 @@

from unittest import mock

from airflow.providers.google.cloud.hooks.ray import RayJobHook
import pytest

from unit.google.cloud.utils.base_gcp_mock import (
mock_base_gcp_hook_default_project_id,
)

# Remove the below workaround once https://github.com/ray-project/ray/issues/56434 is resolved
pytest.importorskip("airflow.providers.google.cloud.hooks.ray")
from airflow.providers.google.cloud.hooks.ray import RayJobHook

TEST_GCP_CONN_ID: str = "test-gcp-conn-id"
TEST_CLUSTER_NAME: str = "test-cluster-name"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

import pytest

resources = pytest.importorskip("google.cloud.aiplatform.vertex_ray.util.resources")
pytest.importorskip("google.cloud.aiplatform.vertex_ray.util.resources")
from google.cloud.aiplatform.vertex_ray.util.resources import Cluster, Resources

from airflow.providers.google.cloud.hooks.vertex_ai.ray import RayHook
Expand Down
4 changes: 4 additions & 0 deletions providers/google/tests/unit/google/cloud/links/test_ray.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@

from unittest import mock

import pytest

# Remove the below workaround once https://github.com/ray-project/ray/issues/56434 is resolved
pytest.importorskip("ray.dashboard.modules.job.common")
from airflow.providers.google.cloud.links.ray import RayJobLink

TEST_CLUSTER_ADDRESS = "ray-head-123.us-central1.ray.googleusercontent.com"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@
from unittest import mock

import pytest

# Remove the below workaround once https://github.com/ray-project/ray/issues/56434 is resolved
pytest.importorskip("ray.dashboard.modules.job.common")
from ray.dashboard.modules.job.common import JobStatus

from airflow.providers.common.compat.sdk import AirflowTaskTimeout
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -210,10 +210,7 @@ async def test_async_cluster_triggers_on_success_should_execute_successfully(
@pytest.mark.db_test
@pytest.mark.asyncio
@mock.patch("airflow.providers.google.cloud.triggers.dataproc.DataprocClusterTrigger.fetch_cluster")
@mock.patch(
"airflow.providers.google.cloud.hooks.dataproc.DataprocAsyncHook.delete_cluster",
return_value=asyncio.Future(),
)
@mock.patch("airflow.providers.google.cloud.hooks.dataproc.DataprocAsyncHook.delete_cluster")
@mock.patch("google.auth.default")
async def test_async_cluster_trigger_run_returns_error_event(
self, mock_auth, mock_delete_cluster, mock_fetch_cluster, cluster_trigger, async_get_cluster, caplog
Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ packages = []
"apache-airflow-providers-github>=2.8.0"
]
"google" = [
"apache-airflow-providers-google>=10.24.0; python_version !=\"3.14\""
"apache-airflow-providers-google>=10.24.0"
]
"grpc" = [
"apache-airflow-providers-grpc>=3.7.0"
Expand Down Expand Up @@ -436,7 +436,7 @@ packages = []
"apache-airflow-providers-ftp>=3.12.0",
"apache-airflow-providers-git>=0.0.2", # Set from MIN_VERSION_OVERRIDE in update_airflow_pyproject_toml.py
"apache-airflow-providers-github>=2.8.0",
"apache-airflow-providers-google>=10.24.0; python_version !=\"3.14\"",
"apache-airflow-providers-google>=10.24.0",
"apache-airflow-providers-grpc>=3.7.0",
"apache-airflow-providers-hashicorp>=4.0.0",
"apache-airflow-providers-http>=4.13.2",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@

EXCLUDED = {
"apache-airflow-providers-amazon": ["3.14"],
"apache-airflow-providers-google": ["3.14"],
}


Expand Down
8 changes: 4 additions & 4 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading