Skip to content

Commit 7ea9a69

Browse files
committed
fix: small refactors following code review
1 parent 5b1aff9 commit 7ea9a69

File tree

5 files changed

+24
-27
lines changed

5 files changed

+24
-27
lines changed

pyproject.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ include-groups = [
5252
[tool.poetry.group.dev.dependencies]
5353
commitizen = "4.9.1"
5454
pre-commit = "4.3.0"
55-
ipykernel = "^7.1.0"
5655

5756
[tool.poetry.group.test]
5857
optional = true

src/dve/core_engine/backends/implementations/duckdb/duckdb_helpers.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -277,12 +277,12 @@ def get_all_registered_udfs(connection: DuckDBPyConnection) -> set[str]:
277277

278278
def duckdb_rel_to_dictionaries(
279279
entity: DuckDBPyRelation, batch_size=1000
280-
) -> Iterator[list[dict[str, Any]]]:
280+
) -> Iterator[dict[str, Any]]:
281281
"""Iterator converting DuckDBPyRelation to lists of dictionaries.
282282
Avoids issues where dates are getting converted to datetimes using polars as intermediate."""
283283
# TODO - look into float conversion - floats that can't be stored exactly in binary
284284
# TODO - are given to nearest approximation. Tried Decimal, causes issues in arrays
285285
# TODO - with templating (as in complex fields, repr used when str called in jinja templating).
286-
cols: tuple[str] = tuple(entity.columns) # type: ignore
286+
cols: tuple[str] = tuple(entity.columns) # type: ignore
287287
while rows := entity.fetchmany(batch_size):
288-
yield [dict(zip(cols, rw)) for rw in rows]
288+
yield from (dict(zip(cols, rw)) for rw in rows)

src/dve/core_engine/backends/implementations/duckdb/rules.py

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -512,25 +512,23 @@ def notify(self, entities: DuckDBEntities, *, config: Notification) -> Messages:
512512
if config.excluded_columns:
513513
matched = matched.select(StarExpression(exclude=config.excluded_columns))
514514

515-
for chunk in duckdb_rel_to_dictionaries(matched):
516-
for record in chunk:
517-
# NOTE: only templates using values directly accessible in record - nothing nested
518-
# more complex extraction done in reporting module
519-
messages.append(
520-
FeedbackMessage(
521-
entity=config.reporting.reporting_entity_override or config.entity_name,
522-
original_entity=config.entity_name,
523-
record=record, # type: ignore
524-
error_location=config.reporting.legacy_location,
525-
error_message=template_object(config.reporting.message,
526-
record), # type: ignore
527-
failure_type=config.reporting.legacy_error_type,
528-
error_type=config.reporting.legacy_error_type,
529-
error_code=config.reporting.code,
530-
reporting_field=config.reporting.legacy_reporting_field,
531-
reporting_field_name=config.reporting.reporting_field_override,
532-
is_informational=config.reporting.emit in ("warning", "info"),
533-
category=config.reporting.category,
534-
)
515+
for record in duckdb_rel_to_dictionaries(matched):
516+
# NOTE: only templates using values directly accessible in record - nothing nested
517+
# more complex extraction done in reporting module
518+
messages.append(
519+
FeedbackMessage(
520+
entity=config.reporting.reporting_entity_override or config.entity_name,
521+
original_entity=config.entity_name,
522+
record=record, # type: ignore
523+
error_location=config.reporting.legacy_location,
524+
error_message=template_object(config.reporting.message, record), # type: ignore
525+
failure_type=config.reporting.legacy_error_type,
526+
error_type=config.reporting.legacy_error_type,
527+
error_code=config.reporting.code,
528+
reporting_field=config.reporting.legacy_reporting_field,
529+
reporting_field_name=config.reporting.reporting_field_override,
530+
is_informational=config.reporting.emit in ("warning", "info"),
531+
category=config.reporting.category,
535532
)
533+
)
536534
return messages

tests/test_core_engine/test_backends/test_implementations/test_duckdb/test_duckdb_helpers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ def test_duckdb_rel_to_dictionaries(temp_ddb_conn: DuckDBPyConnection,
9090
test_rel = con.query("select dta.* from (select unnest($data) as dta)",
9191
params={"data": data})
9292
res: list = []
93-
for chunk in duckdb_rel_to_dictionaries(test_rel):
94-
res.extend(chunk)
93+
for chunk in duckdb_rel_to_dictionaries(test_rel, 1):
94+
res.append(chunk)
9595

9696
assert res == data
9797

tests/testdata/movies/movies.dischema.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
},
2222
"duration_minutes": "int",
2323
"ratings": {
24-
"type": "float",
24+
"type": "NonNegativeFloat",
2525
"is_array": true
2626
},
2727
"cast": {

0 commit comments

Comments
 (0)