summaryrefslogtreecommitdiffstats
path: root/src/session.py
diff options
context:
space:
mode:
authorEddy Pedroni <epedroni@pm.me>2024-09-26 10:02:15 +0200
committerEddy Pedroni <epedroni@pm.me>2024-09-26 10:02:15 +0200
commite65bef9c22244fc9bcd22a37d335f5f76ba16ff5 (patch)
tree9af6fa41bfee6fc03c3ab30cf1b23a82bdf8f2e7 /src/session.py
parentce76b00d7b2ccac6843732f92becfabb753864a0 (diff)
Create separate packages for library and CLI
Diffstat (limited to 'src/session.py')
-rw-r--r--src/session.py50
1 files changed, 0 insertions, 50 deletions
diff --git a/src/session.py b/src/session.py
deleted file mode 100644
index f30160f..0000000
--- a/src/session.py
+++ /dev/null
@@ -1,50 +0,0 @@
-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:
- """
- Represents a play session. During a session, multiple practice and test runs
- can be made with the same scheduler.
- """
- 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]:
- """
- Yields cards for a practice run of the requested size.
-
- Practice runs do not affect the scheduler state.
- """
- ids = self._scheduler.practice(size)
- for id in ids:
- yield self._cards[id]
-
- def test(self, size: int) -> Iterator[tuple[Card, Callable]]:
- """
- Yields cards for a test run of the requested size.
-
- A function is yielded with each card that takes single boolean argument.
- The UI is expected to call the function for each card to indicate whether
- the user correctly guessed the card (True) or not (False).
-
- Multiple subsequent calls to the same function overwrite past results.
-
- When the test run is done, the scheduler state is updated with the
- collected results
- """
- 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())