-
Notifications
You must be signed in to change notification settings - Fork 1.7k
[DEMO] Test skip unsupported prerelease packages #18034
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -98,13 +98,32 @@ case ${TEST_TYPE} in | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ;; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import_profile) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if [ -f setup.py ] || [ -f pyproject.toml ]; then | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| PACKAGE_NAME=$(basename $(pwd)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # TODO: Remove this skip once Python 3.15 is officially released and upstream binary wheels | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # (e.g. numpy, pyarrow, pandas, geopandas, pikepdf) are published on PyPI. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # Packages with heavy C/Rust dependencies attempt full source compilation on pre-release Python, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # taking 5-10+ minutes before failing due to unreleased CPython 3.15 C-API changes. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| UNSUPPORTED_PRE_RELEASE_PACKAGES=( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "bigframes" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "pandas-gbq" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "google-cloud-documentai-toolbox" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "db-dtypes" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "bigquery-magics" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| for unsupported in "${UNSUPPORTED_PRE_RELEASE_PACKAGES[@]}"; do | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if [ "${PACKAGE_NAME}" = "${unsupported}" ]; then | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| echo "WARNING: Skipping import_profile for ${PACKAGE_NAME}: package has heavy C/Rust dependencies not yet supported on pre-release Python ${PY_VERSION}." | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| exit 0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| done | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| echo "Creating temporary virtualenv for import profile..." | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| python3 -m venv .venv-profiler | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| source .venv-profiler/bin/activate | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| export PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| python -m pip install --upgrade pip setuptools | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| PACKAGE_NAME=$(basename $(pwd)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| PROFILER_TEMP_DIR=$(mktemp -d) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| cp ../../scripts/import_profiler/profiler.py "${PROFILER_TEMP_DIR}/profiler.py" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| PROFILER_SCRIPT="${PROFILER_TEMP_DIR}/profiler.py" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -124,8 +143,9 @@ case ${TEST_TYPE} in | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| cd "${WORKTREE_DIR}/${REPO_PREFIX}" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if [ -f setup.py ] || [ -f pyproject.toml ]; then | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| pip install -e . | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| python "${PROFILER_SCRIPT}" --package "${PACKAGE_NAME}" --iterations 11 --csv "${BASELINE_CSV}" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if pip install -e . ; then | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| python "${PROFILER_SCRIPT}" --package "${PACKAGE_NAME}" --iterations 11 --csv "${BASELINE_CSV}" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| git worktree remove -f "${WORKTREE_DIR}" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -137,14 +157,19 @@ case ${TEST_TYPE} in | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| pip install -e . | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if [ -f "${BASELINE_CSV}" ]; then | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| python ${PROFILER_SCRIPT} --package ${PACKAGE_NAME} --iterations 11 --fail-threshold 5000 --diff-baseline "${BASELINE_CSV}" --diff-threshold 100 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # TODO: Clean up this fallback once Python 3.15 is officially released and upstream binary wheels are available on PyPI. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # On pre-release Python versions, packages with complex C/Rust dependencies (e.g. bigframes) fail during pip install due to missing pre-built wheels. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if ! pip install -e . ; then | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| echo "WARNING: Could not install dependencies for ${PACKAGE_NAME} on Python ${PY_VERSION} (missing pre-built binary wheels for pre-release Python). Skipping import_profile." | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| retval=0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| else | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| python ${PROFILER_SCRIPT} --package ${PACKAGE_NAME} --iterations 11 --fail-threshold 5000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if [ -f "${BASELINE_CSV}" ]; then | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| python ${PROFILER_SCRIPT} --package ${PACKAGE_NAME} --iterations 11 --fail-threshold 5000 --diff-baseline "${BASELINE_CSV}" --diff-threshold 100 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| else | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| python ${PROFILER_SCRIPT} --package ${PACKAGE_NAME} --iterations 11 --fail-threshold 5000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| retval=$? | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+162
to
172
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| retval=$? | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| deactivate | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| rm -rf .venv-profiler | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| rm -rf "${PROFILER_TEMP_DIR}" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -87,3 +87,4 @@ | |
| "score", | ||
| "similarity", | ||
| ] | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The check for unsupported pre-release packages is executed unconditionally for all Python versions. This will cause
import_profileto be skipped for these packages even on stable Python versions (e.g., 3.10, 3.11, 3.12) where they should be fully tested. Wrap this check in a condition that restricts it to pre-release Python versions (e.g., checking if${PY_VERSION}starts with3.15).