Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vlopezferrando/simple-spaced-repetition
Simple spaced repetition scheduler based on the classic Anki algorithm.
https://github.com/vlopezferrando/simple-spaced-repetition
anki python spaced-repetition spaced-repetition-algorithm
Last synced: 26 days ago
JSON representation
Simple spaced repetition scheduler based on the classic Anki algorithm.
- Host: GitHub
- URL: https://github.com/vlopezferrando/simple-spaced-repetition
- Owner: vlopezferrando
- License: mit
- Created: 2024-01-08T16:31:35.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-01-10T18:56:46.000Z (10 months ago)
- Last Synced: 2024-09-30T11:23:56.299Z (about 1 month ago)
- Topics: anki, python, spaced-repetition, spaced-repetition-algorithm
- Language: Python
- Homepage: https://python.cards
- Size: 15.6 KB
- Stars: 31
- Watchers: 3
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# simple-spaced-repetition
Simple spaced repetition scheduler, based on the [classic Anki algorithm](https://faqs.ankiweb.net/what-spaced-repetition-algorithm.html) and implemented in under 40 lines of code.
This scheduler is used at [Python.cards](https://python.cards).
![Tests](https://github.com/vlopezferrando/simple-spaced-repetition/actions/workflows/python-package.yml/badge.svg)
[![Supported Versions](https://img.shields.io/pypi/pyversions/simple_spaced_repetition.svg)](https://pypi.org/project/simple_spaced_repetition)## Installation
Install with pip:
pip install simple_spaced_repetition
## Example usage
The `Card` class is what you should use:
```python
>>> from simple_spaced_repetition import Card
>>> Card()
Card(status=learning, step=0, interval=None, ease=2.5)
````Card` has a single method `options()` which returns the 4 possible choices for answering a card:
```python
>>> from simple_spaced_repetition import Card
>>> card = Card()
>>> card.options()
[('again', Card(status=learning, step=0, interval=0:01:00, ease=2.5)),
('hard', Card(status=learning, step=1, interval=0:06:00, ease=2.5)),
('good', Card(status=learning, step=1, interval=0:10:00, ease=2.5)),
('easy', Card(status=reviewing, step=0, interval=4 days, 0:00:00, ease=2.5))]
```Next to each answer is a new `Card` object that represents the card after answering with that option.
The attribute `interval` holds the time that must pass before the card is due again:
```python
>>> from simple_spaced_repetition import Card
>>> card = Card()
>>> for answer, new_card in card.options():
... print(answer, new_card.interval)
again 0:01:00
hard 0:06:00
good 0:10:00
easy 4 days, 0:00:00
```## Run tests
Simply run:
python test_simple_spaced_repetition.py