Registry / data / bluesky

bluesky

JSON →
library1.15.1pypypi✓ verified 84d 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.93.13
musl
3.93.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.103.95 runs
installs and imports cleanly · install 0.0s · import 0.858s · 100MB
glibc
py 3.103.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
38 hits · last 30 days
node
36
OpenAI (training)
1
Resources
bluesky — pip install bluesky · libregistry