code: def get_obj_frm_str(obj_str, **kwargs):
      
      obj_str = obj_str.format(**kwargs)
      args = []
      kwargs = {}
      params = []
      # parse the call portion of the string
      if "(" in obj_str:
          call_args = obj_str[obj_str.find("("):]
          obj_str = obj_str[:obj_str.find("(")]
          call_args = call_args[1:-1]
          if call_args:
              call_args = call_args.split(",")
          else:
              call_args = []
          call_args = [arg.strip() for arg in call_args]
  
          for arg in call_args:
              if "=" in arg:
                  parts = arg.split("=")
                  kwargs[parts[0]] = parts[1]
              else:
                  args.append(arg)
      # parse a the __getitem__ portion of the string
      if "[" in obj_str:
          params = obj_str[obj_str.find("["):]
          obj_str = obj_str[:obj_str.find("[")]
          params = [part.replace("[", "").replace("]", "")
                    for part in params.split("][")]
      obj = pydoc.locate(obj_str)
      if params:
          for part in params:
              obj = get_attr(obj, part)
      if args or kwargs:
          if kwargs:
              obj = obj.__call__(*args, **kwargs)
          else:
              obj = obj.__call__(*args)
      return obj
docs: Returns a python object from a python object string
  
      args:
          obj_str: python object path expamle
                      "rdfframework.connections.ConnManager[{param1}]"
  
      kwargs:
          * kwargs used to format the 'obj_str'