Check whether inspect.getfile will raise a TypeError and anticipate it.

Anticipate the raise of TypeError from inspect.getfile to prevent the computation of repr() for the error message wich is not used.
Useful for some big pandas arrays.
Fix tentative of #919.
This commit is contained in:
Élie Gouzien authored and Dave Halter committed 2017-05-06 19:40:36 +02:00
1 parent c1c3f35e08
commit a78769954d
1 file changed
+13
+13
View File
@@ -116,8 +116,21 @@ def _load_module(evaluator, path, python_object):
return module
def source_findable(python_object):
"""Check if inspect.getfile has a chance to find the source."""
return (inspect.ismodule(python_object) or
inspect.isclass(python_object) or
inspect.ismethod(python_object) or
inspect.isfunction(python_object) or
inspect.istraceback(python_object) or
inspect.isframe(python_object) or
inspect.iscode(python_object))
def find_syntax_node_name(evaluator, python_object):
try:
if not source_findable(python_object):
raise TypeError # Prevents computation of `repr` within inspect.
path = inspect.getsourcefile(python_object)
except TypeError:
# The type might not be known (e.g. class_with_dict.__weakref__)