Skip to content

ApiView token generation fails on Python 3.13 (lazy-object-proxy 1.10.0 source build hits private-feed 401/EOFError) #47609

Description

@msyyc

Summary

ApiView token generation fails during SDK generation (spec-pull-request / release run modes) on Python 3.13. The failure originates from installing eng/apiview_reqs.txt in eng/tools/azure-sdk-tools/packaging_tools/sdk_generator.py.

Root cause

  • eng/apiview_reqs.txt pins lazy-object-proxy==1.10.0.
  • lazy-object-proxy==1.10.0 ships no cp313 wheel (Linux x86_64 wheels exist only for cp38–cp312), so on Python 3.13 pip must build it from source.
  • The source build's isolated build environment needs setuptools_scm>=8, which it tries to fetch from the azure-sdk private feed (--index-url=https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/).
  • The feed returns 401 Unauthorized for setuptools_scm, so pip falls back to an interactive credential prompt (User for pkgs.dev.azure.com:). In non-interactive CI this hits EOFError: EOF when reading a line, aborting the build with exit code 1.

Observed error (trimmed)

× installing build dependencies for lazy-object-proxy did not run successfully. Collecting setuptools_scm>=8 User for pkgs.dev.azure.com: ERROR: Exception: ... username = ask_input(f"User for {netloc}: ") if self.prompting else None EOFError: EOF when reading a line ERROR: Failed to build 'lazy-object-proxy' when installing build dependencies for lazy-object-proxy [DEBUG] Fail to generate ApiView token file for azure-mgmt-networkcloud: Command '['python', '-m', 'pip', 'install', '-r', 'eng/apiview_reqs.txt', '--index-url=...']' returned non-zero exit status 1.
Observed for azure-mgmt-networkcloud on Python 3.13.13. Note the failure is currently caught and logged at DEBUG (sdk_generator.py), so SDK generation continues but the ApiView artifact is silently skipped.

Impact

ApiView token/artifact is not generated for affected packages on Python 3.13 runners, so PRs miss the APIView diff comment.

Workaround (short-term, PR #47608)

Without changing eng/apiview_reqs.txt: pre-install build deps (setuptools, setuptools_scm, wheel) from PyPI and install the reqs with --no-build-isolation so the source build uses the already-installed deps instead of reaching the private feed. See #47608.

Suggested permanent fix

Bump lazy-object-proxy in eng/apiview_reqs.txt to a version that ships a cp313 wheel for Linux x86_64 (e.g. 1.12.0; note 1.11.0 lacks a Linux x86_64 cp313 wheel). That removes the source build entirely and the workaround can then be reverted.

Environment

  • Python: 3.13.13 (CI hosted tool cache)
  • Run mode: spec-pull-request / release
  • Index: azure-sdk private feed (PyPI proxy)

Link

error log in pipeline: https://dev.azure.com/azure-sdk/590cfd2a-581c-4dcb-a12e-6568ce786175/_apis/build/builds/6468061/logs/19

Image

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions