@@ -19,6 +19,7 @@ class PartialRenderChoice:
1919 module : PlainModule | None = None
2020 render_range : list [str ] | None = None
2121 msg : str | None = None
22+ wipe_later_modules : bool = False
2223
2324
2425def spec_change (plain_module : PlainModule ) -> PlainModule | None :
@@ -72,7 +73,7 @@ def detect_partial_rendering(plain_module: PlainModule) -> PartialRender | None:
7273 sc = spec_change (plain_module )
7374 cc = code_change (plain_module )
7475 all_required_modules = plain_module .all_required_modules
75- last_rendered_module_name , last_rendered_frid = plain_module .get_module_last_rendered_functionality ()
76+ last_rendered_module_name , last_rendered_frid = plain_module .get_module_render_status ()
7677 if last_rendered_module_name is None and last_rendered_frid is None :
7778 return None
7879
@@ -84,16 +85,17 @@ def detect_partial_rendering(plain_module: PlainModule) -> PartialRender | None:
8485 module = plain_module
8586 else :
8687 return None
87-
88- module = None
89- for required_module in all_required_modules :
90- if required_module .module_name == last_rendered_module_name :
91- module = required_module
92-
93- if module is None :
94- raise ModuleDoesNotExistError (
95- f"Last rendered module { last_rendered_module_name } not found in { [rmodule .module_name for rmodule in all_required_modules ]} "
96- )
88+ else :
89+ found_module : PlainModule | None = None
90+ for required_module in all_required_modules :
91+ if required_module .module_name == last_rendered_module_name :
92+ found_module = required_module
93+
94+ if found_module is None :
95+ raise ModuleDoesNotExistError (
96+ f"Last rendered module { last_rendered_module_name } not found in { [rmodule .module_name for rmodule in all_required_modules ]} "
97+ )
98+ module = found_module
9799
98100 pr = PartialRender (
99101 last_render_module = module ,
@@ -122,33 +124,47 @@ def detect_partial_rendering(plain_module: PlainModule) -> PartialRender | None:
122124def get_choices (plain_module : PlainModule , partial_render : PartialRender ) -> dict [str , PartialRenderChoice ]:
123125 choices = dict [str , PartialRenderChoice ]()
124126 choice_idx = 1
127+
125128 if not partial_render .last_render_module .is_module_fully_rendered ():
129+ if not partial_render .last_render_frid :
130+ raise ValueError ("Last render FRID is not set for a non-initial module" )
131+
132+ next_frid , next_module = plain_module .get_next_frid (
133+ partial_render .last_render_frid , partial_render .last_render_module .module_name
134+ )
135+ render_range = plain_spec .get_render_range_from (next_frid , next_module .plain_source )
136+ msg = "Continue from"
137+ if next_frid != plain_spec .get_first_frid (next_module .plain_source ):
138+ msg += f" functionality [#5593FF]{ next_frid } [/]"
139+ else :
140+ msg += f" module [#5593FF]{ next_module .module_name } [/]"
141+
142+ choices [str (choice_idx )] = PartialRenderChoice (
143+ module = next_module ,
144+ render_range = render_range ,
145+ msg = msg ,
146+ )
147+ choice_idx += 1
148+
149+ elif partial_render .last_render_module .is_initial_module ():
126150 choices [str (choice_idx )] = PartialRenderChoice (
127151 module = partial_render .last_render_module ,
128152 render_range = None ,
129153 msg = f"Start from module [#5593FF]{ partial_render .last_render_module .module_name } [/]" ,
154+ wipe_later_modules = True ,
130155 )
131156 choice_idx += 1
132- if not partial_render .last_render_module .is_initial_module ():
133- if not partial_render .last_render_frid :
134- raise ValueError ("Last render FRID is not set for a non-initial module" )
135157
136- next_frid , next_module = plain_module .get_next_frid (
137- partial_render .last_render_frid , partial_render .last_render_module .module_name
138- )
139- render_range = plain_spec .get_render_range_from (next_frid , next_module .plain_source )
140- msg = "Continue from"
141- if next_frid != plain_spec .get_first_frid (next_module .plain_source ):
142- msg += f" functionality [#5593FF]{ next_frid } [/]"
143- else :
144- msg += f" module [#5593FF]{ next_module .module_name } [/]"
145-
146- choices [str (choice_idx )] = PartialRenderChoice (
147- module = next_module ,
148- render_range = render_range ,
149- msg = msg ,
150- )
151- choice_idx += 1
158+ else :
159+ next_module = plain_module .get_next_module (partial_render .last_render_module .module_name )
160+ if next_module is None :
161+ next_module = partial_render .last_render_module
162+
163+ choices [str (choice_idx )] = PartialRenderChoice (
164+ module = next_module ,
165+ msg = f"Start from module [#5593FF]{ next_module .module_name } [/]" ,
166+ )
167+ choice_idx += 1
152168
153169 if partial_render .change :
154170 all_affected_modules = list [str ]()
@@ -163,6 +179,7 @@ def get_choices(plain_module: PlainModule, partial_render: PartialRender) -> dic
163179 module = partial_render .change ,
164180 render_range = None ,
165181 msg = f"Re-render all affected modules ([#5593FF]{ ', ' .join (all_affected_modules )} [/])" ,
182+ wipe_later_modules = True ,
166183 )
167184 choice_idx += 1
168185
@@ -174,6 +191,7 @@ def get_choices(plain_module: PlainModule, partial_render: PartialRender) -> dic
174191 module = first_module ,
175192 render_range = None ,
176193 msg = f"Re-render from first module ([#5593FF]{ first_module .module_name } [/])" ,
194+ wipe_later_modules = True ,
177195 )
178196 choice_idx += 1
179197
0 commit comments