On the other hand, the progress bars that are shown during the initial
phase before the build tasks starts all use Progressbar's own Timer
widget. I think it makes more sense to just use progressbar.Timer()
rather than BBTimer().
The formatting is deliberate. The running-task lines right below the bar print their time through TerminalFilter.elapsed(), e.g. 16m34s. With progressbar.Timer the bar reads 0:16:34, so the same screen would show two different time formats. The parsing-phase bars are gone by the time the task bar appears, so they never compete with it.
Timer.format_time is a staticmethod and Timer defines __slots__, so it cannot be replaced per instance, hence the small subclass.
If you prefer consistency with progressbar's own format, this one-liner does it instead and I am happy to send it as v2:
- widgets = [' ', progressbar.Percentage(), ' ', progressbar.Bar()]
+ widgets = [' ', progressbar.Percentage(), ' ', progressbar.Bar(), ' ', progressbar.Timer(format='Elapsed: %s')]