Jayantparashar10 commented on issue #62229: URL: https://github.com/apache/airflow/issues/62229#issuecomment-3936390874
Hi @DannyMeyer, thanks for reporting this and for offering to submit a PR great catch! I was able to reproduce the exact behavior you described with Airflow 3.1.7 + `[tableau]` extra using the official constraints: ``` --constraint https://raw.githubusercontent.com/apache/airflow/constraints-3.1.7/constraints-3.11.txt apache-airflow[tableau]==3.1.7 ``` → `pip install` completes without errors, but `tableauserverclient` is **not** installed (confirmed via `pip list | grep tableauserverclient` returning nothing). At runtime → `ModuleNotFoundError: No module named 'tableauserverclient'`. **Root cause** The constraints file still pins `tableauserverclient==0.39` but 0.39 was yanked from PyPI on the same day it was released due to a broken wheel (missing top-level module directory → import fails even if "installed"). PyPI yanked it, and 0.40 was released as the fixed version the next day. Pip silently skips yanked versions when they're strictly constrained (no loud error, just no install), which makes this particularly sneaky. **Existing fix reference** The `apache-airflow-providers-tableau` package already addressed this in later releases by adding an exclusion: `tableauserverclient >=0.27,!=0.39` (or similar pinning to >=0.40 in even newer versions see changelog entry in #61387 or around provider version ~5.3.x timeframe: "limit 0.39 version due to missing package"). For users stuck on Airflow 3.1.7 constraints, the provider package gets installed but is broken because of the frozen dep. **Suggested fixes (pick one or combine):** 1. **Quick user workaround** : Install without strict constraints or override just this dep: ``` pip install apache-airflow[tableau]==3.1.7 \ --constraint https://raw.githubusercontent.com/apache/airflow/constraints-3.1.7/constraints-3.11.txt \ tableauserverclient>=0.40 ``` (The extra pin overrides the yanked one.) 2. **Project-side** Update the constraints-3.1.7 files retroactively: - Replace `tableauserverclient==0.39` with `tableauserverclient==0.40` (or `>=0.40,<0.41` if semver-safe) - Or at minimum add `!=0.39` if keeping a range. This would prevent new users from hitting the silent failure. Since the constraints repo/branch for 3.1.7 is still using the bad pin , updating the constraints files seems like the cleanest long-term fix. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
