This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch providers-fab/v1-5
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/providers-fab/v1-5 by this 
push:
     new 77732d1618a Update dependencies for FAB provider to not be conflicting 
with 2.11.1 (#53029)
77732d1618a is described below

commit 77732d1618a5a85435ae9c2875f7fe1488eaf2c3
Author: Jarek Potiuk <[email protected]>
AuthorDate: Sat Oct 4 23:44:26 2025 -0700

    Update dependencies for FAB provider to not be conflicting with 2.11.1 
(#53029)
    
    There is an upcoming change in dependencies for Airflow 2.11 which
    involves bumping a number of dependencies - including Werkzeug and
    Flask - and we need to release FAB 1.5.4 to account for that.
---
 airflow/utils/db.py                                |   2 +-
 airflow/www/extensions/init_session.py             |   2 +-
 airflow/www/session.py                             |  28 +-
 dev/breeze/doc/images/output-commands.svg          | 317 +--------------------
 dev/breeze/tests/test_packages.py                  |  15 +-
 generated/provider_dependencies.json               |   5 +-
 generated/provider_dependencies.json.sha256sum     |   1 +
 hatch_build.py                                     |   7 +-
 providers/src/airflow/providers/fab/__init__.py    |   2 +-
 .../fab/auth_manager/security_manager/override.py  |   2 +-
 providers/src/airflow/providers/fab/provider.yaml  |   6 +-
 11 files changed, 54 insertions(+), 333 deletions(-)

diff --git a/airflow/utils/db.py b/airflow/utils/db.py
index a45b14ae666..f1a95bb88ef 100644
--- a/airflow/utils/db.py
+++ b/airflow/utils/db.py
@@ -744,7 +744,7 @@ def _get_flask_db(sql_database_uri):
     flask_app.config["SQLALCHEMY_DATABASE_URI"] = sql_database_uri
     flask_app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
     db = SQLAlchemy(flask_app)
-    AirflowDatabaseSessionInterface(app=flask_app, db=db, table="session", 
key_prefix="")
+    AirflowDatabaseSessionInterface(app=flask_app, client=db, table="session", 
key_prefix="")
     return db
 
 
diff --git a/airflow/www/extensions/init_session.py 
b/airflow/www/extensions/init_session.py
index fb26230c53b..349990a39a2 100644
--- a/airflow/www/extensions/init_session.py
+++ b/airflow/www/extensions/init_session.py
@@ -44,7 +44,7 @@ def init_airflow_session_interface(app):
     elif selected_backend == "database":
         app.session_interface = AirflowDatabaseSessionInterface(
             app=app,
-            db=None,
+            client=None,
             permanent=permanent_cookie,
             # Typically these would be configurable with Flask-Session,
             # but we will set them explicitly instead as they don't make
diff --git a/airflow/www/session.py b/airflow/www/session.py
index 763b909ae0d..28c549fbf90 100644
--- a/airflow/www/session.py
+++ b/airflow/www/session.py
@@ -16,9 +16,15 @@
 # under the License.
 from __future__ import annotations
 
+from typing import TYPE_CHECKING
+
 from flask import request
+from flask.json.tag import TaggedJSONSerializer
 from flask.sessions import SecureCookieSessionInterface
-from flask_session.sessions import SqlAlchemySessionInterface
+from flask_session.sqlalchemy import SqlAlchemySessionInterface
+
+if TYPE_CHECKING:
+    from flask_session import Session
 
 
 class SessionExemptMixin:
@@ -33,6 +39,26 @@ class SessionExemptMixin:
         return super().save_session(*args, **kwargs)
 
 
+class AirflowTaggedJSONSerializer(TaggedJSONSerializer):
+    """
+    Adapter of flask's serializer for flask-session.
+
+    This serializer is used instead of MsgPackSerializer from flask-session,
+    because MsgPackSerializer does not support Markup objects which need to be 
serialized in Airflow.
+
+    So we are using TaggedJSONSerializer which is compatible with Markup 
objects but we pretend we have
+    the same interface as MsgPackSerializer (encode/decode methods) to be 
compatible with flask-session.
+    """
+
+    def encode(self, session: Session) -> bytes:
+        """Serialize the session data."""
+        return self.dumps(session).encode()
+
+    def decode(self, data: bytes) -> Session:
+        """Deserialize the session data."""
+        return self.loads(data.decode())
+
+
 class AirflowDatabaseSessionInterface(SessionExemptMixin, 
SqlAlchemySessionInterface):
     """Session interface that exempts some routes and stores session data in 
the database."""
 
diff --git a/dev/breeze/doc/images/output-commands.svg 
b/dev/breeze/doc/images/output-commands.svg
index 12e276fe01a..1a4becaa2d6 100644
--- a/dev/breeze/doc/images/output-commands.svg
+++ b/dev/breeze/doc/images/output-commands.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 2002.0" 
xmlns="http://www.w3.org/2000/svg";>
+<svg class="rich-terminal" viewBox="0 0 1482 123.19999999999999" 
xmlns="http://www.w3.org/2000/svg";>
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -36,14 +36,11 @@
 .breeze-help-r2 { fill: #d0b344 }
 .breeze-help-r3 { fill: #c5c8c6;font-weight: bold }
 .breeze-help-r4 { fill: #68a0b3;font-weight: bold }
-.breeze-help-r5 { fill: #868887 }
-.breeze-help-r6 { fill: #98a84b;font-weight: bold }
-.breeze-help-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
     <clipPath id="breeze-help-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1951.0" />
+      <rect x="0" y="0" width="1463.0" height="72.19999999999999" />
     </clipPath>
     <clipPath id="breeze-help-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -51,240 +48,9 @@
 <clipPath id="breeze-help-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="breeze-help-line-2">
-    <rect x="0" y="50.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-3">
-    <rect x="0" y="74.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-4">
-    <rect x="0" y="99.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-5">
-    <rect x="0" y="123.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-6">
-    <rect x="0" y="147.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-7">
-    <rect x="0" y="172.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-8">
-    <rect x="0" y="196.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-9">
-    <rect x="0" y="221.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-10">
-    <rect x="0" y="245.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-11">
-    <rect x="0" y="269.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-12">
-    <rect x="0" y="294.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-13">
-    <rect x="0" y="318.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-14">
-    <rect x="0" y="343.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-15">
-    <rect x="0" y="367.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-16">
-    <rect x="0" y="391.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-17">
-    <rect x="0" y="416.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-18">
-    <rect x="0" y="440.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-19">
-    <rect x="0" y="465.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-20">
-    <rect x="0" y="489.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-21">
-    <rect x="0" y="513.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-22">
-    <rect x="0" y="538.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-23">
-    <rect x="0" y="562.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-24">
-    <rect x="0" y="587.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-25">
-    <rect x="0" y="611.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-26">
-    <rect x="0" y="635.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-27">
-    <rect x="0" y="660.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-28">
-    <rect x="0" y="684.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-29">
-    <rect x="0" y="709.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-30">
-    <rect x="0" y="733.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-31">
-    <rect x="0" y="757.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-32">
-    <rect x="0" y="782.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-33">
-    <rect x="0" y="806.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-34">
-    <rect x="0" y="831.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-35">
-    <rect x="0" y="855.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-36">
-    <rect x="0" y="879.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-37">
-    <rect x="0" y="904.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-38">
-    <rect x="0" y="928.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-39">
-    <rect x="0" y="953.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-40">
-    <rect x="0" y="977.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-41">
-    <rect x="0" y="1001.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-42">
-    <rect x="0" y="1026.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-43">
-    <rect x="0" y="1050.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-44">
-    <rect x="0" y="1075.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-45">
-    <rect x="0" y="1099.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-46">
-    <rect x="0" y="1123.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-47">
-    <rect x="0" y="1148.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-48">
-    <rect x="0" y="1172.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-49">
-    <rect x="0" y="1197.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-50">
-    <rect x="0" y="1221.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-51">
-    <rect x="0" y="1245.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-52">
-    <rect x="0" y="1270.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-53">
-    <rect x="0" y="1294.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-54">
-    <rect x="0" y="1319.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-55">
-    <rect x="0" y="1343.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-56">
-    <rect x="0" y="1367.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-57">
-    <rect x="0" y="1392.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-58">
-    <rect x="0" y="1416.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-59">
-    <rect x="0" y="1441.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-60">
-    <rect x="0" y="1465.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-61">
-    <rect x="0" y="1489.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-62">
-    <rect x="0" y="1514.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-63">
-    <rect x="0" y="1538.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-64">
-    <rect x="0" y="1563.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-65">
-    <rect x="0" y="1587.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-66">
-    <rect x="0" y="1611.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-67">
-    <rect x="0" y="1636.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-68">
-    <rect x="0" y="1660.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-69">
-    <rect x="0" y="1685.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-70">
-    <rect x="0" y="1709.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-71">
-    <rect x="0" y="1733.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-72">
-    <rect x="0" y="1758.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-73">
-    <rect x="0" y="1782.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-74">
-    <rect x="0" y="1807.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-75">
-    <rect x="0" y="1831.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-76">
-    <rect x="0" y="1855.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-77">
-    <rect x="0" y="1880.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-help-line-78">
-    <rect x="0" y="1904.7" width="1464" height="24.65"/>
-            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="2000" rx="8"/><text class="breeze-help-title" 
fill="#c5c8c6" text-anchor="middle" x="740" y="27">Breeze&#160;commands</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="121.2" rx="8"/><text class="breeze-help-title" 
fill="#c5c8c6" text-anchor="middle" x="740" y="27">Breeze&#160;commands</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -297,83 +63,6 @@
     <text class="breeze-help-r1" x="1464" y="20" textLength="12.2" 
clip-path="url(#breeze-help-line-0)">
 </text><text class="breeze-help-r2" x="12.2" y="44.4" textLength="73.2" 
clip-path="url(#breeze-help-line-1)">Usage:</text><text class="breeze-help-r3" 
x="97.6" y="44.4" textLength="73.2" 
clip-path="url(#breeze-help-line-1)">breeze</text><text class="breeze-help-r1" 
x="183" y="44.4" textLength="12.2" 
clip-path="url(#breeze-help-line-1)">[</text><text class="breeze-help-r4" 
x="195.2" y="44.4" textLength="85.4" 
clip-path="url(#breeze-help-line-1)">OPTIONS</text><text class="breeze-help-r1" 
 [...]
 </text><text class="breeze-help-r1" x="1464" y="68.8" textLength="12.2" 
clip-path="url(#breeze-help-line-2)">
-</text><text class="breeze-help-r5" x="0" y="93.2" textLength="24.4" 
clip-path="url(#breeze-help-line-3)">╭─</text><text class="breeze-help-r5" 
x="24.4" y="93.2" textLength="195.2" 
clip-path="url(#breeze-help-line-3)">&#160;Execution&#160;mode&#160;</text><text
 class="breeze-help-r5" x="219.6" y="93.2" textLength="1220" 
clip-path="url(#breeze-help-line-3)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text
 class="breeze-help-r [...]
-</text><text class="breeze-help-r5" x="0" y="117.6" textLength="12.2" 
clip-path="url(#breeze-help-line-4)">│</text><text class="breeze-help-r4" 
x="24.4" y="117.6" textLength="97.6" 
clip-path="url(#breeze-help-line-4)">--python</text><text 
class="breeze-help-r6" x="366" y="117.6" textLength="24.4" 
clip-path="url(#breeze-help-line-4)">-p</text><text class="breeze-help-r1" 
x="414.8" y="117.6" textLength="732" 
clip-path="url(#breeze-help-line-4)">Python&#160;major/minor&#160;version&#160;use
 [...]
-</text><text class="breeze-help-r5" x="0" y="142" textLength="12.2" 
clip-path="url(#breeze-help-line-5)">│</text><text class="breeze-help-r7" 
x="414.8" y="142" textLength="732" 
clip-path="url(#breeze-help-line-5)">(&gt;3.9&lt;&#160;|&#160;3.10&#160;|&#160;3.11&#160;|&#160;3.12)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="br [...]
-</text><text class="breeze-help-r5" x="0" y="166.4" textLength="12.2" 
clip-path="url(#breeze-help-line-6)">│</text><text class="breeze-help-r5" 
x="414.8" y="166.4" textLength="732" 
clip-path="url(#breeze-help-line-6)">[default:&#160;3.9]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
-</text><text class="breeze-help-r5" x="0" y="190.8" textLength="12.2" 
clip-path="url(#breeze-help-line-7)">│</text><text class="breeze-help-r4" 
x="24.4" y="190.8" textLength="158.6" 
clip-path="url(#breeze-help-line-7)">--integration</text><text 
class="breeze-help-r1" x="414.8" y="190.8" textLength="1024.8" 
clip-path="url(#breeze-help-line-7)">Core&#160;Integrations&#160;to&#160;enable&#160;when&#160;running&#160;(can&#160;be&#160;more&#160;than&#160;one).&#160;&#160;&#160;&#160;&#160;&#1
 [...]
-</text><text class="breeze-help-r5" x="0" y="215.2" textLength="12.2" 
clip-path="url(#breeze-help-line-8)">│</text><text class="breeze-help-r7" 
x="414.8" y="215.2" textLength="1024.8" 
clip-path="url(#breeze-help-line-8)">(all&#160;|&#160;all-testable&#160;|&#160;cassandra&#160;|&#160;celery&#160;|&#160;drill&#160;|&#160;kafka&#160;|&#160;kerberos&#160;|&#160;keycloak&#160;|&#160;&#160;&#160;&#160;</text><text
 class="breeze-help-r5" x="1451.8" y="215.2" textLength="12.2" 
clip-path="url(#b [...]
-</text><text class="breeze-help-r5" x="0" y="239.6" textLength="12.2" 
clip-path="url(#breeze-help-line-9)">│</text><text class="breeze-help-r7" 
x="414.8" y="239.6" textLength="1024.8" 
clip-path="url(#breeze-help-line-9)">mongo&#160;|&#160;mssql&#160;|&#160;openlineage&#160;|&#160;otel&#160;|&#160;pinot&#160;|&#160;qdrant&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;ydb)&#160;</text><text
 class="breeze-help-r5" x="1451.8" y="239.6" textLength="12.2" 
clip-path="url(#b [...]
-</text><text class="breeze-help-r5" x="0" y="264" textLength="12.2" 
clip-path="url(#breeze-help-line-10)">│</text><text class="breeze-help-r4" 
x="24.4" y="264" textLength="317.2" 
clip-path="url(#breeze-help-line-10)">--standalone-dag-processor</text><text 
class="breeze-help-r1" x="414.8" y="264" textLength="573.4" 
clip-path="url(#breeze-help-line-10)">Run&#160;standalone&#160;dag&#160;processor&#160;for&#160;start-airflow.</text><text
 class="breeze-help-r5" x="1451.8" y="264" textLength= [...]
-</text><text class="breeze-help-r5" x="0" y="288.4" textLength="1464" 
clip-path="url(#breeze-help-line-11)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-help-r1" x="1464" y="288.4" textLength="12.2" 
clip-path="url(#breeze-help-line-11)">
-</text><text class="breeze-help-r5" x="0" y="312.8" textLength="24.4" 
clip-path="url(#breeze-help-line-12)">╭─</text><text class="breeze-help-r5" 
x="24.4" y="312.8" textLength="463.6" 
clip-path="url(#breeze-help-line-12)">&#160;Docker&#160;Compose&#160;selection&#160;and&#160;cleanup&#160;</text><text
 class="breeze-help-r5" x="488" y="312.8" textLength="951.6" 
clip-path="url(#breeze-help-line-12)">──────────────────────────────────────────────────────────────────────────────</text><text
  [...]
-</text><text class="breeze-help-r5" x="0" y="337.2" textLength="12.2" 
clip-path="url(#breeze-help-line-13)">│</text><text class="breeze-help-r4" 
x="24.4" y="337.2" textLength="170.8" 
clip-path="url(#breeze-help-line-13)">--project-name</text><text 
class="breeze-help-r1" x="244" y="337.2" textLength="1195.6" 
clip-path="url(#breeze-help-line-13)">Name&#160;of&#160;the&#160;docker-compose&#160;project&#160;to&#160;bring&#160;down.&#160;The&#160;`docker-compose`&#160;is&#160;for&#160;legacy&
 [...]
-</text><text class="breeze-help-r5" x="0" y="361.6" textLength="12.2" 
clip-path="url(#breeze-help-line-14)">│</text><text class="breeze-help-r1" 
x="244" y="361.6" textLength="512.4" 
clip-path="url(#breeze-help-line-14)">project&#160;name&#160;and&#160;you&#160;can&#160;use&#160;`breeze&#160;down&#160;</text><text
 class="breeze-help-r4" x="756.4" y="361.6" textLength="170.8" 
clip-path="url(#breeze-help-line-14)">--project-name</text><text 
class="breeze-help-r1" x="927.2" y="361.6" textLen [...]
-</text><text class="breeze-help-r5" x="0" y="386" textLength="12.2" 
clip-path="url(#breeze-help-line-15)">│</text><text class="breeze-help-r1" 
x="244" y="386" textLength="1195.6" 
clip-path="url(#breeze-help-line-15)">belonging&#160;to&#160;it.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
-</text><text class="breeze-help-r5" x="0" y="410.4" textLength="12.2" 
clip-path="url(#breeze-help-line-16)">│</text><text class="breeze-help-r7" 
x="244" y="410.4" textLength="1195.6" 
clip-path="url(#breeze-help-line-16)">(breeze&#160;|&#160;pre-commit&#160;|&#160;docker-compose)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
-</text><text class="breeze-help-r5" x="0" y="434.8" textLength="12.2" 
clip-path="url(#breeze-help-line-17)">│</text><text class="breeze-help-r5" 
x="244" y="434.8" textLength="1195.6" 
clip-path="url(#breeze-help-line-17)">[default:&#160;breeze]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
-</text><text class="breeze-help-r5" x="0" y="459.2" textLength="12.2" 
clip-path="url(#breeze-help-line-18)">│</text><text class="breeze-help-r4" 
x="24.4" y="459.2" textLength="158.6" 
clip-path="url(#breeze-help-line-18)">--docker-host</text><text 
class="breeze-help-r1" x="244" y="459.2" textLength="915" 
clip-path="url(#breeze-help-line-18)">Optional&#160;-&#160;docker&#160;host&#160;to&#160;use&#160;when&#160;running&#160;docker&#160;commands.&#160;When&#160;set,&#160;the&#160;`</text><t
 [...]
-</text><text class="breeze-help-r5" x="0" y="483.6" textLength="12.2" 
clip-path="url(#breeze-help-line-19)">│</text><text class="breeze-help-r1" 
x="244" y="483.6" textLength="1195.6" 
clip-path="url(#breeze-help-line-19)">ignored&#160;when&#160;building&#160;images.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160
 [...]
-</text><text class="breeze-help-r5" x="0" y="508" textLength="12.2" 
clip-path="url(#breeze-help-line-20)">│</text><text class="breeze-help-r7" 
x="244" y="508" textLength="1195.6" 
clip-path="url(#breeze-help-line-20)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160
 [...]
-</text><text class="breeze-help-r5" x="0" y="532.4" textLength="1464" 
clip-path="url(#breeze-help-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-help-r1" x="1464" y="532.4" textLength="12.2" 
clip-path="url(#breeze-help-line-21)">
-</text><text class="breeze-help-r5" x="0" y="556.8" textLength="24.4" 
clip-path="url(#breeze-help-line-22)">╭─</text><text class="breeze-help-r5" 
x="24.4" y="556.8" textLength="122" 
clip-path="url(#breeze-help-line-22)">&#160;Database&#160;</text><text 
class="breeze-help-r5" x="146.4" y="556.8" textLength="1293.2" 
clip-path="url(#breeze-help-line-22)">──────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text
 class="breeze-help- [...]
-</text><text class="breeze-help-r5" x="0" y="581.2" textLength="12.2" 
clip-path="url(#breeze-help-line-23)">│</text><text class="breeze-help-r4" 
x="24.4" y="581.2" textLength="109.8" 
clip-path="url(#breeze-help-line-23)">--backend</text><text 
class="breeze-help-r6" x="268.4" y="581.2" textLength="24.4" 
clip-path="url(#breeze-help-line-23)">-b</text><text class="breeze-help-r1" 
x="488" y="581.2" textLength="951.6" 
clip-path="url(#breeze-help-line-23)">Database&#160;backend&#160;to&#160;us 
[...]
-</text><text class="breeze-help-r5" x="0" y="605.6" textLength="12.2" 
clip-path="url(#breeze-help-line-24)">│</text><text class="breeze-help-r1" 
x="488" y="605.6" textLength="951.6" 
clip-path="url(#breeze-help-line-24)">invalid&#160;database&#160;configuration,&#160;meaning&#160;there&#160;will&#160;be&#160;no&#160;database&#160;available,&#160;&#160;</text><text
 class="breeze-help-r5" x="1451.8" y="605.6" textLength="12.2" 
clip-path="url(#breeze-help-line-24)">│</text><text class="breez [...]
-</text><text class="breeze-help-r5" x="0" y="630" textLength="12.2" 
clip-path="url(#breeze-help-line-25)">│</text><text class="breeze-help-r1" 
x="488" y="630" textLength="951.6" 
clip-path="url(#breeze-help-line-25)">and&#160;any&#160;attempts&#160;to&#160;connect&#160;to&#160;the&#160;Airflow&#160;database&#160;will&#160;fail.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-help-r5" x="1451.8" y="630" textLength="1 [...]
-</text><text class="breeze-help-r5" x="0" y="654.4" textLength="12.2" 
clip-path="url(#breeze-help-line-26)">│</text><text class="breeze-help-r7" 
x="488" y="654.4" textLength="951.6" 
clip-path="url(#breeze-help-line-26)">(&gt;sqlite&lt;&#160;|&#160;mysql&#160;|&#160;postgres&#160;|&#160;none)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 [...]
-</text><text class="breeze-help-r5" x="0" y="678.8" textLength="12.2" 
clip-path="url(#breeze-help-line-27)">│</text><text class="breeze-help-r5" 
x="488" y="678.8" textLength="951.6" 
clip-path="url(#breeze-help-line-27)">[default:&#160;sqlite]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16
 [...]
-</text><text class="breeze-help-r5" x="0" y="703.2" textLength="12.2" 
clip-path="url(#breeze-help-line-28)">│</text><text class="breeze-help-r4" 
x="24.4" y="703.2" textLength="219.6" 
clip-path="url(#breeze-help-line-28)">--postgres-version</text><text 
class="breeze-help-r6" x="268.4" y="703.2" textLength="24.4" 
clip-path="url(#breeze-help-line-28)">-P</text><text class="breeze-help-r1" 
x="488" y="703.2" textLength="305" 
clip-path="url(#breeze-help-line-28)">Version&#160;of&#160;Postgres& [...]
-</text><text class="breeze-help-r5" x="0" y="727.6" textLength="12.2" 
clip-path="url(#breeze-help-line-29)">│</text><text class="breeze-help-r4" 
x="24.4" y="727.6" textLength="183" 
clip-path="url(#breeze-help-line-29)">--mysql-version</text><text 
class="breeze-help-r6" x="268.4" y="727.6" textLength="24.4" 
clip-path="url(#breeze-help-line-29)">-M</text><text class="breeze-help-r1" 
x="488" y="727.6" textLength="268.4" 
clip-path="url(#breeze-help-line-29)">Version&#160;of&#160;MySQL&#160;u [...]
-</text><text class="breeze-help-r5" x="0" y="752" textLength="12.2" 
clip-path="url(#breeze-help-line-30)">│</text><text class="breeze-help-r4" 
x="24.4" y="752" textLength="122" 
clip-path="url(#breeze-help-line-30)">--db-reset</text><text 
class="breeze-help-r6" x="268.4" y="752" textLength="24.4" 
clip-path="url(#breeze-help-line-30)">-d</text><text class="breeze-help-r1" 
x="292.8" y="752" textLength="12.2" 
clip-path="url(#breeze-help-line-30)">/</text><text class="breeze-help-r4" 
x="305"  [...]
-</text><text class="breeze-help-r5" x="0" y="776.4" textLength="1464" 
clip-path="url(#breeze-help-line-31)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-help-r1" x="1464" y="776.4" textLength="12.2" 
clip-path="url(#breeze-help-line-31)">
-</text><text class="breeze-help-r5" x="0" y="800.8" textLength="24.4" 
clip-path="url(#breeze-help-line-32)">╭─</text><text class="breeze-help-r5" 
x="24.4" y="800.8" textLength="488" 
clip-path="url(#breeze-help-line-32)">&#160;Build&#160;CI&#160;image&#160;(before&#160;entering&#160;shell)&#160;</text><text
 class="breeze-help-r5" x="512.4" y="800.8" textLength="927.2" 
clip-path="url(#breeze-help-line-32)">────────────────────────────────────────────────────────────────────────────</text><
 [...]
-</text><text class="breeze-help-r5" x="0" y="825.2" textLength="12.2" 
clip-path="url(#breeze-help-line-33)">│</text><text class="breeze-help-r4" 
x="24.4" y="825.2" textLength="231.8" 
clip-path="url(#breeze-help-line-33)">--github-repository</text><text 
class="breeze-help-r6" x="292.8" y="825.2" textLength="24.4" 
clip-path="url(#breeze-help-line-33)">-g</text><text class="breeze-help-r1" 
x="341.6" y="825.2" textLength="585.6" 
clip-path="url(#breeze-help-line-33)">GitHub&#160;repository&#1 [...]
-</text><text class="breeze-help-r5" x="0" y="849.6" textLength="12.2" 
clip-path="url(#breeze-help-line-34)">│</text><text class="breeze-help-r4" 
x="24.4" y="849.6" textLength="109.8" 
clip-path="url(#breeze-help-line-34)">--builder</text><text 
class="breeze-help-r1" x="341.6" y="849.6" textLength="756.4" 
clip-path="url(#breeze-help-line-34)">Buildx&#160;builder&#160;used&#160;to&#160;perform&#160;`docker&#160;buildx&#160;build`&#160;commands.</text><text
 class="breeze-help-r7" x="1110.2"  [...]
-</text><text class="breeze-help-r5" x="0" y="874" textLength="12.2" 
clip-path="url(#breeze-help-line-35)">│</text><text class="breeze-help-r5" 
x="341.6" y="874" textLength="756.4" 
clip-path="url(#breeze-help-line-35)">[default:&#160;autodetect]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</
 [...]
-</text><text class="breeze-help-r5" x="0" y="898.4" textLength="12.2" 
clip-path="url(#breeze-help-line-36)">│</text><text class="breeze-help-r4" 
x="24.4" y="898.4" textLength="97.6" 
clip-path="url(#breeze-help-line-36)">--use-uv</text><text 
class="breeze-help-r1" x="122" y="898.4" textLength="12.2" 
clip-path="url(#breeze-help-line-36)">/</text><text class="breeze-help-r4" 
x="134.2" y="898.4" textLength="134.2" 
clip-path="url(#breeze-help-line-36)">--no-use-uv</text><text class="breeze-he 
[...]
-</text><text class="breeze-help-r5" x="0" y="922.8" textLength="12.2" 
clip-path="url(#breeze-help-line-37)">│</text><text class="breeze-help-r4" 
x="24.4" y="922.8" textLength="207.4" 
clip-path="url(#breeze-help-line-37)">--uv-http-timeout</text><text 
class="breeze-help-r1" x="341.6" y="922.8" textLength="829.6" 
clip-path="url(#breeze-help-line-37)">Timeout&#160;for&#160;requests&#160;that&#160;UV&#160;makes&#160;(only&#160;used&#160;in&#160;case&#160;of&#160;UV&#160;builds).</text><text
  [...]
-</text><text class="breeze-help-r5" x="0" y="947.2" textLength="12.2" 
clip-path="url(#breeze-help-line-38)">│</text><text class="breeze-help-r5" 
x="341.6" y="947.2" textLength="829.6" 
clip-path="url(#breeze-help-line-38)">[default:&#160;300;&#160;x&gt;=1]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
-</text><text class="breeze-help-r5" x="0" y="971.6" textLength="1464" 
clip-path="url(#breeze-help-line-39)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-help-r1" x="1464" y="971.6" textLength="12.2" 
clip-path="url(#breeze-help-line-39)">
-</text><text class="breeze-help-r5" x="0" y="996" textLength="24.4" 
clip-path="url(#breeze-help-line-40)">╭─</text><text class="breeze-help-r5" 
x="24.4" y="996" textLength="183" 
clip-path="url(#breeze-help-line-40)">&#160;Other&#160;options&#160;</text><text
 class="breeze-help-r5" x="207.4" y="996" textLength="1232.2" 
clip-path="url(#breeze-help-line-40)">─────────────────────────────────────────────────────────────────────────────────────────────────────</text><text
 class="breeze-help-r [...]
-</text><text class="breeze-help-r5" x="0" y="1020.4" textLength="12.2" 
clip-path="url(#breeze-help-line-41)">│</text><text class="breeze-help-r4" 
x="24.4" y="1020.4" textLength="256.2" 
clip-path="url(#breeze-help-line-41)">--forward-credentials</text><text 
class="breeze-help-r6" x="305" y="1020.4" textLength="24.4" 
clip-path="url(#breeze-help-line-41)">-f</text><text class="breeze-help-r1" 
x="353.8" y="1020.4" textLength="634.4" 
clip-path="url(#breeze-help-line-41)">Forward&#160;local&#1 [...]
-</text><text class="breeze-help-r5" x="0" y="1044.8" textLength="12.2" 
clip-path="url(#breeze-help-line-42)">│</text><text class="breeze-help-r4" 
x="24.4" y="1044.8" textLength="122" 
clip-path="url(#breeze-help-line-42)">--max-time</text><text 
class="breeze-help-r1" x="353.8" y="1044.8" textLength="1049.2" 
clip-path="url(#breeze-help-line-42)">Maximum&#160;time&#160;that&#160;the&#160;command&#160;should&#160;take&#160;-&#160;if&#160;it&#160;takes&#160;longer,&#160;the&#160;command&#160;
 [...]
-</text><text class="breeze-help-r5" x="0" y="1069.2" textLength="12.2" 
clip-path="url(#breeze-help-line-43)">│</text><text class="breeze-help-r7" 
x="353.8" y="1069.2" textLength="1049.2" 
clip-path="url(#breeze-help-line-43)">(INTEGER&#160;RANGE)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
-</text><text class="breeze-help-r5" x="0" y="1093.6" textLength="1464" 
clip-path="url(#breeze-help-line-44)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-help-r1" x="1464" y="1093.6" textLength="12.2" 
clip-path="url(#breeze-help-line-44)">
-</text><text class="breeze-help-r5" x="0" y="1118" textLength="24.4" 
clip-path="url(#breeze-help-line-45)">╭─</text><text class="breeze-help-r5" 
x="24.4" y="1118" textLength="195.2" 
clip-path="url(#breeze-help-line-45)">&#160;Common&#160;options&#160;</text><text
 class="breeze-help-r5" x="219.6" y="1118" textLength="1220" 
clip-path="url(#breeze-help-line-45)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text
 class="breeze-hel [...]
-</text><text class="breeze-help-r5" x="0" y="1142.4" textLength="12.2" 
clip-path="url(#breeze-help-line-46)">│</text><text class="breeze-help-r4" 
x="24.4" y="1142.4" textLength="97.6" 
clip-path="url(#breeze-help-line-46)">--answer</text><text 
class="breeze-help-r6" x="158.6" y="1142.4" textLength="24.4" 
clip-path="url(#breeze-help-line-46)">-a</text><text class="breeze-help-r1" 
x="207.4" y="1142.4" textLength="317.2" 
clip-path="url(#breeze-help-line-46)">Force&#160;answer&#160;to&#160;qu [...]
-</text><text class="breeze-help-r5" x="0" y="1166.8" textLength="12.2" 
clip-path="url(#breeze-help-line-47)">│</text><text class="breeze-help-r4" 
x="24.4" y="1166.8" textLength="109.8" 
clip-path="url(#breeze-help-line-47)">--dry-run</text><text 
class="breeze-help-r6" x="158.6" y="1166.8" textLength="24.4" 
clip-path="url(#breeze-help-line-47)">-D</text><text class="breeze-help-r1" 
x="207.4" y="1166.8" textLength="719.8" 
clip-path="url(#breeze-help-line-47)">If&#160;dry-run&#160;is&#160;se [...]
-</text><text class="breeze-help-r5" x="0" y="1191.2" textLength="12.2" 
clip-path="url(#breeze-help-line-48)">│</text><text class="breeze-help-r4" 
x="24.4" y="1191.2" textLength="109.8" 
clip-path="url(#breeze-help-line-48)">--verbose</text><text 
class="breeze-help-r6" x="158.6" y="1191.2" textLength="24.4" 
clip-path="url(#breeze-help-line-48)">-v</text><text class="breeze-help-r1" 
x="207.4" y="1191.2" textLength="585.6" 
clip-path="url(#breeze-help-line-48)">Print&#160;verbose&#160;informa [...]
-</text><text class="breeze-help-r5" x="0" y="1215.6" textLength="12.2" 
clip-path="url(#breeze-help-line-49)">│</text><text class="breeze-help-r4" 
x="24.4" y="1215.6" textLength="73.2" 
clip-path="url(#breeze-help-line-49)">--help</text><text class="breeze-help-r6" 
x="158.6" y="1215.6" textLength="24.4" 
clip-path="url(#breeze-help-line-49)">-h</text><text class="breeze-help-r1" 
x="207.4" y="1215.6" textLength="329.4" 
clip-path="url(#breeze-help-line-49)">Show&#160;this&#160;message&#160;an [...]
-</text><text class="breeze-help-r5" x="0" y="1240" textLength="1464" 
clip-path="url(#breeze-help-line-50)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-help-r1" x="1464" y="1240" textLength="12.2" 
clip-path="url(#breeze-help-line-50)">
-</text><text class="breeze-help-r5" x="0" y="1264.4" textLength="24.4" 
clip-path="url(#breeze-help-line-51)">╭─</text><text class="breeze-help-r5" 
x="24.4" y="1264.4" textLength="244" 
clip-path="url(#breeze-help-line-51)">&#160;Developer&#160;commands&#160;</text><text
 class="breeze-help-r5" x="268.4" y="1264.4" textLength="1171.2" 
clip-path="url(#breeze-help-line-51)">────────────────────────────────────────────────────────────────────────────────────────────────</text><text
 class="bree [...]
-</text><text class="breeze-help-r5" x="0" y="1288.8" textLength="12.2" 
clip-path="url(#breeze-help-line-52)">│</text><text class="breeze-help-r4" 
x="24.4" y="1288.8" textLength="280.6" 
clip-path="url(#breeze-help-line-52)">start-airflow&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-help-r1" x="329.4" y="1288.8" textLength="1110.2" 
clip-path="url(#breeze-help-line-52)">Enter&#160;breeze&#160;environment&#160;and&#160;starts&#160;all&#160;Airflow&#16
 [...]
-</text><text class="breeze-help-r5" x="0" y="1313.2" textLength="12.2" 
clip-path="url(#breeze-help-line-53)">│</text><text class="breeze-help-r1" 
x="329.4" y="1313.2" textLength="1110.2" 
clip-path="url(#breeze-help-line-53)">assets&#160;if&#160;contents&#160;of&#160;www&#160;directory&#160;changed.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
-</text><text class="breeze-help-r5" x="0" y="1337.6" textLength="12.2" 
clip-path="url(#breeze-help-line-54)">│</text><text class="breeze-help-r4" 
x="24.4" y="1337.6" textLength="280.6" 
clip-path="url(#breeze-help-line-54)">static-checks&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-help-r1" x="329.4" y="1337.6" textLength="1110.2" 
clip-path="url(#breeze-help-line-54)">Run&#160;static&#160;checks.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160
 [...]
-</text><text class="breeze-help-r5" x="0" y="1362" textLength="12.2" 
clip-path="url(#breeze-help-line-55)">│</text><text class="breeze-help-r4" 
x="24.4" y="1362" textLength="280.6" 
clip-path="url(#breeze-help-line-55)">build-docs&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-help-r1" x="329.4" y="1362" textLength="1110.2" 
clip-path="url(#breeze-help-line-55)">Build&#160;documents.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
-</text><text class="breeze-help-r5" x="0" y="1386.4" textLength="12.2" 
clip-path="url(#breeze-help-line-56)">│</text><text class="breeze-help-r4" 
x="24.4" y="1386.4" textLength="280.6" 
clip-path="url(#breeze-help-line-56)">down&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-help-r1" x="329.4" y="1386.4" textLength="1110.2" 
clip-path="url(#breeze-help-line-56)">Stop&#160;running&#160;breeze&#160;e [...]
-</text><text class="breeze-help-r5" x="0" y="1410.8" textLength="12.2" 
clip-path="url(#breeze-help-line-57)">│</text><text class="breeze-help-r4" 
x="24.4" y="1410.8" textLength="280.6" 
clip-path="url(#breeze-help-line-57)">shell&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-help-r1" x="329.4" y="1410.8" textLength="1110.2" 
clip-path="url(#breeze-help-line-57)">Enter&#160;breeze&#160;environment.&#160; 
[...]
-</text><text class="breeze-help-r5" x="0" y="1435.2" textLength="12.2" 
clip-path="url(#breeze-help-line-58)">│</text><text class="breeze-help-r4" 
x="24.4" y="1435.2" textLength="280.6" 
clip-path="url(#breeze-help-line-58)">exec&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-help-r1" x="329.4" y="1435.2" textLength="1110.2" 
clip-path="url(#breeze-help-line-58)">Joins&#160;the&#160;interactive&#160 [...]
-</text><text class="breeze-help-r5" x="0" y="1459.6" textLength="12.2" 
clip-path="url(#breeze-help-line-59)">│</text><text class="breeze-help-r4" 
x="24.4" y="1459.6" textLength="280.6" 
clip-path="url(#breeze-help-line-59)">compile-ui-assets&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-help-r1" x="329.4" y="1459.6" textLength="1110.2" 
clip-path="url(#breeze-help-line-59)">Compiles&#160;ui&#160;assets.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 [...]
-</text><text class="breeze-help-r5" x="0" y="1484" textLength="12.2" 
clip-path="url(#breeze-help-line-60)">│</text><text class="breeze-help-r4" 
x="24.4" y="1484" textLength="280.6" 
clip-path="url(#breeze-help-line-60)">compile-www-assets&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-help-r1" x="329.4" y="1484" textLength="1110.2" 
clip-path="url(#breeze-help-line-60)">Compiles&#160;www&#160;assets.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16
 [...]
-</text><text class="breeze-help-r5" x="0" y="1508.4" textLength="12.2" 
clip-path="url(#breeze-help-line-61)">│</text><text class="breeze-help-r4" 
x="24.4" y="1508.4" textLength="280.6" 
clip-path="url(#breeze-help-line-61)">cleanup&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-help-r1" x="329.4" y="1508.4" textLength="1110.2" 
clip-path="url(#breeze-help-line-61)">Cleans&#160;the&#160;cache&#160;of&#160;parameters,
 [...]
-</text><text class="breeze-help-r5" x="0" y="1532.8" textLength="12.2" 
clip-path="url(#breeze-help-line-62)">│</text><text class="breeze-help-r4" 
x="24.4" y="1532.8" textLength="280.6" 
clip-path="url(#breeze-help-line-62)">generate-migration-file</text><text 
class="breeze-help-r1" x="329.4" y="1532.8" textLength="1110.2" 
clip-path="url(#breeze-help-line-62)">Autogenerate&#160;the&#160;alembic&#160;migration&#160;file&#160;for&#160;the&#160;ORM&#160;changes.&#160;&#160;&#160;&#160;&#160;&
 [...]
-</text><text class="breeze-help-r5" x="0" y="1557.2" textLength="1464" 
clip-path="url(#breeze-help-line-63)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-help-r1" x="1464" y="1557.2" textLength="12.2" 
clip-path="url(#breeze-help-line-63)">
-</text><text class="breeze-help-r5" x="0" y="1581.6" textLength="24.4" 
clip-path="url(#breeze-help-line-64)">╭─</text><text class="breeze-help-r5" 
x="24.4" y="1581.6" textLength="219.6" 
clip-path="url(#breeze-help-line-64)">&#160;Testing&#160;commands&#160;</text><text
 class="breeze-help-r5" x="244" y="1581.6" textLength="1195.6" 
clip-path="url(#breeze-help-line-64)">──────────────────────────────────────────────────────────────────────────────────────────────────</text><text
 class="bree [...]
-</text><text class="breeze-help-r5" x="0" y="1606" textLength="12.2" 
clip-path="url(#breeze-help-line-65)">│</text><text class="breeze-help-r4" 
x="24.4" y="1606" textLength="183" 
clip-path="url(#breeze-help-line-65)">testing&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-help-r1" x="231.8" y="1606" textLength="1207.8" 
clip-path="url(#breeze-help-line-65)">Tools&#160;that&#160;developers&#160;can&#160;use&#160;to&#160;run&#160;tests&#160;&#160;&#160;&#160;&#160;
 [...]
-</text><text class="breeze-help-r5" x="0" y="1630.4" textLength="12.2" 
clip-path="url(#breeze-help-line-66)">│</text><text class="breeze-help-r4" 
x="24.4" y="1630.4" textLength="183" 
clip-path="url(#breeze-help-line-66)">k8s&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-help-r1" x="231.8" y="1630.4" textLength="1207.8" 
clip-path="url(#breeze-help-line-66)">Tools&#160;that&#160;developers&#160;use&#160;to&#160;run&#160;Kubernetes&#160;te
 [...]
-</text><text class="breeze-help-r5" x="0" y="1654.8" textLength="1464" 
clip-path="url(#breeze-help-line-67)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-help-r1" x="1464" y="1654.8" textLength="12.2" 
clip-path="url(#breeze-help-line-67)">
-</text><text class="breeze-help-r5" x="0" y="1679.2" textLength="24.4" 
clip-path="url(#breeze-help-line-68)">╭─</text><text class="breeze-help-r5" 
x="24.4" y="1679.2" textLength="195.2" 
clip-path="url(#breeze-help-line-68)">&#160;Image&#160;commands&#160;</text><text
 class="breeze-help-r5" x="219.6" y="1679.2" textLength="1220" 
clip-path="url(#breeze-help-line-68)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text
 class="bree [...]
-</text><text class="breeze-help-r5" x="0" y="1703.6" textLength="12.2" 
clip-path="url(#breeze-help-line-69)">│</text><text class="breeze-help-r4" 
x="24.4" y="1703.6" textLength="207.4" 
clip-path="url(#breeze-help-line-69)">ci-image&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-help-r1" x="256.2" y="1703.6" textLength="1183.4" 
clip-path="url(#breeze-help-line-69)">Tools&#160;that&#160;developers&#160;can&#160;use&#160;to&#160;manually&#160;manage&#160;CI&
 [...]
-</text><text class="breeze-help-r5" x="0" y="1728" textLength="12.2" 
clip-path="url(#breeze-help-line-70)">│</text><text class="breeze-help-r4" 
x="24.4" y="1728" textLength="207.4" 
clip-path="url(#breeze-help-line-70)">prod-image&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-help-r1" x="256.2" y="1728" textLength="1183.4" 
clip-path="url(#breeze-help-line-70)">Tools&#160;that&#160;developers&#160;can&#160;use&#160;to&#160;manually&#160;manage&#160;PROD&#160;images&#1
 [...]
-</text><text class="breeze-help-r5" x="0" y="1752.4" textLength="1464" 
clip-path="url(#breeze-help-line-71)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-help-r1" x="1464" y="1752.4" textLength="12.2" 
clip-path="url(#breeze-help-line-71)">
-</text><text class="breeze-help-r5" x="0" y="1776.8" textLength="24.4" 
clip-path="url(#breeze-help-line-72)">╭─</text><text class="breeze-help-r5" 
x="24.4" y="1776.8" textLength="353.8" 
clip-path="url(#breeze-help-line-72)">&#160;Release&#160;management&#160;commands&#160;</text><text
 class="breeze-help-r5" x="378.2" y="1776.8" textLength="1061.4" 
clip-path="url(#breeze-help-line-72)">───────────────────────────────────────────────────────────────────────────────────────</text><text
 clas [...]
-</text><text class="breeze-help-r5" x="0" y="1801.2" textLength="12.2" 
clip-path="url(#breeze-help-line-73)">│</text><text class="breeze-help-r4" 
x="24.4" y="1801.2" textLength="280.6" 
clip-path="url(#breeze-help-line-73)">release-management&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-help-r1" x="329.4" y="1801.2" textLength="1110.2" 
clip-path="url(#breeze-help-line-73)">Tools&#160;that&#160;release&#160;managers&#160;can&#160;use&#160;to&#160;prepare&#160;and&#160;manage&#16
 [...]
-</text><text class="breeze-help-r5" x="0" y="1825.6" textLength="12.2" 
clip-path="url(#breeze-help-line-74)">│</text><text class="breeze-help-r4" 
x="24.4" y="1825.6" textLength="280.6" 
clip-path="url(#breeze-help-line-74)">sbom&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-help-r1" x="329.4" y="1825.6" textLength="1110.2" 
clip-path="url(#breeze-help-line-74)">Tools&#160;that&#160;release&#160;ma [...]
-</text><text class="breeze-help-r5" x="0" y="1850" textLength="1464" 
clip-path="url(#breeze-help-line-75)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-help-r1" x="1464" y="1850" textLength="12.2" 
clip-path="url(#breeze-help-line-75)">
-</text><text class="breeze-help-r5" x="0" y="1874.4" textLength="24.4" 
clip-path="url(#breeze-help-line-76)">╭─</text><text class="breeze-help-r5" 
x="24.4" y="1874.4" textLength="195.2" 
clip-path="url(#breeze-help-line-76)">&#160;Other&#160;commands&#160;</text><text
 class="breeze-help-r5" x="219.6" y="1874.4" textLength="1220" 
clip-path="url(#breeze-help-line-76)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text
 class="bree [...]
-</text><text class="breeze-help-r5" x="0" y="1898.8" textLength="12.2" 
clip-path="url(#breeze-help-line-77)">│</text><text class="breeze-help-r4" 
x="24.4" y="1898.8" textLength="122" 
clip-path="url(#breeze-help-line-77)">setup&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-help-r1" x="170.8" y="1898.8" textLength="1268.8" 
clip-path="url(#breeze-help-line-77)">Tools&#160;that&#160;developers&#160;can&#160;use&#160;to&#160;configure&#160;Breeze&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
-</text><text class="breeze-help-r5" x="0" y="1923.2" textLength="12.2" 
clip-path="url(#breeze-help-line-78)">│</text><text class="breeze-help-r4" 
x="24.4" y="1923.2" textLength="122" 
clip-path="url(#breeze-help-line-78)">ci&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-help-r1" x="170.8" y="1923.2" textLength="1268.8" 
clip-path="url(#breeze-help-line-78)">Tools&#160;that&#160;CI&#160;workflows&#160;use&#160;to&#160;cleanup/manage&#160;CI&#160;environment&#160;
 [...]
-</text><text class="breeze-help-r5" x="0" y="1947.6" textLength="1464" 
clip-path="url(#breeze-help-line-79)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-help-r1" x="1464" y="1947.6" textLength="12.2" 
clip-path="url(#breeze-help-line-79)">
 </text>
     </g>
     </g>
diff --git a/dev/breeze/tests/test_packages.py 
b/dev/breeze/tests/test_packages.py
index f52ff38a0ed..fc1ae484335 100644
--- a/dev/breeze/tests/test_packages.py
+++ b/dev/breeze/tests/test_packages.py
@@ -170,8 +170,9 @@ def test_get_documentation_package_path():
     "apache-airflow-providers-common-compat>=1.2.1",
     "apache-airflow>=2.9.0",
     "flask-appbuilder==4.5.3",
-    "flask-login>=0.6.2",
-    "flask>=2.2,<2.3",
+    "flask-login>=0.6.3",
+    "flask-session>=0.8.0",
+    "flask>=2.2,<3",
     "google-re2>=1.0",
     "jmespath>=0.7.0",
     """,
@@ -184,8 +185,9 @@ def test_get_documentation_package_path():
     "apache-airflow-providers-common-compat>=1.2.1.dev0",
     "apache-airflow>=2.9.0.dev0",
     "flask-appbuilder==4.5.3",
-    "flask-login>=0.6.2",
-    "flask>=2.2,<2.3",
+    "flask-login>=0.6.3",
+    "flask-session>=0.8.0",
+    "flask>=2.2,<3",
     "google-re2>=1.0",
     "jmespath>=0.7.0",
     """,
@@ -198,8 +200,9 @@ def test_get_documentation_package_path():
     "apache-airflow-providers-common-compat>=1.2.1b0",
     "apache-airflow>=2.9.0b0",
     "flask-appbuilder==4.5.3",
-    "flask-login>=0.6.2",
-    "flask>=2.2,<2.3",
+    "flask-login>=0.6.3",
+    "flask-session>=0.8.0",
+    "flask>=2.2,<3",
     "google-re2>=1.0",
     "jmespath>=0.7.0",
     """,
diff --git a/generated/provider_dependencies.json 
b/generated/provider_dependencies.json
index fda1b91ba13..f7fe2dff823 100644
--- a/generated/provider_dependencies.json
+++ b/generated/provider_dependencies.json
@@ -578,8 +578,9 @@
       "apache-airflow-providers-common-compat>=1.2.1",
       "apache-airflow>=2.9.0",
       "flask-appbuilder==4.5.3",
-      "flask-login>=0.6.2",
-      "flask>=2.2,<2.3",
+      "flask-login>=0.6.3",
+      "flask-session>=0.8.0",
+      "flask>=2.2,<3",
       "google-re2>=1.0",
       "jmespath>=0.7.0"
     ],
diff --git a/generated/provider_dependencies.json.sha256sum 
b/generated/provider_dependencies.json.sha256sum
new file mode 100644
index 00000000000..f5dce72eb39
--- /dev/null
+++ b/generated/provider_dependencies.json.sha256sum
@@ -0,0 +1 @@
+0a593df5fc4cf8f8ba38f9ac200287b61113bff8d88e8834fe1bc25d55b2c32d
diff --git a/hatch_build.py b/hatch_build.py
index bb8f0005065..900a96656df 100644
--- a/hatch_build.py
+++ b/hatch_build.py
@@ -377,14 +377,13 @@ DEPENDENCIES = [
     "eval-type-backport>=0.2.0",
     "fastapi[standard]>=0.112.2",
     "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-login>=0.6.3",
+    "flask-session>=0.8.0",
+    "flask>=2.2,<3",
     "fsspec>=2023.10.0",
     "gitpython>=3.1.40",
     'google-re2>=1.0;python_version<"3.12"',
diff --git a/providers/src/airflow/providers/fab/__init__.py 
b/providers/src/airflow/providers/fab/__init__.py
index 544c4ec2f02..60fe1b0f9e9 100644
--- a/providers/src/airflow/providers/fab/__init__.py
+++ b/providers/src/airflow/providers/fab/__init__.py
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
 
 __all__ = ["__version__"]
 
-__version__ = "1.5.3"
+__version__ = "1.5.4"
 
 if 
packaging.version.parse(packaging.version.parse(airflow_version).base_version) 
< packaging.version.parse(
     "2.9.0"
diff --git 
a/providers/src/airflow/providers/fab/auth_manager/security_manager/override.py 
b/providers/src/airflow/providers/fab/auth_manager/security_manager/override.py
index e3e36a667c9..6b65981ada1 100644
--- 
a/providers/src/airflow/providers/fab/auth_manager/security_manager/override.py
+++ 
b/providers/src/airflow/providers/fab/auth_manager/security_manager/override.py
@@ -556,7 +556,7 @@ class 
FabAirflowSecurityManagerOverride(AirflowSecurityManagerV2):
     def reset_user_sessions(self, user: User) -> None:
         if isinstance(self.appbuilder.get_app.session_interface, 
AirflowDatabaseSessionInterface):
             interface = self.appbuilder.get_app.session_interface
-            session = interface.db.session
+            session = interface.client.session
             user_session_model = interface.sql_session_model
             num_sessions = session.query(user_session_model).count()
             if num_sessions > MAX_NUM_DATABASE_USER_SESSIONS:
diff --git a/providers/src/airflow/providers/fab/provider.yaml 
b/providers/src/airflow/providers/fab/provider.yaml
index 28f0326d070..f36519ff278 100644
--- a/providers/src/airflow/providers/fab/provider.yaml
+++ b/providers/src/airflow/providers/fab/provider.yaml
@@ -32,6 +32,7 @@ source-date-epoch: 1738677661
 
 # note that those versions are maintained by release manager - do not update 
them manually
 versions:
+  - 1.5.4
   - 1.5.3
   - 1.5.2
   - 1.5.1
@@ -53,14 +54,15 @@ versions:
 dependencies:
   - apache-airflow>=2.9.0
   - apache-airflow-providers-common-compat>=1.2.1
-  - flask>=2.2,<2.3
+  - flask-login>=0.6.3
+  - flask-session>=0.8.0
+  - flask>=2.2,<3
   # 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
   # `airflow/providers/fab/auth_manager/security_manager/override.py` with 
their upstream counterparts.
   # In particular, make sure any breaking changes, for example any new 
methods, are accounted for.
   - flask-appbuilder==4.5.3
-  - flask-login>=0.6.2
   - google-re2>=1.0
   - jmespath>=0.7.0
 

Reply via email to