parameters: (cls, method=None, parent=None, argmatch={}, break_count=-1, trace_call=False,
                    trace_return=False, break_action=None, match_tag="", access_type="")
return_statement: return fullname
docstring: To trace all, method = "*"
          To list all methods traced, method = None
          To trace class, method="classname." or classname
          To trace method of any class, method=".methodname"
          To trace bound method method ="classname.methodname" or self.methodname
          To trace function, method = "functionname" or functionname
          argmatch = {"arg1": "value1", "self.arg2": "value2", "arg3":{"entry31": "value31", "entry32","value32"},
          "arg4!=": "value4", "return": "retvalue"}
          Returns full name of method traced, or null string
          If neither trace_call nor trace_return are specified, only exceptions are traced.
          To trace entity keys, trace /kind:name/... get/put/delete/modify/all
docstring_summary: To trace all, method = "*"
          To list all methods traced, method = None
          To trace class, method="classname." or classname
          To trace method of any class, method=".methodname"
          To trace bound method method ="classname.methodname" or self.methodname
          To trace function, method = "functionname" or functionname
          argmatch = {"arg1": "value1", "self.arg2": "value2", "arg3":{"entry31": "value31", "entry32","value32"},
          "arg4!=": "value4", "return": "retvalue"}
          Returns full name of method traced, or null string
          If neither trace_call nor trace_return are specified, only exceptions are traced.
          To trace entity keys, trace /kind:name/... get/put/delete/modify/all
docstring_tokens: To trace all method = * To list all methods traced method = None To trace class method = classname . or classname To trace method of any class method = . methodname To trace bound method method = classname . methodname or self . methodname To trace function method = functionname or functionname argmatch = { arg1 : value1 self . arg2 : value2 arg3 : { entry31 : value31 entry32 value32 } arg4! = : value4 return : retvalue } Returns full name of method traced or null string If neither trace_call nor trace_return are specified only exceptions are traced . To trace entity keys trace / kind : name / ... get / put / delete / modify / all
function: def add_trace(cls, method=None, parent=None, argmatch={}, break_count=-1, trace_call=False,
                    trace_return=False, break_action=None, match_tag="", access_type=""):
          """To trace all, method = "*"
          To list all methods traced, method = None
          To trace class, method="classname." or classname
          To trace method of any class, method=".methodname"
          To trace bound method method ="classname.methodname" or self.methodname
          To trace function, method = "functionname" or functionname
          argmatch = {"arg1": "value1", "self.arg2": "value2", "arg3":{"entry31": "value31", "entry32","value32"},
          "arg4!=": "value4", "return": "retvalue"}
          Returns full name of method traced, or null string
          If neither trace_call nor trace_return are specified, only exceptions are traced.
          To trace entity keys, trace /kind:name/... get/put/delete/modify/all
          """
          with Trace_rlock:
              if not method:
                  trace_names_list = cls.trace_names.keys() + cls.trace_keys.keys()
                  trace_names_list.sort()
                  if cls.trace_all:
                      trace_names_list.insert(0, "*")
                  return trace_names_list
  
              cls.trace_active = True
  
              if argmatch:
                  ret_match = [key == "return" or key.startswith("return.") for key in argmatch]
                  if any(ret_match):
                      trace_return = True
                  if break_action != "tag" and not all(ret_match):
                      trace_call = True
  
              if method == "*":
                  cls.trace_all = True
                  return "*"
              elif isinstance(method, basestring) and method.startswith(PATH_SEP):
                  # Trace entity key
                  cls.trace_keys[method] = TraceOpts(method, argmatch=argmatch, break_count=break_count, access_type=access_type,
                                                     break_action=break_action)
                  return method
              elif isinstance(method, basestring) and method[0] == TRACE_LABEL_PREFIX:
                  # Trace label for logging
                  fullname = method
              elif isinstance(method, basestring) and method.startswith(TRACE_LOG_PREFIX):
                  # Trace log prefix for break point
                  fullname = method
                  cls.trace_log_set.add(fullname)
              else:
                  if not isinstance(argmatch, dict):
                      raise OTraceException("add_trace: argmatch must be a dict instance")
  
                  classname, methodname = cls.class_method_names(method, parent)
                  fullname = methodname if not classname else classname+"."+methodname
  
              trace_opts = TraceOpts(fullname, argmatch=argmatch, break_count=break_count, trace_call=trace_call,
                                     trace_return=trace_return, break_action=break_action, match_tag=match_tag)
  
              cls.trace_names[fullname] = trace_opts
  
          return fullname
function_tokens: def add_trace ( cls , method = None , parent = None , argmatch = { } , break_count = - 1 , trace_call = False , trace_return = False , break_action = None , match_tag = "" , access_type = "" ) : with Trace_rlock : if not method : trace_names_list = cls . trace_names . keys ( ) + cls . trace_keys . keys ( ) trace_names_list . sort ( ) if cls . trace_all : trace_names_list . insert ( 0 , "*" ) return trace_names_list cls . trace_active = True if argmatch : ret_match = [ key == "return" or key . startswith ( "return." ) for key in argmatch ] if any ( ret_match ) : trace_return = True if break_action != "tag" and not all ( ret_match ) : trace_call = True if method == "*" : cls . trace_all = True return "*" elif isinstance ( method , basestring ) and method . startswith ( PATH_SEP ) : # Trace entity key cls . trace_keys [ method ] = TraceOpts ( method , argmatch = argmatch , break_count = break_count , access_type = access_type , break_action = break_action ) return method elif isinstance ( method , basestring ) and method [ 0 ] == TRACE_LABEL_PREFIX : # Trace label for logging fullname = method elif isinstance ( method , basestring ) and method . startswith ( TRACE_LOG_PREFIX ) : # Trace log prefix for break point fullname = method cls . trace_log_set . add ( fullname ) else : if not isinstance ( argmatch , dict ) : raise OTraceException ( "add_trace: argmatch must be a dict instance" ) classname , methodname = cls . class_method_names ( method , parent ) fullname = methodname if not classname else classname + "." + methodname trace_opts = TraceOpts ( fullname , argmatch = argmatch , break_count = break_count , trace_call = trace_call , trace_return = trace_return , break_action = break_action , match_tag = match_tag ) cls . trace_names [ fullname ] = trace_opts return fullname