Skip to content

Releases: open-spaced-repetition/py-fsrs

v6.3.1

Choose a tag to compare

@ishiko732 ishiko732 released this 10 Mar 14:00
3abe686

What's Changed

New Contributors

Full Changelog: v6.3.0...v6.3.1

v6.3.0

Choose a tag to compare

@joshdavham joshdavham released this 13 Oct 07:09
854a514

What's Changed

Full Changelog: 6.2.0...v6.3.0

v6.2.0

Choose a tag to compare

@joshdavham joshdavham released this 05 Oct 03:11
4f1788e

What's Changed

Full Changelog: v6.1.1...6.2.0

v6.1.1

Choose a tag to compare

@joshdavham joshdavham released this 05 Aug 03:30
79aec56

What's Changed

Full Changelog: v6.1.0...v6.1.1

v6.1.0

Choose a tag to compare

@joshdavham joshdavham released this 13 Jun 05:21
e64e3b4

What's Changed

Full Changelog: v6.0.1...v6.1.0

v6.0.1

Choose a tag to compare

@joshdavham joshdavham released this 02 Jun 07:33
8e75b84

What's Changed

New Contributors

Full Changelog: v6.0.0...v6.0.1

v6.0.0

Choose a tag to compare

@joshdavham joshdavham released this 21 May 18:31
352c7a2

Py-FSRS 6.0.0

This release upgrades Py-FSRS to use the new FSRS 6 model which is an improvement over the previous FSRS 5 model.

In particular, FSRS 6 adds two new parameters to the model that help better schedule cards that have been reviewed twice or more in the same day (short term reviews) as well as more accurately model the rate of forgetting for all cards in general.

This is also a major version change, so there are some breaking changes:

Breaking changes

  1. Creating a Scheduler object with custom parameters now requires 21 parameters instead of the previous 19.
  2. You can no longer compute a Card object's retrievability by itself as this now requires a Scheduler object to do this. And so the Card.get_retrievability() method has been replaced with the Scheduler.get_card_retrievability(card: Card) method.

Migrate from Py-FSRS 5 -> Py-FSRS 6

Update Scheduler parameters

If you were previously just using the Scheduler without any custom parameters of your own, you can probably skip this part.

However, if you were setting your own custom FSRS 5 parameters to the Scheduler, then the easiest way to migrate to FSRS 6 would be to append the two following parameters to your current parameters like so:

# example of 19 valid fsrs 5 parameters
old_fsrs_5_scheduler_parameters = (
    0.40255,
    1.18385,
    3.173,
    15.69105,
    7.1949,
    0.5345,
    1.4604,
    0.0046,
    1.54575,
    0.1192,
    1.01925,
    1.9395,
    0.11,
    0.29605,
    2.2698,
    0.2315,
    2.9898,
    0.51655,
    0.6621,
)

new_parameter_19 = 0.0
new_parameter_20 = 0.5

new_fsrs_6_scheduler_parameters = old_fsrs_5_scheduler_parameters + (new_parameter_19,new_parameter_20)

new_fsrs_6_scheduler = Scheduler(parameters=new_fsrs_6_scheduler_parameters)

With the above change, the scheduler should continue to behave just like before with FSRS 5 without any big noticeable changes.

Computing a Card's retrievability

In FSRS 6, you can no longer calculate a Card object's retrievability by itself. You now need to use the card's corresponding Scheduler object.

To migrate, replace instances of

retrievability = card.get_retrievability(some_datetime)

with

# note that get_card_retrievability requires an initialized scheduler as this is not a static method
retrievability = scheduler.get_card_retrievability(card, some_datetime)

What's Changed

Full Changelog: v5.1.3...v6.0.0

v5.1.3

Choose a tag to compare

@joshdavham joshdavham released this 29 Mar 17:15
206e8c3

What's Changed

Full Changelog: v5.1.2...v5.1.3

v5.1.2

Choose a tag to compare

@joshdavham joshdavham released this 09 Feb 08:07
a687926

What's Changed

Full Changelog: v5.1.1...v5.1.2

v5.1.1

Choose a tag to compare

@joshdavham joshdavham released this 06 Feb 17:33
e8b498d

What's Changed

Full Changelog: v5.1.0...v5.1.1