diff options
author | Eddy Pedroni <epedroni@pm.me> | 2024-09-25 22:19:41 +0200 |
---|---|---|
committer | Eddy Pedroni <epedroni@pm.me> | 2024-09-25 22:19:41 +0200 |
commit | d4f33e9a886363008385b4d76b475e53c5689cdb (patch) | |
tree | efb080b5d1873c3cde339c09e6cba5a686f14dc8 /src/session.py | |
parent | 7f6ab3e4c535eb0cc8b8dfdaa591e1cd7131e537 (diff) |
Add session class with basic test coverage
Diffstat (limited to 'src/session.py')
-rw-r--r-- | src/session.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/session.py b/src/session.py new file mode 100644 index 0000000..33870aa --- /dev/null +++ b/src/session.py @@ -0,0 +1,29 @@ +from typing import Iterator, Callable + +from card import Card +from scheduler import getSchedulerClass +from parser import parseFiles +from state_json import load, save + +class Session: + def __init__(self, scheduler_name: str, card_files: list[str], state_file: str): + self._cards = parseFiles(card_files) + self._state_file = state_file + self._scheduler = getSchedulerClass(scheduler_name)(self._cards, load(state_file)) + + def practice(self, size: int) -> Iterator[Card]: + ids = self._scheduler.practice(size) + for id in ids: + yield self._cards[id] + + def test(self, size: int) -> Iterator[tuple[Card, Callable]]: + ids = self._scheduler.practice(size) + results = {} + + for id in ids: + def result(correct: bool) -> None: + results[id] = int(correct) + yield self._cards[id], result + + self._scheduler.update(results) + save(self._state_file, self._scheduler.getState()) |