Deprecate Spider.make_requests_from_url, part 2 (#4412)

This commit is contained in:
nyov 2020-03-12 19:15:49 +00:00 committed by GitHub
parent db9198bc20
commit 3b0820d747
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 1 deletions

View File

@ -78,6 +78,12 @@ class Spider(object_ref):
def make_requests_from_url(self, url):
""" This method is deprecated. """
warnings.warn(
"Spider.make_requests_from_url method is deprecated: "
"it will be removed and not be called by the default "
"Spider.start_requests method in future Scrapy releases. "
"Please override Spider.start_requests method instead."
)
return Request(url, dont_filter=True)
def parse(self, response):

View File

@ -602,13 +602,19 @@ class DeprecationTest(unittest.TestCase):
self.assertEqual(len(list(spider1.start_requests())), 1)
self.assertEqual(len(w), 0)
# spider without overridden make_requests_from_url method
# should issue a warning when called directly
request = spider1.make_requests_from_url("http://www.example.com")
self.assertTrue(isinstance(request, Request))
self.assertEqual(len(w), 1)
# spider with overridden make_requests_from_url issues a warning,
# but the method still works
spider2 = MySpider5()
requests = list(spider2.start_requests())
self.assertEqual(len(requests), 1)
self.assertEqual(requests[0].url, 'http://example.com/foo')
self.assertEqual(len(w), 1)
self.assertEqual(len(w), 2)
class NoParseMethodSpiderTest(unittest.TestCase):