def testSimplifyUnionsWithSuperclassesGeneric(self): src = textwrap.dedent(""" x = ... # type: frozenset[int] or AbstractSet[int] """) expected = textwrap.dedent(""" x = ... # type: AbstractSet[int] """) hierarchy = self.builtins.Visit(visitors.ExtractSuperClassesByName()) visitor = optimize.SimplifyUnionsWithSuperclasses( optimize.SuperClassHierarchy(hierarchy)) ast = self.Parse(src) ast = visitors.LookupClasses(ast, self.builtins) ast = ast.Visit(visitor) self.AssertSourceEquals(ast, expected)
def test_simplify_unions_with_superclasses_generic(self): src = pytd_src(""" x = ... # type: Union[frozenset[int], AbstractSet[int]] """) expected = pytd_src(""" x = ... # type: AbstractSet[int] """) hierarchy = self.builtins.Visit(visitors.ExtractSuperClassesByName()) visitor = optimize.SimplifyUnionsWithSuperclasses( optimize.SuperClassHierarchy(hierarchy)) ast = self.Parse(src) ast = visitors.LookupClasses(ast, self.builtins) ast = ast.Visit(visitor) self.AssertSourceEquals(ast, expected)
def testSimplifyUnionsWithSuperclasses(self): src = textwrap.dedent(""" x = ... # type: int or bool y = ... # type: int or bool or float z = ... # type: list[int] or int """) expected = textwrap.dedent(""" x = ... # type: int y = ... # type: int or float z = ... # type: list[int] or int """) hierarchy = self.builtins.Visit(visitors.ExtractSuperClassesByName()) visitor = optimize.SimplifyUnionsWithSuperclasses( optimize.SuperClassHierarchy(hierarchy)) ast = self.Parse(src) ast = visitors.LookupClasses(ast, self.builtins) ast = ast.Visit(visitor) self.AssertSourceEquals(ast, expected)
def test_simplify_unions_with_superclasses(self): src = pytd_src(""" x = ... # type: Union[int, bool] y = ... # type: Union[int, bool, float] z = ... # type: Union[list[int], int] """) expected = pytd_src(""" x = ... # type: int y = ... # type: Union[int, float] z = ... # type: Union[list[int], int] """) hierarchy = self.builtins.Visit(visitors.ExtractSuperClassesByName()) visitor = optimize.SimplifyUnionsWithSuperclasses( optimize.SuperClassHierarchy(hierarchy)) ast = self.Parse(src) ast = visitors.LookupClasses(ast, self.builtins) ast = ast.Visit(visitor) self.AssertSourceEquals(ast, expected)