From c94b6a24bdbf6c9ecc61bf854074f0c496f30429 Mon Sep 17 00:00:00 2001 From: Dmitry Mikheev Date: Fri, 27 May 2016 00:26:48 +0500 Subject: [PATCH 1/4] next interval >= prev interval + 1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit http://ankisrs.net/docs/manual.html#reviews One final thing to note is that Anki forces a new interval to be at least 1 day longer than it was previously so that you don’t get stuck reviewing with the same interval forever. https://anki.tenderapp.com/discussions/ankidesktop/18382-new-interval-does-not-seem-to-be-updated-with-ease-at-130-and-current-interval-at-7-days In some cases interval does not grow in fact. --- anki/sched.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/anki/sched.py b/anki/sched.py index 61c26256a..a6ff887c2 100644 --- a/anki/sched.py +++ b/anki/sched.py @@ -894,7 +894,7 @@ select id from cards where did in %s and queue = 2 and due <= ? limit ?)""" elif ease == 4: interval = ivl4 # interval capped? - return min(interval, conf['maxIvl']) + return max(min(interval, conf['maxIvl']), card.ivl+1) def _fuzzedIvl(self, ivl): min, max = self._fuzzIvlRange(ivl) From cdfdffd6080756d4c7606ad05b759bdda9273fe4 Mon Sep 17 00:00:00 2001 From: Dmitry Mikheev Date: Fri, 27 May 2016 00:55:05 +0500 Subject: [PATCH 2/4] To respect the max interval the user has set. --- anki/sched.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/anki/sched.py b/anki/sched.py index a6ff887c2..279154215 100644 --- a/anki/sched.py +++ b/anki/sched.py @@ -894,7 +894,7 @@ select id from cards where did in %s and queue = 2 and due <= ? limit ?)""" elif ease == 4: interval = ivl4 # interval capped? - return max(min(interval, conf['maxIvl']), card.ivl+1) + return min(max(interval, card.ivl+1), conf['maxIvl']) def _fuzzedIvl(self, ivl): min, max = self._fuzzIvlRange(ivl) From 181c6f6f91ef130d81017bc8eae38764cc248b58 Mon Sep 17 00:00:00 2001 From: Dmitry Mikheev Date: Fri, 27 May 2016 01:33:46 +0500 Subject: [PATCH 3/4] Refactoring a little bit the current code just doesn't do it in the right order. --- anki/sched.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/anki/sched.py b/anki/sched.py index 279154215..725a3632c 100644 --- a/anki/sched.py +++ b/anki/sched.py @@ -894,7 +894,7 @@ select id from cards where did in %s and queue = 2 and due <= ? limit ?)""" elif ease == 4: interval = ivl4 # interval capped? - return min(max(interval, card.ivl+1), conf['maxIvl']) + return min(interval, conf['maxIvl']) def _fuzzedIvl(self, ivl): min, max = self._fuzzIvlRange(ivl) @@ -927,7 +927,7 @@ select id from cards where did in %s and queue = 2 and due <= ? limit ?)""" def _updateRevIvl(self, card, ease): idealIvl = self._nextRevIvl(card, ease) - card.ivl = self._adjRevIvl(card, idealIvl) + card.ivl = min(max(self._adjRevIvl(card, idealIvl), card.ivl+1), self._revConf(card)['maxIvl']) def _adjRevIvl(self, card, idealIvl): if self._spreadRev: From 2b922b3055ed4685d566d901df61d354299e15b2 Mon Sep 17 00:00:00 2001 From: Dmitry Mikheev Date: Fri, 27 May 2016 18:47:48 +0500 Subject: [PATCH 4/4] PEP8 --- anki/sched.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/anki/sched.py b/anki/sched.py index 725a3632c..9b3dac958 100644 --- a/anki/sched.py +++ b/anki/sched.py @@ -927,7 +927,8 @@ select id from cards where did in %s and queue = 2 and due <= ? limit ?)""" def _updateRevIvl(self, card, ease): idealIvl = self._nextRevIvl(card, ease) - card.ivl = min(max(self._adjRevIvl(card, idealIvl), card.ivl+1), self._revConf(card)['maxIvl']) + card.ivl = min(max(self._adjRevIvl(card, idealIvl), card.ivl+1), + self._revConf(card)['maxIvl']) def _adjRevIvl(self, card, idealIvl): if self._spreadRev: