Repository navigation
Commit 25ca694
committed
Fix spurious KeyAlreadyPresent on valid out-of-order child table (#571)
_validate_table_candidate treated only Table/AoT as table-like. When a table
is spread across out-of-order headers, its existing entry is an
OutOfOrderTableProxy, so the isinstance(existing, (Table, AoT)) check was False
while the candidate was a Table. The mismatch raised KeyAlreadyPresent for a
document that tomllib and tomlkit <= 0.15.0 accept (a regression introduced by
the concrete+super validation in 0.15.1).
Recognise OutOfOrderTableProxy as table-like in the type-conflict check, and
when the existing entry is a proxy recurse into each of its concrete table
fragments so genuine duplicates are still rejected.
Adds a regression test and a CHANGELOG entry. Full suite passes (1053 tests).
Fixes #571.
Signed-off-by: Vladimir Babin <vovababin@gmail.com>1 parent 7ab7469 commit 25ca694
3 files changed
Lines changed: 44 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
3 | 9 | | |
4 | 10 | | |
5 | 11 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
480 | 480 | | |
481 | 481 | | |
482 | 482 | | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
483 | 507 | | |
484 | 508 | | |
485 | 509 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
424 | 424 | | |
425 | 425 | | |
426 | 426 | | |
427 | | - | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
428 | 433 | | |
429 | 434 | | |
430 | 435 | | |
431 | | - | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
432 | 444 | | |
433 | 445 | | |
434 | 446 | | |
| |||
0 commit comments