class_docstr: A class used to verify usage of intents and utterances.
class_docstr_tok: ["A","class","used","to","verify","usage","of","intents","and","utterances","."]
docstr: Verifies that the bot behaviour in stories is deterministic.
  
  Args:
      ignore_warnings: When `True`, return `True` even if conflicts were found.
      max_history: Maximal number of events to take into account for conflict
          identification.
  
  Returns:
      `False` is a conflict was found and `ignore_warnings` is `False`.
      `True` otherwise.
docstr_tok: ["Verifies","that","the","bot","behaviour","in","stories","is","deterministic",".","Args",":","ignore_warnings",":","When","`","True","`",",","return","`","True","`","even","if","conflicts","were","found",".","max_history",":","Maximal","number","of","events","to","take","into","account","for","conflict","identification",".","Returns",":","`","False","`","is","a","conflict","was","found","and","`","ignore_warnings","`","is","`","False","`",".","`","True","`","otherwise","."]
code: def verify_story_structure(
      self,
      ignore_warnings: bool = True,
      max_history: Optional[int] = None,
  ) -> bool:
      """Verifies that the bot behaviour in stories is deterministic.
  
      Args:
          ignore_warnings: When `True`, return `True` even if conflicts were found.
          max_history: Maximal number of events to take into account for conflict
              identification.
  
      Returns:
          `False` is a conflict was found and `ignore_warnings` is `False`.
          `True` otherwise.
      """
      logger.info("Story structure validation...")
  
      trackers = TrainingDataGenerator(
          self.story_graph,
          domain=self.domain,
          remove_duplicates=False,
          augmentation_factor=0,
      ).generate_story_trackers()
  
      # Create a list of `StoryConflict` objects
      conflicts = (
          rasa.core.training.story_conflict.find_story_conflicts(
              trackers, self.domain, max_history
          )
      )
  
      if not conflicts:
          logger.info("No story structure conflicts found.")
      else:
          for conflict in conflicts:
              logger.warning(conflict)
  
      return ignore_warnings or not conflicts
  
imports: import logging
  from collections import defaultdict
  from typing import Set, Text, Optional, Dict, Any, List
  import rasa.core.training.story_conflict
  import rasa.shared.nlu.constants
  from rasa.shared.constants import ASSISTANT_ID_DEFAULT_VALUE, ASSISTANT_ID_KEY, CONFIG_MANDATORY_KEYS, DOCS_URL_DOMAINS, DOCS_URL_FORMS, UTTER_PREFIX, DOCS_URL_ACTIONS, REQUIRED_SLOTS_KEY
  from rasa.shared.core import constants
  from rasa.shared.core.constants import MAPPING_CONDITIONS, ACTIVE_LOOP
  from rasa.shared.core.events import ActionExecuted, ActiveLoop
  from rasa.shared.core.events import UserUttered
  from rasa.shared.core.domain import Domain
  from rasa.shared.core.generator import TrainingDataGenerator
  from rasa.shared.core.constants import SlotMappingType, MAPPING_TYPE
  from rasa.shared.core.training_data.structures import StoryGraph
  from rasa.shared.importers.importer import TrainingDataImporter
  from rasa.shared.nlu.training_data.training_data import TrainingData
  import rasa.shared.utils.io
label_desc: Use image node_id 11 for calling the Validator obj's underlying member method code with example usage: obj.verify_story_structure(ignore_warnings, max_history) and returns: unknown