From 6313b7ff4cf1b6df39fed2531682e1684e4e4023 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Gra=C3=B1a?= Date: Fri, 10 Jan 2014 17:50:05 -0200 Subject: [PATCH] allow deprecation of a class with custom metaclass --- scrapy/tests/test_utils_deprecate.py | 5 +++++ scrapy/utils/deprecate.py | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/scrapy/tests/test_utils_deprecate.py b/scrapy/tests/test_utils_deprecate.py index 6d18478df..2afb780ef 100644 --- a/scrapy/tests/test_utils_deprecate.py +++ b/scrapy/tests/test_utils_deprecate.py @@ -177,3 +177,8 @@ class WarnWhenSubclassedTest(unittest.TestCase): Deprecated = create_deprecated_class('Deprecated', NewName, {'foo': 'bar'}) self.assertEqual(Deprecated.foo, 'bar') + + def test_deprecate_a_class_with_custom_metaclass(self): + Meta1 = type('Meta1', (type,), {}) + New = Meta1('New', (), {}) + Deprecated = create_deprecated_class('Deprecated', New) diff --git a/scrapy/utils/deprecate.py b/scrapy/utils/deprecate.py index da3a4d2ee..6130ad800 100644 --- a/scrapy/utils/deprecate.py +++ b/scrapy/utils/deprecate.py @@ -45,7 +45,7 @@ def create_deprecated_class(name, new_class, clsdict=None, OldName. """ - class DeprecatedClass(type): + class DeprecatedClass(new_class.__class__): deprecated_class = None warned_on_subclass = False