HomePhabricator

[bugfix] Port cache_output from compat

Description

[bugfix] Port cache_output from compat

  • compat had a cache_output functionality to fetch all async output during any input and print it afterwards. This feature is ported to core but in lowlevel userinterface.
  • Add a RLock class to tools which works like RLock to enable nested locks but it also has a count property and a locked method.
  • ui.output() redirects any output stream to a cache and flushes cache if output to terminal is not locked; cache is implemented as SimpleQueue
  • ui.stream_output() outputs text to terminal
  • ui.flush() outputs the cache entries to terminal via stream_output()
  • register ui.flush() to be called at termination
  • Add SimpleQueue to backports.py
  • bot_choice.Option is an abstract base class now
  • OutputOption got a new "out" property to be used inside ui.input_choice
  • OutputProxyOption uses out property of passed output class
  • update SequenceOutputter accordingly
  • use color_format with ContextOption and HighlightContextOption
  • update CatContextOption in category.py
  • revert previous T73646 fix and use standard behaviour of BaseBot

Bug: T73646
Bug: T74942
Bug: T132135
Bug: T144698
Bug: T280466
Bug: T151727
Change-Id: I02d6b7a939a1912a4ebb8694af3e159d7dd7dae5

Details

Provenance
XqtAuthored on Apr 11 2016, 9:58 PM
Parents
rPWBCb159ad1ca005: [IMPR] Add abstract base user interface module to the framework
Branches
Unknown
Tags
Unknown
ChangeId
I02d6b7a939a1912a4ebb8694af3e159d7dd7dae5