From 227ca090db546363dbda6949ec18ef467d67eed7 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Wed, 8 Feb 2017 17:28:05 +1000 Subject: [PATCH] use a constant for the starting factor --- anki/consts.py | 2 ++ anki/decks.py | 2 +- anki/importing/noteimp.py | 4 ++-- anki/sched.py | 4 ++-- tests/test_sched.py | 19 ++++++++++--------- tests/test_sync.py | 3 ++- 6 files changed, 19 insertions(+), 15 deletions(-) diff --git a/anki/consts.py b/anki/consts.py index 1ef0fd5c7..b0e0a90ea 100644 --- a/anki/consts.py +++ b/anki/consts.py @@ -44,6 +44,8 @@ DYN_MAX_SIZE = 99999 MODEL_STD = 0 MODEL_CLOZE = 1 +STARTING_FACTOR = 2500 + # deck schema & syncing vars SCHEMA_VERSION = 11 SYNC_ZIP_SIZE = int(2.5*1024*1024) diff --git a/anki/decks.py b/anki/decks.py index 8717d832b..726c33902 100644 --- a/anki/decks.py +++ b/anki/decks.py @@ -49,7 +49,7 @@ defaultConf = { 'new': { 'delays': [1, 10], 'ints': [1, 4, 7], # 7 is not currently used - 'initialFactor': 2500, + 'initialFactor': STARTING_FACTOR, 'separate': True, 'order': NEW_CARDS_DUE, 'perDay': 20, diff --git a/anki/importing/noteimp.py b/anki/importing/noteimp.py index 490395c4b..9e6d56f57 100644 --- a/anki/importing/noteimp.py +++ b/anki/importing/noteimp.py @@ -3,7 +3,7 @@ # License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html import cgi -from anki.consts import NEW_CARDS_RANDOM +from anki.consts import NEW_CARDS_RANDOM, STARTING_FACTOR from anki.lang import _ from anki.utils import fieldChecksum, guid64, timestampID, \ joinFields, intTime, splitFields @@ -25,7 +25,7 @@ class ForeignCard(object): def __init__(self): self.due = 0 self.ivl = 1 - self.factor = 2500 + self.factor = STARTING_FACTOR self.reps = 0 self.lapses = 0 diff --git a/anki/sched.py b/anki/sched.py index 9d6d7b9f6..290d66cd2 100644 --- a/anki/sched.py +++ b/anki/sched.py @@ -1338,7 +1338,7 @@ and (queue=0 or (queue=2 and due<=?))""", self.remFromDyn(ids) self.col.db.execute( "update cards set type=0,queue=0,ivl=0,due=0,odue=0,factor=?" - " where id in "+ids2str(ids), 2500) + " where id in "+ids2str(ids), STARTING_FACTOR) pmax = self.col.db.scalar( "select max(due) from cards where type=0") or 0 # takes care of mod + usn @@ -1353,7 +1353,7 @@ and (queue=0 or (queue=2 and due<=?))""", for id in ids: r = random.randint(imin, imax) d.append(dict(id=id, due=r+t, ivl=max(1, r), mod=mod, - usn=self.col.usn(), fact=2500)) + usn=self.col.usn(), fact=STARTING_FACTOR)) self.remFromDyn(ids) self.col.db.executemany(""" update cards set type=2,queue=2,ivl=:ivl,due=:due,odue=0, diff --git a/tests/test_sched.py b/tests/test_sched.py index e1742c64a..fcee1009f 100644 --- a/tests/test_sched.py +++ b/tests/test_sched.py @@ -3,6 +3,7 @@ import time import copy +from anki.consts import STARTING_FACTOR from tests.shared import getEmptyCol from anki.utils import intTime from anki.hooks import addHook @@ -278,7 +279,7 @@ def test_reviews(): c.type = 2 c.queue = 2 c.due = d.sched.today - 8 - c.factor = 2500 + c.factor = STARTING_FACTOR c.reps = 3 c.lapses = 1 c.ivl = 100 @@ -332,7 +333,7 @@ def test_reviews(): assert checkRevIvl(d, c, 260) assert c.due == d.sched.today + c.ivl # factor should have been left alone - assert c.factor == 2500 + assert c.factor == STARTING_FACTOR # ease 4 ################################################## c = copy.copy(cardcopy) @@ -393,7 +394,7 @@ def test_overdue_lapse(): c.queue = 1 c.due = -1 c.odue = -1 - c.factor = 2500 + c.factor = STARTING_FACTOR c.left = 2002 c.ivl = 0 c.flush() @@ -467,7 +468,7 @@ def test_nextIvl(): ################################################## c.type = 2 c.ivl = 100 - c.factor = 2500 + c.factor = STARTING_FACTOR assert ni(c, 1) == 60 assert ni(c, 2) == 100*86400 assert ni(c, 3) == 100*86400 @@ -475,7 +476,7 @@ def test_nextIvl(): ################################################## c.queue = 2 c.ivl = 100 - c.factor = 2500 + c.factor = STARTING_FACTOR # failing it should put it at 60s assert ni(c, 1) == 60 # or 1 day if relearn is false @@ -557,7 +558,7 @@ def test_cram(): # due in 25 days, so it's been waiting 75 days c.due = d.sched.today + 25 c.mod = 1 - c.factor = 2500 + c.factor = STARTING_FACTOR c.startTimer() c.flush() d.reset() @@ -699,7 +700,7 @@ def test_cram_resched(): c.ivl = 100 c.type = c.queue = 2 c.due = d.sched.today + 25 - c.factor = 2500 + c.factor = STARTING_FACTOR c.flush() cardcopy = copy.copy(c) d.sched.rebuildDyn(did) @@ -1078,7 +1079,7 @@ def test_norelearn(): c.type = 2 c.queue = 2 c.due = 0 - c.factor = 2500 + c.factor = STARTING_FACTOR c.reps = 3 c.lapses = 1 c.ivl = 100 @@ -1099,7 +1100,7 @@ def test_failmult(): c.queue = 2 c.ivl = 100 c.due = d.sched.today - c.ivl - c.factor = 2500 + c.factor = STARTING_FACTOR c.reps = 3 c.lapses = 1 c.startTimer() diff --git a/tests/test_sync.py b/tests/test_sync.py index 10a10be21..5fdfa52e2 100644 --- a/tests/test_sync.py +++ b/tests/test_sync.py @@ -5,6 +5,7 @@ import nose, os, shutil, time from anki import Collection as aopen, Collection from anki.utils import intTime from anki.sync import Syncer, LocalServer +from anki.consts import STARTING_FACTOR from tests.shared import getEmptyCol, getEmptyDeckWith # Local tests @@ -343,7 +344,7 @@ def test_filtered_delete(): card = note.cards()[0] card.type = 2 card.ivl = 10 - card.factor = 2500 + card.factor = STARTING_FACTOR card.due = deck1.sched.today card.flush() # put cards into a filtered deck