code: def process(self, items_block):
          
  
          logger.info(self.__log_prefix + " Authors to process: " + str(len(items_block)))
  
          onion_enrich = Onion(items_block)
          df_onion = onion_enrich.enrich(member_column=ESOnionConnector.AUTHOR_UUID,
                                         events_column=ESOnionConnector.CONTRIBUTIONS)
  
          # Get and store Quarter as String
          df_onion['quarter'] = df_onion[ESOnionConnector.TIMEFRAME].map(lambda x: str(pandas.Period(x, 'Q')))
  
          # Add metadata: enriched on timestamp
          df_onion['metadata__enriched_on'] = datetime.utcnow().isoformat()
          df_onion['data_source'] = self.data_source
          df_onion['grimoire_creation_date'] = df_onion[ESOnionConnector.TIMEFRAME]
  
          logger.info(self.__log_prefix + " Final new events: " + str(len(df_onion)))
  
          return self.ProcessResults(processed=len(df_onion), out_items=df_onion)
docs: Process a DataFrame to compute Onion.
  
          :param items_block: items to be processed. Expects to find a pandas DataFrame.