Commit 4c342c5
committed
gh-111487: Fix csv.Sniffer rejecting a delimiter at 90% consistency
_guess_delimiter counts a candidate delimiter's consistency down from
100% to a documented minimum threshold of 90%, but stepped the counter
by repeatedly subtracting 0.01 from a float. The accumulated rounding
error left it at 0.8999999999999999 after ten steps, so the loop exited
before making the final pass and a delimiter present on exactly 90% of
the rows was never accepted.
Count down in whole percent and compare with exact integer arithmetic
instead. `total` no longer needs to be a float, and the loop keeps the
original behaviour of not running once a delimiter has been found in an
earlier chunk.1 parent 23b2b40 commit 4c342c5
3 files changed
Lines changed: 29 additions & 8 deletions
File tree
- Lib
- test
- Misc/NEWS.d/next/Library
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
404 | 404 | | |
405 | 405 | | |
406 | 406 | | |
407 | | - | |
408 | | - | |
409 | | - | |
410 | | - | |
411 | | - | |
412 | | - | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
413 | 417 | | |
414 | 418 | | |
415 | | - | |
| 419 | + | |
416 | 420 | | |
417 | 421 | | |
418 | | - | |
419 | 422 | | |
420 | 423 | | |
421 | 424 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1521 | 1521 | | |
1522 | 1522 | | |
1523 | 1523 | | |
| 1524 | + | |
| 1525 | + | |
| 1526 | + | |
| 1527 | + | |
| 1528 | + | |
| 1529 | + | |
| 1530 | + | |
| 1531 | + | |
| 1532 | + | |
| 1533 | + | |
| 1534 | + | |
| 1535 | + | |
| 1536 | + | |
| 1537 | + | |
1524 | 1538 | | |
1525 | 1539 | | |
1526 | 1540 | | |
| |||
Lines changed: 4 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
0 commit comments