| 228 | return self._process_spider_exception(response, ex) |
| 229 | |
| 230 | async def process_start( |
| 231 | self, spider: Spider | None = None |
| 232 | ) -> AsyncIterator[Any] | None: |
| 233 | if spider: |
| 234 | if self.crawler: |
| 235 | msg = ( |
| 236 | "Passing a spider argument to SpiderMiddlewareManager.process_start() is deprecated" |
| 237 | " and the passed value is ignored." |
| 238 | ) |
| 239 | else: |
| 240 | msg = ( |
| 241 | "Passing a spider argument to SpiderMiddlewareManager.process_start() is deprecated," |
| 242 | " SpiderMiddlewareManager should be instantiated with a Crawler instance instead." |
| 243 | ) |
| 244 | warn(msg, category=ScrapyDeprecationWarning, stacklevel=2) |
| 245 | self._set_compat_spider(spider) |
| 246 | start = self._spider.start() |
| 247 | return await self._process_chain("process_start", start) |
| 248 | |
| 249 | # This method is only needed until _async compatibility methods are removed. |
| 250 | @staticmethod |