示例#1
0
  def test_converted_call_partial_of_allowlisted_function(self):

    def test_fn(_):
      self.assertFalse(converter_testing.is_inside_generated_code())

    converter_testing.allowlist(test_fn)
    api.converted_call(
        functools.partial(test_fn, None), (), None, options=DEFAULT_RECURSIVE)
示例#2
0
    def test_converted_call_allowlisted_method_via_owner(self):
        class TestClass(object):
            def method(self):
                return converter_testing.is_inside_generated_code()

        converter_testing.allowlist(TestClass)

        obj = TestClass()
        self.assertFalse(
            api.converted_call(obj.method, (), {}, options=DEFAULT_RECURSIVE))
示例#3
0
    def test_tf_convert_allowlisted_method(self):
        class TestClass(object):
            def method(self):
                return converter_testing.is_inside_generated_code()

        converter_testing.allowlist(TestClass.method)

        obj = TestClass()
        converted_call = api.tf_convert(
            obj.method, ag_ctx.ControlStatusCtx(status=ag_ctx.Status.ENABLED))
        _, converted_target = tf_decorator.unwrap(converted_call)
        self.assertIs(converted_target.__func__, obj.method.__func__)
示例#4
0
    def test_tf_convert_tf_decorator_allowlist_method(self):
        def wrap(f):
            def wrapper(*args, **kwargs):
                return wrapper.__wrapped__(*args, **kwargs)

            return tf_decorator.make_decorator(f, wrapper)

        class TestClass(object):
            @wrap
            def method(self):
                return converter_testing.is_inside_generated_code()

        converter_testing.allowlist(TestClass.method)

        obj = TestClass()
        # It's intended that tf_convert modifies the original method in this case.
        # This is not desirable, but options are limited.
        api.tf_convert(obj.method,
                       ag_ctx.ControlStatusCtx(status=ag_ctx.Status.ENABLED))
        self.assertTrue(obj.method())