code: def _parselog(self, r):
          
          def __parselog(entry):
              """
              Parse bazaar log file format
  
              Args:
                  entry (str): log message string
  
              Yields:
                  tuple: (attrname, value)
              """
              bufname = None
              buf = deque()
              print(entry)
              if entry == ['']:
                  return
              for l in itersplit(entry, '\n'):
                  if not l:
                      continue
                  mobj = self.logrgx.match(l)
                  if not mobj:
                      # "  - Log message"
                      buf.append(self._logmessage_transform(l))
                  if mobj:
                      mobjlen = len(mobj.groups())
                      if mobjlen == 2:
                          # "attr: value"
                          attr, value = mobj.groups()
                          if attr == 'message':
                              bufname = 'desc'
                          else:
                              attr = self.field_trans.get(attr, attr)
                              yield (self.field_trans.get(attr, attr), value)
                      else:
                          raise Exception()
              if bufname is not None:
                  if len(buf):
                      buf.pop()
                      len(buf) > 1 and buf.popleft()
                  yield (bufname, '\n'.join(buf))
              return
  
          kwargs = dict(__parselog(r))  # FIXME
          if kwargs:
              if 'tags' not in kwargs:
                  kwargs['tags'] = tuple()
              else:
                  kwargs['tags'].split(' ')  # TODO
              if 'branchnick' not in kwargs:
                  kwargs['branchnick'] = None
              try:
                  yield kwargs  # TODO
                  # return self._tuple(**kwargs)
              except:
                  log.error(r)
                  log.error(kwargs)
                  raise
          else:
              log.error("failed to parse: %r" % r)
docs: Parse bazaar log file format
  
          Args:
              r (str): bzr revision identifier
  
          Yields:
              dict: dict of (attr, value) pairs
  
          ::
  
              $ bzr log -l1
              ------------------------------------------------------------
              revno: 1
              committer: ubuntu <ubuntu@ubuntu-desktop>
              branch nick: ubuntu-desktop /etc repository
              timestamp: Wed 2011-10-12 01:16:55 -0500
              message:
                Initial commit