<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def routing(self, debug=False, anim=None):
 """ Performs routing on Load Area centres to build MV grid with ring topology. Args ---- debug: bool, defaults to False If True, information is printed while routing anim: type, defaults to None Descr #TODO """


        # do the routing
        self._graph = mv_routing.solve(graph=self._graph,
                                       debug=debug,
                                       anim=anim)
        logger.info('==> MV Routing for {} done'.format(repr(self)))

        # connect satellites (step 1, with restrictions like max. string length, max peak load per string)
        self._graph = mv_connect.mv_connect_satellites(mv_grid=self,
                                                       graph=self._graph,
                                                       mode='normal',
                                                       debug=debug)
        logger.info('==> MV Sat1 for {} done'.format(repr(self)))

        # connect satellites to closest line/station on a MV ring that have not been connected in step 1
        self._graph = mv_connect.mv_connect_satellites(mv_grid=self,
                                                       graph=self._graph,
                                                       mode='isolated',
                                                       debug=debug)
        logger.info('==> MV Sat2 for {} done'.format(repr(self)))

        # connect stations
        self._graph = mv_connect.mv_connect_stations(mv_grid_district=self.grid_district,
                                                     graph=self._graph,
                                                     debug=debug)
        logger.info('==> MV Stations for {} done'.format(repr(self)))