crossbario / crossbario/autobahn-python
[BUG] bjdata (UBJSON backend) prints a NumPy 1.x/2.x ABI notice under NumPy 2.x
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 2.5k
- Forks
- 768
- PR merge metrics
- No merged PRs in 30d
Description
Summary
Since the py-ubjson → bjdata migration (#1849), autobahn's optional
"ubjson" serializer is backed by bjdata. bjdata (0.6.6) ships sdist only
and builds its _bjdata C extension against NumPy 1.x via the deprecated
oldest-supported-numpy. Imported under NumPy 2.x (now the default), NumPy
prints a multi-line diagnostic to stderr:
A module that was compiled using NumPy 1.x cannot be run in NumPy 2.4.x ...
from _bjdata import dump, dumpb, load, loadb
AttributeError: _ARRAY_API not found
import bjdata still succeeds and UBJSON (de)serialization of normal WAMP
payloads works — only bjdata's unused NumPy-NDArray path is affected — but the
notice is alarming and shows up in any app that imports
autobahn.wamp.serializer with bjdata installed (e.g. crossbar version).
Root cause / where the real fix lives
This is a bjdata packaging bug (it should build against numpy>=2.0, which
is dual-compatible, and ship wheels). Filed upstream: https://github.com/NeuroJSON/pybj/issues/7
NeuroJSON/pybj (see also the existing NeuroJSON/pybj#6, which is a different
topic).
What autobahn could do (options, none urgent)
- Document the caveat for the
serialization/allextras (UBJSON backend
is CPython-only and currently emits a NumPy-2 notice until bjdata is fixed). - Pin
bjdatato the first release that builds against NumPy 2.x, once
available. - Nothing in code — autobahn cannot fix bjdata's build; this is mainly a
tracking note so the ecosystem is aware.
Downstream note
crossbar has added a short-term, narrowly-scoped stderr filter for this
specific benign notice in its CLI entry point, to be removed once bjdata ships a
NumPy 2.x build. (crossbar issue: see the crossbar tracker.)
Related: #1849.
Checklist
- I have searched existing issues to avoid duplicates
- I have provided a minimal reproducible example
- I have included version information
- I have included error messages/logs
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the optional bjdata import in autobahn.wamp.serializer, then review NeuroJSON/pybj#7 and the related crossbar tracker entry. The issue presents documentation, dependency pinning, or no-code tracking as options, so completion requires a maintainer decision and depends on an upstream NumPy-compatible bjdata release.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- numpy, python
- Domain
- api, backend
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100