aglinxinyuan opened a new pull request, #8293:
URL: https://github.com/apache/texera/pull/8293

   ### What changes were proposed in this PR?
   
   One bullet in `amber/LICENSE-binary-python`, in the BSD 3-Clause section:
   
   ```
     - click==8.4.2
   + - cloudpickle==3.1.2
     - contourpy==1.3.3
   ```
   
   **Why it is a bug.** `build / pyamber (ubuntu-latest, 3.12)` has been red
   repo-wide since ~09:00-13:00 UTC on 2026-08-31, on every open PR regardless 
of
   what the PR touches, because **joblib 1.6.0 stopped vendoring cloudpickle**:
   
   | | joblib 1.5.3 | joblib 1.6.0 |
   | --- | --- | --- |
   | `joblib/externals/cloudpickle/` in the wheel | present (vendored) | 
**gone** |
   | `Requires-Dist` | *(none)* | `cloudpickle>=3.0` |
   | visible to `pip-licenses` | no | **yes** |
   
   `amber/operator-requirements.txt` reaches joblib transitively, so pip now
   installs cloudpickle as its own distribution and the manifest no longer
   describes what the image bundles:
   
   ```
   operator-requirements.txt -> scikit-learn==1.7.2 -> joblib>=1.2.0 -> 
cloudpickle>=3.0
   ```
   
   ```
   Before:  any PR -> pyamber 3.12 -> "+ cloudpickle==3.1.2"                -> 
red
   After:   any PR -> pyamber 3.12 -> "OK: 110 Python packages match ..."   -> 
green
   ```
   
   Note that the code was always in the distribution -- it shipped inside the
   joblib wheel. What changed is that it became a separate distribution, and so
   became visible to the license scanner.
   
   **License clearance.** cloudpickle 3.1.2's wheel METADATA says
   `License: BSD-3-Clause` (PyPI's classifier reports only the generic
   `BSD License`, which is what the CI line quotes), and the bundled `LICENSE` 
is
   the canonical three-clause text. That is **ASF Category A**. The wheel ships 
no
   `NOTICE`, and `licenses/LICENSE-BSD-3-Clause.txt` already carries the text 
that
   the section references, so no `NOTICE-binary` / `NOTICE-binary-python` 
change is
   needed and the one bullet is the entire fix.
   
   **Deliberately out of scope.** The same step prints a long
   `DRIFT (transitive, informational)` list (`charset-normalizer`, `click`,
   `joblib`, `regex`, `scipy`, ...). PR runs pass 
`--ignore-transitive-version`, so
   none of it is fatal, and the nightly exact-match check on `main` owns 
refreshing
   those pins -- bulk-bumping 22 moving targets here would just add churn. That 
is
   why `joblib` stays at `1.5.3` in the manifest even though `1.6.0` is what
   introduced the coupling.
   
   This unblocks every open PR's `build / pyamber (ubuntu-latest, 3.12)` job.
   
   ### Any related issues, documentation, discussions?
   
   Closes #8292
   
   ### How was this PR tested?
   
   Reproduced the CI check locally, byte-for-byte, without a full `pip install`.
   CI's own report is a complete description of the diff between the manifest 
and
   reality (1 `+`, 0 stale, 0 direct drift, 22 transitive drifts), so the 
installed
   set was rebuilt as "every claimed bullet at its bundled version, plus
   cloudpickle==3.1.2" and fed to the checker exactly as `build.yml` invokes it:
   
   ```bash
   python bin/licensing/check_binary_deps.py --ignore-transitive-version python 
/tmp/pip-licenses.csv
   ```
   
   | | exit | output |
   | --- | --- | --- |
   | before (main) | 1 | `+ cloudpickle==3.1.2  (license: BSD License)` -- 
identical to run 33394216939 |
   | after (this PR) | 0 | `OK: 110 Python packages match LICENSE-binary.` |
   
   The `--ignore-transitive-version`-less (nightly) mode still exits 1 on the 22
   transitive drifts both before and after this change, so the behavior there is
   unchanged -- that is the nightly refresh's job, not this PR's.
   
   Upstream cause confirmed straight from the published wheels:
   
   ```bash
   pip download joblib==1.5.3 --no-deps -d . && pip download joblib==1.6.0 
--no-deps -d .
   # 1.6.0 METADATA: Requires-Dist: cloudpickle>=3.0, and no 
joblib/externals/cloudpickle/
   # 1.5.3 METADATA: no Requires-Dist,           and 
joblib/externals/cloudpickle/ present
   pip download cloudpickle==3.1.2 --no-deps -d .
   # METADATA: License: BSD-3-Clause; licenses/LICENSE is the 3-clause text; no 
NOTICE
   ```
   
   The failure was verified as repo-wide rather than PR-specific on two 
unrelated
   branches -- `chore/remove-superseded-sql-updates` (run 33394216939, 12:55 
UTC)
   and `ci/8084-backport-manager-approval-gate` (run 33392828233, 12:39 UTC) -- 
both
   failing on the same `+ cloudpickle==3.1.2` line, against green license steps 
at
   08:39 UTC (#8282) and 08:49 UTC (#8286).
   
   ### Was this PR authored or co-authored using generative AI tooling?
   
   Generated-by: Claude Code (Opus 5)
   


-- 
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