Skip to content

Commit 5b0c0d5

Browse files
refactor: Simplify expand_record per code review feedback
Changes per Daryna's feedback: 1. Removed isinstance(m, list) filter - now checking inside loop 2. Renamed 'matches' to 'extracted' 3. Removed type casts - using 'extracted: Any' instead 4. Renamed 'nested_array' to 'record' (loop var), using 'parent_record' for original 5. Removed 'if not nested_array:' check (redundant with for loop) All 29 tests passing. MyPy check passes. Co-Authored-By: unknown <>
1 parent 6afe474 commit 5b0c0d5

File tree

1 file changed

+17
-18
lines changed

1 file changed

+17
-18
lines changed

airbyte_cdk/sources/declarative/expanders/record_expander.py

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#
44

55
from dataclasses import InitVar, dataclass
6-
from typing import Any, Iterable, List, Mapping, MutableMapping, Optional, Union, cast
6+
from typing import Any, Iterable, List, Mapping, MutableMapping, Optional, Union
77

88
import dpath
99

@@ -66,34 +66,33 @@ def expand_record(self, record: MutableMapping[Any, Any]) -> Iterable[MutableMap
6666
yield record
6767
return
6868

69+
parent_record = record
6970
expand_path = [path.eval(self.config) for path in self._expand_path]
7071

71-
arrays: List[List[Any]] = []
72-
7372
if "*" in expand_path:
74-
matches = cast(Iterable[Any], dpath.values(record, expand_path))
75-
arrays = [m for m in matches if isinstance(m, list)]
73+
extracted: Any = dpath.values(parent_record, expand_path)
74+
for record in extracted:
75+
if isinstance(record, list):
76+
for item in record:
77+
if isinstance(item, dict):
78+
expanded_record = dict(item)
79+
if self.remain_original_record:
80+
expanded_record["original_record"] = parent_record
81+
yield expanded_record
82+
else:
83+
yield item
7684
else:
7785
try:
78-
nested = cast(Any, dpath.get(record, expand_path))
86+
extracted = dpath.get(parent_record, expand_path)
7987
except KeyError:
8088
return
81-
if isinstance(nested, list):
82-
arrays = [nested]
83-
else:
89+
if not isinstance(extracted, list):
8490
return
85-
86-
if not arrays:
87-
return
88-
89-
for nested_array in arrays:
90-
if not nested_array:
91-
continue
92-
for item in nested_array:
91+
for item in extracted:
9392
if isinstance(item, dict):
9493
expanded_record = dict(item)
9594
if self.remain_original_record:
96-
expanded_record["original_record"] = record
95+
expanded_record["original_record"] = parent_record
9796
yield expanded_record
9897
else:
9998
yield item

0 commit comments

Comments
 (0)