fix(ci): hybrid pip download - single call for cross-platform deps
The per-dep loop regressed pydantic/pydantic-core compatibility: each dep resolves transitive versions independently, so 'pydantic' brings core 2.41.5 while 'pydantic-settings' brings core 2.45.0, and the later wheel overwrites the earlier during site-packages unzip, producing: SystemError: pydantic-core 2.45.0 is incompatible with pydantic, which requires 2.41.5 Fix: single pip-download call for CORE_DEPS + VIS_DEPS so pip resolves compatible transitive versions. Keep the per-dep loop with --pre only for WIN_DEPS, where each dep needs its own platform/non-platform fallback and winsdk requires --pre for its beta wheels.
This commit is contained in:
+12
-5
@@ -67,12 +67,19 @@ VIS_DEPS=(
|
|||||||
"numpy>=1.24.0,<2.0"
|
"numpy>=1.24.0,<2.0"
|
||||||
)
|
)
|
||||||
|
|
||||||
ALL_DEPS=("${CORE_DEPS[@]}" "${WIN_DEPS[@]}" "${VIS_DEPS[@]}")
|
# Resolve core + visualizer deps in a SINGLE call so pip picks compatible
|
||||||
|
# transitive versions (notably pydantic/pydantic-core must match).
|
||||||
|
# Per-dep loops resolve each dep independently and can leave mismatched
|
||||||
|
# transitive versions that overwrite each other in the site-packages unzip.
|
||||||
|
CROSS_DEPS=("${CORE_DEPS[@]}" "${VIS_DEPS[@]}")
|
||||||
|
pip download --quiet --no-cache-dir --dest "$WHEEL_DIR" \
|
||||||
|
--platform win_amd64 --python-version "${PYTHON_SHORT}" \
|
||||||
|
--implementation cp --only-binary :all: \
|
||||||
|
"${CROSS_DEPS[@]}"
|
||||||
|
|
||||||
# Per-dep loop with --pre (winsdk only ships beta wheels, e.g. 1.0.0b10).
|
# Windows-only deps in a loop with --pre: winsdk only ships beta wheels
|
||||||
# Single-call resolution fails when one Windows-only dep can't resolve in
|
# (1.0.0bNN) and each dep needs its own platform/non-platform fallback.
|
||||||
# the Linux fallback branch, so we resolve each dep independently.
|
for dep in "${WIN_DEPS[@]}"; do
|
||||||
for dep in "${ALL_DEPS[@]}"; do
|
|
||||||
pip download --pre --quiet --no-cache-dir --dest "$WHEEL_DIR" \
|
pip download --pre --quiet --no-cache-dir --dest "$WHEEL_DIR" \
|
||||||
--platform win_amd64 --python-version "${PYTHON_SHORT}" \
|
--platform win_amd64 --python-version "${PYTHON_SHORT}" \
|
||||||
--implementation cp --only-binary :all: \
|
--implementation cp --only-binary :all: \
|
||||||
|
|||||||
Reference in New Issue
Block a user