Repository navigation
ci(conda): move platform pins up and give them a review-by date (#1851) - #1885
Conversation
|
Verdict: NEEDS CHANGES at
Required:
Smaller:
|
1fa05b8 to
81d55de
Compare
|
Verdict: GOOD TO GO at
Not blocking: no test pins that a pin above the installed release is kept. A |
|
Coverage: 90.05% (unit tier, Python 3.15,
Per-file detail: the |
|
Can we actually use requests and bs4[html5] for the scripts (not only the one changed in this PR but also other scripts in the utils and other places)? If reading from subprocess outputs, we can also introduce pexepct and psutils if applicable. |
|
Yes for
This PR will move I'd leave |
- Move PLATFORM_PINS into conda/platform-pins.toml, so the weekly job can rewrite it; each pin carries a version, a review-by date and a reason. - Add util/conda_vendor.py --refresh-pins: it reads PyPI's JSON, finds the newest release up to the installed one with a wheel every conda Python installs on the pinned platform, abi3 and universal2 included, and moves the pin there, due for review REVIEW_HORIZON out. A pin that reaches the installed release, or already pins it, is dropped. A PyPI failure warns and keeps the pin. - Read PyPI through requests, imported only for that request so --smoke still needs only the standard library, with each requests error raised as OSError; conda-update installs requests, which .[all] does not bring. - Run it in conda-update before the requirements are written. - --check stays offline and now fails on a pin past its review-by date. - Keep the table out of BOT_MANAGED_PATHS, pinned by a test, and correct that comment's claim about which files tests read. - Read the pin from the table in the #1827 tests, and fix today in the #1814 --check tests, so a moved or overdue pin does not break them. Closes #1851
81d55de to
44fe6d4
Compare
|
Then maybe some libraries like lxml or markdown that can ease the parsing of XML and Markdown formats? |
|
Markdown: yes. XML: I'd leave it. Both XML readers already use a real parser,
|
|
Verdict: GOOD TO GO at
One gap, not blocking: the workflow test would also pass if |
|
I kinda prefer lxml's strict parsing tbh. I recall it has wheels? |
|
It does. lxml 6.1.3 has wheels for these interpreters:
GraalPy has no wheel. 3.7 has none either, because lxml 6 needs 3.8, but that leg cannot compile pcapkit anyway. So both XML readers will move to lxml in #1894: |
Please follow the guide below
You will be asked some questions, please read them carefully and answer honestly
Put an
xinto all the boxes [ ] relevant to your pull request (like that [x])Use Preview tab to see how your pull request will actually look like
Searched for similar pull requests
Followed the coding style (
make pylint,make mypy,make isort)make testpasses, and a test case covers the change. Narrow runs only, listed below.Added a changelog entry under
docs/source/changelog/and regeneratedCHANGELOG.md, if the change is user-visible: N/A — centralised in docs(changelog): shared 1.5.0 changelog — long-lived, merges last (#610, #616, #617, #618, #620) #657What is the purpose of your pull request?
Tick the commit type your subject line carries.
fix— corrects a defectfeat— adds a featureperf— changes performance, not behaviourrefactor— changes neither behaviour nor performancetest— tests onlydocs— documentation onlyci— workflows or build toolingrelease— bumps the version or rolls up a distributionchore— anything elseAs ruled on #1851, this combines two changes: the weekly job moves platform pins up on its own, and each pin carries a review-by date.
util/conda_vendor.pyintoconda/platform-pins.toml. Each[package.subdir]entry hasversion,review-byandreason, so the job rewrites a data file rather than its own source.conda-updatestep. The job gains a--refresh-pinsstep before it writesconda/requirements.txt. It asks PyPI for the newest release, up to the installed one, that has a wheel for every conda Python on the pinned platform. The match usespackaging.tagsand acceptsabi3anduniversal2.--check.--checkstays offline and fails on a pin past its review-by date, reported like its other problems. The horizon is a quarter (REVIEW_HORIZON).tests/project/test_conda_platform_pin_refresh_1851.pyfails 34 tests on the base, and fails for the matching reason under each single mutation. No test touches the network. A live--refresh-pinsrun against PyPI changed nothing, which is correct: no cryptography release after 48.0.1 has an Intel or universal2 macOS wheel.Unverified: the step on a real runner.
Closes #1851