code: def _yield_callbacks(self):
          
          print_logs = []
          for item in self.get_default_callbacks() + (self.callbacks or []):
              if isinstance(item, (tuple, list)):
                  named_by_user = True
                  name, cb = item
              else:
                  named_by_user = False
                  cb = item
                  if isinstance(cb, type):  # uninitialized:
                      name = cb.__name__
                  else:
                      name = cb.__class__.__name__
              if isinstance(cb, PrintLog) or (cb == PrintLog):
                  print_logs.append((name, cb, named_by_user))
              else:
                  yield name, cb, named_by_user
          yield from print_logs
docs: Yield all callbacks set on this instance including
          a set whether its name was set by the user.
  
          Handles these cases:
            * default and user callbacks
            * callbacks with and without name
            * initialized and uninitialized callbacks
            * puts PrintLog(s) last