diff --git a/.github/workflows/cross-platform-test.yml b/.github/workflows/cross-platform-test.yml index efdc2b2e98..1a6c3456f4 100644 --- a/.github/workflows/cross-platform-test.yml +++ b/.github/workflows/cross-platform-test.yml @@ -293,7 +293,12 @@ jobs: printf 'Installing %s wheel(s):\n' "$label" printf '%s\n' "$@" refresh_find_links - uv pip install --prerelease=allow --python "$PYTHON" "${FIND_LINKS[@]}" "$@" + # Use `if-necessary-or-explicit` (not `allow`): nightly langflow* wheels + # are .dev pre-releases so we need to allow them explicitly, but `allow` + # leaks to transitive deps and resolves pre-release pydantic alphas + # (e.g. 2.14.0a1) which break langchain-core's module-level + # `RunnablePassthrough()` call at import time. + uv pip install --prerelease=if-necessary-or-explicit --python "$PYTHON" "${FIND_LINKS[@]}" "$@" } SDK_WHEELS=(./sdk-dist/*.whl) @@ -581,7 +586,8 @@ jobs: printf 'Installing %s wheel(s):\n' "$label" printf '%s\n' "$@" refresh_find_links - uv pip install --prerelease=allow --python "$PYTHON" "${FIND_LINKS[@]}" "$@" + # See stable job above for rationale on --prerelease=if-necessary-or-explicit. + uv pip install --prerelease=if-necessary-or-explicit --python "$PYTHON" "${FIND_LINKS[@]}" "$@" } SDK_WHEELS=(./sdk-dist/*.whl) @@ -631,7 +637,7 @@ jobs: if [ "${{ inputs.pre_release }}" = "true" ]; then NO_DEPS="" fi - uv pip install --force-reinstall $NO_DEPS --prerelease=allow --python ./test-env/Scripts/python.exe "${INSTALL_WHEELS[@]}" + uv pip install --force-reinstall $NO_DEPS --prerelease=if-necessary-or-explicit --python ./test-env/Scripts/python.exe "${INSTALL_WHEELS[@]}" fi fi @@ -643,7 +649,7 @@ jobs: if [ "${{ inputs.pre_release }}" = "true" ]; then NO_DEPS="" fi - uv pip install --force-reinstall $NO_DEPS --prerelease=allow --python ./test-env/Scripts/python.exe "$BASE_WHEEL" + uv pip install --force-reinstall $NO_DEPS --prerelease=if-necessary-or-explicit --python ./test-env/Scripts/python.exe "$BASE_WHEEL" fi shell: bash @@ -668,7 +674,7 @@ jobs: if [ "${{ inputs.pre_release }}" = "true" ]; then NO_DEPS="" fi - uv pip install --force-reinstall $NO_DEPS --prerelease=allow --python ./test-env/bin/python "${INSTALL_WHEELS[@]}" + uv pip install --force-reinstall $NO_DEPS --prerelease=if-necessary-or-explicit --python ./test-env/bin/python "${INSTALL_WHEELS[@]}" fi fi @@ -680,7 +686,7 @@ jobs: if [ "${{ inputs.pre_release }}" = "true" ]; then NO_DEPS="" fi - uv pip install --force-reinstall $NO_DEPS --prerelease=allow --python ./test-env/bin/python "$BASE_WHEEL" + uv pip install --force-reinstall $NO_DEPS --prerelease=if-necessary-or-explicit --python ./test-env/bin/python "$BASE_WHEEL" fi shell: bash