Skip to content

feat: enable operators/actuators to write rich console live elements e.g. spinners #244

@michael-johnston

Description

@michael-johnston

Is your feature request related to a problem? Please describe.

I've observed multiple users become confused due to long running experiments (from explore opertations) as ado can appear to "hang" with default logging. They may believable something is wrong and CTRL^C to early etc. If log-level is increased logs may appear that allow deducing what is happening. However the log-level to set to get sufficient information in unknown and there may trigger a large number of unrelated logs burying the information sought.

Rich live element (spinners/progress bars) provide a way to indicate to a user a long running task is underway. The issue is it (a) can only be used from the main process, as only one rich context should manage a console otherwise output is not rendered properly (b) rich.Console output in the actors will be serialised and transmitted to main process stdout by ray loosing any "rich" meaning.

Describe the solution you'd like
A clear and concise description of what you want to happen.

  • A single grouped Live context in the main process - leveraging the existing Live table but adding a second group for actor progress messages
    • i.e. live table at Bottom, and above progress indicators for active tasks from operator/actuators
  • An actor e.g. RichConsoleQueue, where actors can put messages for rendering in the progress segment
  • In the main process Live context, messages can be pulled from RichConsoleQueue and either (1) add a element (spinner/progress-bar) to the progress group (2) progress an element in the group (3) remove an element from the group.
    • Messages would have an identifier so the update can determine what to do

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Considered other implementations for consuming messages but in the end the main restriction is that there can be only one Live context connected to the console for all the messages to render correctly.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions