Repository navigation
ci: build and test Windows ARM64 wheels - #991
Merged
Merged
Conversation
| architecture: 'arm64' | ||
| # cp310: NumPy has no win_arm64 wheel for Python 3.10 and its | ||
| # source build fails in the isolated build environment | ||
| skip: "cp310-*" |
Member
There was a problem hiding this comment.
py3.10 is past support, so this will be true for all the wheels at the next release
Member
|
(ignoring pandas CI - their build has moved on) |
Member
|
Note that new pypi wheels won't appear unless there is a new releease |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This adds native Windows on Arm (
win_arm64) wheels.Changes
wheel.yml: newwindows-11-armentry in thebuildWinmatrix, so release tags also buildwin_arm64wheels with the same cibuildwheel setup (cp311, cp312, cp313, cp314, cp314t).test_wheel.yaml: addswindows-11-armto the existing build-and-pytest matrix, so PRs test a native ARM64 wheel too.cp310-*is skipped on ARM64 only: NumPy has nowin_arm64wheel for Python 3.10, and building numpy 2.2.6 from source inside the isolated build env fails (arraytypes.c.src:4441: #error "Did not find correct pointer sized integer."). See the first fork run below.Why: there are no Windows ARM64 wheels on PyPI, so users on Windows on Arm currently need a compiler to install fastparquet. GitHub's hosted
windows-11-armrunners are free for public repositories.Verification on my fork (the fork has no release tags, so the verification branch fetches the upstream tags first and runs
buildWinon that branch instead of a tag; the workflow is otherwise identical to this PR):buildWin/windows-11-arm: green — https://github.com/johnnynunez/fastparquet/actions/runs/383112712355 wheels (
cp311,cp312,cp313,cp314,cp314t). For each one I checked the tag, that both.pydfiles have PE machine ARM64, and that every RECORD hash and size matches.Test wheels/windows-11-arm(cp311, same steps as the existing Windows job): 385 passed, 125 skipped, 2 xfailed, the same counts aswindows-2022in that run — https://github.com/johnnynunez/fastparquet/actions/runs/38311271275cp310-win_arm64failure (NumPy source build): https://github.com/johnnynunez/fastparquet/actions/runs/38310685150Extra check beyond the existing CI (the release workflow does not run tests;
test_wheel.yamlonly tests cp311). I installed each wheel from thebuildWinartifact on a native ARM64 interpreter and ran the suite:pandas<3: 385 passed, 125 skipped, 2 xfailed — https://github.com/johnnynunez/fastparquet/actions/runs/38313081790pandas<3: pandas 2.x has nowin_arm64wheels. The source-built pandas 2.3.3 crashes with an access violation in a pandas-only probe (pd.DataFrame({'a': [np.datetime64(...)]}), without importing fastparquet), with both numpy 2.4 and 2.5. So these versions can't be tested with pandas 2 on this platform: https://github.com/johnnynunez/fastparquet/actions/runs/38313852182test_apirow-group rewrites,test_pandas_hive_serialization,test_auto_null_object,test_append_fail_incompatible,test_empty_columns). pyarrow is not installed in that environment. I have not run the same pandas-3-without-pyarrow setup on x64, so I'm not claiming these failures are ARM64-specific or that they aren't: https://github.com/johnnynunez/fastparquet/actions/runs/38314515987The ARM64 job in
test_wheel.yamlbuildspandas<3from source for cp311. That adds about 3 minutes to the job.