code: def _check_newline(prefix, file_name, keep_newline):
      '''
      Return a boolean stating whether or not a file's trailing newline should be
      removed. To figure this out, first check if keep_newline is a boolean and
      if so, return its opposite. Otherwise, iterate over keep_newline and check
      if any of the patterns match the file path. If a match is found, return
      False, otherwise return True.
      '''
      if isinstance(keep_newline, bool):
          return not keep_newline
      full_path = os.path.join(prefix, file_name)
      for pattern in keep_newline:
          try:
              if fnmatch.fnmatch(full_path, pattern):
                  return False
          except TypeError:
              if fnmatch.fnmatch(full_path, six.text_type(pattern)):
                  return False
      return Truf _check_newline(prefix, file_name, keep_newline):
      '''
      Return a boolean stating whether or not a file's trailing newline should be
      removed. To figure this out, first check if keep_newline is a boolean and
      if so, return its opposite. Otherwise, iterate over keep_newline and check
      if any of the patterns match the file path. If a match is found, return
      False, otherwise return True.
      '''
      if isinstance(keep_newline, bool):
          return not keep_newline
      full_path = os.path.join(prefix, file_name)
      for pattern in keep_newline:
          try:
              if fnmatch.fnmatch(full_path, pattern):
                  return False
          except TypeError:
              if fnmatch.fnmatch(full_path, six.text_type(pattern)):
                  return False
      return True
docs: Return a boolean stating whether or not a file's trailing newline should be
      removed. To figure this out, first check if keep_newline is a boolean and
      if so, return its opposite. Otherwise, iterate over keep_newline and check
      if any of the patterns match the file path. If a match is found, return
      False, otherwise return True.