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

1import scrapy
2from scrapy.crawler import AsyncCrawlerProcess
3
4
5class CachingHostnameResolverSpider(scrapy.Spider):
6 """
7 Finishes without a twisted.internet.error.DNSLookupError exception
8 """
9
10 name = "caching_hostname_resolver_spider"
11 start_urls = ["http://[::1]"]
12
13
…lines 14–23 unchanged (10 lines)

After

1import scrapy
2from scrapy.crawler import AsyncCrawlerProcess
3
4
5class CachingHostnameResolverSpider(scrapy.Spider):
6 """
7 Finishes without a scrapy.exceptions.CannotResolveHostError exception
8 """
9
10 name = "caching_hostname_resolver_spider"
11 start_urls = ["http://[::1]"]
12
13
…lines 14–23 unchanged (10 lines)

Before

module
import_statement
import "import"
dotted_name
identifier "scrapy"
import_from_statement
from "from"
dotted_name
identifier "scrapy"
. "."
identifier "crawler"
import "import"
dotted_name
identifier "AsyncCrawlerProcess"
class_definition
class "class"
identifier "CachingHostnameResolverSpider"
argument_list
( "("
attribute
identifier "scrapy"
. "."
identifier "Spider"
) ")"
: ":"
block
expression_statement
string
string_start "\"\"\""
string_content "\n Finishes without a twisted.internet.error.DNSLookupErro"...
string_end "\"\"\""
expression_statement
assignment
identifier "name"
= "="
string
string_start "\""
string_content "caching_hostname_resolver_spider"
string_end "\""
expression_statement
assignment
identifier "start_urls"
= "="
list
[ "["
string
string_start "\""
string_content "http://[::1]"
string_end "\""
] "]"
if_statement (+64 nodes collapsed)

After

module
import_statement
import "import"
dotted_name
identifier "scrapy"
import_from_statement
from "from"
dotted_name
identifier "scrapy"
. "."
identifier "crawler"
import "import"
dotted_name
identifier "AsyncCrawlerProcess"
class_definition
class "class"
identifier "CachingHostnameResolverSpider"
argument_list
( "("
attribute
identifier "scrapy"
. "."
identifier "Spider"
) ")"
: ":"
block
expression_statement
string
string_start "\"\"\""
string_content "\n Finishes without a scrapy.exceptions.CannotResolveHostE"...
string_end "\"\"\""
expression_statement
assignment
identifier "name"
= "="
string
string_start "\""
string_content "caching_hostname_resolver_spider"
string_end "\""
expression_statement
assignment
identifier "start_urls"
= "="
list
[ "["
string
string_start "\""
string_content "http://[::1]"
string_end "\""
] "]"
if_statement (+64 nodes collapsed)