from __future__ import print_function
from collections import namedtuple
-import types
import gast
def _function_is_compilable(self, target_entity):
"""Determines whether an entity can be compiled at all."""
# TODO(mdan): This is just a placeholder. Implement.
- return not isinstance(target_entity, types.BuiltinFunctionType)
+ return not inspect_utils.isbuiltin(target_entity)
def _should_compile(self, node, fqn):
"""Determines whether an entity should be compiled in the context."""
unknown_arg_value = object() # Sentinel for arguments of unknown value
- if tf_inspect.isbuiltin(f):
+ if inspect_utils.isbuiltin(f):
return builtins.dynamic_builtin(f, *args, **kwargs)
if tf_inspect.isfunction(f) or tf_inspect.ismethod(f):
from __future__ import print_function
import itertools
+import types
import six
from tensorflow.python.util import tf_inspect
+def isbuiltin(f):
+ # Note these return false for isinstance(f, types.BuiltinFunctionType) so we
+ # need to specifically check for them.
+ if f in (range, int, float):
+ return True
+ if isinstance(f, types.BuiltinFunctionType):
+ return True
+ if tf_inspect.isbuiltin(f):
+ return True
+ return False
+
+
def getnamespace(f):
"""Returns the complete namespace of a function.
self.assertTrue(
inspect_utils.getdefiningclass(Subclass.baz, Subclass) is Subclass)
+ def test_isbuiltin(self):
+ self.assertTrue(inspect_utils.isbuiltin(range))
+ self.assertTrue(inspect_utils.isbuiltin(float))
+ self.assertTrue(inspect_utils.isbuiltin(int))
+ self.assertTrue(inspect_utils.isbuiltin(len))
+ self.assertFalse(inspect_utils.isbuiltin(function_decorator))
+
if __name__ == '__main__':
test.main()