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]

Reply via email to