def _format_status(session: 'CheckCalibrationSession', router: UrlDispatcher) -> 'CalibrationSessionStatus': pips = session.pipettes # pydantic restricts dictionary keys that can be evaluated. Since # the session pipettes dictionary has a UUID as a key, we must first # convert the UUID to a hex string. instruments = {token.hex: data for token, data in pips.items() if token} current = session.state_machine.current_state.name next = session.state_machine.next_state if next: path = router.get(next.name, '') if path: url = path.url_for() else: url = path links = {'links': {next.name: url}} else: links = {'links': {}} status = CalibrationSessionStatus(instruments=instruments, currentStep=current, nextSteps=links) return status