def report_best_styles(formatter, finished_styles, evaluations, bestofround, metricdesc,
roundnr):
# type: (CodeFormatter, List[AttemptResult], List[AttemptResult], int, str, int) -> None
"""Report the best style and its metric for the round.
Also report the next best styles with their metrics relative to the best style.
"""
attempts = finished_styles[:]
bestofround = max(0, bestofround)
for attempt in heapq.nsmallest(bestofround, evaluations):
heapq.heappush(attempts, attempt)
for idx, attemptresult in enumerate(heapq.nsmallest(bestofround, attempts)):
if idx == 0:
bestresult = attemptresult
bestmsg = '\nBest distance %s round %d: %s' % (metricdesc, roundnr,
attemptresult.distance)
iprint(INFO_USER, cyan(bestmsg))
iprint(INFO_USER, formatter.styletext(attemptresult.formatstyle))
else:
place = '%d. ' % (idx + 1)
m_diff = distdifference(attemptresult.distance, bestresult.distance)
iprint(INFO_USER, yellow('\n%sbest differential distance %s round %d: %s' %
(place, metricdesc, roundnr, m_diff)))
unique_from, unique_to = deep_difference(bestresult.formatstyle,
attemptresult.formatstyle)
text_from = formatter.styletext(style_make(unique_from))
text_to = formatter.styletext(style_make(unique_to))
separator = ' | '
block = alignedblocks(text_from, text_to, separator, color_right=YELLOW)
iprint(INFO_USER, block)
评论列表
文章目录