mirror of
https://github.com/ankitects/anki.git
synced 2025-12-10 21:36:55 -05:00
make v1 scheduler inherit from v2 so we can delete duplicate code
This commit is contained in:
parent
ffe6ecf44c
commit
8c3e4a8bee
1 changed files with 16 additions and 13 deletions
|
|
@ -17,6 +17,7 @@ from anki.cards import Card
|
||||||
from anki.consts import *
|
from anki.consts import *
|
||||||
from anki.lang import _
|
from anki.lang import _
|
||||||
from anki.rsbackend import FormatTimeSpanContext
|
from anki.rsbackend import FormatTimeSpanContext
|
||||||
|
from anki.schedv2 import Scheduler as V2
|
||||||
from anki.utils import ids2str, intTime
|
from anki.utils import ids2str, intTime
|
||||||
|
|
||||||
# queue types: 0=new/cram, 1=lrn, 2=rev, 3=day lrn, -1=suspended, -2=buried
|
# queue types: 0=new/cram, 1=lrn, 2=rev, 3=day lrn, -1=suspended, -2=buried
|
||||||
|
|
@ -24,13 +25,15 @@ from anki.utils import ids2str, intTime
|
||||||
# positive revlog intervals are in days (rev), negative in seconds (lrn)
|
# positive revlog intervals are in days (rev), negative in seconds (lrn)
|
||||||
|
|
||||||
|
|
||||||
class Scheduler:
|
class Scheduler(V2):
|
||||||
name = "std"
|
name = "std"
|
||||||
haveCustomStudy = True
|
haveCustomStudy = True
|
||||||
_spreadRev = True
|
_spreadRev = True
|
||||||
_burySiblingsOnAnswer = True
|
_burySiblingsOnAnswer = True
|
||||||
|
|
||||||
def __init__(self, col: anki.storage._Collection) -> None:
|
def __init__( # pylint: disable=super-init-not-called
|
||||||
|
self, col: anki.storage._Collection
|
||||||
|
) -> None:
|
||||||
self.col = weakref.proxy(col)
|
self.col = weakref.proxy(col)
|
||||||
self.queueLimit = 50
|
self.queueLimit = 50
|
||||||
self.reportLimit = 1000
|
self.reportLimit = 1000
|
||||||
|
|
@ -169,7 +172,7 @@ order by due"""
|
||||||
f"update cards set queue=type where queue = {QUEUE_TYPE_SIBLING_BURIED}"
|
f"update cards set queue=type where queue = {QUEUE_TYPE_SIBLING_BURIED}"
|
||||||
)
|
)
|
||||||
|
|
||||||
def unburyCardsForDeck(self) -> None:
|
def unburyCardsForDeck(self) -> None: # type: ignore[override]
|
||||||
sids = ids2str(self.col.decks.active())
|
sids = ids2str(self.col.decks.active())
|
||||||
self.col.log(
|
self.col.log(
|
||||||
self.col.db.list(
|
self.col.db.list(
|
||||||
|
|
@ -818,13 +821,13 @@ and due <= ? limit ?)""",
|
||||||
def _deckRevLimit(self, did: int) -> int:
|
def _deckRevLimit(self, did: int) -> int:
|
||||||
return self._deckNewLimit(did, self._deckRevLimitSingle)
|
return self._deckNewLimit(did, self._deckRevLimitSingle)
|
||||||
|
|
||||||
def _deckRevLimitSingle(self, d: Dict[str, Any]) -> int:
|
def _deckRevLimitSingle(self, d: Dict[str, Any]) -> int: # type: ignore[override]
|
||||||
if d["dyn"]:
|
if d["dyn"]:
|
||||||
return self.reportLimit
|
return self.reportLimit
|
||||||
c = self.col.decks.confForDid(d["id"])
|
c = self.col.decks.confForDid(d["id"])
|
||||||
return max(0, c["rev"]["perDay"] - d["revToday"][1])
|
return max(0, c["rev"]["perDay"] - d["revToday"][1])
|
||||||
|
|
||||||
def _revForDeck(self, did: int, lim: int) -> int:
|
def _revForDeck(self, did: int, lim: int) -> int: # type: ignore[override]
|
||||||
lim = min(lim, self.reportLimit)
|
lim = min(lim, self.reportLimit)
|
||||||
return self.col.db.scalar(
|
return self.col.db.scalar(
|
||||||
f"""
|
f"""
|
||||||
|
|
@ -963,7 +966,7 @@ select id from cards where did in %s and queue = {QUEUE_TYPE_REV} and due <= ? l
|
||||||
def _nextLapseIvl(self, card: Card, conf: Dict[str, Any]) -> int:
|
def _nextLapseIvl(self, card: Card, conf: Dict[str, Any]) -> int:
|
||||||
return max(conf["minInt"], int(card.ivl * conf["mult"]))
|
return max(conf["minInt"], int(card.ivl * conf["mult"]))
|
||||||
|
|
||||||
def _rescheduleRev(self, card: Card, ease: int) -> None:
|
def _rescheduleRev(self, card: Card, ease: int) -> None: # type: ignore[override]
|
||||||
# update interval
|
# update interval
|
||||||
card.lastIvl = card.ivl
|
card.lastIvl = card.ivl
|
||||||
if self._resched(card):
|
if self._resched(card):
|
||||||
|
|
@ -978,7 +981,7 @@ select id from cards where did in %s and queue = {QUEUE_TYPE_REV} and due <= ? l
|
||||||
card.odid = 0
|
card.odid = 0
|
||||||
card.odue = 0
|
card.odue = 0
|
||||||
|
|
||||||
def _logRev(self, card: Card, ease: int, delay: float) -> None:
|
def _logRev(self, card: Card, ease: int, delay: float) -> None: # type: ignore[override]
|
||||||
def log():
|
def log():
|
||||||
self.col.db.execute(
|
self.col.db.execute(
|
||||||
"insert into revlog values (?,?,?,?,?,?,?,?,?)",
|
"insert into revlog values (?,?,?,?,?,?,?,?,?)",
|
||||||
|
|
@ -1003,7 +1006,7 @@ select id from cards where did in %s and queue = {QUEUE_TYPE_REV} and due <= ? l
|
||||||
# Interval management
|
# Interval management
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
def _nextRevIvl(self, card: Card, ease: int) -> int:
|
def _nextRevIvl(self, card: Card, ease: int) -> int: # type: ignore[override]
|
||||||
"Ideal next interval for CARD, given EASE."
|
"Ideal next interval for CARD, given EASE."
|
||||||
delay = self._daysLate(card)
|
delay = self._daysLate(card)
|
||||||
conf = self._revConf(card)
|
conf = self._revConf(card)
|
||||||
|
|
@ -1041,7 +1044,7 @@ select id from cards where did in %s and queue = {QUEUE_TYPE_REV} and due <= ? l
|
||||||
fuzz = max(fuzz, 1)
|
fuzz = max(fuzz, 1)
|
||||||
return [ivl - fuzz, ivl + fuzz]
|
return [ivl - fuzz, ivl + fuzz]
|
||||||
|
|
||||||
def _constrainedIvl(self, ivl: float, conf: Dict[str, Any], prev: int) -> int:
|
def _constrainedIvl(self, ivl: float, conf: Dict[str, Any], prev: int) -> int: # type: ignore[override]
|
||||||
"Integer interval after interval factor and prev+1 constraints applied."
|
"Integer interval after interval factor and prev+1 constraints applied."
|
||||||
new = ivl * conf.get("ivlFct", 1)
|
new = ivl * conf.get("ivlFct", 1)
|
||||||
return int(max(new, prev + 1))
|
return int(max(new, prev + 1))
|
||||||
|
|
@ -1066,7 +1069,7 @@ select id from cards where did in %s and queue = {QUEUE_TYPE_REV} and due <= ? l
|
||||||
# Dynamic deck handling
|
# Dynamic deck handling
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
def rebuildDyn(self, did: Optional[int] = None) -> Optional[List[int]]:
|
def rebuildDyn(self, did: Optional[int] = None) -> Optional[List[int]]: # type: ignore[override]
|
||||||
"Rebuild a dynamic deck."
|
"Rebuild a dynamic deck."
|
||||||
did = did or self.col.decks.selected()
|
did = did or self.col.decks.selected()
|
||||||
deck = self.col.decks.get(did)
|
deck = self.col.decks.get(did)
|
||||||
|
|
@ -1080,7 +1083,7 @@ select id from cards where did in %s and queue = {QUEUE_TYPE_REV} and due <= ? l
|
||||||
self.col.decks.select(did)
|
self.col.decks.select(did)
|
||||||
return ids
|
return ids
|
||||||
|
|
||||||
def _fillDyn(self, deck: Dict[str, Any]) -> List[int]:
|
def _fillDyn(self, deck: Dict[str, Any]) -> List[int]: # type: ignore[override]
|
||||||
search, limit, order = deck["terms"][0]
|
search, limit, order = deck["terms"][0]
|
||||||
orderlimit = self._dynOrder(order, limit)
|
orderlimit = self._dynOrder(order, limit)
|
||||||
if search.strip():
|
if search.strip():
|
||||||
|
|
@ -1140,7 +1143,7 @@ due = odue, odue = 0, odid = 0, usn = ? where %s"""
|
||||||
t = "c.due"
|
t = "c.due"
|
||||||
return t + " limit %d" % l
|
return t + " limit %d" % l
|
||||||
|
|
||||||
def _moveToDyn(self, did: int, ids: List[int]) -> None:
|
def _moveToDyn(self, did: int, ids: List[int]) -> None: # type: ignore[override]
|
||||||
deck = self.col.decks.get(did)
|
deck = self.col.decks.get(did)
|
||||||
data = []
|
data = []
|
||||||
t = intTime()
|
t = intTime()
|
||||||
|
|
@ -1457,7 +1460,7 @@ To study outside of the normal schedule, click the Custom Study button below."""
|
||||||
self.col.usn(),
|
self.col.usn(),
|
||||||
)
|
)
|
||||||
|
|
||||||
def buryCards(self, cids: List[int]) -> None:
|
def buryCards(self, cids: List[int]) -> None: # type: ignore[override]
|
||||||
self.col.log(cids)
|
self.col.log(cids)
|
||||||
self.remFromDyn(cids)
|
self.remFromDyn(cids)
|
||||||
self.removeLrn(cids)
|
self.removeLrn(cids)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue