def test_policy_predictions_dont_change_persistence(): original_user_message = UserUttered("hi", intent={"name": "greet"}) tracker = DialogueStateTracker.from_events( "Vova", evts=[ ActionExecuted(ACTION_LISTEN_NAME), UserUttered("hi", intent={"name": "greet"}), DefinePrevUserUtteredFeaturization(True), EntitiesAdded(entities=[{ "entity": "entity1", "value": "value1" }]), ], ) user_message: UserUttered = list(tracker.events)[1] # The entities from the policy predictions are accessible assert user_message.entities actual_serialized = user_message.as_dict() # Assert entities predicted by policies are not persisted assert not actual_serialized["parse_data"]["entities"] expected_serialized = original_user_message.as_dict() # don't compare timestamps expected_serialized.pop("timestamp") actual_serialized.pop("timestamp") assert actual_serialized == expected_serialized
async def prepare_token_serialisation( tracker_store: TrackerStore, response_selector_agent: Agent, sender_id: Text ): text = "Good morning" tokenizer = WhitespaceTokenizer(WhitespaceTokenizer.get_default_config()) tokens = tokenizer.tokenize(Message(data={"text": text}), "text") indices = [[t.start, t.end] for t in tokens] tracker = tracker_store.get_or_create_tracker(sender_id=sender_id) parse_data = await response_selector_agent.parse_message(text) event = UserUttered( "Good morning", parse_data.get("intent"), parse_data.get("entities", []), parse_data, ) tracker.update(event) tracker_store.save(tracker) retrieved_tracker = tracker_store.retrieve(sender_id=sender_id) event = retrieved_tracker.get_last_event_for(event_type=UserUttered) event_tokens = event.as_dict().get("parse_data").get("text_tokens") assert event_tokens == indices
async def test_file_broker_properly_logs_newlines(tmp_path: Path): log_file_path = str(tmp_path / "events.log") actual = await EventBroker.create( EndpointConfig(**{"type": "file", "path": log_file_path}) ) event_with_newline = UserUttered("hello \n there") actual.publish(event_with_newline.as_dict()) # reading the events from the file one event per line recovered = [] with open(log_file_path, "r") as log_file: for line in log_file: recovered.append(Event.from_parameters(json.loads(line))) assert recovered == [event_with_newline]