Created attachment 1551444 [details] Full log from Copr There are 12 test failures on Python 3.8: =================================== FAILURES =================================== ____________________ FromToLineNoTest.test_callfunc_lineno _____________________ self = <astroid.tests.unittest_builder.FromToLineNoTest testMethod=test_callfunc_lineno> def test_callfunc_lineno(self): stmts = self.astroid.body # on line 4: # function('aeozrijz\ # earzer', hop) discard = stmts[0] self.assertIsInstance(discard, nodes.Expr) self.assertEqual(discard.fromlineno, 4) self.assertEqual(discard.tolineno, 5) callfunc = discard.value self.assertIsInstance(callfunc, nodes.Call) self.assertEqual(callfunc.fromlineno, 4) self.assertEqual(callfunc.tolineno, 5) name = callfunc.func self.assertIsInstance(name, nodes.Name) self.assertEqual(name.fromlineno, 4) self.assertEqual(name.tolineno, 4) strarg = callfunc.args[0] self.assertIsInstance(strarg, nodes.Const) if hasattr(sys, "pypy_version_info"): lineno = 4 else: lineno = 5 # no way for this one in CPython (is 4 actually) > self.assertEqual(strarg.fromlineno, lineno) E AssertionError: 4 != 5 astroid/tests/unittest_builder.py:63: AssertionError _______________ FromToLineNoTest.test_decorated_function_lineno ________________ self = <astroid.tests.unittest_builder.FromToLineNoTest testMethod=test_decorated_function_lineno> def test_decorated_function_lineno(self): astroid = builder.parse( """ @decorator def function( arg): print (arg) """, __name__, ) function = astroid["function"] # XXX discussable, but that's what is expected by pylint right now > self.assertEqual(function.fromlineno, 3) E AssertionError: 4 != 3 astroid/tests/unittest_builder.py:126: AssertionError ______________ TestHelpers.test_object_type_classes_and_functions ______________ self = <astroid.tests.unittest_helpers.TestHelpers testMethod=test_object_type_classes_and_functions> def test_object_type_classes_and_functions(self): ast_nodes = builder.extract_node( """ def generator(): yield class A(object): def test(self): self #@ @classmethod def cls_method(cls): pass @staticmethod def static_method(): pass A #@ A() #@ A.test #@ A().test #@ A.cls_method #@ A().cls_method #@ A.static_method #@ A().static_method #@ generator() #@ """ ) from_self = helpers.object_type(ast_nodes[0]) cls = next(ast_nodes[1].infer()) > self.assert_classes_equal(from_self, cls) astroid/tests/unittest_helpers.py:85: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ astroid/tests/unittest_helpers.py:36: in assert_classes_equal self.assertEqual(cls.name, other.name) E AssertionError: 'A' != 'static_method' E - A E + static_method ____________________ TestBool.test_bool_bool_special_method ____________________ self = <astroid.tests.unittest_inference.TestBool testMethod=test_bool_bool_special_method> def test_bool_bool_special_method(self): ast_nodes = extract_node( """ class FalseClass: def {method}(self): return False class TrueClass: def {method}(self): return True class C(object): def __call__(self): return False class B(object): {method} = C() class LambdaBoolFalse(object): {method} = lambda self: self.foo @property def foo(self): return 0 class FalseBoolLen(object): __len__ = lambda self: self.foo @property def foo(self): return 0 bool(FalseClass) #@ bool(TrueClass) #@ bool(FalseClass()) #@ bool(TrueClass()) #@ bool(B()) #@ bool(LambdaBoolFalse()) #@ bool(FalseBoolLen()) #@ """.format( method=BOOL_SPECIAL_METHOD ) ) expected = [True, True, False, True, False, False, False] for node, expected_value in zip(ast_nodes, expected): inferred = next(node.infer()) > self.assertEqual(inferred.value, expected_value) E AttributeError: 'FunctionDef' object has no attribute 'value' astroid/tests/unittest_inference.py:4344: AttributeError FunctionModelTest.test_builtin_dunder_init_does_not_crash_when_accessing_annotations self = <astroid.tests.unittest_object_model.FunctionModelTest testMethod=test_builtin_dunder_init_does_not_crash_when_accessing_annotations> @test_utils.require_version(minver="3.0") def test_builtin_dunder_init_does_not_crash_when_accessing_annotations(self): ast_node = builder.extract_node( """ class Class: @classmethod def class_method(cls): cls.__init__.__annotations__ #@ """ ) inferred = next(ast_node.infer()) > self.assertIsInstance(inferred, astroid.Dict) E AssertionError: <FunctionDef.class_method l.5 at 0x7fb4b4523bb0> is not an instance of <class 'astroid.node_classes.Dict'> astroid/tests/unittest_object_model.py:470: AssertionError ______________________ SuperTests.test_no_arguments_super ______________________ self = <astroid.tests.unittest_objects.SuperTests testMethod=test_no_arguments_super> @test_utils.require_version(minver="3.0") def test_no_arguments_super(self): ast_nodes = builder.extract_node( """ class First(object): pass class Second(First): def test(self): super() #@ @classmethod def test_classmethod(cls): super() #@ """ ) first = next(ast_nodes[0].infer()) self.assertIsInstance(first, objects.Super) self.assertIsInstance(first.type, bases.Instance) self.assertEqual(first.type.name, "Second") self.assertIsInstance(first.mro_pointer, nodes.ClassDef) self.assertEqual(first.mro_pointer.name, "Second") second = next(ast_nodes[1].infer()) > self.assertIsInstance(second, objects.Super) E AssertionError: <FunctionDef.test_classmethod l.8 at 0x7fb4b3803160> is not an instance of <class 'astroid.objects.Super'> astroid/tests/unittest_objects.py:142: AssertionError ______________________ SuperTests.test_super_bound_model _______________________ self = <astroid.tests.unittest_objects.SuperTests testMethod=test_super_bound_model> def test_super_bound_model(self): ast_nodes = builder.extract_node( """ class First(object): def method(self): pass @classmethod def class_method(cls): pass class Super_Type_Type(First): def method(self): super(Super_Type_Type, Super_Type_Type).method #@ super(Super_Type_Type, Super_Type_Type).class_method #@ @classmethod def class_method(cls): super(Super_Type_Type, Super_Type_Type).method #@ super(Super_Type_Type, Super_Type_Type).class_method #@ class Super_Type_Object(First): def method(self): super(Super_Type_Object, self).method #@ super(Super_Type_Object, self).class_method #@ """ ) # Super(type, type) is the same for both functions and classmethods. first = next(ast_nodes[0].infer()) self.assertIsInstance(first, nodes.FunctionDef) self.assertEqual(first.name, "method") second = next(ast_nodes[1].infer()) self.assertIsInstance(second, bases.BoundMethod) self.assertEqual(second.bound.name, "First") self.assertEqual(second.type, "classmethod") third = next(ast_nodes[2].infer()) self.assertIsInstance(third, nodes.FunctionDef) > self.assertEqual(third.name, "method") E AssertionError: 'class_method' != 'method' E - class_method E + method astroid/tests/unittest_objects.py:303: AssertionError _______ NonRegressionTests.test_decorator_names_inference_error_leaking ________ self = <astroid.tests.unittest_regrtest.NonRegressionTests testMethod=test_decorator_names_inference_error_leaking> def test_decorator_names_inference_error_leaking(self): node = extract_node( """ class Parent(object): @property def foo(self): pass class Child(Parent): @Parent.foo.getter def foo(self): #@ return super(Child, self).foo + ['oink'] """ ) > inferred = next(node.infer()) astroid/tests/unittest_regrtest.py:271: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ astroid/node_classes.py:353: in infer return self._infer(context, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Decorators l.9 at 0x7fb4b333f130>, context = None def _infer(self, context=None): """we don't know how to resolve a statement by default""" # this method is overridden by most concrete classes > raise exceptions.InferenceError( "No inference function for {node!r}.", node=self, context=context ) E astroid.exceptions.InferenceError: No inference function for <Decorators l.9 at 0x7fb4b333f130>. astroid/node_classes.py:731: InferenceError ___________ FunctionNodeTest.test_dunder_class_local_to_classmethod ____________ self = <astroid.tests.unittest_scoped_nodes.FunctionNodeTest testMethod=test_dunder_class_local_to_classmethod> @test_utils.require_version(minver="3.0") def test_dunder_class_local_to_classmethod(self): node = builder.extract_node( """ class MyClass: @classmethod def test(cls): __class__ #@ """ ) inferred = next(node.infer()) > self.assertIsInstance(inferred, nodes.ClassDef) E AssertionError: <FunctionDef.test l.5 at 0x7fb4b2e294f0> is not an instance of <class 'astroid.scoped_nodes.ClassDef'> astroid/tests/unittest_scoped_nodes.py:667: AssertionError _________________ FunctionNodeTest.test_is_abstract_decorated __________________ self = <astroid.tests.unittest_scoped_nodes.FunctionNodeTest testMethod=test_is_abstract_decorated> def test_is_abstract_decorated(self): methods = builder.extract_node( """ import abc class Klass(object): @abc.abstractproperty def prop(self): #@ pass @abc.abstractmethod def method1(self): #@ pass some_other_decorator = lambda x: x @some_other_decorator def method2(self): #@ pass """ ) > self.assertTrue(methods[0].is_abstract(pass_is_abstract=False)) E AttributeError: 'Decorators' object has no attribute 'is_abstract' astroid/tests/unittest_scoped_nodes.py:392: AttributeError ______________ ClassNodeTest.test_function_with_decorator_lineno _______________ self = <astroid.tests.unittest_scoped_nodes.ClassNodeTest testMethod=test_function_with_decorator_lineno> def test_function_with_decorator_lineno(self): data = """ @f(a=2, b=3) def g1(x): print(x) @f(a=2, b=3) def g2(): pass """ astroid = builder.parse(data) > self.assertEqual(astroid["g1"].fromlineno, 4) E AssertionError: 6 != 4 astroid/tests/unittest_scoped_nodes.py:1028: AssertionError __________ ClassNodeTest.test_generator_from_infer_call_result_parent __________ self = <astroid.tests.unittest_scoped_nodes.ClassNodeTest testMethod=test_generator_from_infer_call_result_parent> def test_generator_from_infer_call_result_parent(self): func = builder.extract_node( """ import contextlib @contextlib.contextmanager def test(): #@ yield """ ) > result = next(func.infer_call_result()) E AttributeError: 'Decorators' object has no attribute 'infer_call_result' astroid/tests/unittest_scoped_nodes.py:1649: AttributeError Full log attached. This blocks the 3.8 bootstrapping.
I don't get them with tox in upstream master or 2.2.5: $ git checkout astroid-2.2.5 $ tox -e py38 ... 809 passed, 58 skipped, 15 xfailed, 1 xpassed in 12.96 seconds py38: commands succeeded congratulations :)
I can reproduce the problem upstream iff typed_ast is not installed.
https://src.fedoraproject.org/rpms/python-astroid/pull-request/3
Thanks! Merged the pull request and rebuilt the package: https://koji.fedoraproject.org/koji/taskinfo?taskID=33947688