While the narration context manager provides a way to have finer-grained narration within a function (whether that function is narrated or not), it may not serve certain use cases. An alternative to having lots of context managers would be to introduce a new errator function that leaves a "narration bread crumb" trail in the current narration scope. Such a function would attach a narration fragment within the current narration scope (such as within narrate() or narrate_()), but when that scope exits, these fragments are also deleted. This would allow capturing progress through long functions, providing even fine-grained narration to the end user.
While the narration context manager provides a way to have finer-grained narration within a function (whether that function is narrated or not), it may not serve certain use cases. An alternative to having lots of context managers would be to introduce a new errator function that leaves a "narration bread crumb" trail in the current narration scope. Such a function would attach a narration fragment within the current narration scope (such as within narrate() or narrate_()), but when that scope exits, these fragments are also deleted. This would allow capturing progress through long functions, providing even fine-grained narration to the end user.