This is an automated email from the ASF dual-hosted git repository. ephraimanierobi pushed a commit to branch v3-1-test in repository https://gitbox.apache.org/repos/asf/airflow.git
commit 533684534c84288a6f5dc20cd06037fa4daa7e74 Author: Jarek Potiuk <[email protected]> AuthorDate: Sat Nov 15 16:51:30 2025 +0100 [v3-1-test] Breeze: Automatically set CHOKIDAR_USEPOLLING for WSL users in --dev-mode (#57846) (#58080) (#58345) * Docs: Add note for WSL users about CHOKIDAR_USEPOLLING for UI hot reloading (#57846) * Breeze: Automatically set CHOKIDAR_USEPOLLING for WSL users in --dev-mode (#57846) * Breeze: Automatically set CHOKIDAR_USEPOLLING for WSL users in --dev-mode (#57846) * Update dev/breeze/src/airflow_breeze/commands/developer_commands.py --------- (cherry picked from commit e2f31e9835130175dc9e6e488224fcc153685c75) Co-authored-by: Lohith M <[email protected]> Co-authored-by: LIU ZHE YOU <[email protected]> --- dev/breeze/doc/images/output_build-docs.svg | 2 +- dev/breeze/doc/images/output_build-docs.txt | 2 +- dev/breeze/doc/images/output_start-airflow.svg | 24 ++++++++++------ dev/breeze/doc/images/output_start-airflow.txt | 2 +- .../airflow_breeze/commands/developer_commands.py | 33 ++++++++++++++++++++-- .../commands/developer_commands_config.py | 4 +-- 6 files changed, 51 insertions(+), 16 deletions(-) diff --git a/dev/breeze/doc/images/output_build-docs.svg b/dev/breeze/doc/images/output_build-docs.svg index c441908dd96..ee242c74903 100644 --- a/dev/breeze/doc/images/output_build-docs.svg +++ b/dev/breeze/doc/images/output_build-docs.svg @@ -262,7 +262,7 @@ </text><text class="breeze-build-docs-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-build-docs-line-40)">│</text><text class="breeze-build-docs-r4" x="24.4" y="996" textLength="231.8" clip-path="url(#breeze-build-docs-line-40)">--github-repository</text><text class="breeze-build-docs-r6" x="292.8" y="996" textLength="24.4" clip-path="url(#breeze-build-docs-line-40)">-g</text><text class="breeze-build-docs-r1" x="341.6" y="996" textLength="585.6" clip-path="url(#breeze-build- [...] </text><text class="breeze-build-docs-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-build-docs-line-41)">│</text><text class="breeze-build-docs-r4" x="24.4" y="1020.4" textLength="109.8" clip-path="url(#breeze-build-docs-line-41)">--builder</text><text class="breeze-build-docs-r1" x="341.6" y="1020.4" textLength="756.4" clip-path="url(#breeze-build-docs-line-41)">Buildx builder used to perform `docker buildx build` commands.</text>< [...] </text><text class="breeze-build-docs-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-build-docs-line-42)">│</text><text class="breeze-build-docs-r5" x="341.6" y="1044.8" textLength="756.4" clip-path="url(#breeze-build-docs-line-42)">[default: autodetect]                                    &# [...] -</text><text class="breeze-build-docs-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-build-docs-line-43)">│</text><text class="breeze-build-docs-r4" x="24.4" y="1069.2" textLength="244" clip-path="url(#breeze-build-docs-line-43)">--distributions-list</text><text class="breeze-build-docs-r1" x="341.6" y="1069.2" textLength="1098" clip-path="url(#breeze-build-docs-line-43)">Optional, contains comma-separated list of package ids that ar [...] +</text><text class="breeze-build-docs-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-build-docs-line-43)">│</text><text class="breeze-build-docs-r4" x="24.4" y="1069.2" textLength="244" clip-path="url(#breeze-build-docs-line-43)">--distributions-list</text><text class="breeze-build-docs-r1" x="341.6" y="1069.2" textLength="1098" clip-path="url(#breeze-build-docs-line-43)">Optional, contains space separated list of package ids that [...] </text><text class="breeze-build-docs-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-build-docs-line-44)">│</text><text class="breeze-build-docs-r1" x="341.6" y="1093.6" textLength="1098" clip-path="url(#breeze-build-docs-line-44)">documentation building, and document publishing. It is an easier alternative to adding    </text><text class="breeze-build-docs-r5" x="1451.8" y="1093.6" textLength="12.2 [...] </text><text class="breeze-build-docs-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-build-docs-line-45)">│</text><text class="breeze-build-docs-r1" x="341.6" y="1118" textLength="1098" clip-path="url(#breeze-build-docs-line-45)">individual packages as arguments to every command. This overrides the packages passed as  </text><text class="breeze-build-docs-r5" x="1451.8" y="1118" textLength="12.2" clip-path [...] </text><text class="breeze-build-docs-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-build-docs-line-46)">│</text><text class="breeze-build-docs-r1" x="341.6" y="1142.4" textLength="1098" clip-path="url(#breeze-build-docs-line-46)">arguments.                                       & [...] diff --git a/dev/breeze/doc/images/output_build-docs.txt b/dev/breeze/doc/images/output_build-docs.txt index e05839d9dff..7c465674b0f 100644 --- a/dev/breeze/doc/images/output_build-docs.txt +++ b/dev/breeze/doc/images/output_build-docs.txt @@ -1 +1 @@ -e0f17f59eae9cb8c4a5a66762a9ba990 +e85cc9911cbd648287a9b2b6e4291edd diff --git a/dev/breeze/doc/images/output_start-airflow.svg b/dev/breeze/doc/images/output_start-airflow.svg index a7550f0bd01..0ae41ac2a1e 100644 --- a/dev/breeze/doc/images/output_start-airflow.svg +++ b/dev/breeze/doc/images/output_start-airflow.svg @@ -1,4 +1,4 @@ -<svg class="rich-terminal" viewBox="0 0 1482 3710.0" xmlns="http://www.w3.org/2000/svg"> +<svg class="rich-terminal" viewBox="0 0 1482 3758.7999999999997" xmlns="http://www.w3.org/2000/svg"> <!-- Generated with Rich https://www.textualize.io --> <style> @@ -43,7 +43,7 @@ <defs> <clipPath id="breeze-start-airflow-clip-terminal"> - <rect x="0" y="0" width="1463.0" height="3659.0" /> + <rect x="0" y="0" width="1463.0" height="3707.7999999999997" /> </clipPath> <clipPath id="breeze-start-airflow-line-0"> <rect x="0" y="1.5" width="1464" height="24.65"/> @@ -492,9 +492,15 @@ <clipPath id="breeze-start-airflow-line-148"> <rect x="0" y="3612.7" width="1464" height="24.65"/> </clipPath> +<clipPath id="breeze-start-airflow-line-149"> + <rect x="0" y="3637.1" width="1464" height="24.65"/> + </clipPath> +<clipPath id="breeze-start-airflow-line-150"> + <rect x="0" y="3661.5" 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="3708" rx="8"/><text class="breeze-start-airflow-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: start-airflow</text> + <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="3756.8" rx="8"/><text class="breeze-start-airflow-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: start-airflow</text> <g transform="translate(26,22)"> <circle cx="0" cy="0" r="7" fill="#ff5f57"/> <circle cx="22" cy="0" r="7" fill="#febc2e"/> @@ -649,11 +655,13 @@ </text><text class="breeze-start-airflow-r5" x="0" y="3484.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-142)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="3484.8" textLength="122" clip-path="url(#breeze-start-airflow-line-142)">--debugger</text><text class="breeze-start-airflow-r1" x="195.2" y="3484.8" textLength="597.8" clip-path="url(#breeze-start-airflow-line-142)">Debugger to use for debugging Airflow components.</text><tex [...] </text><text class="breeze-start-airflow-r5" x="0" y="3509.2" textLength="1464" clip-path="url(#breeze-start-airflow-line-143)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-start-airflow-r1" x="1464" y="3509.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-143)"> </text><text class="breeze-start-airflow-r5" x="0" y="3533.6" textLength="24.4" clip-path="url(#breeze-start-airflow-line-144)">╭─</text><text class="breeze-start-airflow-r5" x="24.4" y="3533.6" textLength="195.2" clip-path="url(#breeze-start-airflow-line-144)"> Common options </text><text class="breeze-start-airflow-r5" x="219.6" y="3533.6" textLength="1220" clip-path="url(#breeze-start-airflow-line-144)">─────────────────────────────────────────────────────────────────── [...] -</text><text class="breeze-start-airflow-r5" x="0" y="3558" textLength="12.2" clip-path="url(#breeze-start-airflow-line-145)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="3558" textLength="97.6" clip-path="url(#breeze-start-airflow-line-145)">--answer</text><text class="breeze-start-airflow-r6" x="158.6" y="3558" textLength="24.4" clip-path="url(#breeze-start-airflow-line-145)">-a</text><text class="breeze-start-airflow-r1" x="207.4" y="3558" textLength="317.2" clip-path="ur [...] -</text><text class="breeze-start-airflow-r5" x="0" y="3582.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-146)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="3582.4" textLength="109.8" clip-path="url(#breeze-start-airflow-line-146)">--dry-run</text><text class="breeze-start-airflow-r6" x="158.6" y="3582.4" textLength="24.4" clip-path="url(#breeze-start-airflow-line-146)">-D</text><text class="breeze-start-airflow-r1" x="207.4" y="3582.4" textLength="719.8" cli [...] -</text><text class="breeze-start-airflow-r5" x="0" y="3606.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-147)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="3606.8" textLength="109.8" clip-path="url(#breeze-start-airflow-line-147)">--verbose</text><text class="breeze-start-airflow-r6" x="158.6" y="3606.8" textLength="24.4" clip-path="url(#breeze-start-airflow-line-147)">-v</text><text class="breeze-start-airflow-r1" x="207.4" y="3606.8" textLength="585.6" cli [...] -</text><text class="breeze-start-airflow-r5" x="0" y="3631.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-148)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="3631.2" textLength="73.2" clip-path="url(#breeze-start-airflow-line-148)">--help</text><text class="breeze-start-airflow-r6" x="158.6" y="3631.2" textLength="24.4" clip-path="url(#breeze-start-airflow-line-148)">-h</text><text class="breeze-start-airflow-r1" x="207.4" y="3631.2" textLength="329.4" clip-pa [...] -</text><text class="breeze-start-airflow-r5" x="0" y="3655.6" textLength="1464" clip-path="url(#breeze-start-airflow-line-149)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-start-airflow-r1" x="1464" y="3655.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-149)"> +</text><text class="breeze-start-airflow-r5" x="0" y="3558" textLength="12.2" clip-path="url(#breeze-start-airflow-line-145)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="3558" textLength="219.6" clip-path="url(#breeze-start-airflow-line-145)">--create-all-roles</text><text class="breeze-start-airflow-r1" x="317.2" y="3558" textLength="1122.4" clip-path="url(#breeze-start-airflow-line-145)">Creates all user roles for testing with FabAuthMan [...] +</text><text class="breeze-start-airflow-r5" x="0" y="3582.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-146)">│</text><text class="breeze-start-airflow-r1" x="317.2" y="3582.4" textLength="1122.4" clip-path="url(#breeze-start-airflow-line-146)">SimpleAuthManager always has all roles available.                           [...] +</text><text class="breeze-start-airflow-r5" x="0" y="3606.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-147)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="3606.8" textLength="97.6" clip-path="url(#breeze-start-airflow-line-147)">--answer</text><text class="breeze-start-airflow-r6" x="268.4" y="3606.8" textLength="24.4" clip-path="url(#breeze-start-airflow-line-147)">-a</text><text class="breeze-start-airflow-r1" x="317.2" y="3606.8" textLength="317.2" clip- [...] +</text><text class="breeze-start-airflow-r5" x="0" y="3631.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-148)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="3631.2" textLength="109.8" clip-path="url(#breeze-start-airflow-line-148)">--dry-run</text><text class="breeze-start-airflow-r6" x="268.4" y="3631.2" textLength="24.4" clip-path="url(#breeze-start-airflow-line-148)">-D</text><text class="breeze-start-airflow-r1" x="317.2" y="3631.2" textLength="719.8" cli [...] +</text><text class="breeze-start-airflow-r5" x="0" y="3655.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-149)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="3655.6" textLength="109.8" clip-path="url(#breeze-start-airflow-line-149)">--verbose</text><text class="breeze-start-airflow-r6" x="268.4" y="3655.6" textLength="24.4" clip-path="url(#breeze-start-airflow-line-149)">-v</text><text class="breeze-start-airflow-r1" x="317.2" y="3655.6" textLength="585.6" cli [...] +</text><text class="breeze-start-airflow-r5" x="0" y="3680" textLength="12.2" clip-path="url(#breeze-start-airflow-line-150)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="3680" textLength="73.2" clip-path="url(#breeze-start-airflow-line-150)">--help</text><text class="breeze-start-airflow-r6" x="268.4" y="3680" textLength="24.4" clip-path="url(#breeze-start-airflow-line-150)">-h</text><text class="breeze-start-airflow-r1" x="317.2" y="3680" textLength="329.4" clip-path="url( [...] +</text><text class="breeze-start-airflow-r5" x="0" y="3704.4" textLength="1464" clip-path="url(#breeze-start-airflow-line-151)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-start-airflow-r1" x="1464" y="3704.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-151)"> </text> </g> </g> diff --git a/dev/breeze/doc/images/output_start-airflow.txt b/dev/breeze/doc/images/output_start-airflow.txt index 2714baae8ce..f3298f2b357 100644 --- a/dev/breeze/doc/images/output_start-airflow.txt +++ b/dev/breeze/doc/images/output_start-airflow.txt @@ -1 +1 @@ -8f41f727793efa5a6fad7382632b47e9 +a28b9a18b9364f00ca72c9906a1acf6b diff --git a/dev/breeze/src/airflow_breeze/commands/developer_commands.py b/dev/breeze/src/airflow_breeze/commands/developer_commands.py index dd7ab42c529..d248f95e6f2 100644 --- a/dev/breeze/src/airflow_breeze/commands/developer_commands.py +++ b/dev/breeze/src/airflow_breeze/commands/developer_commands.py @@ -17,6 +17,7 @@ from __future__ import annotations import os +import platform import re import shlex import shutil @@ -129,6 +130,18 @@ from airflow_breeze.utils.shared_options import get_dry_run, get_verbose, set_fo CELERY_INTEGRATION = "celery" +def is_wsl() -> bool: + """Detect if we are running inside WSL.""" + if platform.system().lower() != "linux": + return False + try: + with open("/proc/version") as f: + version_info = f.read().lower() + return "microsoft" in version_info or "wsl" in version_info + except FileNotFoundError: + return False + + def _determine_constraint_branch_used(airflow_constraints_reference: str, use_airflow_version: str | None): """ Determine which constraints reference to use. @@ -503,6 +516,12 @@ option_executor_start_airflow = click.option( "(mutually exclusive with --skip-assets-compilation).", is_flag=True, ) [email protected]( + "--create-all-roles", + help="Creates all user roles for testing with FabAuthManager (viewer, user, op, admin). " + "SimpleAuthManager always has all roles available.", + is_flag=True, +) @click.argument("extra-args", nargs=-1, type=click.UNPROCESSED) @option_airflow_constraints_location @option_airflow_constraints_mode_ci @@ -565,6 +584,7 @@ def start_airflow( debug_components: tuple[str, ...], debugger: str, dev_mode: bool, + create_all_roles: bool, docker_host: str | None, executor: str | None, extra_args: tuple, @@ -603,6 +623,14 @@ def start_airflow( "[warning]You cannot skip asset compilation in dev mode! Assets will be compiled!" ) skip_assets_compilation = True + + # Automatically enable file polling for hot reloading under WSL + if dev_mode and is_wsl(): + os.environ["CHOKIDAR_USEPOLLING"] = "true" + get_console().print( + "[info]Detected WSL environment. Automatically enabled CHOKIDAR_USEPOLLING for hot reloading." + ) + if use_airflow_version is None and not skip_assets_compilation: # Now with the /ui project, lets only do a static build of /www and focus on the /ui run_compile_ui_assets(dev=dev_mode, run_in_background=True, force_clean=False) @@ -637,6 +665,7 @@ def start_airflow( debugger=debugger, db_reset=db_reset, dev_mode=dev_mode, + create_all_roles=create_all_roles, docker_host=docker_host, executor=executor, extra_args=extra_args, @@ -718,7 +747,7 @@ def start_airflow( "--distributions-list", envvar="DISTRIBUTIONS_LIST", type=str, - help="Optional, contains comma-separated list of package ids that are processed for documentation " + help="Optional, contains space separated list of package ids that are processed for documentation " "building, and document publishing. It is an easier alternative to adding individual packages as" " arguments to every command. This overrides the packages passed as arguments.", ) @@ -777,7 +806,7 @@ def build_docs( f"\n[info]Populating provider list from DISTRIBUTIONS_LIST env as {distributions_list}" ) # Override doc_packages with values from DISTRIBUTIONS_LIST - docs_list_as_tuple = tuple(distributions_list.split(",")) + docs_list_as_tuple = tuple(distributions_list.split(" ")) if doc_packages and docs_list_as_tuple: get_console().print( f"[warning]Both package arguments and --distributions-list / DISTRIBUTIONS_LIST passed. " diff --git a/dev/breeze/src/airflow_breeze/commands/developer_commands_config.py b/dev/breeze/src/airflow_breeze/commands/developer_commands_config.py index 67ed4a81504..20696a4a760 100644 --- a/dev/breeze/src/airflow_breeze/commands/developer_commands_config.py +++ b/dev/breeze/src/airflow_breeze/commands/developer_commands_config.py @@ -285,9 +285,7 @@ DEVELOPER_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = { }, { "name": "Other options", - "options": [ - "--forward-credentials", - ], + "options": ["--forward-credentials", "--create-all-roles"], }, { "name": "Debugging options",
