Ejemplo n.º 1
0
def test_all_subclasses():
    num = random.randint(1, 10)

    class TestClass:
        pass

    classes = [type(f"TestClass{i}", (TestClass, ), {}) for i in range(num)]

    assert utils.all_subclasses(TestClass) == classes
Ejemplo n.º 2
0
 def resolve_by_type(type_name) -> Type["Slot"]:
     """Returns a slots class by its type name."""
     for cls in utils.all_subclasses(Slot):
         if cls.type_name == type_name:
             return cls
     try:
         return class_from_module_path(type_name)
     except (ImportError, AttributeError):
         raise ValueError(
             "Failed to find slot type, '{}' is neither a known type nor "
             "user-defined. If you are creating your own slot type, make "
             "sure its module path is correct.".format(type_name))
Ejemplo n.º 3
0
 def resolve_by_type(type_name):
     """Returns a slots class by its type name."""
     # 给一个slot类型名称(字符串),返回对应的slot类
     for cls in utils.all_subclasses(Slot):
         if cls.type_name == type_name:
             return cls
     try:
         # Slot子类中没有该种类的类,可以指定lookup_path去查找
         return class_from_module_path(type_name)
     except (ImportError, AttributeError):
         raise ValueError(
             "Failed to find slot type, '{}' is neither a known type nor "
             "user-defined. If you are creating your own slot type, make "
             "sure its module path is correct.".format(type_name))
Ejemplo n.º 4
0
    def resolve_by_type(
        type_name: Text, default: Optional[Type["Event"]] = None
    ) -> Optional[Type["Event"]]:
        """Returns a slots class by its type name."""
        from rasa.core import utils

        for cls in utils.all_subclasses(Event):
            if cls.type_name == type_name:
                return cls
        if type_name == "topic":
            return None  # backwards compatibility to support old TopicSet evts
        elif default is not None:
            return default
        else:
            raise ValueError("Unknown event name '{}'.".format(type_name))
Ejemplo n.º 5
0
    time.sleep(0.01)
    event2 = event_class()

    assert event.timestamp < event2.timestamp


@pytest.mark.parametrize("event_class", [SlotSet, ActionExecuted, FollowupAction])
def test_correct_timestamp_setting(event_class):
    event = event_class("test")
    time.sleep(0.01)
    event2 = event_class("test")

    assert event.timestamp < event2.timestamp


@pytest.mark.parametrize("event_class", utils.all_subclasses(Event))
def test_event_metadata_dict(event_class):
    metadata = {"foo": "bar", "quux": 42}

    # Create the event from a dict that will be accepted by the _from_parameters
    # method of any Event subclass (the values themselves are not important).
    event = Event.from_parameters(
        {
            "metadata": metadata,
            "event": event_class.type_name,
            "parse_data": {},
            "date_time": "2019-11-20T16:09:16Z",
        }
    )
    assert event.as_dict()["metadata"] == metadata