shahar1 opened a new pull request, #74132: URL: https://github.com/apache/airflow/pull/74132
The lowest-direct-dependency tests for the IBM MQ provider fail intermittently, for example: ``` ERROR: all download attempts failed for https://public.dhe.ibm.com/.../9.4.0.0-IBM-MQC-Redist-LinuxX64.tar.gz; last error: <urlopen error [Errno 110] Connection timed out> Pre-extras install failed for ibm.mq ``` The `ibmmq>=2.0.6` floor made `uv sync --resolution lowest-direct --all-extras` pick ibmmq 2.0.6. On PyPI, 2.0.0–2.0.6 are sdist-only, and building them needs the IBM MQ C client. That is why the provider downloaded the IBM MQ redistributable from `public.dhe.ibm.com` before syncing, and the job failed whenever that host did not answer from the runner. ibmmq 2.1.0 is the first release with a `manylinux_2_28_x86_64` wheel. Raising the floor to it removes the build, so it also removes the download, the `pre_extras_install.yaml` manifest and the provider's pre-extras registration. The generic pre-extras mechanism stays in place for future providers. The wheel's extension still links `libmqm_r.so` at runtime, so `import ibmmq` raises `ImportError` when the client is not installed. The test conftest used to check `find_spec`, which passes once the wheel is installed. It now falls back to the fake module whenever the import fails. Tradeoff: before this change, the lowest-dependency job could run the tests against a real ibmmq built against the downloaded client. The regular CI image never installs the `ibmmq` extra, so now every CI job runs these tests against the fake module. That seems the right trade for removing an unreliable external download from CI. related: #71544, which keeps the download but adds timeouts and retries. This change removes the need for the download. Checks run: - In Breeze, with `MQ_FILE_PATH` unset and no download, the lowest-direct sync installed `ibmmq==2.1.0` from the wheel. Provider tests then passed, apart from `airflow_shared` import errors caused by skipping the entrypoint's `reinstall_shared_distributions` step in the ad-hoc run. - In the regular Breeze container, all 105 provider tests pass. - `prek run --stage pre-commit` passes. --- ##### Was generative AI tooling used to co-author this PR? - [X] Yes — Claude Code (Opus 5.5) Generated-by: Claude Code (Opus 5.5) following [the guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#gen-ai-assisted-contributions) 🤖 Generated with [Claude Code](https://claude.com/claude-code) -- 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]
