code: def run(self, logger=None, warnings=False, pylint_config=[]):
      args = [self._fname]
      if not warnings:
          args.append("--errors-only")
      if pylint_config:
          args.extend(pylint_config)
      stdout = sys.stdout
      stderr = sys.stderr
      sys.stdout = StringIO()
      sys.stderr = StringIO()
      try:
          pylint_is_happy = True
          pylint_exception_msg = ""
          self._run(args, None, False)
      except Exception as e:
          pylint_is_happy = False
          pylint_exception_msg = repr(e)
      output = sys.stdout.getvalue()
      sys.stdout = stdout
      sys.stderr = stderr
  
      warnings = False
      for line in self._filter_lines(output):
          logger(line, indent=True)
          warnings = True
  
      if warnings:
          raise PyLintWarn(
              "*Fix Pylint warnings listed above or say --no-pylint.*"
          )
  
      return pylint_is_happy, pylint_exception_msg
  
file_path: metaflow/metaflow/pylint_wrapper.py
imports: import re
  import sys
  from .exception import MetaflowException
  from .extension_support import get_aliased_modules
label_desc: Use image node_id 3 for calling the PyLint obj's underlying member method code with example usage: obj.run(logger, warnings, pylint_config) and returns: pylint_is_happy,  pylint_exception_msg