crossbario / crossbario/autobahn-python

[BUG] bjdata (UBJSON backend) prints a NumPy 1.x/2.x ABI notice under NumPy 2.x

Open
#1,890 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug CI-CD PRIO LOW
Dominant language
Python
Stars
2.5k
Forks
768
PR merge metrics
No merged PRs in 30d

Description

Summary

Since the py-ubjsonbjdata 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)

  1. Document the caveat for the serialization/all extras (UBJSON backend
    is CPython-only and currently emits a NumPy-2 notice until bjdata is fixed).
  2. Pin bjdata to the first release that builds against NumPy 2.x, once
    available.
  3. 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.