Skip to content

Commit 43899d6

Browse files
committed
feat: make result store a dataclass
1 parent b391677 commit 43899d6

File tree

4 files changed

+55
-30
lines changed

4 files changed

+55
-30
lines changed

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ dev = [
3131
"pre-commit",
3232
"pytest>=8.0.2",
3333
"pyarrow>=14.0.2",
34+
"pyarrow-stubs>=17.0",
3435
"pandas",
3536
"rich>=13.7.1",
3637
"mypy>=1.14.1",

uv.lock

Lines changed: 38 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

wherobots/db/connection.py

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,10 @@ def __init__(
7272
)
7373
self.__thread.start()
7474

75-
def __enter__(self):
75+
def __enter__(self) -> "Connection":
7676
return self
7777

78-
def __exit__(self, exc_type, exc_val, exc_tb):
78+
def __exit__(self, exc_type, exc_val, exc_tb) -> None:
7979
self.close()
8080

8181
def close(self) -> None:
@@ -175,7 +175,7 @@ def _handle_results(self, execution_id: str, results: Dict[str, Any]) -> Any:
175175
result_compression = results.get("compression")
176176
logging.info(
177177
"Received %d bytes of %s-compressed %s results from %s.",
178-
len(result_bytes),
178+
len(result_bytes) if result_bytes else 0,
179179
result_compression,
180180
result_format,
181181
execution_id,
@@ -216,15 +216,11 @@ def __execute_sql(self, sql: str, handler: Callable[[Any], None]) -> str:
216216
}
217217

218218
if self.__store:
219-
request["store"] = {}
220-
if self.__store.format:
221-
request["store"]["format"] = self.__store.format.value
222-
if self.__store.single:
223-
request["store"]["single"] = str(self.__store.single)
224-
if self.__store.generate_presigned_url:
225-
request["store"]["generate_presigned_url"] = str(
226-
self.__store.generate_presigned_url
227-
)
219+
request["store"] = {
220+
"format": self.__store.format.value if self.__store.format else None,
221+
"single": str(self.__store.single),
222+
"generate_presigned_url": str(self.__store.generate_presigned_url),
223+
}
228224

229225
self.__queries[execution_id] = Query(
230226
sql=sql,

wherobots/db/result_storage.py

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from dataclasses import dataclass
12
from enum import auto
23
from strenum import LowercaseStrEnum
34
from typing import Union
@@ -9,22 +10,13 @@ class StorageFormat(LowercaseStrEnum):
910
GEOJSON = auto()
1011

1112

13+
@dataclass
1214
class Store:
13-
def __init__(
14-
self,
15-
format: Union[StorageFormat, None] = None,
16-
single: bool = False,
17-
generate_presigned_url: bool = False,
18-
):
19-
self.format = format
20-
self.single = single
21-
self.generate_presigned_url = generate_presigned_url
15+
format: Union[StorageFormat, None] = None
16+
single: bool = False
17+
generate_presigned_url: bool = False
18+
19+
def __post_init__(self) -> None:
2220
assert (
23-
single or not generate_presigned_url
21+
self.single or not self.generate_presigned_url
2422
), "Presigned URL can only be generated when single part file is requested."
25-
26-
def __repr__(self):
27-
return f"Store(format={self.format}, single={self.single}, generate_presigned_url={self.generate_presigned_url})"
28-
29-
def __str__(self):
30-
return f"Store(format={self.format}, single={self.single}, generate_presigned_url={self.generate_presigned_url})"

0 commit comments

Comments
 (0)