mirror of https://github.com/scrapy/scrapy.git
fixed method override check in Python 2
This commit is contained in:
parent
a1e8a8525d
commit
5adacc4dde
|
|
@ -12,6 +12,7 @@ from scrapy.utils.trackref import object_ref
|
|||
from scrapy.utils.url import url_is_from_spider
|
||||
from scrapy.utils.deprecate import create_deprecated_class
|
||||
from scrapy.exceptions import ScrapyDeprecationWarning
|
||||
from scrapy.utils.deprecate import method_is_overridden
|
||||
|
||||
|
||||
class Spider(object_ref):
|
||||
|
|
@ -67,7 +68,7 @@ class Spider(object_ref):
|
|||
|
||||
def start_requests(self):
|
||||
cls = self.__class__
|
||||
if cls.make_requests_from_url is not Spider.make_requests_from_url:
|
||||
if method_is_overridden(cls, Spider, 'make_requests_from_url'):
|
||||
warnings.warn(
|
||||
"Spider.make_requests_from_url method is deprecated; it "
|
||||
"won't be called in future Scrapy releases. Please "
|
||||
|
|
|
|||
|
|
@ -156,3 +156,35 @@ def update_classpath(path):
|
|||
ScrapyDeprecationWarning)
|
||||
return new_path
|
||||
return path
|
||||
|
||||
|
||||
def method_is_overridden(subclass, base_class, method_name):
|
||||
"""
|
||||
Return True if a method named ``method_name`` of a ``base_class``
|
||||
is overridden in a ``subclass``.
|
||||
|
||||
>>> class Base(object):
|
||||
... def foo(self):
|
||||
... pass
|
||||
>>> class Sub1(Base):
|
||||
... pass
|
||||
>>> class Sub2(Base):
|
||||
... def foo(self):
|
||||
... pass
|
||||
>>> class Sub3(Sub1):
|
||||
... def foo(self):
|
||||
... pass
|
||||
>>> class Sub4(Sub2):
|
||||
... pass
|
||||
>>> method_is_overridden(Sub1, Base, 'foo')
|
||||
False
|
||||
>>> method_is_overridden(Sub2, Base, 'foo')
|
||||
True
|
||||
>>> method_is_overridden(Sub3, Base, 'foo')
|
||||
True
|
||||
>>> method_is_overridden(Sub4, Base, 'foo')
|
||||
True
|
||||
"""
|
||||
base_method = getattr(base_class, method_name)
|
||||
sub_method = getattr(subclass, method_name)
|
||||
return base_method.__code__ is not sub_method.__code__
|
||||
|
|
|
|||
Loading…
Reference in New Issue