mirror of
https://github.com/ankitects/anki.git
synced 2025-09-19 06:22:22 -04:00

The full sync threshold was a hack to ensure we synced the deck in a memory-efficient way if there was a lot of data to send. The problem is that it's not easy for the user to predict how many changes there are, and so it might come as a surprise to them when a sync suddenly switches to a full sync. In order to be able to send changes in chunks rather than all at once, some changes had to be made: - Clients now set usn=-1 when they modify an object, which allows us to distinguish between objects that have been modified on the server, and ones that have been modified on the client. If we don't do this, we would have to buffer the local changes in a temporary location before adding the server changes. - Before a client sends the objects to the server, it changes the usn to maxUsn both in the payload and the local storage. - We do deletions at the start - To determine which card or fact is newer, we have to fetch the modification time of the local version. We do this in batches rather than try to load the entire list in memory.
17 lines
348 B
Python
17 lines
348 B
Python
import tempfile, os
|
|
from anki import Deck
|
|
|
|
def assertException(exception, func):
|
|
found = False
|
|
try:
|
|
func()
|
|
except exception:
|
|
found = True
|
|
assert found
|
|
|
|
def getEmptyDeck(**kwargs):
|
|
(fd, nam) = tempfile.mkstemp(suffix=".anki")
|
|
os.unlink(nam)
|
|
return Deck(nam, **kwargs)
|
|
|
|
testDir = os.path.dirname(__file__)
|