code: def resolve(self, s):
          
          name = s.split('.')
          used = name.pop(0)
          try:
              found = self.importer(used)
              for frag in name:
                  used += '.' + frag
                  try:
                      found = getattr(found, frag)
                  except AttributeError:
                      self.importer(used)
                      found = getattr(found, frag)
              return found
          except ImportError:
              e, tb = sys.exc_info()[1:]
              v = ValueError('Cannot resolve %r: %s' % (s, e))
              v.__cause__, v.__traceback__ = e, tb
              raise v
docs: Resolve strings to objects using standard import and attribute
          syntax.