From a97b4aa6335622d86d0d2225594efa2021b330b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Gra=C3=B1a?= Date: Fri, 10 Jan 2014 13:03:40 -0200 Subject: [PATCH] only warn on direct subclasses of the deprecated class --- scrapy/tests/test_utils_deprecate.py | 3 +++ scrapy/utils/deprecate.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/scrapy/tests/test_utils_deprecate.py b/scrapy/tests/test_utils_deprecate.py index b255ca601..377551d3a 100644 --- a/scrapy/tests/test_utils_deprecate.py +++ b/scrapy/tests/test_utils_deprecate.py @@ -31,6 +31,9 @@ class WarnWhenSubclassedTest(unittest.TestCase): class UserClass(Deprecated): pass + class NoWarnOnMe(UserClass): + pass + self.assertEqual(len(w), 1) msg = w[0] assert issubclass(msg.category, MyWarning) diff --git a/scrapy/utils/deprecate.py b/scrapy/utils/deprecate.py index 252a1eb53..c9dac344a 100644 --- a/scrapy/utils/deprecate.py +++ b/scrapy/utils/deprecate.py @@ -59,7 +59,7 @@ def create_deprecated_class(name, new_class, clsdict=None, def __init__(cls, name, bases, clsdict_): meta = cls.__class__ old = meta.deprecated_class - if (cls is not old) and not (warn_once and meta.warned_on_subclass): + if old in bases and not (warn_once and meta.warned_on_subclass): meta.warned_on_subclass = True msg = subclass_warn_message.format(cls=_clspath(cls), old=_clspath(old),