Skip to content

Commit 3c10308

Browse files
committed
fix dict conversion
method was wrong, and filter on attributes that are in the schema
1 parent 2b881e2 commit 3c10308

2 files changed

Lines changed: 15 additions & 20 deletions

File tree

tap_looker/client.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -41,21 +41,19 @@ def schema_filepath(self) -> Path | None:
4141
"""
4242
return SCHEMAS_DIR / f"{self.name}.json"
4343

44-
def convert_to_dict(self, obj: object) -> dict:
45-
"""Convert object to dictionary."""
46-
if isinstance(obj, Enum):
47-
return obj.value
44+
def convert_to_dict(self, obj):
45+
if hasattr(obj, "items"):
46+
return {key: self.convert_to_dict(value) for key, value in obj.items()}
4847
if isinstance(obj, list):
4948
return [self.convert_to_dict(item) for item in obj]
50-
if isinstance(obj, dict):
51-
return {key: self.convert_to_dict(value) for key, value in obj.items()}
52-
if hasattr(obj, "__dict__"):
53-
return self.convert_to_dict(obj.__dict__)
49+
if isinstance(obj, Enum):
50+
return obj.value
5451
return obj
5552

5653

5754
class LookerSystemActivityStream(LookerStream):
5855
"""Stream class for Looker System Activity streams."""
56+
5957
def __init__(self, tap: Tap) -> None:
6058
"""Initialize the stream object."""
6159
super().__init__(tap)
@@ -84,9 +82,7 @@ def get_records(
8482
"""
8583
result_count: int = ROW_LIMIT
8684
result_max_date: datetime = self.get_starting_timestamp(context)
87-
fields = [
88-
self.replace_prefix(field) for field in list(self.schema["properties"])
89-
]
85+
fields = [self.replace_prefix(field) for field in list(self.schema["properties"])]
9086
while result_count == ROW_LIMIT:
9187
response = self.sdk.run_inline_query(
9288
result_format="json",

tap_looker/streams.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ def get_child_context(self, record: dict, context: Optional[dict]) -> dict:
4444
for explore in record.get("explores", [])
4545
if explore["name"] in self.config.get("filter_explores", [explore["name"]])
4646
]
47-
self.logger.info(record)
4847
return {
4948
"model_name": record["name"],
5049
"explores": explores,
@@ -65,9 +64,8 @@ def get_records(self, context: Optional[Context]) -> Iterable[Record]:
6564
lookml_model_name=context["model_name"],
6665
explore_name=explore_name,
6766
)
68-
explore_dict = self.convert_to_dict(explore)
69-
for key in ["sets", "fields", "joins", "supported_measure_types"]:
70-
explore_dict.pop(key, None)
67+
properties = self.schema.get("properties", {}).keys()
68+
explore_dict = {key: self.convert_to_dict(value) for key, value in explore.items() if key in properties}
7169
yield explore_dict
7270

7371

@@ -85,8 +83,9 @@ def get_records(self, context: Optional[Context]) -> Iterable[Record]:
8583
lookml_model_name=context["model_name"],
8684
explore_name=explore_name,
8785
)
88-
fields = self.convert_to_dict(explore.fields)
89-
for field_type in fields:
90-
for item in fields[field_type]:
91-
item["explore_and_name"] = f"{explore_name}.{item['name']}"
92-
yield item
86+
properties = self.schema.get("properties", {}).keys()
87+
fields = [self.convert_to_dict(field) for field_group in explore.fields.values() for field in field_group]
88+
for field in fields:
89+
field_dict = {key: value for key, value in field.items() if key in properties}
90+
field_dict["explore_and_name"] = f"{explore_name}.{field['name']}"
91+
yield field_dict

0 commit comments

Comments
 (0)