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
5 changes: 3 additions & 2 deletions PROVIDERS.rst
Original file line number Diff line number Diff line change
Expand Up @@ -157,8 +157,9 @@ Airflow version to the next MINOR release, when 12 months passed since the first
MINOR version of Airflow.

For example this means that by default we upgrade the minimum version of Airflow supported by providers
to 3.0.0 in the first Provider's release after 22nd of April 2026. 22nd of April 2025 is the date when the
first ``PATCHLEVEL`` version of 3.0 (3.0.0) was released.
to 3.1.0 in the first Provider's release after 20th of May 2026. 20th of May 2025 was the date when the
first ``PATCHLEVEL`` version of 2.11 (2.11.0) was released and since Airflow 3.0 was released in April 2025,
we go straight to Airflow 3.1 as minimum supported version of Airflow for providers in May 2026.

When we increase the minimum Airflow version, this is not a reason to bump ``MAJOR`` version of the providers
(unless there are other breaking changes in the provider). The reason for that is that people who use
Expand Down
10 changes: 5 additions & 5 deletions contributing-docs/testing/unit_tests.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1152,16 +1152,16 @@ are not part of the public API. We deal with it in one of the following ways:
other compatibility shims defined there and you can add more if needed in a similar way.

3) If only some tests are not compatible and use features that are available only in newer Airflow version,
we can mark those tests with appropriate ``AIRFLOW_V_2_X_PLUS`` boolean constant defined in ``version_compat.py``
For example:
we can mark those tests with appropriate ``AIRFLOW_V_3_X_PLUS`` boolean constant defined
in ``version_compat.py``. For example:

.. code-block:: python

from tests_common.test_utils.version_compat import AIRFLOW_V_2_10_PLUS
from tests_common.test_utils.version_compat import AIRFLOW_V_3_0_PLUS


@pytest.mark.skipif(not AIRFLOW_V_2_10_PLUS, reason="The tests should be skipped for Airflow < 2.10")
def some_test_that_only_works_for_airflow_2_10_plus():
@pytest.mark.skipif(not AIRFLOW_V_3_0_PLUS, reason="The tests should be skipped for Airflow < 3.0")
def some_test_that_only_works_for_airflow_3_0_plus():
pass

4) Sometimes, the tests should only be run when Airflow is installed from the sources in main.
Expand Down
2 changes: 1 addition & 1 deletion dev/README_RELEASE_PROVIDERS.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ distributions together.
the versions of Airflow that are not applicable anymore.

2. Check if Breeze unit tests in `dev/breeze/tests/test_packages.py` need adjustments. This is done by simply
searching and replacing old version occurrences with newer one. For example 2.10.0 to 3.0.0
searching and replacing old version occurrences with newer one. For example 2.10.0 to 2.11.0

3. Update minimum airflow version for all packages, you should modify `MIN_AIRFLOW_VERSION`
in `src/airflow_breeze/utils/packages.py` and run the `breeze release-management prepare-provider-documentation --only-min-version-update`
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -1 +1 @@
5a7356a41f6f0e7c0a5862d8ae1a2ba9
df4caa6f639503f0f0da3fe91e7cf1b0
Original file line number Diff line number Diff line change
Expand Up @@ -819,7 +819,6 @@ def provider_action_summary(description: str, message_type: MessageType, package
)
@click.option(
"--release-date",
required=True,
type=str,
callback=validate_release_date,
envvar="RELEASE_DATE",
Expand All @@ -843,7 +842,7 @@ def prepare_provider_documentation(
skip_changelog: bool,
skip_readme: bool,
incremental_update: bool,
release_date: str,
release_date: str | None,
):
from airflow_breeze.prepare_providers.provider_documentation import (
PrepareReleaseDocsChangesOnlyException,
Expand All @@ -856,6 +855,10 @@ def prepare_provider_documentation(
update_release_notes,
)

if not release_date and not only_min_version_update:
get_console().print("[error]Release date is required unless --only-min-version-update is used![/]")
sys.exit(1)

perform_environment_checks()
fix_ownership_using_docker()
cleanup_python_generated_files()
Expand Down Expand Up @@ -964,7 +967,8 @@ def prepare_provider_documentation(
get_console().print(
"\n[info]Please review the updated files, classify the changelog entries and commit the changes.\n"
)
AIRFLOW_PROVIDERS_LAST_RELEASE_DATE_PATH.write_text(release_date + "\n")
if release_date:
AIRFLOW_PROVIDERS_LAST_RELEASE_DATE_PATH.write_text(release_date + "\n")
if incremental_update:
get_console().print(r"\[warning] Generated changes:")
run_command(["git", "diff"])
Expand Down
8 changes: 1 addition & 7 deletions dev/breeze/src/airflow_breeze/global_constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -825,12 +825,6 @@ def generate_provider_dependencies_if_needed():
]

PROVIDERS_COMPATIBILITY_TESTS_MATRIX: list[dict[str, str | list[str]]] = [
{
"python-version": "3.10",
"airflow-version": "2.10.5",
"remove-providers": "common.messaging fab git keycloak",
"run-unit-tests": "true",
},
{
"python-version": "3.10",
"airflow-version": "2.11.0",
Expand All @@ -845,7 +839,7 @@ def generate_provider_dependencies_if_needed():
},
{
"python-version": "3.10",
"airflow-version": "3.1.2",
"airflow-version": "3.1.3",
"remove-providers": "",
"run-unit-tests": "true",
},
Expand Down
2 changes: 1 addition & 1 deletion dev/breeze/src/airflow_breeze/utils/packages.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
from airflow_breeze.utils.version_utils import remove_local_version_suffix
from airflow_breeze.utils.versions import get_version_tag, strip_leading_zeros_from_version

MIN_AIRFLOW_VERSION = "2.10.0"
MIN_AIRFLOW_VERSION = "2.11.0"
HTTPS_REMOTE = "apache-https-for-providers"

LONG_PROVIDERS_PREFIX = "apache-airflow-providers-"
Expand Down
4 changes: 2 additions & 2 deletions dev/breeze/tests/test_packages.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ def test_get_long_package_name():
def test_get_provider_requirements():
# update me when asana dependencies change
assert get_provider_requirements("asana") == [
"apache-airflow>=2.10.0",
"apache-airflow>=2.11.0",
"apache-airflow-providers-common-compat>=1.8.0",
"asana>=5.0.0",
]
Expand Down Expand Up @@ -255,7 +255,7 @@ def test_validate_provider_info_with_schema():
@pytest.mark.parametrize(
("provider_id", "min_version"),
[
("amazon", "2.10.0"),
("amazon", "2.11.0"),
("fab", "3.0.2"),
],
)
Expand Down
4 changes: 2 additions & 2 deletions dev/breeze/tests/test_selective_checks.py
Original file line number Diff line number Diff line change
Expand Up @@ -2876,14 +2876,14 @@ def test_provider_dependency_bump_check_passes_on_non_provider_dependency_change
old_toml = """
[project]
dependencies = [
"apache-airflow>=2.10.0",
"apache-airflow>=2.11.0",
"boto3>=1.37.0",
]
"""
new_toml = """
[project]
dependencies = [
"apache-airflow>=2.10.0",
"apache-airflow>=2.11.0",
"boto3>=1.38.0",
]
"""
Expand Down
4 changes: 2 additions & 2 deletions providers/airbyte/src/airflow/providers/airbyte/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
__version__ = "5.2.5"

if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
"2.10.0"
"2.11.0"
):
raise RuntimeError(
f"The package `apache-airflow-providers-airbyte:{__version__}` needs Apache Airflow 2.10.0+"
f"The package `apache-airflow-providers-airbyte:{__version__}` needs Apache Airflow 2.11.0+"
)
4 changes: 2 additions & 2 deletions providers/alibaba/src/airflow/providers/alibaba/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
__version__ = "3.2.5"

if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
"2.10.0"
"2.11.0"
):
raise RuntimeError(
f"The package `apache-airflow-providers-alibaba:{__version__}` needs Apache Airflow 2.10.0+"
f"The package `apache-airflow-providers-alibaba:{__version__}` needs Apache Airflow 2.11.0+"
)
11 changes: 6 additions & 5 deletions providers/amazon/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,9 @@ The package supports the following python versions: 3.10,3.11,3.12,3.13
Requirements
------------

========================================== ============================================
========================================== ======================================
PIP package Version required
========================================== ============================================
========================================== ======================================
``apache-airflow`` ``>=2.10.0``
``apache-airflow-providers-common-compat`` ``>=1.8.0``
``apache-airflow-providers-common-sql`` ``>=1.27.0``
Expand All @@ -66,10 +66,11 @@ PIP package Version required
``asgiref`` ``>=2.3.0``
``PyAthena`` ``>=3.10.0``
``jmespath`` ``>=0.7.0``
``sagemaker-studio`` ``>=1.0.9; python_version < "3.13"``
``sagemaker-studio`` ``>=1.0.9,<1.1.0; python_version >= "3.13"``
``sagemaker-studio`` ``>=1.0.9``
``pydynamodb`` ``>=0.7.5; python_version >= "3.13"``
``sqlean.py`` ``>=3.47.0; python_version >= "3.13"``
``marshmallow`` ``>=3``
========================================== ============================================
========================================== ======================================

Cross provider package dependencies
-----------------------------------
Expand Down
4 changes: 2 additions & 2 deletions providers/amazon/src/airflow/providers/amazon/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
__version__ = "9.17.0"

if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
"2.10.0"
"2.11.0"
):
raise RuntimeError(
f"The package `apache-airflow-providers-amazon:{__version__}` needs Apache Airflow 2.10.0+"
f"The package `apache-airflow-providers-amazon:{__version__}` needs Apache Airflow 2.11.0+"
)
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
__version__ = "6.1.7"

if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
"2.10.0"
"2.11.0"
):
raise RuntimeError(
f"The package `apache-airflow-providers-apache-beam:{__version__}` needs Apache Airflow 2.10.0+"
f"The package `apache-airflow-providers-apache-beam:{__version__}` needs Apache Airflow 2.11.0+"
)
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
__version__ = "3.8.4"

if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
"2.10.0"
"2.11.0"
):
raise RuntimeError(
f"The package `apache-airflow-providers-apache-cassandra:{__version__}` needs Apache Airflow 2.10.0+"
f"The package `apache-airflow-providers-apache-cassandra:{__version__}` needs Apache Airflow 2.11.0+"
)
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
__version__ = "3.1.4"

if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
"2.10.0"
"2.11.0"
):
raise RuntimeError(
f"The package `apache-airflow-providers-apache-drill:{__version__}` needs Apache Airflow 2.10.0+"
f"The package `apache-airflow-providers-apache-drill:{__version__}` needs Apache Airflow 2.11.0+"
)
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
__version__ = "4.3.1"

if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
"2.10.0"
"2.11.0"
):
raise RuntimeError(
f"The package `apache-airflow-providers-apache-druid:{__version__}` needs Apache Airflow 2.10.0+"
f"The package `apache-airflow-providers-apache-druid:{__version__}` needs Apache Airflow 2.11.0+"
)
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
__version__ = "1.7.4"

if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
"2.10.0"
"2.11.0"
):
raise RuntimeError(
f"The package `apache-airflow-providers-apache-flink:{__version__}` needs Apache Airflow 2.10.0+"
f"The package `apache-airflow-providers-apache-flink:{__version__}` needs Apache Airflow 2.11.0+"
)
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
__version__ = "4.10.5"

if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
"2.10.0"
"2.11.0"
):
raise RuntimeError(
f"The package `apache-airflow-providers-apache-hdfs:{__version__}` needs Apache Airflow 2.10.0+"
f"The package `apache-airflow-providers-apache-hdfs:{__version__}` needs Apache Airflow 2.11.0+"
)
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
__version__ = "9.1.4"

if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
"2.10.0"
"2.11.0"
):
raise RuntimeError(
f"The package `apache-airflow-providers-apache-hive:{__version__}` needs Apache Airflow 2.10.0+"
f"The package `apache-airflow-providers-apache-hive:{__version__}` needs Apache Airflow 2.11.0+"
)
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
__version__ = "1.3.4"

if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
"2.10.0"
"2.11.0"
):
raise RuntimeError(
f"The package `apache-airflow-providers-apache-iceberg:{__version__}` needs Apache Airflow 2.10.0+"
f"The package `apache-airflow-providers-apache-iceberg:{__version__}` needs Apache Airflow 2.11.0+"
)
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
__version__ = "1.7.4"

if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
"2.10.0"
"2.11.0"
):
raise RuntimeError(
f"The package `apache-airflow-providers-apache-impala:{__version__}` needs Apache Airflow 2.10.0+"
f"The package `apache-airflow-providers-apache-impala:{__version__}` needs Apache Airflow 2.11.0+"
)
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
__version__ = "1.10.6"

if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
"2.10.0"
"2.11.0"
):
raise RuntimeError(
f"The package `apache-airflow-providers-apache-kafka:{__version__}` needs Apache Airflow 2.10.0+"
f"The package `apache-airflow-providers-apache-kafka:{__version__}` needs Apache Airflow 2.11.0+"
)
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
__version__ = "3.9.3"

if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
"2.10.0"
"2.11.0"
):
raise RuntimeError(
f"The package `apache-airflow-providers-apache-kylin:{__version__}` needs Apache Airflow 2.10.0+"
f"The package `apache-airflow-providers-apache-kylin:{__version__}` needs Apache Airflow 2.11.0+"
)
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
__version__ = "4.4.5"

if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
"2.10.0"
"2.11.0"
):
raise RuntimeError(
f"The package `apache-airflow-providers-apache-livy:{__version__}` needs Apache Airflow 2.10.0+"
f"The package `apache-airflow-providers-apache-livy:{__version__}` needs Apache Airflow 2.11.0+"
)
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
__version__ = "4.7.4"

if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
"2.10.0"
"2.11.0"
):
raise RuntimeError(
f"The package `apache-airflow-providers-apache-pig:{__version__}` needs Apache Airflow 2.10.0+"
f"The package `apache-airflow-providers-apache-pig:{__version__}` needs Apache Airflow 2.11.0+"
)
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
__version__ = "4.8.4"

if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
"2.10.0"
"2.11.0"
):
raise RuntimeError(
f"The package `apache-airflow-providers-apache-pinot:{__version__}` needs Apache Airflow 2.10.0+"
f"The package `apache-airflow-providers-apache-pinot:{__version__}` needs Apache Airflow 2.11.0+"
)
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
__version__ = "5.3.4"

if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
"2.10.0"
"2.11.0"
):
raise RuntimeError(
f"The package `apache-airflow-providers-apache-spark:{__version__}` needs Apache Airflow 2.10.0+"
f"The package `apache-airflow-providers-apache-spark:{__version__}` needs Apache Airflow 2.11.0+"
)
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
__version__ = "1.0.5"

if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
"2.10.0"
"2.11.0"
):
raise RuntimeError(
f"The package `apache-airflow-providers-apache-tinkerpop:{__version__}` needs Apache Airflow 2.10.0+"
f"The package `apache-airflow-providers-apache-tinkerpop:{__version__}` needs Apache Airflow 2.11.0+"
)
2 changes: 1 addition & 1 deletion providers/apprise/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ Requirements
PIP package Version required
========================================== ==================
``apache-airflow`` ``>=2.10.0``
``apache-airflow-providers-common-compat`` ``>=1.8.0``
``apache-airflow-providers-common-compat`` ``>=1.9.0``
``apprise`` ``>=1.8.0``
========================================== ==================

Expand Down
Loading
Loading