Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 5 additions & 10 deletions Window_Modern.py
Original file line number Diff line number Diff line change
Expand Up @@ -4283,8 +4283,7 @@ def refresh_excel_file_list(self) -> None:
tree = self.file_tree
if not self._widget_alive(tree):
return
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
self.file_item_paths.clear()

files = self.excel_service.get_all_files()
Expand Down Expand Up @@ -4611,8 +4610,7 @@ def _render_excel_instances_idle_state(self) -> None:
tree = self.running_tree
if not self._widget_alive(tree):
return
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
self.running_item_pids.clear()
self.selected_excel_pids.clear()
tree.insert(
Expand Down Expand Up @@ -4664,8 +4662,7 @@ def _render_excel_instances(
if not self._widget_alive(tree):
self.excel_refresh_inflight = False
return
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
self.running_item_pids.clear()

active_pids = {int(item["pid"]) for item in instances if item.get("pid")}
Expand Down Expand Up @@ -5512,8 +5509,7 @@ def render_available_windows(self) -> None:
self.available_tree = None
return

for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
columns = set(tree["columns"])
filter_text = self.available_filter_var.get().strip().casefold()
for hwnd, window in self.available_windows.items():
Expand Down Expand Up @@ -5611,8 +5607,7 @@ def render_draft_windows(self) -> None:
tree = self.draft_tree
if not self._widget_alive(tree):
return
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
self.selected_draft_indexes.intersection_update(
set(range(len(self.draft_windows)))
)
Expand Down
3 changes: 1 addition & 2 deletions desktop_tabs/approval_tab.py
Original file line number Diff line number Diff line change
Expand Up @@ -567,8 +567,7 @@ def _clear_tree(self) -> None:
tree = self.plan_tree
if tree is None:
return
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
self.plan_items_by_iid.clear()

def _status_detail(self, status: dict[str, Any]) -> str:
Expand Down
6 changes: 2 additions & 4 deletions desktop_tabs/couponcheck_tab.py
Original file line number Diff line number Diff line change
Expand Up @@ -317,8 +317,7 @@ def _render_runs(self, records: list[CouponCheckRunRecord]) -> None:
tree = self.run_tree
if tree is None or not self.host._widget_alive(tree):
return
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
self.records_by_iid.clear()
for index, record in enumerate(records):
iid = f"run::{index}"
Expand Down Expand Up @@ -444,8 +443,7 @@ def _render_risk_items(self, items: list[dict[str, Any]]) -> None:
tree = self.risk_tree
if tree is None or not self.host._widget_alive(tree):
return
for item_id in tree.get_children():
tree.delete(item_id)
tree.delete(*tree.get_children())
self.risk_items_by_iid.clear()
for index, item in enumerate(items):
iid = f"risk::{index}"
Expand Down
3 changes: 1 addition & 2 deletions desktop_tabs/dart_tab.py
Original file line number Diff line number Diff line change
Expand Up @@ -1005,8 +1005,7 @@ def refresh_rows(self) -> None:
selection_key = self.selected_key
self._row_render_generation = getattr(self, "_row_render_generation", 0) + 1
render_generation = self._row_render_generation
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
self.row_keys_by_iid.clear()
rows = list(self.rows)

Expand Down
18 changes: 6 additions & 12 deletions desktop_tabs/db_explorer_tab.py
Original file line number Diff line number Diff line change
Expand Up @@ -306,8 +306,7 @@ def _render_query_tree(
tree = self.query_tree
if tree is None or not self.host._widget_alive(tree):
return
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
for index, query in enumerate(queries):
iid = f"query::{index}"
self.query_iid_to_id[iid] = query.id
Expand Down Expand Up @@ -867,8 +866,7 @@ def _render_map_result(self, result: _MapLoadResult) -> None:
tree = self.map_tree
if tree is None or not self.host._widget_alive(tree):
return
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
self.map_iid_to_table.clear()
self.map_iid_to_concept.clear()
self.map_iid_to_workflow.clear()
Expand Down Expand Up @@ -1479,8 +1477,7 @@ def _render_columns(
tree = self.column_tree
if tree is None or not self.host._widget_alive(tree):
return
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
semantics = {item.column.casefold(): item for item in semantic_columns}
self._column_render_token = getattr(self, "_column_render_token", 0) + 1
render_token = self._column_render_token
Expand Down Expand Up @@ -1515,8 +1512,7 @@ def _render_concept_tables(self, tables: Sequence[DbTableSummary]) -> None:
tree = self.column_tree
if tree is None or not self.host._widget_alive(tree):
return
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
self._column_render_token = getattr(self, "_column_render_token", 0) + 1
render_token = self._column_render_token
row_items = tuple(tables[: self.DETAIL_ITEM_RENDER_LIMIT])
Expand Down Expand Up @@ -1544,8 +1540,7 @@ def _render_concept_relationships(self, relationships: Sequence[Any]) -> None:
tree = self.neighbor_tree
if tree is None or not self.host._widget_alive(tree):
return
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
self.neighbor_iid_to_table.clear()
self._neighbor_render_token = getattr(self, "_neighbor_render_token", 0) + 1
render_token = self._neighbor_render_token
Expand Down Expand Up @@ -1583,8 +1578,7 @@ def _render_neighbors(self, neighbors: list[DbNeighbor]) -> None:
tree = self.neighbor_tree
if tree is None or not self.host._widget_alive(tree):
return
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
self.neighbor_iid_to_table.clear()
self._neighbor_render_token = getattr(self, "_neighbor_render_token", 0) + 1
render_token = self._neighbor_render_token
Expand Down
15 changes: 5 additions & 10 deletions desktop_tabs/db_ontology_tab.py
Original file line number Diff line number Diff line change
Expand Up @@ -690,8 +690,7 @@ def _render_load_result(self, result: _OntologyLoadResult) -> None:
tree = self.concept_tree
if tree is None or not self.host._widget_alive(tree):
return
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
self.concept_iid_to_id.clear()
self.search_iid_to_concept.clear()
self.search_iid_to_recipe.clear()
Expand Down Expand Up @@ -1186,8 +1185,7 @@ def _render_tables(self, tables: Sequence[DbTableSummary]) -> None:
tree = self.table_tree
if tree is None or not self.host._widget_alive(tree):
return
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
self.table_iid_to_key.clear()
for index, table in enumerate(tables):
iid = f"table::{index}"
Expand All @@ -1199,8 +1197,7 @@ def _render_table_columns(self, table: DbTableSummary, columns: Sequence[Any]) -
tree = self.table_tree
if tree is None or not self.host._widget_alive(tree):
return
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
self.table_iid_to_key.clear()
root_iid = "selected-table"
self.table_iid_to_key[root_iid] = table.node_id
Expand All @@ -1219,8 +1216,7 @@ def _render_relationships(self, relationships: Sequence[Any]) -> None:
tree = self.relationship_tree
if tree is None or not self.host._widget_alive(tree):
return
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
for index, relationship in enumerate(relationships):
other = relationship.target if relationship.source == self.selected_concept_id else relationship.source
via = ",".join(relationship.via) or "-"
Expand All @@ -1235,8 +1231,7 @@ def _render_queries(self, queries: Sequence[RegisteredQuery]) -> None:
tree = self.query_tree
if tree is None or not self.host._widget_alive(tree):
return
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
self.query_iid_to_id.clear()
for index, query in enumerate(queries):
iid = f"query::{index}"
Expand Down
3 changes: 1 addition & 2 deletions desktop_tabs/mstsc_tab.py
Original file line number Diff line number Diff line change
Expand Up @@ -286,8 +286,7 @@ def refresh(self) -> None:
tree = self.tree
if tree is None or not self.host._widget_alive(tree):
return
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
self.record_ids_by_iid.clear()

filter_text = self.filter_var.get().strip().casefold()
Expand Down
9 changes: 3 additions & 6 deletions desktop_tabs/ops_cockpit_tab.py
Original file line number Diff line number Diff line change
Expand Up @@ -329,8 +329,7 @@ def _render_status(self, snapshot: dict[str, Any]) -> None:
tree = self.status_tree
if tree is None or not self.host._widget_alive(tree):
return
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
rows = self._status_rows(snapshot)
for index, (name, state, detail) in enumerate(rows):
tree.insert("", "end", iid=f"status::{index}", values=(name, state, detail))
Expand Down Expand Up @@ -426,8 +425,7 @@ def _render_artifacts(self, snapshot: dict[str, Any]) -> None:
tree = self.artifact_tree
if tree is None or not self.host._widget_alive(tree):
return
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
inboxes = snapshot.get("artifact_inboxes", {})
row = 0
if not isinstance(inboxes, dict):
Expand Down Expand Up @@ -460,8 +458,7 @@ def _render_runbooks(self) -> None:
tree = self.runbook_tree
if tree is None or not self.host._widget_alive(tree):
return
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
self._runbook_ids_by_iid.clear()
for index, template in enumerate(self.runbooks.list_templates()):
iid = f"runbook::{index}"
Expand Down
6 changes: 2 additions & 4 deletions desktop_tabs/private_placement_tab.py
Original file line number Diff line number Diff line change
Expand Up @@ -898,8 +898,7 @@ def refresh_rows(self) -> None:
selection_key = self.selected_key
self._row_render_generation = getattr(self, "_row_render_generation", 0) + 1
render_generation = self._row_render_generation
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
self.row_keys_by_iid.clear()
rows = list(self.rows)

Expand Down Expand Up @@ -997,8 +996,7 @@ def _refresh_candidates(self) -> None:
getattr(self, "_candidate_render_generation", 0) + 1
)
render_generation = self._candidate_render_generation
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
if self.selected_key is None:
return
candidates = self.candidates_by_row.get(self.selected_key, [])
Expand Down
6 changes: 2 additions & 4 deletions desktop_tabs/quicksearch_tab.py
Original file line number Diff line number Diff line change
Expand Up @@ -208,8 +208,7 @@ def refresh_paths(self) -> None:
tree = self.path_tree
if tree is None or not self.host._widget_alive(tree):
return
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
self.path_by_iid.clear()
entries = self.service.list_paths()
for index, entry in enumerate(entries):
Expand Down Expand Up @@ -415,8 +414,7 @@ def stop(self) -> None:
def clear_results(self) -> None:
tree = self.result_tree
if tree is not None and self.host._widget_alive(tree):
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
self.result_path_by_iid.clear()
self._update_summary(0)

Expand Down
3 changes: 1 addition & 2 deletions desktop_tabs/shortcuts_tab.py
Original file line number Diff line number Diff line change
Expand Up @@ -304,8 +304,7 @@ def _render_entries(self) -> None:
return
self._entry_render_generation = getattr(self, "_entry_render_generation", 0) + 1
render_generation = self._entry_render_generation
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
category_lookup = {category.id: category.name for category in self.categories}
filtered = self.entries
if self.selected_category_id == "__pinned__":
Expand Down
6 changes: 2 additions & 4 deletions desktop_tabs/workspaces_tab.py
Original file line number Diff line number Diff line change
Expand Up @@ -839,8 +839,7 @@ def _render_workspace_tree(self) -> None:
getattr(self, "_workspace_render_generation", 0) + 1
)
render_generation = self._workspace_render_generation
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
total_apps = 0
workspaces = list(self.workspaces)
if self.selected_workspace_id and any(
Expand Down Expand Up @@ -892,8 +891,7 @@ def _render_app_tree(self) -> None:
return
self._app_render_generation = getattr(self, "_app_render_generation", 0) + 1
render_generation = self._app_render_generation
for item in tree.get_children():
tree.delete(item)
tree.delete(*tree.get_children())
workspace = self._selected_workspace()
if workspace is None:
self._clear_app_form()
Expand Down
4 changes: 2 additions & 2 deletions tests/test_db_explorer_tab.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,8 @@ def __init__(self) -> None:
def get_children(self) -> tuple[str, ...]:
return tuple(self.items)

def delete(self, item: str) -> None:
self.items.pop(item, None)
def delete(self, *items: str) -> None:
for i in items: self.items.pop(i, None)

def insert(
self,
Expand Down
2 changes: 1 addition & 1 deletion tests/test_excel_drag_drop.py
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@ def winfo_exists(self) -> bool:
def get_children(self):
return list(self.rows)

def delete(self, item):
def delete(self, *items):
self.deleted.append(item)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Fix FakeTree.delete to use the variadic items

When this test reaches _render_excel_instances_idle_state, FakeTree.delete is now called as delete('old'), but the updated implementation references item, which is no longer defined after changing the signature to *items. That raises NameError before the row-clearing and idle-row assertions run, so this Excel grid test fails instead of exercising the production code.

Useful? React with 👍 / 👎.

self.rows.pop(item, None)

Expand Down
2 changes: 1 addition & 1 deletion tests/test_outlook_tab.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ def delete(self, *items: str) -> None:
self.items.clear()
return
for item in items:
self.items.pop(item, None)
for i in items: self.items.pop(i, None)

def insert(
self,
Expand Down
2 changes: 1 addition & 1 deletion tests/test_treeview_batch_tab_usage.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ def get_children(self) -> tuple[str, ...]:

def delete(self, *items: str) -> None:
for item in items:
self.items.pop(item, None)
for i in items: self.items.pop(i, None)

def insert(
self,
Expand Down
Loading