Bug 419290 - Fails to build against Python 3.9
Summary: Fails to build against Python 3.9
Status: RESOLVED FIXED
Alias: None
Product: kdev-python
Classification: Developer tools
Component: Language support (show other bugs)
Version: git master
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: Sven Brauch
URL:
Keywords:
Depends on: 411956
Blocks:
  Show dependency treegraph
 
Reported: 2020-03-27 12:35 UTC by Jan Grulich
Modified: 2020-08-22 11:42 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jan Grulich 2020-03-27 12:35:42 UTC
There is a new version of Python (3.9) coming to Fedora 33 and it seems that kdev-python is not able to build against this new version.

See Fedora bug: https://bugzilla.redhat.com/show_bug.cgi?id=1818007
Comment 1 Francis Herne 2020-03-27 15:03:02 UTC
Note the 'blocking' 3.8 support was already done.

Since kdev-python uses internals of the CPython parser, which sees a lot of churn and isn't considered stable API, this is almost guaranteed to happen every release.

There's little point trying to match upstream changes before their first beta, because it's a moving target.

It should be done by the time kdev-python 5.6 is released.
Comment 2 Francis Herne 2020-03-28 14:03:25 UTC
Case in point, this was introduced between 3.9.0a4 and a5, and kdev-python can be built against the former.

The relevant upstream change is
https://bugs.python.org/issue34822

which was committed on March 10th:
https://github.com/python/cpython/commit/13d52c268699f199a8e917a0f1dc4c51e5346c42
Comment 3 Francis Herne 2020-08-19 20:36:28 UTC
Git commit 05e95cac74b0bb3595a6d97da07a12b907385be5 by Francis Herne.
Committed on 19/08/2020 at 20:36.
Pushed by flherne into branch '5.6'.

Initial support for CPython 3.9

This reformats our AST to match that introduced upstream by
 https://bugs.python.org/issue34822 and adjusts the conversion from
 older Python versions' AST to match.

ExtendedSliceAst is removed, in favour of a TupleAst containing
 SliceAsts and/or other expressions.

IndexAst is removed, instead non-slice index expressions are direct
 children of SubscriptAst.

SliceAst and EllipsisAst are now subclasses of ExpressionAst. In the
 latter case I don't understand how it wasn't broken before.

---

The stdlib docfiles are not updated.
 There aren't many changes to builtins in 3.9, but we do need a system to
 re-generate these - perhaps based on Typeshed.

In CPython 3.8 and 3.9 there are several changes to the parser that
 could be useful to us -- particularly end_lineno and end_col_offset.
 This patch doesn't attempt to take advantage of them.

M  +2    -2    CMakeLists.txt
M  +2    -2    duchain/declarationbuilder.cpp
M  +2    -2    duchain/expressionvisitor.cpp
M  +2    -17   parser/ast.cpp
M  +3    -24   parser/ast.h
M  +0    -10   parser/astdefaultvisitor.cpp
M  +0    -4    parser/astdefaultvisitor.h
M  +0    -2    parser/astvisitor.cpp
M  +0    -2    parser/astvisitor.h
M  +2    -0    parser/conversionGenerator.py
M  +22   -5    parser/generated.h
R  +4    -3    parser/python39.sdef [from: parser/python38.sdef - 096% similarity]

https://invent.kde.org/kdevelop/kdev-python/commit/05e95cac74b0bb3595a6d97da07a12b907385be5
Comment 4 Francis Herne 2020-08-22 11:42:11 UTC
Git commit efabd9d4b4884f6e715650a066757009a9647865 by Francis Herne.
Committed on 22/08/2020 at 10:43.
Pushed by flherne into branch '5.5-python39'.

Initial support for CPython 3.9

This reformats our AST to match that introduced upstream by
 https://bugs.python.org/issue34822 and adjusts the conversion from
 older Python versions' AST to match.

ExtendedSliceAst is removed, in favour of a TupleAst containing
 SliceAsts and/or other expressions.

IndexAst is removed, instead non-slice index expressions are direct
 children of SubscriptAst.

SliceAst and EllipsisAst are now subclasses of ExpressionAst. In the
 latter case I don't understand how it wasn't broken before.

---

The stdlib docfiles are not updated.
 There aren't many changes to builtins in 3.9, but we do need a system to
 re-generate these - perhaps based on Typeshed.

In CPython 3.8 and 3.9 there are several changes to the parser that
 could be useful to us -- particularly end_lineno and end_col_offset.
 This patch doesn't attempt to take advantage of them.

M  +2    -2    CMakeLists.txt
M  +2    -2    duchain/declarationbuilder.cpp
M  +2    -2    duchain/expressionvisitor.cpp
M  +2    -17   parser/ast.cpp
M  +3    -24   parser/ast.h
M  +0    -10   parser/astdefaultvisitor.cpp
M  +0    -4    parser/astdefaultvisitor.h
M  +0    -2    parser/astvisitor.cpp
M  +0    -2    parser/astvisitor.h
M  +2    -0    parser/conversionGenerator.py
M  +22   -5    parser/generated.h
R  +4    -3    parser/python39.sdef [from: parser/python38.sdef - 096% similarity]

https://invent.kde.org/kdevelop/kdev-python/commit/efabd9d4b4884f6e715650a066757009a9647865