Skip to content

schur-complement CI: don't fail install on pyomo download-extensions#667

Merged
DLWoodruff merged 1 commit intoPyomo:mainfrom
DLWoodruff:schur-pyomo-download-nonfatal
Apr 19, 2026
Merged

schur-complement CI: don't fail install on pyomo download-extensions#667
DLWoodruff merged 1 commit intoPyomo:mainfrom
DLWoodruff:schur-pyomo-download-nonfatal

Conversation

@DLWoodruff
Copy link
Copy Markdown
Collaborator

@DLWoodruff DLWoodruff commented Apr 19, 2026

Summary

The schur-complement job's Install dependencies step runs pyomo download-extensions, which fetches optional artifacts (gjh from netlib.org, mc++, AMPL GSL). The netlib.org GET intermittently hangs (~2.5 min until URLError [Errno 110]), causing pyomo download-extensions to exit non-zero and the whole install step to fail. The schur-complement job is currently failing on roughly half of all PRs because of this.

mpisppy/tests/test_sc.py only imports parapint, which depends on pymumps (installed via conda earlier in the step) and PyNumero. Neither gjh nor mc++ is referenced anywhere in the Schur-complement path, and pyomo build-extensions (which runs on the next line) builds the APPSI/PyNumero C extensions independently of whatever download-extensions managed to fetch.

This makes the line non-fatal with an explicit warning. Transient netlib.org timeouts no longer red-X the job. If a future test actually needs gjh/mc++, build-extensions will fail loudly and the warning in the log explains why.

Test plan

  • Open this PR; confirm schur-complement job passes (or, if it fails, that the failure is in Test with pytest, not in the install step).
  • Optional: re-run the job a few times to spot-check that the install step no longer flakes when netlib.org is unhappy.

🤖 Generated with Claude Code

pyomo download-extensions fetches optional artifacts (gjh from
netlib.org, mc++, AMPL GSL). Whenever the netlib.org GET hangs
(observed ~2.5 min until URLError [Errno 110]), the command exits 1
and the entire schur-complement install step fails. Recent
flake-rate is high enough that the user reports the job failing on
roughly half of all PRs.

mpisppy/tests/test_sc.py only imports parapint, which depends on
pymumps (installed via conda above) and PyNumero. Neither gjh nor
mc++ is referenced anywhere in the schur-complement path, and
pyomo build-extensions builds APPSI/PyNumero C extensions
independently of whatever download-extensions managed to fetch.

Make the line non-fatal with an explicit warning so transient
netlib timeouts no longer red-X the job. If a future test actually
needs gjh/mc++, build-extensions will fail loudly and the warning
in the log explains why.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@DLWoodruff DLWoodruff merged commit e7017d0 into Pyomo:main Apr 19, 2026
27 checks passed
@codecov
Copy link
Copy Markdown

codecov bot commented Apr 19, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 70.70%. Comparing base (b726347) to head (f297b48).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #667      +/-   ##
==========================================
- Coverage   70.71%   70.70%   -0.02%     
==========================================
  Files         153      153              
  Lines       19005    19005              
==========================================
- Hits        13439    13437       -2     
- Misses       5566     5568       +2     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant