fromkevinbotlib.loggerimportLevelfromkevinbotlib.robotimportBaseRobotclassDemoRobot(BaseRobot):def__init__(self):super().__init__(opmodes=["TestOp1","TestOp2","TestOp3","TestOp4",],# robot's operational modeslog_level=Level.TRACE,# lowset logging levelenable_stderr_logger=True,cycle_time=20,# loop our robot code 20x per second - it is recommended to run much higher in practicemetrics_publish_timer=0,# the test robot doesn't use metrics - see the metrics_robot.py example for a metrics usage example)defrobot_start(self)->None:# runs once as the robot startssuper().robot_start()print("Starting robot...")# print statements are redirected to the KevinbotLib logging system - please don't do this in productiondefrobot_periodic(self,opmode:str,enabled:bool)->None:super().robot_periodic(opmode,enabled)print(f"OpMode {'enabled'ifenabledelse'disabled'}... {opmode}")defopmode_init(self,opmode:str,enabled:bool)->None:super().opmode_init(opmode,enabled)print(f"OpMode {'enabled'ifenabledelse'disabled'} init... {opmode}")defopmode_exit(self,opmode:str,enabled:bool)->None:super().opmode_exit(opmode,enabled)print(f"OpMode {'enabled'ifenabledelse'disabled'} exit... {opmode}")defrobot_end(self)->None:# runs as the robot propares to shutdownsuper().robot_end()print("Ending robot...")if__name__=="__main__":DemoRobot().run()