Blueapi doesn't support ophyd-async DeviceVector
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 68/100
Línea de trabajo
Empieza en la interfaz de dispositivos de BlueapiClient y reproduce el problema con la configuración mock de i09 proporcionada y el ejemplo de DeviceVector de dodal. Comprueba cómo se representan devs.test y los dispositivos hijos indexados; después, verifica que se pueda acceder a un dispositivo hijo de DeviceVector mediante su índice numérico a través de BlueapiClient. Se considera terminado cuando el ejemplo de aceptación ya no devuelve un carácter del nombre del dispositivo y el acceso indexado devuelve el dispositivo hijo.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Steps to replicate the issue:
Pin dodal inside blueapi to this branch:
"dls-dodal@git+https://github.com/DiamondLightSource/dodal.git@device_vector_example". It adds a test DeviceVector device to i09.
Then run blueapi with i09 beamline in mock mode. Configuration used was:
api:
url: http://0.0.0.0:8000
env:
metadata:
instrument: adsim
sources:
- kind: deviceManager
module: dodal.beamlines.i09
mock: True
- kind: planFunctions
module: dodal.plans
- kind: planFunctions
module: dodal.plan_stubs.wrapped
stomp:
enabled: true
url: tcp://localhost:61613/
numtracker:
url: http://localhost:8406/graphql
Start blueapi server:
uv run blueapi -c /path/to/file.yaml serve
Then in another terminal
>>> from blueapi.client import BlueapiClient
>>> bc = BlueapiClient.from_config_file("/path/to/file.yaml")
>>> bc.instrument_session = "12345"
>>> plans = bc.plans
>>> devs = bc.devices
>>> devs.test
Device(test)
>>> devs.test[1]
'e'
>>> devs.test[2]
's'
The above treats the client object as a str so an index just gets the index of the name. DeviceVector is used when many child devices are required, e.g 30 channels for a device and are accessed by the associated index. It is a pain to statically type this and is much easier to have it be configured instead. For example in normal python you can do the following:
>>> from ophyd_async.core import soft_signal_rw
>>> from ophyd_async.core import DeviceVector
>>> dv = DeviceVector({1: soft_signal_rw(int), 2: soft_signal_rw(int)})
>>> dv[1]
<ophyd_async.core._signal.SignalRW object at 0x7efe71059590>
>>> dv[2]
<ophyd_async.core._signal.SignalRW object at 0x7efe71059e10>
There are also plans for a DeviceMap to be added to ophyd-async too https://github.com/bluesky/ophyd-async/issues/1252.
DeviceVector and DeviceMap should probably be supported in BlueapiClient.
Acceptance Criteria
- Can access DeviceVector children from BlueapiClient
- Lenguaje dominante
- Python
- Estrellas
- 13
- Forks
- 14
- Merge medio
- 1 d 18 h
- PR fusionados (30 d)
- 17
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Incluye un Dockerfile o un archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de DiamondLightSource/blueapi
-
kwargs: {} gets added to plan **kwargsPosiblemente ocupada @oliwenmandiamond la tomó hace 8 días. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
DiamondLightSource/blueapi#1719 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
deployment
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
DiamondLightSource/blueapi#1626 ·
Los mantenedores suelen responder en 1 día
-
deployment dev-environment
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
DiamondLightSource/blueapi#1623 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Cannot Install SoftiocAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
DiamondLightSource/blueapi#1605 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
DiamondLightSource/blueapi#1494 ·
Los mantenedores suelen responder en 1 día
Todos los issues de DiamondLightSource/blueapi
Issues similares
-
cost:cheap practicality:seen-in-the-wild severity:medium
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
fairagro/m4.2_advanced_middleware_api#620 ·
Los mantenedores suelen responder en 1 día
-
area:security effort:S priority:P2 provider:local-libvirt status:ready type:docs
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
randomparity/kdive#3495 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
microsoft/markitdown#2820 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 2 días