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)
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))
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__)
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())