Skip to content

Commit 9fbda91

Browse files
SNOW-2183023: removed http_client for now
1 parent 88ccb83 commit 9fbda91

File tree

4 files changed

+63
-108
lines changed

4 files changed

+63
-108
lines changed

DESCRIPTION.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Source code is also available at: https://github.com/snowflakedb/snowflake-conne
1717
- Fixed `write_pandas` special characters usage in the location name.
1818
- Fixed usage of `use_virtual_url` when building the location for gcs storage client.
1919
- Added support for Snowflake OAuth for local applications.
20+
- Removed boto and botocore dependencies.
2021

2122
- v3.15.0(Apr 29,2025)
2223
- Bumped up min boto and botocore version to 1.24.

src/snowflake/connector/http_client.py

Lines changed: 0 additions & 103 deletions
This file was deleted.

src/snowflake/connector/session_manager.py

Lines changed: 61 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
import contextlib
55
import itertools
66
import logging
7-
from typing import TYPE_CHECKING, Callable
7+
from typing import TYPE_CHECKING, Any, Callable, Mapping
88

99
from .compat import urlparse
1010
from .vendored import requests
11-
from .vendored.requests import Session
11+
from .vendored.requests import Response, Session
1212
from .vendored.requests.adapters import HTTPAdapter
1313
from .vendored.requests.exceptions import InvalidProxyURL
1414
from .vendored.requests.utils import prepend_scheme_if_needed, select_proxy
@@ -134,8 +134,11 @@ def make_session(self) -> Session:
134134
return s
135135

136136
@contextlib.contextmanager
137-
def use_session(self, url: str | None = None):
138-
if not self._use_pooling:
137+
def use_session(
138+
self, url: str | None = None, use_pooling: bool | None = None
139+
) -> Session:
140+
use_pooling = use_pooling if use_pooling is not None else self._use_pooling
141+
if not use_pooling:
139142
session = self.make_session()
140143
try:
141144
yield session
@@ -150,6 +153,30 @@ def use_session(self, url: str | None = None):
150153
finally:
151154
pool.return_session(session)
152155

156+
def request(
157+
self,
158+
method: str,
159+
url: str,
160+
*,
161+
headers: Mapping[str, str] | None = None,
162+
timeout_sec: int | None = 3,
163+
use_pooling: bool | None = None,
164+
**kwargs: Any,
165+
) -> Response:
166+
"""Make a single HTTP request handled by this *SessionManager*.
167+
168+
This wraps :pymeth:`use_session` so callers don’t have to manage the
169+
context manager themselves.
170+
"""
171+
with self.use_session(url, use_pooling) as session:
172+
return session.request(
173+
method=method.upper(),
174+
url=url,
175+
headers=headers,
176+
timeout=timeout_sec,
177+
**kwargs,
178+
)
179+
153180
def close(self):
154181
for pool in self._sessions_map.values():
155182
pool.close()
@@ -160,3 +187,33 @@ def clone(self, *, use_pooling: bool | None = None) -> SessionManager:
160187
use_pooling=self._use_pooling if use_pooling is None else use_pooling,
161188
adapter_factory=self._adapter_factory,
162189
)
190+
191+
192+
def request(
193+
method: str,
194+
url: str,
195+
*,
196+
headers: Mapping[str, str] | None = None,
197+
timeout_sec: int | None = 3,
198+
session_manager: SessionManager | None = None,
199+
use_pooling: bool | None = None,
200+
**kwargs: Any,
201+
) -> Response:
202+
"""Convenience wrapper – *requires* an explicit ``session_manager``.
203+
204+
This keeps a one-liner API equivalent to the old
205+
``snowflake.connector.http_client.request`` helper.
206+
"""
207+
if session_manager is None:
208+
raise ValueError(
209+
"session_manager is required - no default session manager available"
210+
)
211+
212+
return session_manager.request(
213+
method=method,
214+
url=url,
215+
headers=headers,
216+
timeout_sec=timeout_sec,
217+
use_pooling=use_pooling,
218+
**kwargs,
219+
)

src/snowflake/connector/wif_util.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515

1616
from .errorcode import ER_WIF_CREDENTIALS_NOT_FOUND
1717
from .errors import ProgrammingError
18-
from .http_client import request as http_request
1918
from .session_manager import SessionManager
19+
from .session_manager import request as http_request
2020
from .vendored import requests
2121
from .vendored.requests import Response
2222

0 commit comments

Comments
 (0)