Ejemplo n.º 1
0
 def test_unknown(self):
   # pytype represents unannotated function parameters as unknowns. Make sure
   # unknowns don't appear in the traced types.
   src = traces.trace("def f(x): return x")
   trace, = (x for x in src.traces[1] if x.op == "LOAD_FAST")
   pyval, = trace.types
   self.assertIsInstance(pyval, pytd.AnythingType)
Ejemplo n.º 2
0
 def test_traces(self):
     src = traces.trace("")
     trace, = src.traces[1]
     self.assertEqual(trace.op, "LOAD_CONST")
     self.assertEqual(trace.symbol, None)
     pyval, = trace.types
     self.assertEqual(pyval.name, "__builtin__.NoneType")
     self.assertEqual(pyval.cls.name, "__builtin__.NoneType")
Ejemplo n.º 3
0
 def test_py3_class(self):
   src = traces.trace(textwrap.dedent("""
     class Foo(object):
       pass
   """).lstrip())
   trace, = (x for x in src.traces[1] if x.op == "LOAD_BUILD_CLASS")
   pyval, = trace.types
   self.assertEqual(pyval.name, "typing.Callable")
Ejemplo n.º 4
0
 def test_py3_class(self):
   src = traces.trace(textwrap.dedent("""\
     class Foo(object):
       pass
   """), config.Options.create(python_version=(3, 6)))
   trace, = (x for x in src.traces[1] if x.op == "LOAD_BUILD_CLASS")
   pyval, = trace.types
   self.assertEqual(pyval.name, "typing.Callable")
Ejemplo n.º 5
0
 def test_external_type(self):
     with file_utils.Tempdir() as d:
         pyi_path = d.create_file("foo.pyi", "class Foo(object): ...")
         imports_info = d.create_file("imports_info", "foo %s" % pyi_path)
         src = traces.trace("import foo\nx = foo.Foo()",
                            config.Options.create(imports_map=imports_info))
     trace, = (x for x in src.traces[2] if x.op == "STORE_NAME")
     pyval, = trace.types
     self.assertEqual(pyval.name, "foo.Foo")
     self.assertEqual(pyval.cls.name, "foo.Foo")
Ejemplo n.º 6
0
def infer_types(source, options):
    """Infer types for the provided source.

  Args:
    source: Text, the source code to analyze.
    options: pytype.config.Options, the options to pass onto Pytype.

  Returns:
    source.Code object with information gathered by Pytype.
  """
    with io.wrap_pytype_exceptions(PytypeError, filename=options.input):
        return traces.trace(source, options)
Ejemplo n.º 7
0
 def _parse(self, text, options=None):
     text = textwrap.dedent(text)
     return ast.parse(text), traces.trace(text, options)
Ejemplo n.º 8
0
 def test_options(self):
     src = traces.trace("", config.Options.create("rumpelstiltskin"))
     self.assertEqual(src.filename, "rumpelstiltskin")
Ejemplo n.º 9
0
def main():
    args = parse(sys.argv[1:])
    src = args.input.read()
    name = args.input.name
    options = config.Options.create(name, python_version=args.python_version)
    traces.trace(src, options).display_traces()
Ejemplo n.º 10
0
 def _parse(self, text):
     text = textwrap.dedent(text)
     return ast.parse(text), traces.trace(text)