Exemple #1
0
    def test_introspect_operation(self):
        # noinspection PyUnusedLocal
        def f(a: str, b: int = None, c: float = 1, d='A') -> float:
            """
            The doc.

            :param a: the a str
            :param b: the
              b int
            :param c: the c float
            :param d:
                         the d 'A'

            :return: a float
            """

        op_meta_info = OpMetaInfo.introspect_operation(f)
        self.assertEqual(op_meta_info.qualified_name, object_to_qualified_name(f))
        self.assertEqual(op_meta_info.header, dict(description='The doc.'))
        self.assertEqual(len(op_meta_info.inputs), 4)
        self.assertEqual(len(op_meta_info.outputs), 1)
        self.assertIn('a', op_meta_info.inputs)
        self.assertIn('b', op_meta_info.inputs)
        self.assertIn('c', op_meta_info.inputs)
        self.assertIn('d', op_meta_info.inputs)
        self.assertIn(RETURN, op_meta_info.outputs)
        self.assertEqual(op_meta_info.inputs['a'], dict(position=0, data_type=str, description='the a str'))
        self.assertEqual(op_meta_info.inputs['b'], dict(position=1, data_type=int, nullable=True, default_value=None, description='the b int'))
        self.assertEqual(op_meta_info.inputs['c'], dict(position=2, data_type=float, default_value=1, description='the c float'))
        self.assertEqual(op_meta_info.inputs['d'], dict(position=3, data_type=str, default_value='A', description="the d 'A'"))
        self.assertEqual(op_meta_info.outputs[RETURN], dict(data_type=float, description='a float'))
        self.assertEqual(op_meta_info.has_monitor, False)
        self.assertEqual(op_meta_info.has_named_outputs, False)
        self.assertEqual(op_meta_info.can_cache, True)
Exemple #2
0
    def test_introspect_operation_with_monitor(self):
        # noinspection PyUnusedLocal
        def g(x: float, monitor: Monitor) -> float:
            """The doc."""

        op_meta_info = OpMetaInfo.introspect_operation(g)
        self.assertEqual(op_meta_info.qualified_name, object_to_qualified_name(g))
        self.assertEqual(op_meta_info.header, dict(description='The doc.'))
        self.assertEqual(len(op_meta_info.inputs), 1)
        self.assertEqual(len(op_meta_info.outputs), 1)
        self.assertIn('x', op_meta_info.inputs)
        self.assertNotIn(MONITOR, op_meta_info.inputs)
        self.assertIn(RETURN, op_meta_info.outputs)
        self.assertEqual(op_meta_info.inputs['x'], dict(data_type=float, position=0))
        self.assertEqual(op_meta_info.outputs[RETURN], dict(data_type=float))
        self.assertEqual(op_meta_info.has_monitor, True)
        self.assertEqual(op_meta_info.has_named_outputs, False)