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

21 statements  

1""" 

2requests.hooks 

3~~~~~~~~~~~~~~ 

4 

5This module provides the capabilities for the Requests hooks system. 

6 

7Available hooks: 

8 

9``response``: 

10 The response generated from a Request. 

11""" 

12 

13from __future__ import annotations 

14 

15from collections.abc import Callable, Iterable 

16from typing import TYPE_CHECKING, Any 

17 

18if TYPE_CHECKING: 

19 from . import _types as _t 

20 from .models import Response 

21 

22HOOKS: list[str] = ["response"] 

23 

24 

25def default_hooks() -> dict[str, list[_t.HookType]]: 

26 return {event: [] for event in HOOKS} 

27 

28 

29# TODO: response is the only one 

30 

31 

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