(self, other_side: Mapping[object, float])
| 249 | ) |
| 250 | |
| 251 | def _repr_compare(self, other_side: Mapping[object, float]) -> List[str]: |
| 252 | import math |
| 253 | |
| 254 | approx_side_as_map = { |
| 255 | k: self._approx_scalar(v) for k, v in self.expected.items() |
| 256 | } |
| 257 | |
| 258 | number_of_elements = len(approx_side_as_map) |
| 259 | max_abs_diff = -math.inf |
| 260 | max_rel_diff = -math.inf |
| 261 | different_ids = [] |
| 262 | for (approx_key, approx_value), other_value in zip( |
| 263 | approx_side_as_map.items(), other_side.values() |
| 264 | ): |
| 265 | if approx_value != other_value: |
| 266 | max_abs_diff = max( |
| 267 | max_abs_diff, abs(approx_value.expected - other_value) |
| 268 | ) |
| 269 | max_rel_diff = max( |
| 270 | max_rel_diff, |
| 271 | abs((approx_value.expected - other_value) / approx_value.expected), |
| 272 | ) |
| 273 | different_ids.append(approx_key) |
| 274 | |
| 275 | message_data = [ |
| 276 | (str(key), str(other_side[key]), str(approx_side_as_map[key])) |
| 277 | for key in different_ids |
| 278 | ] |
| 279 | |
| 280 | return _compare_approx( |
| 281 | self.expected, |
| 282 | message_data, |
| 283 | number_of_elements, |
| 284 | different_ids, |
| 285 | max_abs_diff, |
| 286 | max_rel_diff, |
| 287 | ) |
| 288 | |
| 289 | def __eq__(self, actual) -> bool: |
| 290 | try: |
nothing calls this directly
no test coverage detected