Exemplo n.º 1
0
  def testAliasPrinting(self):
    a = pytd.Alias("MyList", pytd.GenericType(
        pytd.NamedType("typing.List"), (pytd.AnythingType(),)))
    ty = pytd_utils.CreateModule("test", aliases=(a,))
    expected = textwrap.dedent("""
      from typing import Any, List

      MyList = List[Any]""")
    self.assertMultiLineEqual(expected.strip(), pytd.Print(ty).strip())
Exemplo n.º 2
0
  def testPrintImportsNamedType(self):
    # Can't get tree by parsing so build explicitly
    node = pytd.Constant("x", pytd.NamedType("typing.List"))
    tree = pytd_utils.CreateModule(name=None, constants=(node,))
    expected_src = textwrap.dedent("""
      from typing import List

      x: List
    """).strip()
    res = pytd.Print(tree)
    self.assertMultiLineEqual(res, expected_src)
Exemplo n.º 3
0
 def test_set_module_on_module(self):
   # A module's 'module' attribute should always remain None, and no one
   # should attempt to set it to something besides the module's name or None.
   ast = pytd_utils.CreateModule("some_mod")
   mod = abstract.Module(self._vm, ast.name, {}, ast)
   mod.module = ast.name
   self.assertIsNone(mod.module)
   self.assertEqual(ast.name, mod.full_name)
   mod.module = None
   self.assertIsNone(mod.module)
   self.assertEqual(ast.name, mod.full_name)
   def set_module():
     mod.module = "other_mod"
   self.assertRaises(AssertionError, set_module)
Exemplo n.º 4
0
 def compute_types(self, defs):
   classes = (tuple(self.pytd_classes_for_unknowns()) +
              tuple(self.pytd_classes_for_call_traces()) +
              self.pytd_classes_for_namedtuple_instances())
   functions = tuple(self.pytd_functions_for_call_traces())
   aliases = tuple(self.pytd_aliases())
   ty = pytd_utils.Concat(
       self.pytd_for_types(defs),
       pytd_utils.CreateModule("unknowns", classes=classes,
                               functions=functions, aliases=aliases))
   ty = ty.Visit(optimize.CombineReturnsAndExceptions())
   ty = ty.Visit(optimize.PullInMethodClasses())
   ty = ty.Visit(visitors.DefaceUnresolved(
       [ty, self.loader.concat_all()], "~unknown"))
   return ty.Visit(visitors.AdjustTypeParameters())
Exemplo n.º 5
0
 def _create_empty(self, module_name, filename):
   return self.load_file(module_name, filename,
                         pytd_utils.CreateModule(module_name))
Exemplo n.º 6
0
 def _create_empty(self, module_name, filename):
     ast = self.load_file(module_name, filename,
                          pytd_utils.CreateModule(module_name))
     return ast.Replace(is_package=utils.is_pyi_directory_init(filename))