This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 547e352578 Bring back min-airflow-version for preinstalled providers
(#31469)
547e352578 is described below
commit 547e352578fac92f072b269dc257d21cdc279d97
Author: Jarek Potiuk <[email protected]>
AuthorDate: Tue May 23 11:11:01 2023 +0200
Bring back min-airflow-version for preinstalled providers (#31469)
In the last wave of providers #31416 we bumped min-airlfow-version to 2.4
and
added mechanism to verify min-airflow version is ok while importing, but
it turned out that there are cases where installing just old version of
airflow (with no constraints) brings the latest version of those
providers and causes new installation of airflow to fail. This is far
too common to ignore or require to use constraints, unfortunately We do
not have min-airlfow-version in the preinstalled providers for one
reason only. For some tools that are NOT conforming to standards (such
as bazel), having min-airflow-version for those providers causes
circular dependency (even though technically dependencies in PyPI can -
and often are - circular, because dependencies in Python are not DAG and
can contain cycles.
This was in response to this issue in 2021 #17795.
However, this is really bazel issue, and on top of it - it's recognized
as such and being fixed very recently
in https://github.com/bazelbuild/rules_python/issues/1188 because there
are other packages that have similar problems (pytorch and triton being
popular couple). Also Bazel is not that popular in the Python world.
Therefore, rather than trying to workaround the problem of bazel, we
encourage them to merge and release the fix
https://github.com/bazelbuild/rules_python/pull/1166#issuecomment-1558690218
and call it out in our installation instructions, that bazel
installation might lead to problems like that.
If bazel does not fix it, this will only be a problem for Future
installations of airflow in a few months most likely. It will not impact
current bazel users installing old versions of Airflow (actually they
might start having problems now if we do not fix it and yank the 5
providers released yesterday)
---
CONTRIBUTING.rst | 10 ++++++++++
IMAGES.rst | 5 +++++
LOCAL_VIRTUALENV.rst | 10 ++++++++++
README.md | 5 +++++
airflow/providers/common/sql/provider.yaml | 1 +
airflow/providers/ftp/provider.yaml | 3 ++-
airflow/providers/http/provider.yaml | 1 +
airflow/providers/imap/provider.yaml | 3 ++-
airflow/providers/sqlite/provider.yaml | 1 +
.../PROVIDER_INDEX_TEMPLATE.rst.jinja2 | 14 --------------
dev/provider_packages/prepare_provider_packages.py | 7 +++----
.../installing-from-pypi.rst | 20 ++++++++++++++------
.../howto/upgrading-from-1-10/upgrade-check.rst | 6 ++++++
.../installation/installing-from-pypi.rst | 19 +++++++++++++------
docs/apache-airflow/start.rst | 5 +++++
generated/provider_dependencies.json | 13 ++++++++++---
16 files changed, 88 insertions(+), 35 deletions(-)
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index f88a12979a..d8bb9d2b95 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -593,6 +593,11 @@ Airflow dependencies
``pip`` - especially when it comes to constraint vs. requirements
management.
Installing via ``Poetry`` or ``pip-tools`` is not currently supported.
+ There are known issues with ``bazel`` that might lead to circular
dependencies when using it to install
+ Airflow. Please switch to ``pip`` if you encounter such problems. ``Bazel``
community works on fixing
+ the problem in `this PR
<https://github.com/bazelbuild/rules_python/pull/1166>`_ so it might be that
+ newer versions of ``bazel`` will handle it.
+
If you wish to install airflow using those tools you should use the
constraint files and convert
them to appropriate format and workflow that your tool requires.
@@ -796,6 +801,11 @@ Pinned constraint files
``pip`` - especially when it comes to constraint vs. requirements
management.
Installing via ``Poetry`` or ``pip-tools`` is not currently supported.
+ There are known issues with ``bazel`` that might lead to circular
dependencies when using it to install
+ Airflow. Please switch to ``pip`` if you encounter such problems. ``Bazel``
community works on fixing
+ the problem in `this PR
<https://github.com/bazelbuild/rules_python/pull/1166>`_ so it might be that
+ newer versions of ``bazel`` will handle it.
+
If you wish to install airflow using those tools you should use the
constraint files and convert
them to appropriate format and workflow that your tool requires.
diff --git a/IMAGES.rst b/IMAGES.rst
index d28db99278..9034077ce3 100644
--- a/IMAGES.rst
+++ b/IMAGES.rst
@@ -147,6 +147,11 @@ This will build the image using command similar to:
``pip`` - especially when it comes to constraint vs. requirements
management.
Installing via ``Poetry`` or ``pip-tools`` is not currently supported.
+ There are known issues with ``bazel`` that might lead to circular
dependencies when using it to install
+ Airflow. Please switch to ``pip`` if you encounter such problems. ``Bazel``
community works on fixing
+ the problem in `this PR
<https://github.com/bazelbuild/rules_python/pull/1166>`_ so it might be that
+ newer versions of ``bazel`` will handle it.
+
If you wish to install airflow using those tools you should use the
constraint files and convert
them to appropriate format and workflow that your tool requires.
diff --git a/LOCAL_VIRTUALENV.rst b/LOCAL_VIRTUALENV.rst
index 00205215b1..8fc030e1f2 100644
--- a/LOCAL_VIRTUALENV.rst
+++ b/LOCAL_VIRTUALENV.rst
@@ -70,6 +70,11 @@ Extra Packages
``pip`` - especially when it comes to constraint vs. requirements
management.
Installing via ``Poetry`` or ``pip-tools`` is not currently supported.
+ There are known issues with ``bazel`` that might lead to circular
dependencies when using it to install
+ Airflow. Please switch to ``pip`` if you encounter such problems. ``Bazel``
community works on fixing
+ the problem in `this PR
<https://github.com/bazelbuild/rules_python/pull/1166>`_ so it might be that
+ n ewer versions of ``bazel`` will handle it.
+
If you wish to install airflow using those tools you should use the
constraint files and convert
them to appropriate format and workflow that your tool requires.
@@ -136,6 +141,11 @@ To create and initialize the local virtualenv:
``pip`` - especially when it comes to constraint vs. requirements
management.
Installing via ``Poetry`` or ``pip-tools`` is not currently supported.
+ There are known issues with ``bazel`` that might lead to circular
dependencies when using it to install
+ Airflow. Please switch to ``pip`` if you encounter such problems. ``Bazel``
community works on fixing
+ the problem in `this PR
<https://github.com/bazelbuild/rules_python/pull/1166>`_ so it might be that
+ newer versions of ``bazel`` will handle it.
+
If you wish to install airflow using those tools you should use the
constraint files and convert
them to appropriate format and workflow that your tool requires.
diff --git a/README.md b/README.md
index 95265f16f5..cf24d6efe9 100644
--- a/README.md
+++ b/README.md
@@ -153,6 +153,11 @@ While it is possible to install Airflow with tools like
[Poetry](https://python-
`pip` - especially when it comes to constraint vs. requirements management.
Installing via `Poetry` or `pip-tools` is not currently supported.
+There are known issues with ``bazel`` that might lead to circular dependencies
when using it to install
+Airflow. Please switch to ``pip`` if you encounter such problems. ``Bazel``
community works on fixing
+the problem in `this PR
<https://github.com/bazelbuild/rules_python/pull/1166>`_ so it might be that
+newer versions of ``bazel`` will handle it.
+
If you wish to install Airflow using those tools, you should use the
constraint files and convert
them to the appropriate format and workflow that your tool requires.
diff --git a/airflow/providers/common/sql/provider.yaml
b/airflow/providers/common/sql/provider.yaml
index b5d7d1931c..e43b6087b6 100644
--- a/airflow/providers/common/sql/provider.yaml
+++ b/airflow/providers/common/sql/provider.yaml
@@ -35,6 +35,7 @@ versions:
- 1.0.0
dependencies:
+ - apache-airflow>=2.4.0
- sqlparse>=0.4.2
additional-extras:
diff --git a/airflow/providers/ftp/provider.yaml
b/airflow/providers/ftp/provider.yaml
index 0fc7b6ff47..986b26923c 100644
--- a/airflow/providers/ftp/provider.yaml
+++ b/airflow/providers/ftp/provider.yaml
@@ -38,7 +38,8 @@ versions:
- 1.0.1
- 1.0.0
-dependencies: []
+dependencies:
+ - apache-airflow>=2.4.0
integrations:
- integration-name: File Transfer Protocol (FTP)
diff --git a/airflow/providers/http/provider.yaml
b/airflow/providers/http/provider.yaml
index c31638bebf..feb010f1c3 100644
--- a/airflow/providers/http/provider.yaml
+++ b/airflow/providers/http/provider.yaml
@@ -42,6 +42,7 @@ versions:
- 1.0.0
dependencies:
+ - apache-airflow>=2.4.0
# The 2.26.0 release of requests got rid of the chardet LGPL mandatory
dependency, allowing us to
# release it as a requirement for airflow
- requests>=2.26.0
diff --git a/airflow/providers/imap/provider.yaml
b/airflow/providers/imap/provider.yaml
index 7449a83a9b..20b26922b0 100644
--- a/airflow/providers/imap/provider.yaml
+++ b/airflow/providers/imap/provider.yaml
@@ -38,7 +38,8 @@ versions:
- 1.0.1
- 1.0.0
-dependencies: []
+dependencies:
+ - apache-airflow>=2.4.0
integrations:
- integration-name: Internet Message Access Protocol (IMAP)
diff --git a/airflow/providers/sqlite/provider.yaml
b/airflow/providers/sqlite/provider.yaml
index 5c6cea93df..fa821f77b4 100644
--- a/airflow/providers/sqlite/provider.yaml
+++ b/airflow/providers/sqlite/provider.yaml
@@ -42,6 +42,7 @@ versions:
- 1.0.0
dependencies:
+ - apache-airflow>=2.4.0
- apache-airflow-providers-common-sql>=1.3.1
integrations:
diff --git a/dev/provider_packages/PROVIDER_INDEX_TEMPLATE.rst.jinja2
b/dev/provider_packages/PROVIDER_INDEX_TEMPLATE.rst.jinja2
index 7da1baccd9..51175274ad 100644
--- a/dev/provider_packages/PROVIDER_INDEX_TEMPLATE.rst.jinja2
+++ b/dev/provider_packages/PROVIDER_INDEX_TEMPLATE.rst.jinja2
@@ -56,20 +56,6 @@ Requirements
The minimum Apache Airflow version supported by this provider package is ``{{
MIN_AIRFLOW_VERSION }}``.
-{%- if PREINSTALLED_PROVIDER %}
-
-This provider package is preinstalled by default when Apache Airflow is
installed. You do not need to
-install it separately. You can upgrade and downgrade it independently of
Apache Airflow package though.
-
-.. note::
-
- The minimum Apache Airflow version for this package is {{
MIN_AIRFLOW_VERSION }} and it will fail
- import at runtime if the version of Airflow is lower even if there is no
requirement specified in
- the dependencies - this is because the provider is preinstalled and
specifying minimum Apache
- Airflow version would create a dependency cycle, which confuses dependency
tools.
-
-{%- endif %}
-
{%- if PIP_REQUIREMENTS %}
{{ PIP_REQUIREMENTS_TABLE_RST | safe}}
diff --git a/dev/provider_packages/prepare_provider_packages.py
b/dev/provider_packages/prepare_provider_packages.py
index f78f53a122..bf7da691c4 100755
--- a/dev/provider_packages/prepare_provider_packages.py
+++ b/dev/provider_packages/prepare_provider_packages.py
@@ -1348,10 +1348,9 @@ def update_min_airflow_version(provider_package_id: str,
version_suffix: str):
context=jinja_context,
target_path=provider_details.source_provider_package_path,
)
- if not jinja_context["PREINSTALLED_PROVIDER"]:
- replace_min_airflow_version_in_provider_yaml(
- context=jinja_context,
target_path=provider_details.source_provider_package_path
- )
+ replace_min_airflow_version_in_provider_yaml(
+ context=jinja_context,
target_path=provider_details.source_provider_package_path
+ )
def update_setup_files(
diff --git a/docs/apache-airflow-providers/installing-from-pypi.rst
b/docs/apache-airflow-providers/installing-from-pypi.rst
index 227398d611..7d36059155 100644
--- a/docs/apache-airflow-providers/installing-from-pypi.rst
+++ b/docs/apache-airflow-providers/installing-from-pypi.rst
@@ -26,12 +26,20 @@ Installation tools
Only ``pip`` installation is currently officially supported.
-While there are some successes with using other tools like `poetry
<https://python-poetry.org/>`_ or
-`pip-tools <https://pypi.org/project/pip-tools/>`_, they do not share the same
workflow as
-``pip`` - especially when it comes to constraint vs. requirements management.
-Installing via ``Poetry`` or ``pip-tools`` is not currently supported. If you
wish to install airflow
-using those tools you should use the constraints and convert them to
appropriate
-format and workflow that your tool requires.
+.. note::
+
+ While there are some successes with using other tools like `poetry
<https://python-poetry.org/>`_ or
+ `pip-tools <https://pypi.org/project/pip-tools/>`_, they do not share the
same workflow as
+ ``pip`` - especially when it comes to constraint vs. requirements management.
+ Installing via ``Poetry`` or ``pip-tools`` is not currently supported. If
you wish to install airflow
+ using those tools you should use the constraints and convert them to
appropriate
+ format and workflow that your tool requires.
+
+ There are known issues with ``bazel`` that might lead to circular
dependencies when using it to install
+ Airflow. Please switch to ``pip`` if you encounter such problems. ``Bazel``
community works on fixing
+ the problem in `this PR
<https://github.com/bazelbuild/rules_python/pull/1166>`_ so it might be that
+ newer versions of ``bazel`` will handle it.
+
Typical command to install airflow from PyPI looks like below (you need to use
the right Airflow version and Python version):
diff --git a/docs/apache-airflow/howto/upgrading-from-1-10/upgrade-check.rst
b/docs/apache-airflow/howto/upgrading-from-1-10/upgrade-check.rst
index 8049d2ddd3..3f33770fac 100644
--- a/docs/apache-airflow/howto/upgrading-from-1-10/upgrade-check.rst
+++ b/docs/apache-airflow/howto/upgrading-from-1-10/upgrade-check.rst
@@ -43,6 +43,12 @@ time of writing: 1.10.15) and then to download this package
and run the script a
``pip`` - especially when it comes to constraint vs. requirements
management.
Installing via ``Poetry`` or ``pip-tools`` is not currently supported.
+ There are known issues with ``bazel`` that might lead to circular
dependencies when using it to install
+ Airflow. Please switch to ``pip`` if you encounter such problems. ``Bazel``
community works on fixing
+ the problem in `this PR
<https://github.com/bazelbuild/rules_python/pull/1166>`_ so it might be that
+ newer versions of ``bazel`` will handle it.
+
+
If you wish to install airflow using those tools you should use the
constraint files and convert
them to appropriate format and workflow that your tool requires.
diff --git a/docs/apache-airflow/installation/installing-from-pypi.rst
b/docs/apache-airflow/installation/installing-from-pypi.rst
index 97cf3ba41c..0ae5991f10 100644
--- a/docs/apache-airflow/installation/installing-from-pypi.rst
+++ b/docs/apache-airflow/installation/installing-from-pypi.rst
@@ -26,12 +26,19 @@ Installation tools
Only ``pip`` installation is currently officially supported.
-While there are some successes with using other tools like `poetry
<https://python-poetry.org/>`_ or
-`pip-tools <https://pypi.org/project/pip-tools/>`_, they do not share the same
workflow as
-``pip`` - especially when it comes to constraint vs. requirements management.
-Installing via ``Poetry`` or ``pip-tools`` is not currently supported. If you
wish to install airflow
-using those tools you should use the constraints and convert them to
appropriate
-format and workflow that your tool requires.
+.. note::
+
+ While there are some successes with using other tools like `poetry
<https://python-poetry.org/>`_ or
+ `pip-tools <https://pypi.org/project/pip-tools/>`_, they do not share the
same workflow as
+ ``pip`` - especially when it comes to constraint vs. requirements management.
+ Installing via ``Poetry`` or ``pip-tools`` is not currently supported. If
you wish to install airflow
+ using those tools you should use the constraints and convert them to
appropriate
+ format and workflow that your tool requires.
+
+ There are known issues with ``bazel`` that might lead to circular
dependencies when using it to install
+ Airflow. Please switch to ``pip`` if you encounter such problems. ``Bazel``
community works on fixing
+ the problem in `this PR
<https://github.com/bazelbuild/rules_python/pull/1166>`_ so it might be that
+ newer versions of ``bazel`` will handle it.
Typical command to install airflow from PyPI looks like below:
diff --git a/docs/apache-airflow/start.rst b/docs/apache-airflow/start.rst
index 6f198dfded..2ea8c6d4b9 100644
--- a/docs/apache-airflow/start.rst
+++ b/docs/apache-airflow/start.rst
@@ -34,6 +34,11 @@ This quick start guide will help you bootstrap an Airflow
standalone instance on
``pip`` - especially when it comes to constraint vs. requirements
management.
Installing via ``Poetry`` or ``pip-tools`` is not currently supported.
+ There are known issues with ``bazel`` that might lead to circular
dependencies when using it to install
+ Airflow. Please switch to ``pip`` if you encounter such problems. ``Bazel``
community works on fixing
+ the problem in `this PR
<https://github.com/bazelbuild/rules_python/pull/1166>`_ so it might be that
+ newer versions of ``bazel`` will handle it.
+
If you wish to install Airflow using those tools you should use the
constraint files and convert
them to appropriate format and workflow that your tool requires.
diff --git a/generated/provider_dependencies.json
b/generated/provider_dependencies.json
index ae286f97e3..b42a3f60aa 100644
--- a/generated/provider_dependencies.json
+++ b/generated/provider_dependencies.json
@@ -255,6 +255,7 @@
},
"common.sql": {
"deps": [
+ "apache-airflow>=2.4.0",
"sqlparse>=0.4.2"
],
"cross-providers-deps": [],
@@ -356,7 +357,9 @@
"excluded-python-versions": []
},
"ftp": {
- "deps": [],
+ "deps": [
+ "apache-airflow>=2.4.0"
+ ],
"cross-providers-deps": [],
"excluded-python-versions": []
},
@@ -467,6 +470,7 @@
"http": {
"deps": [
"aiohttp",
+ "apache-airflow>=2.4.0",
"asgiref",
"requests>=2.26.0",
"requests_toolbelt"
@@ -475,7 +479,9 @@
"excluded-python-versions": []
},
"imap": {
- "deps": [],
+ "deps": [
+ "apache-airflow>=2.4.0"
+ ],
"cross-providers-deps": [],
"excluded-python-versions": []
},
@@ -795,7 +801,8 @@
},
"sqlite": {
"deps": [
- "apache-airflow-providers-common-sql>=1.3.1"
+ "apache-airflow-providers-common-sql>=1.3.1",
+ "apache-airflow>=2.4.0"
],
"cross-providers-deps": [
"common.sql"