class_docstr: Contains helper methods for managing EventBridge rules for a feature processor.
class_docstr_tok: ["Contains","helper","methods","for","managing","EventBridge","rules","for","a","feature","processor","."]
docstr: Validates the pipeline events.
  
  Args:
      pipeline_events: List of pipeline events.
  Raises:
      ValueError: If pipeline events contain duplicate pipeline names.
docstr_tok: ["Validates","the","pipeline","events",".","Args",":","pipeline_events",":","List","of","pipeline","events",".","Raises",":","ValueError",":","If","pipeline","events","contain","duplicate","pipeline","names","."]
code: def _validate_feature_processor_pipeline_events(
      self, pipeline_events: List[FeatureProcessorPipelineEvents]
  ) -> None:
      """Validates the pipeline events.
  
      Args:
          pipeline_events: List of pipeline events.
      Raises:
          ValueError: If pipeline events contain duplicate pipeline names.
      """
  
      unique_pipelines = {
          event.pipeline_name for event in pipeline_events
      }
      potential_infinite_loop = []
      if len(unique_pipelines) != len(pipeline_events):
          raise ValueError(
              "Pipeline names in pipeline_events must be unique."
          )
  
      for event in pipeline_events:
          if (
              FeatureProcessorPipelineExecutionStatus.EXECUTING
              in event.pipeline_execution_status
          ):
              potential_infinite_loop.append(event.pipeline_name)
      if potential_infinite_loop:
          logger.warning(
              "Potential infinite loop detected for pipelines %s. "
              "Setting pipeline_execution_status to EXECUTING might cause infinite loop. "
              "Please consider a terminal status instead.",
              potential_infinite_loop,
          )
  
imports: from __future__ import absolute_import
  import json
  import logging
  import re
  from typing import Dict, List, Tuple, Optional, Any
  import attr
  from botocore.exceptions import ClientError
  from botocore.paginate import PageIterator
  from sagemaker import Session
  from sagemaker.feature_store.feature_processor._feature_processor_pipeline_events import FeatureProcessorPipelineEvents
  from sagemaker.feature_store.feature_processor._constants import RESOURCE_NOT_FOUND_EXCEPTION, PIPELINE_ARN_REGEX_PATTERN, BASE_EVENT_PATTERN
  from sagemaker.feature_store.feature_processor._enums import FeatureProcessorPipelineExecutionStatus
  from sagemaker.utils import TagsDict
label_desc: Use image node_id 11 for calling the EventBridgeRuleHelper obj's underlying member method code with example usage: obj._validate_feature_processor_pipeline_events(pipeline_events) without return types