| 353 | ) |
| 354 | |
| 355 | def get_part(name, key, highlight): |
| 356 | if isinstance(key, str): |
| 357 | slice_val = ast.Constant(value=key) |
| 358 | else: |
| 359 | slice_val = ast.parse(str(key)).body[0].value |
| 360 | expr = ast.Subscript( |
| 361 | value=ast.Name(id=name, ctx=ast.Load()), |
| 362 | slice=ast.Index(value=slice_val), |
| 363 | ctx=ast.Load(), |
| 364 | ) |
| 365 | ast.fix_missing_locations(expr) |
| 366 | return {"node": expr, "highlight": highlight} |
| 367 | |
| 368 | stu_part = get_part(stu_name, key, state.student_parts.get("highlight")) |
| 369 | sol_part = get_part(sol_name, key, state.solution_parts.get("highlight")) |