DiamondLightSource / blueapi

Apache License 2.0
6 stars 6 forks source link

Return exception info from `with_dodal_module` and `with_plan_module` #726

Open dperl-dls opened 5 days ago

dperl-dls commented 5 days ago

Recently importing our plans (mx-bluesky/hyperion) into the BlueApi context started failing with a new (2.10) version of pydantic, which when running create_model on the plan arguments fails when one is a dataclasses.dataclass containing devices, because the devices don't implement __get_pydantic_core_schema__. This would have been substantially easier to diagnose if we had the information that exceptions had occurred during the above functions available to us when running them

Acceptance Criteria

these methods have return values that allow the caller to determine if an exception happened and some info about it

callumforrester commented 4 days ago

@DiamondJoseph is this related to #727?

dperl-dls commented 4 days ago

@callumforrester yes, related in the sense that we weren't getting errors from these above-mentioned functions when setting up our context, with plans that take dataclass device-composite args, but I can imagine other situations where it'd be useful too

For reference, we do this: https://github.com/DiamondLightSource/mx-bluesky/blob/f3a358c3e1b3e2947f1c18b5b7dfee4462010166/src/mx_bluesky/hyperion/utils/context.py#L73-L84 and it'd be nice to know if something went wrong at that point