Commit 5e1433c
Handle missing paths in GetDeviceInfo
TalkTalk (UK) branded F5364 does not recognise the ModelNumber attribute
requested in GetDeviceInfo, which caused an exception because the response
handler threw for any ActionError. As a result HA could not connect to the
router to retrieve useful info, even though ModelNumber is not essential.
Fixed by:
- Lifting ActionError handling out of the low-level POST into a dedicated
ActionErrorHandler, so callers can react appropriately (and multiple
actions can be handled individually, addressing the previous TODO).
- Adding a suppress_action_errors option so get_value(s)_by_xpath can
ignore unknown-path errors and return None for missing values, while
still raising genuine errors (auth, etc.).
- Using that option in get_device_info's fallback so missing DeviceInfo
attributes are tolerated.
Existing error-raising behaviour is retained for all other calls, which now
invoke ActionErrorHandler.throw_if_error explicitly.
Tests cover the suppression behaviour of get_value(s)_by_xpath, the
end-to-end get_device_info fallback for the reported F5364 case, and the
ActionErrorHandler in isolation (throw_if_error / throw_if_error_at /
from_error_description).
Rebased onto upstream main, preserving the XPath-escaping fix (#476),
get_logs, and the speed-test additions.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent d44f9b0 commit 5e1433c
8 files changed
Lines changed: 649 additions & 48 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| 25 | + | |
25 | 26 | | |
26 | 27 | | |
27 | 28 | | |
28 | 29 | | |
29 | 30 | | |
30 | | - | |
31 | | - | |
32 | 31 | | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | 32 | | |
38 | 33 | | |
39 | | - | |
40 | 34 | | |
41 | 35 | | |
42 | 36 | | |
43 | | - | |
44 | 37 | | |
45 | 38 | | |
46 | 39 | | |
47 | 40 | | |
48 | 41 | | |
49 | 42 | | |
50 | | - | |
51 | | - | |
52 | 43 | | |
53 | 44 | | |
54 | 45 | | |
| |||
240 | 231 | | |
241 | 232 | | |
242 | 233 | | |
243 | | - | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
244 | 238 | | |
245 | | - | |
246 | | - | |
247 | | - | |
248 | | - | |
249 | | - | |
250 | | - | |
251 | | - | |
252 | | - | |
253 | | - | |
254 | | - | |
255 | | - | |
256 | | - | |
257 | | - | |
258 | | - | |
259 | | - | |
260 | | - | |
261 | | - | |
262 | | - | |
263 | | - | |
264 | | - | |
265 | | - | |
266 | | - | |
267 | | - | |
268 | | - | |
269 | | - | |
270 | | - | |
271 | | - | |
272 | | - | |
273 | | - | |
| 239 | + | |
274 | 240 | | |
275 | 241 | | |
276 | 242 | | |
| |||
339 | 305 | | |
340 | 306 | | |
341 | 307 | | |
| 308 | + | |
| 309 | + | |
342 | 310 | | |
343 | 311 | | |
344 | 312 | | |
| |||
352 | 320 | | |
353 | 321 | | |
354 | 322 | | |
355 | | - | |
| 323 | + | |
| 324 | + | |
356 | 325 | | |
357 | 326 | | |
358 | 327 | | |
| |||
381 | 350 | | |
382 | 351 | | |
383 | 352 | | |
384 | | - | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
385 | 359 | | |
386 | 360 | | |
387 | 361 | | |
388 | 362 | | |
| 363 | + | |
| 364 | + | |
389 | 365 | | |
390 | | - | |
| 366 | + | |
391 | 367 | | |
392 | 368 | | |
393 | 369 | | |
| |||
401 | 377 | | |
402 | 378 | | |
403 | 379 | | |
404 | | - | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
405 | 386 | | |
406 | 387 | | |
407 | 388 | | |
408 | 389 | | |
| 390 | + | |
| 391 | + | |
409 | 392 | | |
410 | 393 | | |
411 | 394 | | |
| |||
418 | 401 | | |
419 | 402 | | |
420 | 403 | | |
421 | | - | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
422 | 414 | | |
423 | 415 | | |
424 | 416 | | |
| |||
461 | 453 | | |
462 | 454 | | |
463 | 455 | | |
| 456 | + | |
| 457 | + | |
464 | 458 | | |
465 | 459 | | |
466 | 460 | | |
| |||
488 | 482 | | |
489 | 483 | | |
490 | 484 | | |
491 | | - | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
492 | 488 | | |
493 | 489 | | |
494 | 490 | | |
| |||
554 | 550 | | |
555 | 551 | | |
556 | 552 | | |
| 553 | + | |
| 554 | + | |
557 | 555 | | |
558 | 556 | | |
559 | 557 | | |
| |||
571 | 569 | | |
572 | 570 | | |
573 | 571 | | |
| 572 | + | |
| 573 | + | |
574 | 574 | | |
575 | 575 | | |
576 | 576 | | |
| |||
585 | 585 | | |
586 | 586 | | |
587 | 587 | | |
588 | | - | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
589 | 592 | | |
590 | 593 | | |
591 | 594 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
64 | 64 | | |
65 | 65 | | |
66 | 66 | | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
67 | 90 | | |
68 | 91 | | |
69 | 92 | | |
| |||
0 commit comments