Source code for capytaine.ui.error_messages
import logging
from collections import defaultdict
LOG = logging.getLogger(__name__)
[docs]
def display_grouped_errors(results):
"""Displays errors that occur during the solver execution and groups them according
to the problem type and exception type for easier reading."""
failed_results = defaultdict(list)
for res in results:
if hasattr(res, "exception") and hasattr(res, "problem"):
key = (type(res.exception), str(res.exception), res.problem.omega, res.problem.water_depth, res.problem.forward_speed)
failed_results[key].append(res.problem)
for (exc_type, exc_msg, omega, water_depth, forward_speed), problems in failed_results.items():
nb = len(problems)
if nb > 1:
if forward_speed != 0.0:
LOG.warning("Skipped %d problems for body=%s, omega=%s, water_depth=%s, forward_speed=%s\nbecause of %s(%r)",
nb, problems[0].body.__short_str__(), omega, water_depth, forward_speed, exc_type.__name__, exc_msg)
else:
LOG.warning("Skipped %d problems for body=%s, omega=%s, water_depth=%s\nbecause of %s(%r)",
nb, problems[0].body.__short_str__(), omega, water_depth, exc_type.__name__, exc_msg)
else:
LOG.warning("Skipped %s\nbecause of %s(%r)", problems[0], exc_type.__name__, exc_msg)