docs: def _find_caller(self):
          """
          Find the stack frame of the caller so that we can note the source file
          name, line number, and function name.
          """
          rv = ('(unknown file)',
                0,
                '(unknown function)',
                '(code not available)',
                [],
                None)
          f = inspect.currentframe()
          while hasattr(f, 'f_code'):
              co = f.f_code
              filename = os.path.normcase(co.co_filename)
              # When lggr is imported as a module, the `_src_file` filename ends
              # in '.pyc', while the filename grabbed from inspect will end in
              # '.py'. We use splitext here to compare absolute paths without the
              # extension, which restores the intended behavior of dropping down
              # the callstack until we reach the first file not part of this
              # library.
              if os.path.splitext(filename)[0] == os.path.splitext(_srcfile)[0]:
                  f = f.f_back # get out of this logging file
                  continue
              sinfo = traceback.extract_stack(f)
              fname, lno, fnc, cc, i = inspect.getframeinfo(f, context=10)
  
              # Mark the calling line with a >
              cc = map(lambda info: ('> ' if info[0] == i else '| ') + info[1],
                       enumerate(cc))
              code = '>' + cc[i]
              rv = (fname, lno, fnc, code, cc, sinfo)
              break
          return rv