def is_unknown(t): """Return True if this is an ~unknown.""" if isinstance(t, (pytd.ClassType, pytd.NamedType, pytd.Class, StrictType)): return escape.is_unknown(t.name) elif isinstance(t, str): return escape.is_unknown(t) else: return False
def test_arg_unknowns(self): # test that even with --quick, we still generate ~unknowns for parameters. ty = self.Infer(""" def f(x): return 42 """, quick=True, show_library_calls=True) f = ty.Lookup("f") self.assertEqual(len(f.signatures), 1) s = f.signatures[0] self.assertEqual(len(s.params), 1) p = s.params[0] self.assertTrue(escape.is_unknown(p.type.name)) # Lookup that a class with same _unknown_ name as the param type exists. _ = ty.Lookup(p.type.name)
def VisitClassType(self, node): if escape.is_unknown(node.name): return pytd.ClassType( self.cls_to_canonical_name[self.name_to_cls[node.name]], None) else: return node