From eda1a8a7c5b3b61aedd5fcc2e3950b7af28a2926 Mon Sep 17 00:00:00 2001 From: Andrey Rakhmatullin Date: Tue, 12 Nov 2024 22:57:39 +0500 Subject: [PATCH] Deprecate MiddlewareManager.from_settings(). --- scrapy/middleware.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/scrapy/middleware.py b/scrapy/middleware.py index 9e994703d..2b67dcd21 100644 --- a/scrapy/middleware.py +++ b/scrapy/middleware.py @@ -65,13 +65,19 @@ class MiddlewareManager: @classmethod def from_settings(cls, settings: Settings, crawler: Crawler | None = None) -> Self: - if crawler is None: - warnings.warn( - "Calling MiddlewareManager.from_settings() without a Crawler instance is deprecated." - " As this method will be deprecated in the future, please switch to from_crawler().", - category=ScrapyDeprecationWarning, - stacklevel=2, - ) + warnings.warn( + f"{cls.__name__}.from_settings() is deprecated, use from_crawler() instead.", + category=ScrapyDeprecationWarning, + stacklevel=2, + ) + return cls._from_settings(settings, crawler) + + @classmethod + def from_crawler(cls, crawler: Crawler) -> Self: + return cls._from_settings(crawler.settings, crawler) + + @classmethod + def _from_settings(cls, settings: Settings, crawler: Crawler | None = None) -> Self: mwlist = cls._get_mwlist_from_settings(settings) middlewares = [] enabled = [] @@ -102,10 +108,6 @@ class MiddlewareManager: ) return cls(*middlewares) - @classmethod - def from_crawler(cls, crawler: Crawler) -> Self: - return cls.from_settings(crawler.settings, crawler) - def _add_middleware(self, mw: Any) -> None: if hasattr(mw, "open_spider"): self.methods["open_spider"].append(mw.open_spider)