11import abc
2+ from collections .abc import Mapping
23from typing import Any , Generic , Protocol , Self , TypeVar , runtime_checkable
34
45from multidict import CIMultiDict
@@ -42,7 +43,7 @@ async def get(
4243 params : dict [str , str ] | None = None ,
4344 json : Any = None ,
4445 data : Any = None ,
45- headers : CIMultiDict | None = None ,
46+ headers : CIMultiDict | Mapping [ str , Any ] | None = None ,
4647 timeout : Any | float | None = None ,
4748 ** kwargs ,
4849 ) -> Response [T_co ]:
@@ -53,7 +54,7 @@ async def get(
5354 params = params ,
5455 json = json ,
5556 data = data ,
56- headers = headers ,
57+ headers = _map_headers ( headers ) ,
5758 timeout = timeout ,
5859 kwargs = kwargs ,
5960 )
@@ -66,7 +67,7 @@ async def post(
6667 params : dict [str , str ] | None = None ,
6768 json : Any = None ,
6869 data : Any = None ,
69- headers : CIMultiDict | None = None ,
70+ headers : CIMultiDict | Mapping [ str , Any ] | None = None ,
7071 timeout : Any | float | None = None ,
7172 ** kwargs ,
7273 ) -> Response [T_co ]:
@@ -77,7 +78,7 @@ async def post(
7778 params = params ,
7879 json = json ,
7980 data = data ,
80- headers = headers ,
81+ headers = _map_headers ( headers ) ,
8182 timeout = timeout ,
8283 kwargs = kwargs ,
8384 )
@@ -90,7 +91,7 @@ async def delete(
9091 params : dict [str , str ] | None = None ,
9192 json : Any = None ,
9293 data : Any = None ,
93- headers : CIMultiDict | None = None ,
94+ headers : CIMultiDict | Mapping [ str , Any ] | None = None ,
9495 timeout : Any | float | None = None ,
9596 ** kwargs ,
9697 ) -> Response [T_co ]:
@@ -101,7 +102,7 @@ async def delete(
101102 params = params ,
102103 json = json ,
103104 data = data ,
104- headers = headers ,
105+ headers = _map_headers ( headers ) ,
105106 timeout = timeout ,
106107 kwargs = kwargs ,
107108 )
@@ -114,7 +115,7 @@ async def put(
114115 params : dict [str , str ] | None = None ,
115116 json : Any = None ,
116117 data : Any = None ,
117- headers : CIMultiDict | None = None ,
118+ headers : CIMultiDict | Mapping [ str , Any ] | None = None ,
118119 timeout : Any | float | None = None ,
119120 ** kwargs ,
120121 ) -> Response [T_co ]:
@@ -125,7 +126,7 @@ async def put(
125126 params = params ,
126127 json = json ,
127128 data = data ,
128- headers = headers ,
129+ headers = _map_headers ( headers ) ,
129130 timeout = timeout ,
130131 kwargs = kwargs ,
131132 )
@@ -138,7 +139,7 @@ async def patch(
138139 params : dict [str , str ] | None = None ,
139140 json : Any = None ,
140141 data : Any = None ,
141- headers : CIMultiDict | None = None ,
142+ headers : CIMultiDict | Mapping [ str , Any ] | None = None ,
142143 timeout : Any | float | None = None ,
143144 ** kwargs ,
144145 ) -> Response [T_co ]:
@@ -149,13 +150,23 @@ async def patch(
149150 params = params ,
150151 json = json ,
151152 data = data ,
152- headers = headers ,
153+ headers = _map_headers ( headers ) ,
153154 timeout = timeout ,
154155 kwargs = kwargs ,
155156 )
156157 )
157158
158159
160+ def _map_headers (headers : CIMultiDict | Mapping [str , Any ] | None ) -> CIMultiDict | None :
161+ if headers is None :
162+ return None
163+
164+ if isinstance (headers , CIMultiDict ):
165+ return headers
166+
167+ return CIMultiDict (headers )
168+
169+
159170@runtime_checkable
160171class Retryable (Protocol [T_contr ]):
161172 async def need_retry (
0 commit comments