Skip to content

Commit 8770f97

Browse files
committed
Fix for all affected modules
1 parent 44fafd7 commit 8770f97

2 files changed

Lines changed: 38 additions & 19 deletions

File tree

partial_rendering.py

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,34 @@ def get_plain_module_render_state(plain_module: PlainModule) -> PlainModuleRende
116116
return pr
117117

118118

119+
def get_all_affected_modules_from_change(
120+
plain_module: PlainModule,
121+
plain_module_render_state: PlainModuleRenderState,
122+
) -> list[PlainModule]:
123+
all_affected_modules = list[PlainModule]()
124+
125+
if plain_module_render_state.change_type == "spec_change":
126+
start_module = plain_module_render_state.change
127+
elif plain_module_render_state.change_type == "code_change":
128+
if plain_module_render_state.change.is_module_fully_rendered():
129+
start_module = plain_module.get_next_module(plain_module_render_state.change.module_name)
130+
else:
131+
start_module = plain_module_render_state.change
132+
else:
133+
raise ValueError(f"Unknown change type: {plain_module_render_state.change_type}")
134+
135+
affected_module = False
136+
all_modules = plain_module.all_required_modules + [plain_module]
137+
for module in all_modules:
138+
if module.module_name == start_module.module_name:
139+
affected_module = True
140+
141+
if affected_module:
142+
all_affected_modules.append(module)
143+
144+
return all_affected_modules
145+
146+
119147
def get_render_choices(
120148
plain_module: PlainModule,
121149
plain_module_render_state: PlainModuleRenderState,
@@ -165,17 +193,11 @@ def get_render_choices(
165193
choice_idx += 1
166194

167195
if plain_module_render_state.change:
168-
all_affected_modules = list[str]()
169-
affected_module = False
170-
for module in plain_module.all_required_modules:
171-
if module.module_name == plain_module_render_state.change.module_name:
172-
affected_module = True
173-
if affected_module:
174-
all_affected_modules.append(module.module_name)
196+
all_affected_modules = get_all_affected_modules_from_change(plain_module, plain_module_render_state)
175197

176198
if len(all_affected_modules) > 0:
177199
choices[str(choice_idx)] = RenderChoice(
178-
module=plain_module_render_state.change,
200+
module=all_affected_modules[0],
179201
render_range=None,
180202
choice_type="rerender_affected",
181203
wipe_later_modules=True,

tui/plain_module_render_choice_tui.py

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1+
12
from textual import on
23
from textual.app import App, ComposeResult
34
from textual.binding import Binding
45
from textual.containers import Vertical, VerticalScroll
56
from textual.widgets import Label, ListItem, ListView, Static
67

78
import plain_spec
8-
from partial_rendering import PlainModuleRenderState, RenderChoice
9+
from partial_rendering import PlainModuleRenderState, RenderChoice, get_all_affected_modules_from_change
910
from plain_modules import PlainModule
1011
from tui.components import CustomFooter, TUIComponents
1112

@@ -37,16 +38,12 @@ def __init__(
3738
def get_msg_from_choice(self, render_choice: RenderChoice) -> str:
3839
if render_choice.choice_type == "module_start":
3940
return f"Start from module [#5593FF]{render_choice.module.module_name}[/]"
40-
elif render_choice.choice_type == "rerender_affected":
41-
all_affected_modules = list[str]()
42-
affected_module = False
43-
for module in self.plain_module.all_required_modules:
44-
if module.module_name == render_choice.module.module_name:
45-
affected_module = True
46-
if affected_module:
47-
all_affected_modules.append(module.module_name)
48-
49-
return f"Re-render all affected modules ([#5593FF]{', '.join(all_affected_modules)}[/])"
41+
elif render_choice.choice_type == "rerender_affected" and self.plain_module_render_state.change is not None:
42+
all_affected_modules = get_all_affected_modules_from_change(
43+
self.plain_module, self.plain_module_render_state
44+
)
45+
46+
return f"Re-render all affected modules ([#5593FF]{', '.join([m.module_name for m in all_affected_modules])}[/])"
5047

5148
elif render_choice.choice_type == "rerender_from_first":
5249
return f"Re-render from first module ([#5593FF]{render_choice.module.module_name}[/])"

0 commit comments

Comments
 (0)