Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

kwargs: {} gets added to plan **kwargs

Abierto Apto para principiantes
#1,719 0 comentarios 0 reacciones 1 asignado Ver en GitHub

Los mantenedores suelen responder en 1 día

@oliwenmandiamond ya está trabajando en esto.

Desde el 26/10/2026.

  • #1720 de @oliwenmandiamond — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
python
Área
backend

Línea de trabajo

Comienza por la lógica de preparación de parámetrosMaking reference to prepare_params y _inner_prepare_params, y luego inspecciona la ruta de ejecución en src/blueapi/worker/task.py y src/blueapi/worker/task_worker.py. Reproduce el problema con el stub de plan abs_set de Bluesky y confirma que la llamada generada ya no incluye una entrada kwargs. El issue estará terminado cuando los planes que usan *args y **kwargs se ejecuten sin pasar un argumento adicional kwargs: {}.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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

  • second kwargs: () is not passed to the plan
Lenguaje dominante
Python
Estrellas
13
Forks
14
Merge medio
3 d 10 h
PR fusionados (30 d)
13

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de DiamondLightSource/blueapi

Todos los issues de DiamondLightSource/blueapi

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.