From 0659341068b6ff0c06a539a88d6fdd48fd20f654 Mon Sep 17 00:00:00 2001 From: Akuli Date: Thu, 19 May 2022 00:39:54 +0300 Subject: [PATCH 1/3] Use `dict` for requests.Session().hooks Fixes #7776 Mutating hooks, as in `session.hooks['response'] = ...`, should work. Reassigning it like `session.hooks = ...` is probably a bad idea, so it will always be a `dict`. --- stubs/requests/requests/sessions.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/requests/requests/sessions.pyi b/stubs/requests/requests/sessions.pyi index 49c69d3da6a6..41793e46de40 100644 --- a/stubs/requests/requests/sessions.pyi +++ b/stubs/requests/requests/sessions.pyi @@ -55,7 +55,7 @@ _Files: TypeAlias = ( | Mapping[str, tuple[str | None, SupportsRead[str | bytes] | str | bytes, str, _TextMapping]] ) _Hook: TypeAlias = Callable[[Response], Any] -_Hooks: TypeAlias = Mapping[str, _Hook | list[_Hook]] +_Hooks: TypeAlias = dict[str, _Hook | list[_Hook]] _HooksInput: TypeAlias = Mapping[str, Iterable[_Hook] | _Hook] _ParamsMappingKeyType: TypeAlias = str | bytes | int | float From a2912b971d8d9e7fb7cda964e94d4cac963234ac Mon Sep 17 00:00:00 2001 From: Akuli Date: Thu, 19 May 2022 00:47:20 +0300 Subject: [PATCH 2/3] try the Any trick --- stubs/requests/requests/sessions.pyi | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/stubs/requests/requests/sessions.pyi b/stubs/requests/requests/sessions.pyi index 41793e46de40..97943056e573 100644 --- a/stubs/requests/requests/sessions.pyi +++ b/stubs/requests/requests/sessions.pyi @@ -55,7 +55,10 @@ _Files: TypeAlias = ( | Mapping[str, tuple[str | None, SupportsRead[str | bytes] | str | bytes, str, _TextMapping]] ) _Hook: TypeAlias = Callable[[Response], Any] -_Hooks: TypeAlias = dict[str, _Hook | list[_Hook]] +# Don't complain if: +# - value is assumed to be a list (which it is by default) +# - a _Hook is assigned directly, without wrapping it in a list (also works) +_Hooks: TypeAlias = dict[str, list[_Hook] | Any] _HooksInput: TypeAlias = Mapping[str, Iterable[_Hook] | _Hook] _ParamsMappingKeyType: TypeAlias = str | bytes | int | float From 95a494cc6dae33fbbf2f9e6b93aff9fdd965c648 Mon Sep 17 00:00:00 2001 From: Akuli Date: Thu, 19 May 2022 00:50:19 +0300 Subject: [PATCH 3/3] just get rid of the type alias --- stubs/requests/requests/sessions.pyi | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/stubs/requests/requests/sessions.pyi b/stubs/requests/requests/sessions.pyi index 97943056e573..96321399d9e0 100644 --- a/stubs/requests/requests/sessions.pyi +++ b/stubs/requests/requests/sessions.pyi @@ -55,10 +55,6 @@ _Files: TypeAlias = ( | Mapping[str, tuple[str | None, SupportsRead[str | bytes] | str | bytes, str, _TextMapping]] ) _Hook: TypeAlias = Callable[[Response], Any] -# Don't complain if: -# - value is assumed to be a list (which it is by default) -# - a _Hook is assigned directly, without wrapping it in a list (also works) -_Hooks: TypeAlias = dict[str, list[_Hook] | Any] _HooksInput: TypeAlias = Mapping[str, Iterable[_Hook] | _Hook] _ParamsMappingKeyType: TypeAlias = str | bytes | int | float @@ -88,7 +84,10 @@ class Session(SessionRedirectMixin): headers: CaseInsensitiveDict[str | bytes] auth: _Auth | None proxies: _TextMapping - hooks: _Hooks + # Don't complain if: + # - value is assumed to be a list (which it is by default) + # - a _Hook is assigned directly, without wrapping it in a list (also works) + hooks: dict[str, list[_Hook] | Any] params: _Params stream: bool verify: None | bool | str