fix(ingestion): pin asammdf to the 8.2-8.7 window so arm64 builds get a wheel - #31950
Conversation
… a wheel
asammdf 8.0.x and 8.1.x publish no linux-aarch64 wheel, so on arm64 pip falls
back to the 8.1.2 sdist, which builds with scikit-build-core + CMake and does
not vendor ext/libdeflate:
CMake Error at CMakeLists.txt:20 (add_subdirectory):
add_subdirectory given source "ext/libdeflate" which is not an existing
directory.
Every arm64 image build that installs ./ingestion[all] from source fails at
that step. 7.4.5 built from source fine because its sdist was plain
setuptools.build_meta, which is why this only surfaced after the pin moved to
~=8.1.0.
8.2.0 is the first release with manylinux_2_17_aarch64 abi3 wheels. The upper
bound stops at 8.8.0, which promoted chardet from an optional extra to a hard
chardet>=7.0.0 dependency and so conflicts with the chardet==4.0.0 pin in
base_requirements. Reverting to 7.4.5 is not an option: numpy>=2 is now
required and 7.4.5 is numpy-1 only.
❌ PR checklist incompleteThis PR cannot be merged until the following are addressed on its linked issue:
The fields live on the linked issue in the Shipping project (open the issue → right sidebar → Projects). After you set them, re-run this check (or push a commit) — issue/project changes do not re-trigger it automatically. Maintainers can bypass this check by adding the |
|
Hi there 👋 Thanks for your contribution! The OpenMetadata team will review the PR shortly! Once it has been labeled as Let us know if you need any help! |
✅ Playwright Results — workflow succeededValidated commit ✅ 110 passed · ❌ 0 failed · 🟡 0 flaky · ⏭️ 0 skipped · 🧰 0 lifecycle flaky PerformanceBlocking targets: ✅ met · Optimization targets: 🟡 in progress Shard-job maxima below are not the full workflow wall time; the linked run includes build, fixture, planning, and reporting. 🕒 Full workflow signal wall (to summary) 1h 1m 29s ⏱️ Max setup 5m 55s · max shard execution 11m 26s · max shard-job elapsed before upload 18m 55s · reporting 4s 🌐 216.85 requests/attempt · 1.79 app boots/UI scenario · 0.00% common-shard skew Optimization targets still in progress:
How to debug locally# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip # view trace |
…eader
MDF takes **kwargs typed as Unpack[MdfKwargs], and load_measured_data is not one of
its keys, so basedpyright reports four reportCallIssue errors once the pin resolves
to 8.7.2:
mf4.py:85:33 - error: No parameter named "load_measured_data" (reportCallIssue)
The kwarg has been inert for years -- it dates from the 2.x/3.x memory options and is
silently dropped by **kwargs, verified against 8.7.2 where MDF opens and returns the
same header._common_properties with and without it. Removing it is behaviour
preserving and clears the static-checks lane.
|
The static-checks lane was failing on the pin bump, now fixed in asammdf's That kwarg has been inert for years — it dates from the 2.x/3.x memory options and is silently dropped by |
Code Review ✅ ApprovedPins the asammdf dependency to the 8.2-8.7 range in setup.py to provide pre-built ARM64 wheels and avoid a chardet version conflict. No issues found. OptionsDisplay: compact → Showing less information. Comment with these commands to change the behavior for this request:
Was this helpful? React with 👍 / 👎 | Powered by Gitar — free for open source |
|



What
asammdf~=8.1.0->asammdf>=8.2,<8.8, one line iningestion/setup.py.Why
asammdf 8.0.x and 8.1.x publish no linux-aarch64 wheel, so on arm64 pip falls back to the
8.1.2 sdist, which builds with scikit-build-core + CMake and does not vendor
ext/libdeflate:Any arm64 image build that installs
./ingestion[all]from source fails at that step.7.4.5 compiled from source fine because its sdist was plain
setuptools.build_meta, which is whythis only surfaced once the pin moved to
~=8.1.0.Why this exact range
<2/ 8.1>=1.23decodeextra>=2.0.0decodeextra>=2.0.0>=7.0.0manylinux_2_17_aarch64abi3 wheels.chardet>=7.0.0,which conflicts with
chardet==4.0.0inbase_requirements(used byprofiler/orm/types/custom_hex_byte_string.py). Raising that pin is a much wider change than anupper bound here, so the bound is documented inline for whoever revisits it.
>=2,<3and 7.4.5 is numpy-1 only.Validation
Built
python:3.12-trixieonlinux/arm64and ran the realpip install "./ingestion[all]":~=8.1.0ext/libdeflatefailure building the sdist~=8.8ResolutionImpossible—asammdf 8.8.x depends on chardet>=7.0.0>=8.2,<8.8The call surface
readers/dataframe/mf4.pyuses —MDF(version="4.10"),mdf.save(),MDF(path, load_measured_data=False),mdf.header._common_properties— was exercised against8.7.2. The 8
test_mf4_readertests already pass against 8.1.0 on x86_64, so the 7.x -> 8.xAPI move is covered; this only narrows which 8.x is selected.
Greptile Summary
The PR updates the asammdf dependency window to select releases providing Linux arm64 wheels while avoiding the chardet requirement introduced in 8.8.
~=8.1.0to>=8.2,<8.8.load_measured_dataargument from MF4 constructors across local and cloud-storage reader paths.Confidence Score: 5/5
The PR appears safe to merge.
No blocking failure remains.
Important Files Changed
Reviews (4): Last reviewed commit: "fix(ingestion): drop the dead load_measu..." | Re-trigger Greptile