docstr: Generates a unique checkpoint name for an or statement.
  
  The name is based on the current story/rule name,
  the current place in the story since the last checkpoint or start,
  the name of the starting checkpoints,
  and the involved intents/e2e messages.
docstr_tok: ["Generates","a","unique","checkpoint","name","for","an","or","statement",".","The","name","is","based","on","the","current","story\/rule","name",",","the","current","place","in","the","story","since","the","last","checkpoint","or","start",",","the","name","of","the","starting","checkpoints",",","and","the","involved","intents\/e2e","messages","."]
code: def _generate_checkpoint_name_for_or_statement(
      self, events: List[Event]
  ) -> str:
      """Generates a unique checkpoint name for an or statement.
  
      The name is based on the current story/rule name,
      the current place in the story since the last checkpoint or start,
      the name of the starting checkpoints,
      and the involved intents/e2e messages.
      """
      sorted_events = sorted([str(m) for m in events])
      start_checkpoint_names = sorted(
          list(
              {
                  chk.name
                  for s in self.current_steps
                  for chk in s.start_checkpoints
              }
          )
      )
      event_names = [
          str(e) for s in self.current_steps for e in s.events
      ]
      # name: to identify the current story or rule
      # events: to identify what has happened so far
      #         within the current story/rule
      # start checkpoint names: to identify the section
      #                         within the current story/rule when there are
      #                         multiple internal checkpoints
      # messages texts or intents: identifying the members of the or statement
      unique_id = (
          f"{self.name}_<>_{'@@@'.join(event_names)}"
          f"_<>_{'@@@'.join(start_checkpoint_names)}"
          f"_<>_{'@@@'.join(sorted_events)}"
      )
      hashed_id = rasa.shared.utils.io.get_text_hash(unique_id)[
          :GENERATED_HASH_LENGTH
      ]
      return f"{GENERATED_CHECKPOINT_PREFIX}OR_{hashed_id}"
  
file_path: rasa/rasa/shared/core/training_data/story_reader/story_step_builder.py
imports: import logging
  from typing import Text, Optional, Dict, Any, List
  import rasa.shared.core.training_data.structures
  import rasa.shared.utils.io
  from rasa.shared.constants import DOCS_URL_STORIES
  from rasa.shared.core.events import UserUttered, Event
  from rasa.shared.core.training_data.structures import Checkpoint, GENERATED_CHECKPOINT_PREFIX, GENERATED_HASH_LENGTH, STORY_START, StoryStep, RuleStep
label_desc: Use image node_id 11 for calling the StoryStepBuilder obj's underlying member method code with example usage: obj._generate_checkpoint_name_for_or_statement(events) and returns: GENERATED_CHECKPOINT_PREFIX, str, hashed_id