code: def symbol_scores(self, symbol):
          
          scores = []
          path = []
  
          # sys.path              sys path          ->    import sys
          # os.path.basename      os.path basename  ->    import os.path
          # basename              os.path basename   ->   from os.path import basename
          # path.basename         os.path basename   ->   from os import path
          def fixup(module, variable):
              prefix = module.split('.')
              if variable is not None:
                  prefix.append(variable)
              seeking = symbol.split('.')
              new_module = []
              while prefix and seeking[0] != prefix[0]:
                  new_module.append(prefix.pop(0))
              if new_module:
                  module, variable = '.'.join(new_module), prefix[0]
              else:
                  variable = None
              return module, variable
  
          def score_walk(scope, scale):
              sub_path, score = self._score_key(scope, full_key)
              if score > 0.1:
                  try:
                      i = sub_path.index(None)
                      sub_path, from_symbol = sub_path[:i], '.'.join(sub_path[i + 1:])
                  except ValueError:
                      from_symbol = None
                  package_path = '.'.join(path + sub_path)
                  package_path, from_symbol = fixup(package_path, from_symbol)
                  scores.append((score * scale, package_path, from_symbol))
  
              for key, subscope in scope._tree.items():
                  if type(subscope) is not float:
                      path.append(key)
                      score_walk(subscope, subscope.score * scale - 0.1)
                      path.pop()
  
          full_key = symbol.split('.')
          score_walk(self, 1.0)
          scores.sort(reverse=True)
          return scores
docs: Find matches for symbol.
  
          :param symbol: A . separated symbol. eg. 'os.path.basename'
          :returns: A list of tuples of (score, package, reference|None),
              ordered by score from highest to lowest.