Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/requests/hooks.py: 38%
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1"""
2requests.hooks
3~~~~~~~~~~~~~~
5This module provides the capabilities for the Requests hooks system.
7Available hooks:
9``response``:
10 The response generated from a Request.
11"""
13from __future__ import annotations
15from collections.abc import Callable, Iterable
16from typing import TYPE_CHECKING, Any
18if TYPE_CHECKING:
19 from . import _types as _t
20 from .models import Response
22HOOKS: list[str] = ["response"]
25def default_hooks() -> dict[str, list[_t.HookType]]:
26 return {event: [] for event in HOOKS}
29# TODO: response is the only one
32def dispatch_hook(
33 key: str,
34 hooks: _t.HooksInputType | None,
35 hook_data: Response,
36 **kwargs: Any,
37) -> Response:
38 """Dispatches a hook dictionary on a given piece of data."""
39 hooks_dict = hooks or {}
40 hook_list: Iterable[_t.HookType] | _t.HookType | None = hooks_dict.get(key)
41 if hook_list:
42 if isinstance(hook_list, Callable):
43 hook_list = [hook_list]
44 for hook in hook_list:
45 _hook_data = hook(hook_data, **kwargs)
46 if _hook_data is not None:
47 hook_data = _hook_data
48 return hook_data