kwargs: {} gets added to plan **kwargs
メンテナーはふだん 1 日以内に返信
評価
調査の方向性
まず、prepare_params と _inner_prepare_params で参照されているパラメータ準備ロジックを確認し、次に src/blueapi/worker/task.py と src/blueapi/worker/task_worker.py の実行経路を調べます。Bluesky の abs_set プランスタブで再現し、生成された呼び出しに kwargs エントリが含まれなくなったことを確認します。*args と **kwargs を使うプランが、余分な kwargs: {} 引数を渡さずに実行されるようになれば、Issue は完了です。
索引モデルが issue の本文から書いたものです。
説明
When attempting to use a plan with *args and **kwargs, the current logic for prepare_params has a bug where it will provide additional kwargs like below:
2026-10-23 17:22:42,335 INFO blueapi.worker.task_worker Submitting: task_id='1ca72adb-8af4-42d5-8253-9ad6ba446699' task=Task(name='abs_set', args=['stage.x', 1.0], params={}, metadata={'user': 'alice', 'instrument_session': 'cm12345-1', 'tiled_access_tags': ['{"proposal": "cm12345", "visit": 1, "beamline": "adsim"}'], 'blueapi_task_id': '1ca72adb-8af4-42d5-8253-9ad6ba446699'}) request_id=None is_complete=False is_pending=True errors=[] outcome=None
2026-10-23 17:22:42,335 INFO blueapi.worker.task_worker Got new task: task_id='1ca72adb-8af4-42d5-8253-9ad6ba446699' task=Task(name='abs_set', args=['stage.x', 1.0], params={}, metadata={'user': 'alice', 'instrument_session': 'cm12345-1', 'tiled_access_tags': ['{"proposal": "cm12345", "visit": 1, "beamline": "adsim"}'], 'blueapi_task_id': '1ca72adb-8af4-42d5-8253-9ad6ba446699'}) request_id=None is_complete=False is_pending=True errors=[] outcome=None
2026-10-23 17:22:42,335 INFO blueapi.worker.task Asked to run plan abs_set with {} and metadata {'user': 'alice', 'instrument_session': 'cm12345-1', 'tiled_access_tags': ['{"proposal": "cm12345", "visit": 1, "beamline": "adsim"}'], 'blueapi_task_id': '1ca72adb-8af4-42d5-8253-9ad6ba446699'} for all runs
2026-10-23 17:22:42,336 INFO bluesky Executing plan <bluesky.utils.Plan object at 0x7f743a7a7880>
2026-10-23 17:22:42,336 INFO bluesky.RE.state Change state on <bluesky.run_engine.RunEngine object at 0x7f746c2ed940> from 'idle' -> 'running'
2026-10-23 17:22:42,337 INFO blueapi.service.main 127.0.0.1:46838 PUT /worker/task 200
2026-10-23 17:22:42,337 ERROR bluesky Run aborted
Traceback (most recent call last):
File "/scratch/bluesky_development/blueapi/.venv/lib/python3.13/site-packages/bluesky/run_engine.py", line 1596, in _run
msg = self._plan_stack[-1].throw(stashed_exception or resp)
File "/scratch/bluesky_development/blueapi/.venv/lib/python3.13/site-packages/bluesky/utils/__init__.py", line 2092, in __iter__
return (yield from self._iter)
^^^^^^^^^^^^^^^^^^^^^
File "/scratch/bluesky_development/blueapi/.venv/lib/python3.13/site-packages/bluesky/plan_stubs.py", line 316, in abs_set
ret = yield Msg("set", obj, *args, group=group, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/scratch/bluesky_development/blueapi/.venv/lib/python3.13/site-packages/bluesky/run_engine.py", line 1688, in _run
new_response = await coro(msg)
^^^^^^^^^^^^^^^
File "/scratch/bluesky_development/blueapi/.venv/lib/python3.13/site-packages/opentelemetry/util/_decorator.py", line 61, in async_wrapper
return await func(*args, **kwargs) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/scratch/bluesky_development/blueapi/.venv/lib/python3.13/site-packages/bluesky/run_engine.py", line 2278, in _set
ret = obj.set(*msg.args, **kwargs)
File "/scratch/bluesky_development/blueapi/.venv/lib/python3.13/site-packages/ophyd_async/core/_status.py", line 289, in wrap_f
return cls(f(*args, **kwargs), name=name)
~^^^^^^^^^^^^^^^^^
TypeError: StandardMovable.set() got an unexpected keyword argument 'kwargs'
2026-10-23 17:22:42,338 INFO bluesky.RE.state Change state on <bluesky.run_engine.RunEngine object at 0x7f746c2ed940> from 'running' -> 'idle'
2026-10-23 17:22:42,339 ERROR blueapi.worker.task_worker Task failed
2026-10-23 17:22:42,339 ERROR blueapi.worker.task_worker StandardMovable.set() got an unexpected keyword argument 'kwargs'
Traceback (most recent call last):
File "/scratch/bluesky_development/blueapi/src/blueapi/worker/task_worker.py", line 436, in process_task
result = self._current.task.do_task(self._ctx)
File "/scratch/bluesky_development/blueapi/src/blueapi/worker/task.py", line 112, in do_task
result = ctx.run_engine(plan(*prepared_args, **prepared_kwargs))
File "/scratch/bluesky_development/blueapi/.venv/lib/python3.13/site-packages/bluesky/run_engine.py", line 979, in __call__
plan_return = self._resume_task(init_func=_build_task)
File "/scratch/bluesky_development/blueapi/.venv/lib/python3.13/site-packages/bluesky/run_engine.py", line 1127, in _resume_task
raise exc
File "/scratch/bluesky_development/blueapi/.venv/lib/python3.13/site-packages/bluesky/run_engine.py", line 1767, in _run
raise err
File "/scratch/bluesky_development/blueapi/.venv/lib/python3.13/site-packages/bluesky/run_engine.py", line 1596, in _run
msg = self._plan_stack[-1].throw(stashed_exception or resp)
File "/scratch/bluesky_development/blueapi/.venv/lib/python3.13/site-packages/bluesky/utils/__init__.py", line 2092, in __iter__
return (yield from self._iter)
^^^^^^^^^^^^^^^^^^^^^
File "/scratch/bluesky_development/blueapi/.venv/lib/python3.13/site-packages/bluesky/plan_stubs.py", line 316, in abs_set
ret = yield Msg("set", obj, *args, group=group, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/scratch/bluesky_development/blueapi/.venv/lib/python3.13/site-packages/bluesky/run_engine.py", line 1688, in _run
new_response = await coro(msg)
^^^^^^^^^^^^^^^
File "/scratch/bluesky_development/blueapi/.venv/lib/python3.13/site-packages/opentelemetry/util/_decorator.py", line 61, in async_wrapper
return await func(*args, **kwargs) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/scratch/bluesky_development/blueapi/.venv/lib/python3.13/site-packages/bluesky/run_engine.py", line 2278, in _set
ret = obj.set(*msg.args, **kwargs)
File "/scratch/bluesky_development/blueapi/.venv/lib/python3.13/site-packages/ophyd_async/core/_status.py", line 289, in wrap_f
return cls(f(*args, **kwargs), name=name)
~^^^^^^^^^^^^^^^^^
TypeError: StandardMovable.set() got an unexpected keyword argument 'kwargs'
[Motor(name="stage-x"), 1.0] {'group': None, 'wait': False, 'kwargs': {}}
The dict is the kwargs, but _inner_prepare_params adds an additional kwargs: {} inside which causes a plan to fail
Steps to reproduce. Configure system tests to use bluesky plan stub abs_set. I originally discovered this when looking at https://github.com/DiamondLightSource/blueapi/pull/1694/
Acceptance Criteria
- kwargs: () is not passed to the plan
- 主要言語
- Python
- スター
- 13
- フォーク
- 14
- 平均マージ
- 3日 10時間
- マージ済み PR(30日)
- 13
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
DiamondLightSource/blueapi のほかの issue
-
deployment
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
DiamondLightSource/blueapi#1626 ·
メンテナーはふだん 1 日以内に返信
-
deployment dev-environment
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
DiamondLightSource/blueapi#1623 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
DiamondLightSource/blueapi#1605 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 64/100
DiamondLightSource/blueapi#1494 ·
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 1〜2日 初心者へのやさしさ 52/100
DiamondLightSource/blueapi#1718 ·
メンテナーはふだん 1 日以内に返信
DiamondLightSource/blueapi の issue をすべて見る
似ている issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 85/100
yzhao062/awesome-auditable-ai#45 ·
メンテナーはふだん 3 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
NVIDIA/flare-local-inference#90 ·
メンテナーはふだん 1 日以内に返信
-
area/streaming comp/gateway P2 platform/telegram type/bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
NousResearch/hermes-agent#144897 ·
メンテナーはふだん 1 日以内に返信
-
request-theme
難易度 1/5 1時間未満 初心者へのやさしさ 66/100
LizardByte/ThemerrDB#9575 ·
メンテナーはふだん 1 日以内に返信