Registry / data / bluesky

bluesky

JSON →
library1.15.1pypypi✓ verified 88d ago

Bluesky is a Python library for experiment specification and orchestration, providing a run engine (RunEngine) that coordinates data acquisition plans, detectors, and flyers. It is part of the broader Bluesky ecosystem for synchrotron and laboratory data acquisition. Current version 1.15.0 (requires Python >=3.10). Releases roughly quarterly, with a focus on stability and performance improvements.

pip install bluesky
INSTALL
IMPORT
SIG · BLUESKY
B
bluesky
datapythonv1.15.1
Install
5.4s avg
Import
849ms
Disk
100MB
Pass rate
10/ 10
Env Coverage10 / 10
glibc
3.9–3.13
musl
3.9–3.13
Install & Compatibility
Where this runs
tested against v1.15.1 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.10–3.95 runs
installs and imports cleanly · install 0.0s · import 0.858s · 100MB
glibc
py 3.10–3.95 runs
installs and imports cleanly · install 5.4s · import 0.840s · 96MB
100MB installed
● package 100MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

RunEngine
✓ from bluesky import RunEngine
✗ from bluesky.run_engine import RunEngine
RunEngine is at the top-level, not in a submodule.
Plan
✓ from bluesky import plan as bp
✗ from bluesky.plan import bp
The standard convention is to import the 'plans' module as 'bp'.
Msgen
✓ from bluesky import msg
✗ from bluesky.message import Msg
Message objects are accessed via `bluesky.msg.Msg`, not a separate message module.

Instantiates a RunEngine, defines a dummy detector (callable returning a dict), and executes a count plan with a live table callback.

from bluesky import RunEngine from bluesky.plans import count from bluesky.callbacks import LiveTable RE = RunEngine() def detector(): return {'det': 1} RE(count([detector()])
Debug
Known issues
breakingIn v1.14.0, `Movable.set` arguments changed: previously positional, now only keyword arguments are accepted.
fix
Update any custom device `set` methods to accept `**kwargs` and pass values as keyword arguments.
affects: >=1.14.0
deprecated`bluesky.plans.inner_product` and other 'inner' plans are deprecated; use the 'outer' plan wrappers.
fix
Replace `count([det])` with `count([det])` (outer plan) – they are directly callable.
affects: >=1.10.0
gotchaThe RunEngine is a singleton per process. Creating multiple RE instances can lead to unexpected behavior.
fix
Use a single global RE instance; avoid re-instantiation.
affects: all
gotchaSubscriptions via `RE.subscribe` must be set before the plan is executed; late subscriptions may miss events.
fix
Call `RE.subscribe(callback)` before `RE(plan)`.
affects: all
Errors
Common errors & fixes
TypeError: __init__() got an unexpected keyword argument 'plan'
Passing a plan to RE() incorrectly; RE expects a plan as the first argument, but user tried `RE(plan=my_plan)`.
fix
Call `RE(my_plan)` instead of `RE(plan=my_plan)`.
AttributeError: module 'bluesky' has no attribute 'RunEngine'
Incorrect import or older bluesky version (<0.10) where RunEngine was in a different location.
fix
Ensure bluesky>=0.10 and use `from bluesky import RunEngine`.
ValueError: The truth value of an array with more than one element is ambiguous
Passing a numpy array where a scalar is expected, e.g., as a motor setpoint in a plan.
fix
Ensure setpoints are scalars (float/int) and not arrays; use `float(value)` if necessary.
Upgrade
Version history
1.15.1latest on PyPI · released May 6, 2026
Audit
Dependencies
event-modelrequiredProvides document schema for event streams.
matplotliboptionalOptional live plotting callbacks.
ophydoptionalHardware abstraction layer (devices).
tiledoptionalData access library for Tiled servers (used in TiledWriter).
Agent activity
46 hits · last 30 days
node
40
OpenAI (training)
1
Resources
bluesky — pip install bluesky · libregistry