Skip to content

Commit 15a8efc

Browse files
fix type issues
Signed-off-by: varun-edachali-dbx <varun.edachali@databricks.com>
1 parent 2871e05 commit 15a8efc

File tree

3 files changed

+43
-43
lines changed

3 files changed

+43
-43
lines changed

src/databricks/sql/backend/filters.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,6 @@
2323
if TYPE_CHECKING:
2424
from databricks.sql.result_set import ResultSet
2525

26-
# Type variable for the result set type
27-
T = TypeVar("T")
28-
2926
logger = logging.getLogger(__name__)
3027

3128

@@ -82,7 +79,7 @@ def filter_by_column_values(
8279
column_index: int,
8380
allowed_values: List[str],
8481
case_sensitive: bool = False,
85-
) -> Any:
82+
) -> "ResultSet":
8683
"""
8784
Filter a result set by values in a specific column.
8885
@@ -124,7 +121,7 @@ def filter_by_column_values(
124121
@staticmethod
125122
def filter_tables_by_type(
126123
result_set: "ResultSet", table_types: Optional[List[str]] = None
127-
) -> Any:
124+
) -> "ResultSet":
128125
"""
129126
Filter a result set of tables by the specified table types.
130127

src/databricks/sql/backend/sea_backend.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ def execute_command(
328328

329329
if state != CommandState.SUCCEEDED:
330330
raise ServerOperationError(
331-
f"Statement execution did not succeed: {status.error.message}",
331+
f"Statement execution did not succeed: {status.error.message if status.error else 'Unknown error'}",
332332
{
333333
"operation-id": command_id.to_sea_statement_id(),
334334
"diagnostic-info": None,

src/databricks/sql/backend/utils/http_client.py

Lines changed: 40 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import json
22
import logging
33
import requests
4-
from typing import Dict, Any, Optional, Union, List
4+
from typing import Callable, Dict, Any, Optional, Union, List, Tuple
55
from urllib.parse import urljoin
66

77
from databricks.sql.auth.authenticators import AuthProvider
@@ -23,7 +23,7 @@ def __init__(
2323
server_hostname: str,
2424
port: int,
2525
http_path: str,
26-
http_headers: List[tuple],
26+
http_headers: List[Tuple[str, str]],
2727
auth_provider: AuthProvider,
2828
ssl_options: SSLOptions,
2929
**kwargs,
@@ -40,6 +40,7 @@ def __init__(
4040
ssl_options: SSL configuration options
4141
**kwargs: Additional keyword arguments
4242
"""
43+
4344
self.server_hostname = server_hostname
4445
self.port = port
4546
self.http_path = http_path
@@ -48,7 +49,7 @@ def __init__(
4849

4950
self.base_url = f"https://{server_hostname}:{port}"
5051

51-
self.headers = dict(http_headers)
52+
self.headers: Dict[str, str] = dict(http_headers)
5253
self.headers.update({"Content-Type": "application/json"})
5354

5455
self.max_retries = kwargs.get("_retry_stop_after_attempts_count", 30)
@@ -86,6 +87,17 @@ def _get_auth_headers(self) -> Dict[str, str]:
8687
self.auth_provider.add_headers(headers)
8788
return headers
8889

90+
def _get_call(self, method: str) -> Callable:
91+
"""Get the appropriate HTTP method function."""
92+
method = method.upper()
93+
if method == "GET":
94+
return self.session.get
95+
if method == "POST":
96+
return self.session.post
97+
if method == "DELETE":
98+
return self.session.delete
99+
raise ValueError(f"Unsupported HTTP method: {method}")
100+
89101
def _make_request(
90102
self,
91103
method: str,
@@ -100,33 +112,28 @@ def _make_request(
100112
method: HTTP method (GET, POST, DELETE)
101113
path: API endpoint path
102114
data: Request payload data
115+
params: Query parameters
103116
104117
Returns:
105118
Dict[str, Any]: Response data parsed from JSON
106119
107120
Raises:
108121
RequestError: If the request fails
109122
"""
123+
110124
url = urljoin(self.base_url, path)
111-
headers = {**self.headers, **self._get_auth_headers()}
125+
headers: Dict[str, str] = {**self.headers, **self._get_auth_headers()}
112126

113127
logger.debug(f"making {method} request to {url}")
114128

115129
try:
116-
args = {
117-
"url": url,
118-
"headers": headers,
119-
"json": data,
120-
"params": params,
121-
}
122-
if method.upper() == "GET":
123-
response = self.session.get(**args)
124-
elif method.upper() == "POST":
125-
response = self.session.post(**args)
126-
elif method.upper() == "DELETE":
127-
response = self.session.delete(**args)
128-
else:
129-
raise ValueError(f"Unsupported HTTP method: {method}")
130+
call = self._get_call(method)
131+
response = call(
132+
url=url,
133+
headers=headers,
134+
json=data,
135+
params=params,
136+
)
130137

131138
# Check for HTTP errors
132139
response.raise_for_status()
@@ -137,45 +144,41 @@ def _make_request(
137144
# Parse JSON response
138145
if response.content:
139146
result = response.json()
140-
141147
# Log response content (but limit it for large responses)
142-
content_str = json.dumps(result, indent=4, sort_keys=True)
143-
content_str = (
144-
content_str[:1000] + "..."
145-
if len(content_str) > 1000
146-
else content_str
147-
)
148-
logger.debug(f"Response content: {content_str}")
149-
148+
content_str = json.dumps(result)
149+
if len(content_str) > 1000:
150+
logger.debug(
151+
f"Response content (truncated): {content_str[:1000]}..."
152+
)
153+
else:
154+
logger.debug(f"Response content: {content_str}")
150155
return result
151156
return {}
152157

153158
except requests.exceptions.RequestException as e:
154-
# Handle request errors
159+
# Handle request errors and extract details from response if available
155160
error_message = f"SEA HTTP request failed: {str(e)}"
156-
logger.error(error_message)
157161

158-
# Extract error details from response if available
159162
if hasattr(e, "response") and e.response is not None:
163+
status_code = e.response.status_code
160164
try:
161165
error_details = e.response.json()
162166
error_message = (
163167
f"{error_message}: {error_details.get('message', '')}"
164168
)
165169
logger.error(
166-
f"Response status: {e.response.status_code}, Error details: {error_details}"
170+
f"Request failed (status {status_code}): {error_details}"
167171
)
168172
except (ValueError, KeyError):
169-
# If we can't parse the JSON, just log the raw content
170-
content_str = (
173+
# If we can't parse JSON, log raw content
174+
content = (
171175
e.response.content.decode("utf-8", errors="replace")
172176
if isinstance(e.response.content, bytes)
173177
else str(e.response.content)
174178
)
175-
logger.error(
176-
f"Response status: {e.response.status_code}, Raw content: {content_str}"
177-
)
178-
pass
179+
logger.error(f"Request failed (status {status_code}): {content}")
180+
else:
181+
logger.error(error_message)
179182

180183
# Re-raise as a RequestError
181184
from databricks.sql.exc import RequestError

0 commit comments

Comments
 (0)