code: def events(self, **kwargs):
          
          events = self._query('events', **kwargs)
          for event in events:
              yield Event(
                  node=event['certname'],
                  status=event['status'],
                  timestamp=event['timestamp'],
                  hash_=event['report'],
                  title=event['resource_title'],
                  property_=event['property'],
                  message=event['message'],
                  new_value=event['new_value'],
                  old_value=event['old_value'],
                  type_=event['resource_type'],
                  class_=event['containing_class'],
                  execution_path=event['containment_path'],
                  source_file=event['file'],
                  line_number=event['line'],
              )
docs: A report is made up of events which can be queried either
          individually or based on their associated report hash. It is strongly
          recommended to include query and/or paging parameters for this
          endpoint to prevent large result sets or PuppetDB performance
          bottlenecks.
  
          :param \*\*kwargs: The rest of the keyword arguments are passed
                             to the _query function
  
          :returns: A generator yielding Events
          :rtype: :class:`pypuppetdb.types.Event`