@@ -118,6 +118,15 @@ def map_httpcore_exceptions() -> typing.Iterator[None]:
118118 raise mapped_exc (message ) from exc
119119
120120
121+ def create_proxy (proxy : ProxyTypes | None , ssl_context : ssl .SSLContext ) -> Proxy | None :
122+ if isinstance (proxy , (str , URL )):
123+ proxy_url = proxy if isinstance (proxy , URL ) else URL (proxy )
124+ if proxy_url .scheme == "https" :
125+ return Proxy (url = proxy_url , ssl_context = ssl_context )
126+ return Proxy (url = proxy_url )
127+ return proxy
128+
129+
121130class ResponseStream (SyncByteStream ):
122131 def __init__ (self , httpcore_stream : typing .Iterable [bytes ]) -> None :
123132 self ._httpcore_stream = httpcore_stream
@@ -149,8 +158,8 @@ def __init__(
149158 ) -> None :
150159 import httpcore
151160
152- proxy = Proxy (url = proxy ) if isinstance (proxy , (str , URL )) else proxy
153161 ssl_context = create_ssl_context (verify = verify , cert = cert , trust_env = trust_env )
162+ proxy = create_proxy (proxy , ssl_context )
154163
155164 if proxy is None :
156165 self ._pool = httpcore .ConnectionPool (
@@ -293,8 +302,8 @@ def __init__(
293302 ) -> None :
294303 import httpcore
295304
296- proxy = Proxy (url = proxy ) if isinstance (proxy , (str , URL )) else proxy
297305 ssl_context = create_ssl_context (verify = verify , cert = cert , trust_env = trust_env )
306+ proxy = create_proxy (proxy , ssl_context )
298307
299308 if proxy is None :
300309 self ._pool = httpcore .AsyncConnectionPool (
0 commit comments