sunflare.model#
- class sunflare.model.ModelProtocol(name, model_info)#
- Minimal required protocol for a recognizable device in Redsun. - Exposes the following Bluesky protocols: - Parameters:
- name ( - str) – Name of the model. Serves as a unique identifier for the object created from it.
- model_info ( - ModelInfoProtocol) – Object implementing- ModelInfoProtocol.
 
 - abstract read_configuration()#
- Read the model configuration. - Provides a dictionary with the current values of the model configuration. - The method can be normal or async. - Returns:
- A dictionary with the current values of the model configuration. 
- Return type:
- dict[ - str,- Reading]
 
 - abstract describe_configuration()#
- Describe the model configuration. - Provides a description of each field of the model configuration. - The method can be normal or async. - Returns:
- A dictionary with the description of each field of the model configuration. 
- Return type:
- dict[ - str,- Descriptor]
 
 - abstract property name: str#
- Model identifier. - Used to populate object_keys in - DataKey.- See the following link for more information: https://blueskyproject.io/event-model/main/explanations/event-descriptors.html 
 - abstract property parent: Any | None#
- None, or a reference to a parent device.- Used by the RE to stop duplicate stages. In Redsun (for now) should always return - None.
 
- class sunflare.model.Model(name, model_info)#
- A boilerplate base class for quick model development. - Users may subclass from this model and provide their custom - ModelInfoimplementation.- Example usage: - from sunflare.model import Model from sunflare.config import ModelInfo from attrs import define @define class MyModelInfo(ModelInfo): str_param: str bool_param: bool # any other parameters... class MyModel(Model[MyModelInfo]): def __init__(self, name: str, model_info: MyModelInfo) -> None: super().__init__(name, model_info) # any other initialization code... - Parameters:
- name ( - str) – Name of the model. Serves as a unique identifier for the object created from it.
- model_info ( - MI) – Instance of- ModelInfo. subclass.
 
 - describe_configuration()#
- Provide a description of the model configuration. - Inspects the local - model_infoobject and returns a descriptor dictionary compatible with the Bluesky event model.- Parameters:
- source ( - str, optional) – Source of the configuration description. Default is- model_info.
- Returns:
- A dictionary with the description of each field of the model configuration. 
- Return type:
- dict[ - str,- DataKey]
 
 - read_configuration()#
- Provide a description of the model configuration. - Inspects the local - model_infoobject and returns a reading dictionary compatible with the Bluesky event model.- Parameters:
- timestamp ( - float, optional) – Timestamp of the reading (i.e.- time.time()). Default is- 0.
- Returns:
- A dictionary with the description of each field of the model configuration. 
- Return type:
- dict[ - str,- Descriptor]
 
 - property name: str#
- Model identifier. - Used to populate object_keys in - DataKey.- See the following link for more information: https://blueskyproject.io/event-model/main/explanations/event-descriptors.html 
 - property parent: None#
- None, or a reference to a parent device.- Used by the RE to stop duplicate stages. In Redsun (for now) should always return - None.
 
- sunflare.model.check_supports(obj, protocol)#
- Check that an object supports a protocol - This exists so that multiple protocol checks can be run in a mypy compatible way, e.g.: - triggerable = check_supports(obj, Triggerable) triggerable.trigger() readable = check_supports(obj, Readable) readable.read() - Parameters:
- obj (T) 
- protocol (type[Any]) 
 
- Return type:
- T 
 
| A dictionary containing the value and timestamp of a piece of scan data | 
| Describes the objects in the data property of Event documents |