Turns a chronological sequence of balance-adjustment events into a timeline of periods during which particular balances were held.

## Project description

For example, this sequence of events …

• A: \$10
• B: \$10
• C: (\$18)
• D: (\$2)

… is turned into this timeline:

```A             B             C             D
|             |             |             |
|_____________|_____________|             |
|                           |             |
|           \$10             |             |
|___________________________|             |
|             |             |
|     \$8      |             |
|_____________|_____________|
|                           |
|            \$2             |
|___________________________|
```

This lets you determine, for each balance reduction event, the events from which the balance was added. In this example, we can see that:

• The \$18 reduction in event C came from \$10 of event A and \$8 of B.
• The \$2 reduction in event D came entirely from event B.

Code for this example:

```from refund_calculation import *

history_from_event_sequence([
Event(time='A', delta='10'),
Event(time='B', delta='10'),
Event(time='C', delta='-18'),
Event(time='D', delta='-2'),
])

# Result:
History(
closed=(
Closed(amount=Decimal('10'), start='A', end='C'),
Closed(amount=Decimal('8'),  start='B', end='C'),
Closed(amount=Decimal('2'),  start='B', end='D'),
),
open=(),
debt=Decimal('0'),
)
```

## Project details 