Code view:

A painting is a person's account of this edit as text, recorded independently of the node mapping - a rendering often has several equally defensible answers where the mapping has one. Deletions and insertions carry no position on the opposite side in a painting, so that panel draws no caret for them.

Before

…lines 1–11 unchanged (11 lines)
12
13# Python 3.9 fails with pylint 2.3.1 or 2.4.4 with astroid 2.3.3 but works with pylint 2.5.0 and astroid 2.4.0
14# 'Call' object has no attribute 'value'
15result = {None: None}[{}.get('something')]
16
17foo = {}.keys()
18

After

…lines 1–10 unchanged (10 lines)
11import string # pylint: disable=unused-import
12
13# Python 3.9 fails with pylint 2.3.1 or 2.4.4 with astroid 2.3.3 but works with pylint 2.5.0 and astroid 2.4.0
14# 'Call' object has no attribute 'value'
15result = {None: None}[{}.get('something')]
16
17foo = {}.keys() # should trigger disallowed-name, but doesn't in pylint 4.0.0, probably due to https://github.com/pylint-dev/pylint/issues/10652
18

Before

module
expression_statement
string
string_start "\"\"\""
string_content "\nThese test cases verify ansible-test version constraints fo"...
string_end "\"\"\""
future_import_statement
from "from"
__future__ "__future__"
import "import"
dotted_name
identifier "annotations"
comment "# Python 3.8 fails with astroid 2.2.5 but works on 2.3.3"
comment "# syntax-error: Cannot import 'string' due to syntax error"...
comment "# Python 3.9 fails with astroid 2.2.5 but works on 2.3.3"
comment "# syntax-error: Cannot import 'string' due to syntax error"...
import_statement
import "import"
dotted_name
identifier "string"
comment "# pylint: disable=unused-import"
comment "# Python 3.9 fails with pylint 2.3.1 or 2.4.4 with astroid 2"...
comment "# 'Call' object has no attribute 'value'"
expression_statement (+28 nodes collapsed)
expression_statement
assignment
identifier "foo"
= "="
call
attribute
dictionary
{ "{"
} "}"
. "."
identifier "keys"
argument_list
( "("
) ")"

After

module
expression_statement
string
string_start "\"\"\""
string_content "\nThese test cases verify ansible-test version constraints fo"...
string_end "\"\"\""
future_import_statement
from "from"
__future__ "__future__"
import "import"
dotted_name
identifier "annotations"
comment "# Python 3.8 fails with astroid 2.2.5 but works on 2.3.3"
comment "# syntax-error: Cannot import 'string' due to syntax error"...
comment "# Python 3.9 fails with astroid 2.2.5 but works on 2.3.3"
comment "# syntax-error: Cannot import 'string' due to syntax error"...
import_statement
import "import"
dotted_name
identifier "string"
comment "# pylint: disable=unused-import"
comment "# Python 3.9 fails with pylint 2.3.1 or 2.4.4 with astroid 2"...
comment "# 'Call' object has no attribute 'value'"
expression_statement (+28 nodes collapsed)
expression_statement
assignment
identifier "foo"
= "="
call
attribute
dictionary
{ "{"
} "}"
. "."
identifier "keys"
argument_list
( "("
) ")"
comment "# should trigger disallowed-name, but doesn't in pylint 4.0."...