The natural next step from the last-rendered position when no decision is needed: start an unrendered module, continue a partially-rendered one, or advance to the next.
(
plain_module: PlainModule,
plain_module_render_state: PlainModuleRenderState,
force_render: bool,
)
| 174 | |
| 175 | |
| 176 | def _resume_render_choice( |
| 177 | plain_module: PlainModule, |
| 178 | plain_module_render_state: PlainModuleRenderState, |
| 179 | force_render: bool, |
| 180 | ) -> RenderChoice: |
| 181 | """The natural next step from the last-rendered position when no decision is needed: |
| 182 | start an unrendered module, continue a partially-rendered one, or advance to the next. |
| 183 | """ |
| 184 | pr = plain_module_render_state |
| 185 | |
| 186 | if pr.last_render_module.has_no_rendered_functionality(): |
| 187 | return RenderChoice( |
| 188 | module=pr.last_render_module, |
| 189 | render_range=None, |
| 190 | choice_type="module_start", |
| 191 | wipe_later_modules=True, |
| 192 | is_destructive=False, |
| 193 | ) |
| 194 | |
| 195 | if not pr.last_render_module.is_module_fully_rendered(): |
| 196 | if not pr.last_render_frid: |
| 197 | raise ValueError("Last render FRID is not set for a non-initial module") |
| 198 | |
| 199 | next_frid, next_module = plain_module.get_next_frid(pr.last_render_frid, pr.last_render_module.module_name) |
| 200 | render_range = plain_spec.get_render_range_from(next_frid, next_module.plain_source) |
| 201 | return RenderChoice( |
| 202 | module=next_module, |
| 203 | render_range=None if force_render else render_range, |
| 204 | wipe_later_modules=force_render, |
| 205 | choice_type="continue_from_frid", |
| 206 | ) |
| 207 | |
| 208 | next_module = plain_module.get_next_module(pr.last_render_module.module_name) or pr.last_render_module |
| 209 | return RenderChoice( |
| 210 | module=next_module, |
| 211 | render_range=None, |
| 212 | choice_type="module_start", |
| 213 | is_destructive=pr.last_render_module.module_name == plain_module.module_name, |
| 214 | ) |
| 215 | |
| 216 | |
| 217 | def get_render_choices( |
no test coverage detected