Skip to content

fix(ingestion): pin asammdf to the 8.2-8.7 window so arm64 builds get a wheel - #31950

Merged
Khairajani merged 4 commits into
mainfrom
fix/asammdf-arm64-wheels
Aug 24, 2026
Merged

fix(ingestion): pin asammdf to the 8.2-8.7 window so arm64 builds get a wheel#31950
Khairajani merged 4 commits into
mainfrom
fix/asammdf-arm64-wheels

Conversation

@Khairajani

@Khairajani Khairajani commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

What

asammdf~=8.1.0 -> asammdf>=8.2,<8.8, one line in ingestion/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:

CMake Error at CMakeLists.txt:20 (add_subdirectory):
  add_subdirectory given source "ext/libdeflate" which is not an existing directory.
...
ERROR: Failed building wheel for asammdf

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 why
this only surfaced once the pin moved to ~=8.1.0.

Why this exact range

range aarch64 wheel numpy chardet
8.0.x–8.1.x none 8.0 <2 / 8.1 >=1.23 optional decode extra
8.2.0–8.7.2 yes >=2.0.0 optional decode extra
8.8.0–8.8.24 yes >=2.0.0 hard >=7.0.0
  • Lower bound 8.2.0 — first release shipping manylinux_2_17_aarch64 abi3 wheels.
  • Upper bound <8.8 — 8.8.0 promoted chardet from an optional extra to a hard chardet>=7.0.0,
    which conflicts with chardet==4.0.0 in base_requirements (used by
    profiler/orm/types/custom_hex_byte_string.py). Raising that pin is a much wider change than an
    upper bound here, so the bound is documented inline for whoever revisits it.
  • Not a revert to 7.4.5 — numpy is now >=2,<3 and 7.4.5 is numpy-1 only.

Validation

Built python:3.12-trixie on linux/arm64 and ran the real pip install "./ingestion[all]":

pin result
~=8.1.0 CMake / ext/libdeflate failure building the sdist
~=8.8 ResolutionImpossibleasammdf 8.8.x depends on chardet>=7.0.0
>=8.2,<8.8 resolves to the 8.7.2 aarch64 wheel, no build step
Successfully installed ... asammdf-8.7.2 ... numpy-2.5.2 pandas-2.3.3 ...
asammdf 8.7.2 | numpy 2.5.2 | pandas 2.3.3 | chardet 4.0.0
header._common_properties = {}
mf4 API surface OK

The call surface readers/dataframe/mf4.py uses — MDF(version="4.10"), mdf.save(),
MDF(path, load_measured_data=False), mdf.header._common_properties — was exercised against
8.7.2. The 8 test_mf4_reader tests already pass against 8.1.0 on x86_64, so the 7.x -> 8.x
API 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.

  • Changes the asammdf constraint from ~=8.1.0 to >=8.2,<8.8.
  • Removes the obsolete load_measured_data argument 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

Filename Overview
ingestion/setup.py Pins asammdf to the documented 8.2–8.7 compatibility window for arm64 wheel availability and the existing chardet constraint.
ingestion/src/metadata/readers/dataframe/mf4.py Removes the obsolete constructor argument consistently from local, S3, GCS, and Azure MF4 loading paths.

Reviews (4): Last reviewed commit: "fix(ingestion): drop the dead load_measu..." | Re-trigger Greptile

… 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.
@Khairajani
Khairajani requested a review from a team as a code owner August 24, 2026 11:04
@github-actions

Copy link
Copy Markdown
Contributor

❌ PR checklist incomplete

This PR cannot be merged until the following are addressed on its linked issue:

  • No GitHub issue is linked. Link an issue in the Development section of the PR (or add Fixes #12345 to the description). For a same-org cross-repo issue, add Fixes open-metadata/<repo>#123 to the description.

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 skip-pr-checks label.

@github-actions

Copy link
Copy Markdown
Contributor

Hi there 👋 Thanks for your contribution!

The OpenMetadata team will review the PR shortly! Once it has been labeled as safe to test, the CI workflows
will start executing and we'll be able to make sure everything is working as expected.

Let us know if you need any help!

@Khairajani Khairajani added safe to test Add this label to run secure Github workflows on PRs skip-pr-checks Bypass PR metadata validation check labels Aug 24, 2026
IceS2
IceS2 previously approved these changes Aug 24, 2026
@github-actions

github-actions Bot commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

✅ Playwright Results — workflow succeeded

Validated commit dd48d72f3679d2a298150df41381abd34003fa08 in Playwright run 32725160334, attempt 1.

✅ 110 passed · ❌ 0 failed · 🟡 0 flaky · ⏭️ 0 skipped · 🧰 0 lifecycle flaky

Performance

Blocking 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:

  • Browser traffic was 216.85 requests per attempt (convergence target: fewer than 200).
  • Application boot ratio was 1.79 per UI scenario (216 boots / 121 scenarios; convergence target: at most 1).
Shard Passed Failed Flaky Skipped Lifecycle failed Lifecycle flaky
✅ Shard chromium-01 46 0 0 0 0 0
✅ Shard ingestion-01 25 0 0 0 0 0
✅ Shard ingestion-02 39 0 0 0 0 0

📦 Download artifacts

How to debug locally
# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip    # view trace

Khairajani and others added 3 commits August 24, 2026 16:55
…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.
@Khairajani

Khairajani commented Aug 24, 2026

Copy link
Copy Markdown
Contributor Author

The static-checks lane was failing on the pin bump, now fixed in dd48d72.

asammdf's MDF takes **kwargs: Unpack[MdfKwargs], and load_measured_data is not one of its keys, so basedpyright reported four reportCallIssue errors once the pin resolved to 8.7.2:

mf4.py:85:33 - error: No parameter named "load_measured_data" (reportCallIssue)

That 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: MDF opens and returns the same header._common_properties with and without it, so removing it is behaviour preserving.

@gitar-bot

gitar-bot Bot commented Aug 24, 2026

Copy link
Copy Markdown
Code Review ✅ Approved

Pins 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.

Options

Display: compact → Showing less information.

Comment with these commands to change the behavior for this request:

Compact
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Powered by Gitar — free for open source

@sonarqubecloud

Copy link
Copy Markdown

@Khairajani
Khairajani enabled auto-merge August 24, 2026 13:06
@Khairajani
Khairajani added this pull request to the merge queue Aug 24, 2026
Merged via the queue into main with commit 1132ccc Aug 24, 2026
102 checks passed
@Khairajani
Khairajani deleted the fix/asammdf-arm64-wheels branch August 24, 2026 15:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

safe to test Add this label to run secure Github workflows on PRs skip-pr-checks Bypass PR metadata validation check

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants