Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

kwargs: {} gets added to plan **kwargs

オープン 初心者向け
#1,719 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

@oliwenmandiamond がすでに取り組んでいます。

2026年10月23日 から。

  • #1720 @oliwenmandiamond による — オープン

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
78/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
python
領域
backend

調査の方向性

まず、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 の本文から書いたものです。

説明

bug

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

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

DiamondLightSource/blueapi のほかの issue

DiamondLightSource/blueapi の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。