MCPcopy
hub / github.com/scrapy/scrapy / _process_chain

Method _process_chain

scrapy/middleware.py:131–153  ·  view source on GitHub ↗
(
        self,
        methodname: str,
        obj: _T,
        *args: Any,
        add_spider: bool = False,
        always_add_spider: bool = False,
        warn_deferred: bool = False,
    )

Source from the content-addressed store, hash-verified

129 self._mw_methods_requiring_spider.add(method)
130
131 async def _process_chain(
132 self,
133 methodname: str,
134 obj: _T,
135 *args: Any,
136 add_spider: bool = False,
137 always_add_spider: bool = False,
138 warn_deferred: bool = False,
139 ) -> _T:
140 methods = cast(
141 "Iterable[Callable[Concatenate[_T, _P], _T]]", self.methods[methodname]
142 )
143 for method in methods:
144 warn = global_object_name(method) if warn_deferred else None
145 if always_add_spider or (
146 add_spider and method in self._mw_methods_requiring_spider
147 ):
148 obj = await ensure_awaitable(
149 method(obj, *(*args, self._spider)), _warn=warn
150 )
151 else:
152 obj = await ensure_awaitable(method(obj, *args), _warn=warn)
153 return obj
154
155 def open_spider(self, spider: Spider) -> Deferred[list[None]]: # pragma: no cover
156 raise NotImplementedError(

Callers 2

process_startMethod · 0.80
process_item_asyncMethod · 0.80

Calls 2

global_object_nameFunction · 0.90
ensure_awaitableFunction · 0.90

Tested by

no test coverage detected