test_cli (test_ledger.LedgerTest.test_cli) ... FAIL
test_cli_error (test_ledger.LedgerTest.test_cli_error) ... FAIL
test_empty (test_ledger.LedgerTest.test_empty) ... FAIL
test_exact (test_ledger.LedgerTest.test_exact) ... FAIL
test_excluded (test_ledger.LedgerTest.test_excluded) ... ERROR
test_filter (test_ledger.LedgerTest.test_filter) ... FAIL
test_invalid (test_ledger.LedgerTest.test_invalid) ... 
  test_invalid (test_ledger.LedgerTest.test_invalid) (a='NaN') ... FAIL
  test_invalid (test_ledger.LedgerTest.test_invalid) (a='Infinity') ... FAIL
  test_invalid (test_ledger.LedgerTest.test_invalid) (a='-Infinity') ... FAIL
test_no_mutation (test_ledger.LedgerTest.test_no_mutation) ... ok
test_refund (test_ledger.LedgerTest.test_refund) ... FAIL
test_round_once (test_ledger.LedgerTest.test_round_once) ... FAIL

======================================================================
ERROR: test_excluded (test_ledger.LedgerTest.test_excluded)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/private/tmp/kingy-paired-ledger-2026-09-26/claude-1/test_ledger.py", line 11, in test_excluded
    def test_excluded(self):self.assertEqual(total_paid([row('bad',status='pending'),row('bad',currency='CAD'),row('bad','Other')],'OpenAI'),'0.00')
                                             ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/private/tmp/kingy-paired-ledger-2026-09-26/claude-1/ledger.py", line 2, in total_paid
    return sum(float(row['amount']) for row in rows)
  File "/private/tmp/kingy-paired-ledger-2026-09-26/claude-1/ledger.py", line 2, in <genexpr>
    return sum(float(row['amount']) for row in rows)
               ~~~~~^^^^^^^^^^^^^^^
ValueError: could not convert string to float: 'bad'

======================================================================
FAIL: test_cli (test_ledger.LedgerTest.test_cli)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/private/tmp/kingy-paired-ledger-2026-09-26/claude-1/test_ledger.py", line 21, in test_cli
    r=self.run_cli([row('0.1'),row('0.2'),row('99','Other')],'--provider','openai');self.assertEqual((r.returncode,r.stdout,r.stderr),(0,'0.30\n',''))
                                                                                    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: Tuples differ: (2, '', 'usage: report.py [-h] path\nrepor[53 chars]i\n') != (0, '0.30\n', '')

First differing element 0:
2
0

+ (0, '0.30\n', '')
- (2,
-  '',
-  'usage: report.py [-h] path\n'
-  'report.py: error: unrecognized arguments: --provider openai\n')

======================================================================
FAIL: test_cli_error (test_ledger.LedgerTest.test_cli_error)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/private/tmp/kingy-paired-ledger-2026-09-26/claude-1/test_ledger.py", line 23, in test_cli_error
    r=self.run_cli([row('bad')]);self.assertEqual(r.returncode,2);self.assertEqual(r.stdout,'');self.assertTrue(r.stderr.strip());self.assertNotIn('Traceback',r.stderr)
                                 ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
AssertionError: 1 != 2

======================================================================
FAIL: test_empty (test_ledger.LedgerTest.test_empty)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/private/tmp/kingy-paired-ledger-2026-09-26/claude-1/test_ledger.py", line 6, in test_empty
    def test_empty(self):self.assertEqual(total_paid([]),'0.00')
                         ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: 0 != '0.00'

======================================================================
FAIL: test_exact (test_ledger.LedgerTest.test_exact)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/private/tmp/kingy-paired-ledger-2026-09-26/claude-1/test_ledger.py", line 7, in test_exact
    def test_exact(self):self.assertEqual(total_paid([row('0.1'),row('0.2')]),'0.30')
                         ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: 0.30000000000000004 != '0.30'

======================================================================
FAIL: test_filter (test_ledger.LedgerTest.test_filter)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/private/tmp/kingy-paired-ledger-2026-09-26/claude-1/test_ledger.py", line 10, in test_filter
    def test_filter(self):self.assertEqual(total_paid([row('1'),row('2','Anthropic')],'openai'),'1.00')
                          ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: 3.0 != '1.00'

======================================================================
FAIL: test_invalid (test_ledger.LedgerTest.test_invalid) (a='NaN')
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/private/tmp/kingy-paired-ledger-2026-09-26/claude-1/test_ledger.py", line 14, in test_invalid
    with self.subTest(a=a),self.assertRaises(ValueError):total_paid([row(a)])
                           ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
AssertionError: ValueError not raised

======================================================================
FAIL: test_invalid (test_ledger.LedgerTest.test_invalid) (a='Infinity')
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/private/tmp/kingy-paired-ledger-2026-09-26/claude-1/test_ledger.py", line 14, in test_invalid
    with self.subTest(a=a),self.assertRaises(ValueError):total_paid([row(a)])
                           ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
AssertionError: ValueError not raised

======================================================================
FAIL: test_invalid (test_ledger.LedgerTest.test_invalid) (a='-Infinity')
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/private/tmp/kingy-paired-ledger-2026-09-26/claude-1/test_ledger.py", line 14, in test_invalid
    with self.subTest(a=a),self.assertRaises(ValueError):total_paid([row(a)])
                           ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
AssertionError: ValueError not raised

======================================================================
FAIL: test_refund (test_ledger.LedgerTest.test_refund)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/private/tmp/kingy-paired-ledger-2026-09-26/claude-1/test_ledger.py", line 9, in test_refund
    def test_refund(self):self.assertEqual(total_paid([row('-1.235')]),'-1.24')
                          ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: -1.235 != '-1.24'

======================================================================
FAIL: test_round_once (test_ledger.LedgerTest.test_round_once)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/private/tmp/kingy-paired-ledger-2026-09-26/claude-1/test_ledger.py", line 8, in test_round_once
    def test_round_once(self):self.assertEqual(total_paid([row('0.005'),row('0.005')]),'0.01')
                              ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: 0.01 != '0.01'

----------------------------------------------------------------------
Ran 10 tests in 0.079s

FAILED (failures=10, errors=1)
