code: def str_to_python_object(input_str):
      
      if not input_str:
          return None
      if six.PY3 and isinstance(input_str, six.binary_type):
          input_str = to_str(input_str)
      if not isinstance(input_str, six.string_types):
          # gosh, we didn't get a string, we can't convert anything but strings
          # we're going to assume that what we got is actually what was wanted
          # as the output
          return input_str
      input_str = str_quote_stripper(input_str)
      if '.' not in input_str and input_str in known_mapping_str_to_type:
          return known_mapping_str_to_type[input_str]
      parts = [x.strip() for x in input_str.split('.') if x.strip()]
      try:
          try:
              # first try as a complete module
              package = __import__(input_str)
          except ImportError:
              # it must be a class from a module
              if len(parts) == 1:
                  # since it has only one part, it must be a class from __main__
                  parts = ('__main__', input_str)
              package = __import__('.'.join(parts[:-1]), globals(), locals(), [])
          obj = package
          for name in parts[1:]:
              obj = getattr(obj, name)
          return obj
      except AttributeError as x:
          raise CannotConvertError("%s cannot be found" % input_str)
      except ImportError as x:
          raise CannotConvertError(str(x))
docs: a conversion that will import a module and class name