fix: minor 4.0 issues in Android validation, docs, and docstring (#2891)

* fix: minor 4.0 issues in android validation, docs, and docstring

- android: raise a clear FatalError when ANDROID_API_LEVEL is not an
  integer, instead of an uncaught ValueError deep in localized_vars
- docs: note that delvewheel is the default Windows repair-wheel-command
  since 4.0 and how to skip it for platform-tagged wheels with no
  extension module; update the now-outdated FAQ wording
- venv: fix _parse_pip_constraint_for_virtualenv docstring to say
  marker-bearing constraints are evaluated against the host's default
  environment (not skipped) when marker_env is None

Assisted-by: ClaudeCode:claude-opus-4.8

* fix: use int() with original error for ANDROID_API_LEVEL validation

Handle ANDROID_API_LEVEL validation via try/except around int() so the
original exception message is surfaced, and so non-ASCII Unicode digits
(which isdigit() accepts but int() may reject) are handled correctly.

Assisted-by: ClaudeCode:claude-opus-4.8

* refactor: address reivew by moving error catch

Assisted-by: ClaudeCode:claude-opus-4.8
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>

---------

Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
This commit is contained in:
Henry Schreiner
2026-06-03 15:23:06 -04:00
committed by GitHub
parent 4ae59097cb
commit 2f49f9a050
4 changed files with 10 additions and 3 deletions
+5 -1
View File
@@ -349,7 +349,11 @@ def localized_vars(
final = final.replace(orig_prefix, str(prefix))
if key == "ANDROID_API_LEVEL":
final = int(build_env[key])
try:
final = int(build_env[key])
except ValueError as e:
msg = f"ANDROID_API_LEVEL: {e}. This variable must be an integer."
raise errors.FatalError(msg) from e
# Build systems vary in whether FLAGS variables are read from sysconfig, and if so,
# whether they're replaced by environment variables or combined with them. Even