MCPcopy
hub / github.com/scrapy/scrapy / from_method

Method from_method

scrapy/contracts/__init__.py:137–172  ·  view source on GitHub ↗
(
        self, method: Callable[..., Any], results: TestResult
    )

Source from the content-addressed store, hash-verified

135 return requests
136
137 def from_method(
138 self, method: Callable[..., Any], results: TestResult
139 ) -> Request | None:
140 contracts = self.extract_contracts(method)
141 if contracts:
142 request_cls = Request
143 for contract in contracts:
144 if contract.request_cls is not None:
145 request_cls = contract.request_cls
146
147 # calculate request args
148 args, kwargs = get_spec(request_cls.__init__)
149
150 # Don't filter requests to allow
151 # testing different callbacks on the same URL.
152 kwargs["dont_filter"] = True
153 kwargs["callback"] = method
154
155 for contract in contracts:
156 kwargs = contract.adjust_request_args(kwargs)
157
158 args.remove("self")
159
160 # check if all positional arguments are defined in kwargs
161 if set(args).issubset(set(kwargs)):
162 request = request_cls(**kwargs)
163
164 # execute pre and post hooks in order
165 for contract in reversed(contracts):
166 request = contract.add_pre_hook(request, results)
167 for contract in contracts:
168 request = contract.add_post_hook(request, results)
169
170 self._clean_req(request, method, results)
171 return request
172 return None
173
174 def _clean_req(
175 self, request: Request, method: Callable[..., Any], results: TestResult

Callers 12

from_spiderMethod · 0.95
test_contractsMethod · 0.80
test_cb_kwargsMethod · 0.80
test_metaMethod · 0.80
test_returnsMethod · 0.80
test_returns_asyncMethod · 0.80
test_scrapesMethod · 0.80
test_regexMethod · 0.80
test_errbackMethod · 0.80

Calls 6

extract_contractsMethod · 0.95
_clean_reqMethod · 0.95
get_specFunction · 0.90
add_pre_hookMethod · 0.80
add_post_hookMethod · 0.80
adjust_request_argsMethod · 0.45

Tested by 11

test_contractsMethod · 0.64
test_cb_kwargsMethod · 0.64
test_metaMethod · 0.64
test_returnsMethod · 0.64
test_returns_asyncMethod · 0.64
test_scrapesMethod · 0.64
test_regexMethod · 0.64
test_errbackMethod · 0.64