parameters: (data)
docstring: Diagnostic suite for isolating common problems.
docstring_summary: Diagnostic suite for isolating common problems.
docstring_tokens: Diagnostic suite for isolating common problems .
function: def diagnose(data):
      """Diagnostic suite for isolating common problems."""
      print("Diagnostic running on Beautiful Soup %s" % __version__)
      print("Python version %s" % sys.version)
  
      basic_parsers = ["html.parser", "html5lib", "lxml"]
      for name in basic_parsers:
          for builder in builder_registry.builders:
              if name in builder.features:
                  break
          else:
              basic_parsers.remove(name)
              print((
                  "I noticed that %s is not installed. Installing it may help." %
                  name))
  
      if 'lxml' in basic_parsers:
          basic_parsers.append(["lxml", "xml"])
          try:
              from lxml import etree
              print("Found lxml version %s" % ".".join(map(str,etree.LXML_VERSION)))
          except ImportError as e:
              print (
                  "lxml is not installed or couldn't be imported.")
  
  
      if 'html5lib' in basic_parsers:
          try:
              import html5lib
              print("Found html5lib version %s" % html5lib.__version__)
          except ImportError as e:
              print (
                  "html5lib is not installed or couldn't be imported.")
  
      if hasattr(data, 'read'):
          data = data.read()
      elif os.path.exists(data):
          print('"%s" looks like a filename. Reading data from the file.' % data)
          data = open(data).read()
      elif data.startswith("http:") or data.startswith("https:"):
          print('"%s" looks like a URL. Beautiful Soup is not an HTTP client.' % data)
          print("You need to use some other library to get the document behind the URL, and feed that document to Beautiful Soup.")
          return
      print()
  
      for parser in basic_parsers:
          print("Trying to parse your markup with %s" % parser)
          success = False
          try:
              soup = BeautifulSoup(data, parser)
              success = True
          except Exception as e:
              print("%s could not parse the markup." % parser)
              traceback.print_exc()
          if success:
              print("Here's what %s did with the markup:" % parser)
              print(soup.prettify())
  
          print("-" * 80)
function_tokens: def diagnose ( data ) : print ( "Diagnostic running on Beautiful Soup %s" % __version__ ) print ( "Python version %s" % sys . version ) basic_parsers = [ "html.parser" , "html5lib" , "lxml" ] for name in basic_parsers : for builder in builder_registry . builders : if name in builder . features : break else : basic_parsers . remove ( name ) print ( ( "I noticed that %s is not installed. Installing it may help." % name ) ) if 'lxml' in basic_parsers : basic_parsers . append ( [ "lxml" , "xml" ] ) try : from lxml import etree print ( "Found lxml version %s" % "." . join ( map ( str , etree . LXML_VERSION ) ) ) except ImportError as e : print ( "lxml is not installed or couldn't be imported." ) if 'html5lib' in basic_parsers : try : import html5lib print ( "Found html5lib version %s" % html5lib . __version__ ) except ImportError as e : print ( "html5lib is not installed or couldn't be imported." ) if hasattr ( data , 'read' ) : data = data . read ( ) elif os . path . exists ( data ) : print ( '"%s" looks like a filename. Reading data from the file.' % data ) data = open ( data ) . read ( ) elif data . startswith ( "http:" ) or data . startswith ( "https:" ) : print ( '"%s" looks like a URL. Beautiful Soup is not an HTTP client.' % data ) print ( "You need to use some other library to get the document behind the URL, and feed that document to Beautiful Soup." ) return print ( ) for parser in basic_parsers : print ( "Trying to parse your markup with %s" % parser ) success = False try : soup = BeautifulSoup ( data , parser ) success = True except Exception as e : print ( "%s could not parse the markup." % parser ) traceback . print_exc ( ) if success : print ( "Here's what %s did with the markup:" % parser ) print ( soup . prettify ( ) ) print ( "-" * 80 )