code: def _decode_filename_to_unicode(f):
      '''Get bytestring filename and return unicode.
      First, try to decode from default file system encoding
      If that fails, use ``chardet`` module to guess encoding.
      As a last resort, try to decode as utf-8.
      If the argument already is unicode, return as is'''
      log.debug('_decode_filename_to_unicode(%s)', repr(f))
      if isinstance(f, unicode):
          return f
      try:
          return f.decode(sys.getfilesystemencoding())
      except UnicodeDecodeError:
          charguess = chardet.detect(f)
          log.debug("chardet filename: %r -> %r", f, charguess)
          if charguess['encoding'] is not None:
              try:
                  return f.decode(charguess['encoding'])
              except UnicodeDecodeError:
                  pass
          log.warning('Cannot understand decoding of this filename: %r (guessed %r, but was wrong)',
                      f, charguess)
          log.debug('Trying utf-8 to decode %r', f)
          try:
              return f.decode('utf-8')
          except UnicodeDecodeError:
              pass
          log.debug('Trying latin1 to decode %r', f)
          try:
              return f.decode('latin1')
          except UnicodeDecodeError:
              log.warning('Exhausted all options. Decoding %r to safe ascii', f)
              return f.decode('ascii', errors='ignore')