class_docstr: Class describing events that occur and can be reacted to with callbacks.
  Each event instance contains information about a single event that has
  occurred such as a key press, mouse motion, timer activation, etc.
  
  Subclasses: :class:`KeyEvent`, :class:`MouseEvent`, :class:`TouchEvent`,
  :class:`StylusEvent`
  
  The creation of events and passing of events to the appropriate callback
  functions is the responsibility of :class:`EventEmitter` instances.
  
  Note that each event object has an attribute for each of the input
  arguments listed below.
  
  Parameters
  ----------
  type : str
     String indicating the event type (e.g. mouse_press, key_release)
  native : object (optional)
     The native GUI event object
  **kwargs : keyword arguments
      All extra keyword arguments become attributes of the event object.
class_docstr_tok: ["Class","describing","events","that","occur","and","can","be","reacted","to","with","callbacks",".","Each","event","instance","contains","information","about","a","single","event","that","has","occurred","such","as","a","key","press",",","mouse","motion",",","timer","activation",",","etc",".","Subclasses",":",":","class",":","`","KeyEvent","`",",",":","class",":","`","MouseEvent","`",",",":","class",":","`","TouchEvent","`",",",":","class",":","`","StylusEvent","`","The","creation","of","events","and","passing","of","events","to","the","appropriate","callback","functions","is","the","responsibility","of",":","class",":","`","EventEmitter","`","instances",".","Note","that","each","event","object","has","an","attribute","for","each","of","the","input","arguments","listed","below",".","Parameters","--","--","--","--","--","type",":","str","String","indicating","the","event","type","(","e.g",".","mouse_press",",","key_release",")","native",":","object","(","optional",")","The","native","GUI","event","object","*","*","kwargs",":","keyword","arguments","All","extra","keyword","arguments","become","attributes","of","the","event","object","."]
code: def __repr__(self):
      # Try to generate a nice string representation of the event that
      # includes the interesting properties.
      # need to keep track of depth because it is
      # very difficult to avoid excessive recursion.
      global _event_repr_depth
      _event_repr_depth += 1
      try:
          if _event_repr_depth > 2:
              return "<...>"
          attrs = []
          for name in dir(self):
              if name.startswith("_"):
                  continue
              # select only properties
              if not hasattr(type(self), name) or not isinstance(
                  getattr(type(self), name), property
              ):
                  continue
              attr = getattr(self, name)
  
              attrs.append("%s=%s" % (name, attr))
          return "<%s %s>" % (self.__class__.__name__, " ".join(attrs))
      finally:
          _event_repr_depth -= 1
  
imports: from __future__ import division
  from collections import OrderedDict
  import inspect
  import traceback
  import weakref
  from .logs import logger, _handle_exception
label_desc: Use image node_id 12 for calling the Event obj's underlying member method code with example usage: obj.__repr__() and returns: unknown, str