MCPcopy Index your code
hub / github.com/Codeplain-ai/codeplain / CodeRenderer

Class CodeRenderer

render_machine/code_renderer.py:19–94  ·  view source on GitHub ↗

Main code renderer class that orchestrates the code generation workflow using a hierarchical state machine.

Source from the content-addressed store, hash-verified

17
18
19class CodeRenderer:
20 """Main code renderer class that orchestrates the code generation workflow using a hierarchical state machine."""
21
22 def __init__(self, render_context: RenderContext):
23 self.render_context = render_context
24 self.state_machine_config = StateMachineConfig()
25
26 # Initialize the state machine
27 states = self.state_machine_config.get_states(self.render_context)
28 transitions = self.state_machine_config.get_transitions(self.render_context)
29
30 self.machine = HierarchicalGraphMachine(
31 model=self.render_context,
32 states=states,
33 transitions=transitions,
34 initial=States.RENDER_INITIALISED.value,
35 )
36 self.render_context.set_machine(self.machine)
37
38 # Get action mappings
39 self.action_map = self.state_machine_config.get_action_map()
40 self.action_result_triggers_map = self.state_machine_config.get_action_result_triggers_map()
41
42 def run(self):
43 """Execute the main rendering workflow."""
44 self.render_context.event_bus.publish(RenderModuleStarted(module_name=self.render_context.module_name))
45 self.render_context.run_state.current_module = self.render_context.module_name
46 previous_action_payload = None
47 previous_state = None
48
49 while True:
50 if self.render_context.enter_pause_event.is_set():
51 self.render_context.event_bus.publish(RenderPaused())
52
53 # don't take sleep time into account for render time
54 self.render_context.run_state.add_to_render_time()
55 while self.render_context.enter_pause_event.is_set():
56 time.sleep(PAUSE_POLL_INTERVAL_SECONDS)
57 self.render_context.run_state.set_last_render_start_timestamp()
58
59 self.render_context.event_bus.publish(
60 RenderStateUpdated(
61 state=self.render_context.state,
62 previous_state=previous_state,
63 snapshot=self.render_context.create_snapshot(),
64 )
65 )
66 previous_state = deepcopy(self.render_context.state)
67 self.render_context.run_state.current_render_state = self.render_context.state
68 self.render_context.script_execution_history.should_update_script_outputs = False
69
70 self.render_context.previous_action_payload = previous_action_payload
71
72 outcome, previous_action_payload = self.action_map[self.render_context.state].execute(
73 self.render_context, previous_action_payload
74 )
75
76 if self.render_context.state == States.RENDER_FAILED.value:

Callers 1

_render_moduleMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected