Does it matter that  all_ can't have line breaks?

_all_ without line breaks

Without line breaks, _all_ to __all__ works great (o:

__all__ = ['_not_included_by_default', '_not_included_by_default2']

# Cell
def _not_included_by_default(): pass
def _not_included_by_default2(): pass

_all_ with line breaks

With line breaks, _all_ doesn't get picked up by _re_all_def (... ([^\n\]]*) # Catching group with anything except a ] or newline)

__all__ = []

# Cell
def _not_included_by_default(): pass
def _not_included_by_default2(): pass

# Cell
_all_=["_not_included_by_default",
      "_not_included_by_default2"]

Note: _re__all__def uses a different catching group ([^\]]*) that allows line breaks

maybe the answer is to use multiple _all_ right next to the thing we need to include

that's what this nb has been changed to