77from ._network import Lock , NetworkBackend , Semaphore
88from ._parsers import HTTPParser , HTTPStream
99from ._response import Response
10- from ._request import Request
10+ from ._request import Method , Request
1111from ._streams import Stream
1212from ._urls import URL
1313
@@ -29,7 +29,7 @@ async def close(self):
2929
3030 async def request (
3131 self ,
32- method : str ,
32+ method : Method | str ,
3333 url : URL | str ,
3434 headers : Headers | dict [str , str ] | None = None ,
3535 content : Content | Stream | bytes | None = None ,
@@ -41,7 +41,7 @@ async def request(
4141
4242 async def stream (
4343 self ,
44- method : str ,
44+ method : Method | str ,
4545 url : URL | str ,
4646 headers : Headers | dict [str , str ] | None = None ,
4747 content : Content | Stream | bytes | None = None ,
@@ -141,7 +141,7 @@ async def __aexit__(
141141class Connection (Transport ):
142142 def __init__ (self , stream : Stream , origin : URL | str ):
143143 self ._stream = stream
144- self ._origin = URL (origin )
144+ self ._origin = URL (origin ) if not isinstance ( origin , URL ) else origin
145145 self ._keepalive_duration = 5.0
146146 self ._idle_expiry = time .monotonic () + self ._keepalive_duration
147147 self ._request_lock = Lock ()
@@ -183,7 +183,7 @@ async def close(self) -> None:
183183 # Top-level API for working directly with a connection.
184184 async def request (
185185 self ,
186- method : str ,
186+ method : Method | str ,
187187 url : URL | str ,
188188 headers : Headers | typing .Mapping [str , str ] | None = None ,
189189 content : Content | Stream | bytes | None = None ,
@@ -196,7 +196,7 @@ async def request(
196196
197197 async def stream (
198198 self ,
199- method : str ,
199+ method : Method | str ,
200200 url : URL | str ,
201201 headers : Headers | typing .Mapping [str , str ] | None = None ,
202202 content : Content | Stream | bytes | None = None ,
@@ -207,7 +207,7 @@ async def stream(
207207
208208 # Send the request...
209209 async def _send_head (self , request : Request ) -> None :
210- method = request .method . encode ( 'ascii' )
210+ method = bytes ( request .method )
211211 target = request .url .target .encode ('ascii' )
212212 protocol = b'HTTP/1.1'
213213 await self ._parser .send_method_line (method , target , protocol )
0 commit comments