Skip to content

Commit 5fcc590

Browse files
committed
Fix for all affected modules
1 parent 2626091 commit 5fcc590

2 files changed

Lines changed: 39 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: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1+
from functools import partial
2+
13
from textual import on
24
from textual.app import App, ComposeResult
35
from textual.binding import Binding
46
from textual.containers import Vertical, VerticalScroll
57
from textual.widgets import Label, ListItem, ListView, Static
68

79
import plain_spec
8-
from partial_rendering import PlainModuleRenderState, RenderChoice
10+
from partial_rendering import PlainModuleRenderState, RenderChoice, get_all_affected_modules_from_change
911
from plain_modules import PlainModule
1012
from tui.components import CustomFooter, TUIComponents
1113

@@ -37,16 +39,12 @@ def __init__(
3739
def get_msg_from_choice(self, render_choice: RenderChoice) -> str:
3840
if render_choice.choice_type == "module_start":
3941
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)}[/])"
42+
elif render_choice.choice_type == "rerender_affected" and self.plain_module_render_state.change is not None:
43+
all_affected_modules = get_all_affected_modules_from_change(
44+
self.plain_module, self.plain_module_render_state
45+
)
46+
47+
return f"Re-render all affected modules ([#5593FF]{', '.join([m.module_name for m in all_affected_modules])}[/])"
5048

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

0 commit comments

Comments
 (0)