feat(pyamber): handle empty list output - #8273
Conversation
Automated Reviewer SuggestionsBased on the
|
Backport auto-label reportThis
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #8273 +/- ##
============================================
- Coverage 93.93% 93.90% -0.04%
+ Complexity 4762 4761 -1
============================================
Files 1191 1191
Lines 48308 49053 +745
Branches 5377 5377
============================================
+ Hits 45380 46061 +681
- Misses 1494 1557 +63
- Partials 1434 1435 +1
*This pull request uses carry forward flags. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
| config | throughput | MB/s | latency | max Δ latest / 7d | |
|---|---|---|---|---|---|
| 🔴 | bs=10 sw=10 sl=64 | 401 | 0.245 | 23,649/33,168/33,168 us | 🔴 -8.9% / 🔴 +112.9% |
| 🔴 | bs=100 sw=10 sl=64 | 830 | 0.507 | 118,885/131,134/131,134 us | 🔴 +5.0% / 🔴 +22.3% |
| ⚪ | bs=1000 sw=10 sl=64 | 933 | 0.57 | 1,065,836/1,155,719/1,155,719 us | ⚪ within ±5% / 🔴 +13.0% |
Baseline details
Latest main 50321e4 from same runner
| config | metric | PR | latest main | 7d avg | Δ latest | Δ 7d |
|---|---|---|---|---|---|---|
| bs=10 sw=10 sl=64 | throughput | 401 tuples/sec | 440 tuples/sec | 787.98 tuples/sec | -8.9% | -49.1% |
| bs=10 sw=10 sl=64 | MB/s | 0.245 MB/s | 0.269 MB/s | 0.481 MB/s | -8.9% | -49.1% |
| bs=10 sw=10 sl=64 | p50 | 23,649 us | 21,796 us | 12,593 us | +8.5% | +87.8% |
| bs=10 sw=10 sl=64 | p95 | 33,168 us | 30,517 us | 15,579 us | +8.7% | +112.9% |
| bs=10 sw=10 sl=64 | p99 | 33,168 us | 30,517 us | 18,786 us | +8.7% | +76.6% |
| bs=100 sw=10 sl=64 | throughput | 830 tuples/sec | 870 tuples/sec | 1,008 tuples/sec | -4.6% | -17.6% |
| bs=100 sw=10 sl=64 | MB/s | 0.507 MB/s | 0.531 MB/s | 0.615 MB/s | -4.5% | -17.6% |
| bs=100 sw=10 sl=64 | p50 | 118,885 us | 113,219 us | 100,701 us | +5.0% | +18.1% |
| bs=100 sw=10 sl=64 | p95 | 131,134 us | 128,997 us | 107,244 us | +1.7% | +22.3% |
| bs=100 sw=10 sl=64 | p99 | 131,134 us | 128,997 us | 116,122 us | +1.7% | +12.9% |
| bs=1000 sw=10 sl=64 | throughput | 933 tuples/sec | 932 tuples/sec | 1,042 tuples/sec | +0.1% | -10.5% |
| bs=1000 sw=10 sl=64 | MB/s | 0.57 MB/s | 0.569 MB/s | 0.636 MB/s | +0.2% | -10.4% |
| bs=1000 sw=10 sl=64 | p50 | 1,065,836 us | 1,071,839 us | 981,959 us | -0.6% | +8.5% |
| bs=1000 sw=10 sl=64 | p95 | 1,155,719 us | 1,155,000 us | 1,023,080 us | +0.1% | +13.0% |
| bs=1000 sw=10 sl=64 | p99 | 1,155,719 us | 1,155,000 us | 1,051,697 us | +0.1% | +9.9% |
Raw CSV
config_idx,batch_size,schema_width,string_len,num_batches,total_ms,total_tuples,total_bytes,tuples_per_sec,mb_per_sec,lat_p50_us,lat_p95_us,lat_p99_us
0,10,10,64,20,498.51,200,128000,401,0.245,23648.62,33168.37,33168.37
1,100,10,64,20,2408.70,2000,1280000,830,0.507,118884.61,131133.71,131133.71
2,1000,10,64,20,21426.60,20000,12800000,933,0.570,1065835.61,1155718.62,1155718.62
What changes were proposed in this PR?
Treat an empty Python list as no operator output before invoking the generic matcher. Nonempty list output continues through the existing conversion path.
Any related issues, documentation, discussions?
Closes #8272
How was this PR tested?
Added negative coverage for empty list output and positive coverage for a nonempty list.
C:\Users\carlo\texera\texera\.venv312\Scripts\python.exe -c "import sys,pytest; sys.path[:0]=[r'C:\Users\carlo\texera\texera-worktrees\investigate-bug72\amber\src\main\python',r'C:\Users\carlo\texera\texera\amber\src\main\python']; raise SystemExit(pytest.main([r'amber\src\test\python\core\models\test_table.py',r'amber\src\test\python\core\models\test_operator.py','-p','no:cacheprovider','-q']))"C:\Users\carlo\texera\texera\.venv312\Scripts\ruff.exe check amber/src/main/python/core/models/table.py amber/src/test/python/core/models/test_table.pyC:\Users\carlo\texera\texera\.venv312\Scripts\ruff.exe format --check amber/src/main/python/core/models/table.py amber/src/test/python/core/models/test_table.pyAll 64 tests passed. Ruff checks passed.
Was this PR authored or co-authored using generative AI tooling?
Generated-by: Codex