Skip to content

Commit 8311c56

Browse files
committed
feat: utilize all PERF rules
JIRA: TRIVIAL risk: low
1 parent acc0463 commit 8311c56

18 files changed

Lines changed: 120 additions & 133 deletions

File tree

gooddata-dbt/gooddata_dbt/dbt/metrics.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,7 @@ def __init__(self, model_ids: Optional[list[str]], ldm: CatalogDeclarativeModel)
6161

6262
@property
6363
def metrics(self) -> list[DbtModelMetric]:
64-
result = []
65-
for metric_def in self.dbt_catalog["metrics"].values():
66-
result.append(DbtModelMetric.from_dict(metric_def))
64+
result = [DbtModelMetric.from_dict(metric_def) for metric_def in self.dbt_catalog["metrics"].values()]
6765
# Return only gooddata labelled tables marked by model_id (if requested in args)
6866
return [
6967
r

gooddata-dbt/gooddata_dbt/dbt/tables.py

Lines changed: 35 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import json
44
import re
55
from pathlib import Path
6-
from typing import Any, Optional, Union
6+
from typing import Optional, Union
77

88
import attrs
99
from gooddata_sdk import CatalogDeclarativeColumn, CatalogDeclarativeTable, CatalogDeclarativeTables
@@ -306,10 +306,11 @@ def is_primary_key(column: DbtModelColumn) -> bool:
306306
return result
307307

308308
def make_grain(self, table: DbtModelTable) -> list[dict]:
309-
grain = []
310-
for column in table.columns.values():
311-
if self.is_primary_key(column):
312-
grain.append({"id": column.ldm_id, "type": "attribute"})
309+
grain = [
310+
{"id": column.ldm_id, "type": "attribute"}
311+
for column in table.columns.values()
312+
if self.is_primary_key(column)
313+
]
313314
return grain
314315

315316
# TODO - constraints are stored in special nodes
@@ -326,21 +327,22 @@ def make_grain(self, table: DbtModelTable) -> list[dict]:
326327

327328
@staticmethod
328329
def find_role_playing_tables(tables: list[DbtModelTable]) -> dict:
329-
result = {}
330-
for table in tables:
331-
references: dict[str, Any] = {}
332-
for column in table.columns.values():
333-
if column.is_reference():
334-
referenced_table = column.meta.gooddata.referenced_table
335-
if referenced_table is not None:
336-
if referenced_table in references:
337-
references[referenced_table].append(column.name)
338-
else:
339-
references[referenced_table] = [column.name]
340-
for referenced_object_id, columns in references.items():
341-
if len(columns) > 1:
342-
result[referenced_object_id] = columns
343-
return result
330+
return {
331+
referenced_object_id: columns
332+
for table in tables
333+
for column in table.columns.values()
334+
if column.is_reference()
335+
for referenced_table in [column.meta.gooddata.referenced_table]
336+
if referenced_table is not None
337+
for referenced_object_id, columns in {
338+
referenced_table: [
339+
col.name
340+
for col in table.columns.values()
341+
if col.is_reference() and col.meta.gooddata.referenced_table == referenced_table
342+
]
343+
}.items()
344+
if len(columns) > 1
345+
}
344346

345347
def make_references(self, table: DbtModelTable, role_playing_tables: dict) -> list[dict]:
346348
references = []
@@ -369,20 +371,19 @@ def make_references(self, table: DbtModelTable, role_playing_tables: dict) -> li
369371

370372
@staticmethod
371373
def make_facts(table: DbtModelTable) -> list[dict]:
372-
facts = []
373-
for column in table.columns.values():
374-
if column.gooddata_is_fact():
375-
facts.append(
376-
{
377-
"id": column.ldm_id,
378-
# TODO - all titles filled from dbt descriptions, incorrect! No title in dbt models.
379-
"title": column.gooddata_ldm_title,
380-
"description": column.gooddata_ldm_description,
381-
"source_column": column.name,
382-
"source_column_data_type": column.data_type,
383-
"tags": [table.gooddata_ldm_title] + column.tags,
384-
}
385-
)
374+
facts = [
375+
{
376+
"id": column.ldm_id,
377+
# TODO - all titles filled from dbt descriptions, incorrect! No title in dbt models.
378+
"title": column.gooddata_ldm_title,
379+
"description": column.gooddata_ldm_description,
380+
"source_column": column.name,
381+
"source_column_data_type": column.data_type,
382+
"tags": [table.gooddata_ldm_title] + column.tags,
383+
}
384+
for column in table.columns.values()
385+
if column.gooddata_is_fact()
386+
]
386387
return facts
387388

388389
@staticmethod

gooddata-dbt/gooddata_dbt/dbt_plugin.py

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -216,27 +216,26 @@ def create_localized_workspaces(
216216
) -> None:
217217
if data_product.localization is None:
218218
return
219+
try:
220+
from deep_translator import GoogleTranslator
221+
except ImportError:
222+
logger.warning(
223+
"create_localized_workspaces: deep_translator module not found, will not be able to localize workspaces"
224+
)
219225
for to in data_product.localization.to:
220-
try:
221-
from deep_translator import GoogleTranslator
222-
223-
translator_func = GoogleTranslator(
224-
source=data_product.localization.from_language, target=to.language
225-
).translate_batch
226-
logger.info(f"create_localized_workspaces layout_root_path={GOODDATA_LAYOUTS_DIR / data_product.id}")
227-
sdk_facade.generate_localized_workspaces(
228-
workspace_id,
229-
to=to,
230-
data_product=data_product,
231-
translator_func=translator_func,
232-
layout_path=GOODDATA_LAYOUTS_DIR / data_product.id,
233-
provision_workspace=True,
234-
store_layouts=False,
235-
)
236-
except ImportError:
237-
logger.warning(
238-
"create_localized_workspaces: deep_translator module not found, will not be able to localize workspaces"
239-
)
226+
translator_func = GoogleTranslator(
227+
source=data_product.localization.from_language, target=to.language
228+
).translate_batch
229+
logger.info(f"create_localized_workspaces layout_root_path={GOODDATA_LAYOUTS_DIR / data_product.id}")
230+
sdk_facade.generate_localized_workspaces(
231+
workspace_id,
232+
to=to,
233+
data_product=data_product,
234+
translator_func=translator_func,
235+
layout_path=GOODDATA_LAYOUTS_DIR / data_product.id,
236+
provision_workspace=True,
237+
store_layouts=False,
238+
)
240239

241240

242241
def get_table(data: list[list], headers: list[str], fmt: str) -> str:
@@ -296,9 +295,9 @@ def dbt_cloud_stats(
296295
dbt_conn = DbtConnection(credentials=DbtCredentials(account_id=args.account_id, token=args.token))
297296
dbt_tables = DbtModelTables.from_local(args.gooddata_upper_case, all_model_ids)
298297
model_executions = dbt_conn.get_last_execution(environment_id, len(dbt_tables.tables))
299-
exec_list = []
300-
for execution in model_executions:
301-
exec_list.append([execution.unique_id, round(execution.execution_info.execution_time, 2)])
298+
exec_list = [
299+
[execution.unique_id, round(execution.execution_info.execution_time, 2)] for execution in model_executions
300+
]
302301

303302
headers = ["Model ID", "Duration(s)"]
304303
pretty_table = get_table(exec_list, headers, "outline")

gooddata-flight-server/gooddata_flight_server/tasks/temporal_container.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,13 +127,18 @@ def _evict_expired_items(self, now: float) -> list[T]:
127127
#
128128
# this is intentionally done outside the critical section
129129
for value in to_evict:
130-
try:
131-
self._entry_evict_fun(value)
132-
except Exception:
133-
pass
130+
if not self._safe_evict(value):
131+
self._logger.error("temporal_entries_evict_failed", value=value)
134132

135133
return to_evict
136134

135+
def _safe_evict(self, value: T) -> bool:
136+
try:
137+
self._entry_evict_fun(value)
138+
return True
139+
except Exception:
140+
return False
141+
137142
@property
138143
def entry_timeout(self) -> float:
139144
"""

gooddata-flight-server/tests/server/conftest.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,7 @@ def _find_free_port():
3535

3636

3737
def _clean_env_vars():
38-
to_drop = []
39-
for key in os.environ:
40-
if key.startswith("GOODDATA_FLIGHT"):
41-
to_drop.append(key)
38+
to_drop = [key for key in os.environ if key.startswith("GOODDATA_FLIGHT")]
4239

4340
for key in to_drop:
4441
os.environ.pop(key, None)

gooddata-sdk/gooddata_sdk/catalog/data_source/declarative_model/data_source.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,10 @@ def store_to_disk(self, layout_organization_folder: Path) -> None:
8585
def load_from_disk(cls, layout_organization_folder: Path) -> CatalogDeclarativeDataSources:
8686
data_sources_folder = cls.data_sources_folder(layout_organization_folder)
8787
data_source_ids = sorted([p.stem for p in data_sources_folder.iterdir() if p.is_dir()])
88-
data_sources = []
89-
for data_source_id in data_source_ids:
90-
data_sources.append(CatalogDeclarativeDataSource.load_from_disk(data_sources_folder, data_source_id))
88+
data_sources = [
89+
CatalogDeclarativeDataSource.load_from_disk(data_sources_folder, data_source_id)
90+
for data_source_id in data_source_ids
91+
]
9192
return cls(data_sources=data_sources)
9293

9394

gooddata-sdk/gooddata_sdk/catalog/data_source/declarative_model/physical_model/pdm.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,7 @@ def store_to_disk(self, data_source_folder: Path) -> None:
3535
def load_from_disk(cls, data_source_folder: Path) -> CatalogDeclarativeTables:
3636
pdm_folder = get_pdm_folder(data_source_folder)
3737
table_files = sorted([p for p in pdm_folder.glob("*.yaml")])
38-
tables = []
39-
for table_file in table_files:
40-
tables.append(CatalogDeclarativeTable.load_from_disk(table_file))
38+
tables = [CatalogDeclarativeTable.load_from_disk(table_file) for table_file in table_files]
4139
return cls(tables=tables)
4240

4341

gooddata-sdk/gooddata_sdk/catalog/permission/service.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -124,10 +124,10 @@ def get_declarative_organization_permissions(self) -> list[CatalogDeclarativeOrg
124124
List of all declarative organization permissions.
125125
"""
126126

127-
catalog_list = []
128127
organization_permissions = self._layout_api.get_organization_permissions()
129-
for permission in organization_permissions:
130-
catalog_list.append(CatalogDeclarativeOrganizationPermission.from_api(permission))
128+
catalog_list = [
129+
CatalogDeclarativeOrganizationPermission.from_api(permission) for permission in organization_permissions
130+
]
131131
return catalog_list
132132

133133
def put_declarative_organization_permissions(
@@ -143,9 +143,7 @@ def put_declarative_organization_permissions(
143143
None
144144
"""
145145

146-
declarative_organization_permissions = []
147-
for catalog_permission in org_permissions:
148-
declarative_organization_permissions.append(catalog_permission.to_api())
146+
declarative_organization_permissions = [catalog_permission.to_api() for catalog_permission in org_permissions]
149147
self._layout_api.set_organization_permissions(declarative_organization_permissions)
150148

151149
def manage_organization_permissions(

gooddata-sdk/gooddata_sdk/catalog/user/declarative_model/user.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,7 @@ def load_from_disk(cls, layout_organization_folder: Path) -> CatalogDeclarativeU
3131
users_directory = layout_organization_folder / LAYOUT_USERS_DIR
3232
users_file = users_directory / LAYOUT_USERS_FILE
3333
data = read_layout_from_file(users_file)
34-
users = []
35-
for record in data:
36-
users.append(CatalogDeclarativeUser.from_dict(record, camel_case=True))
34+
users = [CatalogDeclarativeUser.from_dict(record, camel_case=True) for record in data]
3735
return cls(users=users)
3836

3937
def store_to_disk(self, layout_organization_folder: Path) -> None:

gooddata-sdk/gooddata_sdk/catalog/user/declarative_model/user_group.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,7 @@ def load_from_disk(cls, layout_organization_folder: Path) -> CatalogDeclarativeU
3030
user_groups_directory = layout_organization_folder / LAYOUT_USER_GROUPS_DIR
3131
user_groups_file = user_groups_directory / LAYOUT_USER_GROUPS_FILE
3232
data = read_layout_from_file(user_groups_file)
33-
user_groups = []
34-
for record in data:
35-
user_groups.append(CatalogDeclarativeUserGroup.from_dict(record, camel_case=True))
33+
user_groups = [CatalogDeclarativeUserGroup.from_dict(record, camel_case=True) for record in data]
3634
return cls(user_groups=user_groups)
3735

3836
def store_to_disk(self, layout_organization_folder: Path) -> None:

0 commit comments

Comments
 (0)