diff --git a/INSTALL b/INSTALL index 1483aef27c777..a6e7a045b3114 100644 --- a/INSTALL +++ b/INSTALL @@ -292,7 +292,7 @@ Those extras are available as regular core airflow extras - they install optiona # START CORE EXTRAS HERE aiobotocore, apache-atlas, apache-webhdfs, async, cgroups, cloudpickle, github-enterprise, google- -auth, graphviz, kerberos, ldap, leveldb, otel, pandas, password, rabbitmq, s3fs, sentry, statsd, uv +auth, graphviz, kerberos, ldap, leveldb, otel, pandas, rabbitmq, s3fs, sentry, statsd, uv # END CORE EXTRAS HERE diff --git a/contributing-docs/12_airflow_dependencies_and_extras.rst b/contributing-docs/12_airflow_dependencies_and_extras.rst index f7dcec51bfb9c..9cecacc87d653 100644 --- a/contributing-docs/12_airflow_dependencies_and_extras.rst +++ b/contributing-docs/12_airflow_dependencies_and_extras.rst @@ -165,7 +165,7 @@ Those extras are available as regular core airflow extras - they install optiona .. START CORE EXTRAS HERE aiobotocore, apache-atlas, apache-webhdfs, async, cgroups, cloudpickle, github-enterprise, google- -auth, graphviz, kerberos, ldap, leveldb, otel, pandas, password, rabbitmq, s3fs, sentry, statsd, uv +auth, graphviz, kerberos, ldap, leveldb, otel, pandas, rabbitmq, s3fs, sentry, statsd, uv .. END CORE EXTRAS HERE diff --git a/docs/apache-airflow/extra-packages-ref.rst b/docs/apache-airflow/extra-packages-ref.rst index ba762f850b42d..13fe493e0a4c1 100644 --- a/docs/apache-airflow/extra-packages-ref.rst +++ b/docs/apache-airflow/extra-packages-ref.rst @@ -69,8 +69,6 @@ python dependencies for the provided package. +---------------------+-----------------------------------------------------+----------------------------------------------------------------------------+ | pandas | ``pip install 'apache-airflow[pandas]'`` | Install Pandas library compatible with Airflow | +---------------------+-----------------------------------------------------+----------------------------------------------------------------------------+ -| password | ``pip install 'apache-airflow[password]'`` | Password authentication for users | -+---------------------+-----------------------------------------------------+----------------------------------------------------------------------------+ | rabbitmq | ``pip install 'apache-airflow[rabbitmq]'`` | RabbitMQ support as a Celery backend | +---------------------+-----------------------------------------------------+----------------------------------------------------------------------------+ | sentry | ``pip install 'apache-airflow[sentry]'`` | Sentry service for application logging and monitoring | diff --git a/generated/provider_dependencies.json b/generated/provider_dependencies.json index 4e94396271757..ddfd75b4e468d 100644 --- a/generated/provider_dependencies.json +++ b/generated/provider_dependencies.json @@ -592,11 +592,15 @@ "deps": [ "apache-airflow-providers-common-compat>=1.2.1", "apache-airflow>=3.0.0.dev0", + "blinker>=1.6.2", "connexion[flask]>=2.14.2,<3.0", "flask-appbuilder==4.5.3", "flask-login>=0.6.2", + "flask-session>=0.4.0,<0.6", + "flask-wtf>=1.1.0", "flask>=2.2,<2.3", - "jmespath>=0.7.0" + "jmespath>=0.7.0", + "werkzeug>=2.0,<3" ], "devel-deps": [ "kerberos>=1.3.0" diff --git a/hatch_build.py b/hatch_build.py index 341a96d366d66..7bd84346c35aa 100644 --- a/hatch_build.py +++ b/hatch_build.py @@ -118,10 +118,6 @@ # In addition FAB also limit sqlalchemy to < 2.0 "pandas>=1.2.5,<2.2", ], - "password": [ - "bcrypt>=2.0.0", - "flask-bcrypt>=0.7.1", - ], "rabbitmq": [ "amqp>=5.2.0", ], @@ -189,9 +185,6 @@ "argcomplete>=1.10", "asgiref>=2.3.0", "attrs>=22.1.0, !=25.2.0", - # Blinker use for signals in Flask, this is an optional dependency in Flask 2.2 and lower. - # In Flask 2.3 it becomes a mandatory dependency, and flask signals are always available. - "blinker>=1.6.2", "colorlog>=6.8.2", "configupdater>=3.1.1", "cron-descriptor>=1.2.24", @@ -205,15 +198,7 @@ # 0.115.10 fastapi was a bad release that broke our API's and static checks. # Related fastapi issue here: https://github.com/fastapi/fastapi/discussions/13431 "fastapi[standard]>=0.112.2,!=0.115.10", - "flask-caching>=2.0.0", - # Flask-Session 0.6 add new arguments into the SqlAlchemySessionInterface constructor as well as - # all parameters now are mandatory which make AirflowDatabaseSessionInterface incompatible with this version. - "flask-session>=0.4.0,<0.6", - "flask-wtf>=1.1.0", - # Flask 2.3 is scheduled to introduce a number of deprecation removals - some of them might be breaking - # for our dependencies - notably `_app_ctx_stack` and `_request_ctx_stack` removals. - # We should remove the limitation after 2.3 is released and our dependencies are updated to handle it - "flask>=2.2.1,<2.3", + "flask", "fsspec>=2023.10.0", "gitpython>=3.1.40", "gunicorn>=20.1.0", @@ -270,9 +255,7 @@ # Does not work with it Tracked in https://github.com/fsspec/universal_pathlib/issues/276 "universal-pathlib>=0.2.2,!=0.2.4", "uuid6>=2024.7.10", - # Werkzug 3 breaks Flask-Login 0.6.2 - # we should remove this limitation when FAB supports Flask 2.3 - "werkzeug>=2.0,<3", + "wtforms", ] diff --git a/providers/fab/README.rst b/providers/fab/README.rst index 859bd8fc8bafd..40798a127e915 100644 --- a/providers/fab/README.rst +++ b/providers/fab/README.rst @@ -55,11 +55,15 @@ PIP package Version required ========================================== ================== ``apache-airflow`` ``>=3.0.0.dev0`` ``apache-airflow-providers-common-compat`` ``>=1.2.1`` +``blinker`` ``>=1.6.2`` ``flask`` ``>=2.2,<2.3`` +``flask-session`` ``>=0.4.0,<0.6`` +``flask-wtf`` ``>=1.1.0`` ``flask-appbuilder`` ``==4.5.3`` ``flask-login`` ``>=0.6.2`` ``connexion[flask]`` ``>=2.14.2,<3.0`` ``jmespath`` ``>=0.7.0`` +``werkzeug`` ``>=2.0,<3`` ========================================== ================== Cross provider package dependencies diff --git a/providers/fab/pyproject.toml b/providers/fab/pyproject.toml index 93fefee81cf7d..e2409357a2546 100644 --- a/providers/fab/pyproject.toml +++ b/providers/fab/pyproject.toml @@ -59,7 +59,14 @@ requires-python = "~=3.9" dependencies = [ "apache-airflow>=3.0.0.dev0", "apache-airflow-providers-common-compat>=1.2.1", + # Blinker use for signals in Flask, this is an optional dependency in Flask 2.2 and lower. + # In Flask 2.3 it becomes a mandatory dependency, and flask signals are always available. + "blinker>=1.6.2", "flask>=2.2,<2.3", + # Flask-Session 0.6 add new arguments into the SqlAlchemySessionInterface constructor as well as + # all parameters now are mandatory which make AirflowDatabaseSessionInterface incompatible with this version. + "flask-session>=0.4.0,<0.6", + "flask-wtf>=1.1.0", # We are tightly coupled with FAB version as we vendored-in part of FAB code related to security manager # This is done as part of preparation to removing FAB as dependency, but we are not ready for it yet # Every time we update FAB version here, please make sure that you review the classes and models in @@ -69,6 +76,9 @@ dependencies = [ "flask-login>=0.6.2", "connexion[flask]>=2.14.2,<3.0", "jmespath>=0.7.0", + # Werkzug 3 breaks Flask-Login 0.6.2 + # we should remove this limitation when FAB supports Flask 2.3 + "werkzeug>=2.0,<3", ] # The optional dependencies should be modified in place in the generated file diff --git a/providers/fab/src/airflow/providers/fab/get_provider_info.py b/providers/fab/src/airflow/providers/fab/get_provider_info.py index 3ca5366212c13..9e1ba723a348f 100644 --- a/providers/fab/src/airflow/providers/fab/get_provider_info.py +++ b/providers/fab/src/airflow/providers/fab/get_provider_info.py @@ -86,11 +86,15 @@ def get_provider_info(): "dependencies": [ "apache-airflow>=3.0.0.dev0", "apache-airflow-providers-common-compat>=1.2.1", + "blinker>=1.6.2", "flask>=2.2,<2.3", + "flask-session>=0.4.0,<0.6", + "flask-wtf>=1.1.0", "flask-appbuilder==4.5.3", "flask-login>=0.6.2", "connexion[flask]>=2.14.2,<3.0", "jmespath>=0.7.0", + "werkzeug>=2.0,<3", ], "optional-dependencies": {"kerberos": ["kerberos>=1.3.0"]}, "devel-dependencies": ["kerberos>=1.3.0"], diff --git a/pyproject.toml b/pyproject.toml index 03af6eec15b15..fad00b8ea1145 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -78,7 +78,7 @@ dynamic = ["version", "optional-dependencies", "dependencies"] # START CORE EXTRAS HERE # # aiobotocore, apache-atlas, apache-webhdfs, async, cgroups, cloudpickle, github-enterprise, google- -# auth, graphviz, kerberos, ldap, leveldb, otel, pandas, password, rabbitmq, s3fs, sentry, statsd, uv +# auth, graphviz, kerberos, ldap, leveldb, otel, pandas, rabbitmq, s3fs, sentry, statsd, uv # # END CORE EXTRAS HERE # @@ -609,7 +609,7 @@ ignore_errors = true [dependency-groups] dev = [ - "apache-airflow[aiobotocore,async,apache-atlas,apache-webhdfs,cgroups,cloudpickle,github-enterprise,google-auth,graphviz,kerberos,ldap,leveldb,otel,pandas,password,rabbitmq,s3fs,sentry,statsd,uv]", + "apache-airflow[aiobotocore,async,apache-atlas,apache-webhdfs,cgroups,cloudpickle,github-enterprise,google-auth,graphviz,kerberos,ldap,leveldb,otel,pandas,rabbitmq,s3fs,sentry,statsd,uv]", "apache-airflow-task-sdk", "apache-airflow-devel-common", "apache-airflow-providers-airbyte",