Commit Graph

1202 Commits

Author SHA1 Message Date
RumovZ
b763fc5b2a Use explicit wrapper functions to get filters 2021-01-09 16:48:47 +01:00
abdo
f7f509c70d Move tag collapse method to the backend 2021-01-09 17:10:16 +03:00
abdo
b33267f754 Do not check for missing tag parents at registration time 2021-01-09 17:10:16 +03:00
abdo
b276ce3dd5 Hierarchical tags 2021-01-09 17:10:13 +03:00
RumovZ
b99d9cda74 Prettify frontend filter code 2021-01-09 12:34:46 +01:00
RumovZ
fda2bfdb4e Use backend filters instead of literal searches 2021-01-09 10:51:15 +01:00
RumovZ
efd554ea29 Provide ConcatSeparator through rsbackend.py 2021-01-07 17:48:30 +01:00
RumovZ
c2e2a86ec9 Add writer functions to want_release_gil() 2021-01-07 13:09:00 +01:00
Damien Elmes
b30b7c3073 fix qt/ pylints 2021-01-07 16:21:50 +10:00
Damien Elmes
f9e939aaff Make orjson optional again
While 32 bit platform support is probably not going to come back,
this allows Anki to run on other architectures orjson doesn't support.
2021-01-07 09:44:40 +10:00
Damien Elmes
dad4c76089 no need to log card resets when exporting 2021-01-05 11:11:37 +10:00
Damien Elmes
f3fa9daae2 do tag rename and tag clearing in background; move logic to tags.py
Because the logic is in rename_tag() now, it means we create a
checkpoint even if the tag is orphaned. This is because currently
checkpointing is a GUI responsibility. In the future we need to introduce
multi-level undo, and should move responsibility for managing it
to the backend.
2021-01-04 14:14:39 +10:00
Damien Elmes
db3308e788 add linux_arm64 platform 2020-12-29 18:40:39 +10:00
Damien Elmes
a1498e9e81
Merge pull request #866 from guillem-palau-salva/master
Update consts.py
2020-12-29 10:15:42 +10:00
Damien Elmes
cb93a0909c
Merge pull request #872 from RumovZ/fix-deck-check
Fix deck check and thus blue sync arrow bug
2020-12-29 10:11:59 +10:00
RumovZ
9f18e12cb8 Fix deck check and thus blue snyc arrow bug
Cast col.decks.selected() to int so the return type fits the annotation.
Thus, fix the comparison in col.decks.select() which was leading to
a superfluous db modification and in turn to a false indication of a
necessary sync right after another one in certain cases.
2020-12-29 00:29:36 +01:00
Guillem Palau-Salvà
870df16b01 Update consts.py
I notices that type 4 is added in the revlog when rescheduling. Reviews are logged as 0 time and type 4.
2020-12-27 01:02:32 +01:00
Damien Elmes
c4382e38a1 update to stable pyo3 0.13 release 2020-12-23 10:08:38 +10:00
Damien Elmes
212b251334 tag the wheels as manual so test ... doesn't build them 2020-12-21 19:28:47 +10:00
Damien Elmes
73679b03e7 possible fix for sync button colour blue after sync
If the client's clock is behind AnkiWeb's, even by a few seconds,
we can end up with a situation where last_begin_at is updated after
the sync to a value less than the mtime we received from AnkiWeb,
causing the collection to be saved, which bumps the modtime.

Work around this by recording mtime at begin() time, and seeing if it
has changed in either direction.

Thanks to Rumo, who did the hard work looking into it:
https://forums.ankiweb.net/t/why-is-my-sync-button-blue/2078/21
2020-12-21 19:27:26 +10:00
Damien Elmes
e99a7c0f90 tweak naming and move method into col.decks 2020-12-20 10:26:16 +10:00
k12ish
cc0572a385 Added type hints, renamed kwarg 2020-12-19 18:12:58 +00:00
k12ish
ef1f58c8b6 Added method 2020-12-19 17:59:07 +00:00
Damien Elmes
af92bb5e93 exhaustiveness checks on literals are now possible with the move to py38 2020-12-18 16:50:55 +10:00
Damien Elmes
ecb7c1482f use QtMultimedia for recording instead of PyAudio
The unmute-on-first-duration-change approach is to try to prevent
clicks/pops that can happen at the start of recordings. If it doesn't
solve the problem, we may need to drop down to the lower-level
QAudioInput().

Closes https://github.com/ankitects/help-wanted/issues/23

May fix https://forums.ankiweb.net/t/anki-crashes-periodically-after-clicking-record-audio-button/5824,
which I suspect was caused by processEvents()
2020-12-16 19:33:25 +10:00
Damien Elmes
a61f3bbc48 fix some warnings on startup 2020-12-16 15:38:24 +10:00
Damien Elmes
c8f989239b remove conditional rsbackend_gen import
It causes PyCharm to think methods are missing on col.backend, and
should not be needed with the move to Bazel.
2020-12-16 13:30:54 +10:00
Damien Elmes
937247ab06 add type stub for _rsbridge to make PyCharm happy 2020-12-16 13:13:42 +10:00
Damien Elmes
53276b3044 symlink generated .py/.pyi into tree to fix Python code completion 2020-12-16 11:36:42 +10:00
Damien Elmes
1b98e7e48f add ability to specify an individual Python test 2020-12-16 10:40:29 +10:00
Damien Elmes
1da327c725 minor doc updates 2020-12-11 22:37:12 +10:00
Damien Elmes
13d66b22f4 remove unwanted leading '/' in wheel records 2020-12-10 23:02:18 +10:00
Damien Elmes
0cbb60169c simplify wheel building 2020-12-10 20:27:21 +10:00
Damien Elmes
85b7e1c623 drop unused i686 references
https://forums.ankiweb.net/t/changing-ankis-build-system-to-bazel/4737/9
2020-12-09 15:45:01 +10:00
Damien Elmes
4c3577b12e update Rust deps incl. Pyo3
This includes the refcount bug fix from pyo3 0.12.4
2020-12-01 16:48:45 +10:00
Damien Elmes
be6bd1322d expose Gaelic in language selection 2020-11-30 14:44:29 +10:00
Damien Elmes
c9b3ed1eae switch to workspace for Rust code 2020-11-24 18:41:03 +10:00
Damien Elmes
d85d0b88a1
Merge branch 'master' into init-lang 2020-11-22 16:10:49 +10:00
Damien Elmes
0b848eae56 update remaining python format strings to Fluent 2020-11-22 14:57:53 +10:00
abdo
7d7745fbb5 Set up default language before loading profile
We can make more strings translatable this way.
2020-11-21 05:29:23 +03:00
Damien Elmes
e23d40e850
Merge pull request #823 from RumovZ/rework-search-parser
Rework search parser
2020-11-20 16:22:12 +10:00
abdo
e3b4802f47 Fix description of exporters
Description broke yet again with the full migration to Fluent
2020-11-19 23:52:46 +03:00
RumovZ
cb2c19aced Add Python test for tag whitespace
Assert tag matches do not occur across different tags.
2020-11-19 09:28:19 +01:00
RumovZ
c185fb966b Merge branch 'master' into rework-search-parser
Conflicts:
    rslib/src/search/sqlwriter.rs
2020-11-18 09:04:04 +01:00
Damien Elmes
a86ce5a1d4 remove print statement from unit tests 2020-11-18 13:56:44 +10:00
Damien Elmes
1c5f94d46f strip out unused gettext refs 2020-11-18 13:22:51 +10:00
Damien Elmes
ffa26fe4bc fix remaining _() references; remove unused imports 2020-11-18 12:43:46 +10:00
Damien Elmes
177d98489a update pylib ngettext references 2020-11-18 09:12:25 +10:00
Damien Elmes
e9cd956acd drop i18n references in old stats 2020-11-18 09:12:03 +10:00
Damien Elmes
2453e5c488 update temporary val="%s" references to standard ftl 2020-11-17 22:00:44 +10:00
Damien Elmes
9d1b6231d7 merge pylib references 2020-11-17 19:23:06 +10:00
Damien Elmes
44489a480f map gettext strings to keys/modules for ftl conversion 2020-11-17 14:11:09 +10:00
RumovZ
d1ee507b3a Update frontend test to new escape handling 2020-11-15 09:39:10 +01:00
Damien Elmes
8e93b0ee38 use full path in backend_pb2 import 2020-11-13 14:21:21 +10:00
Damien Elmes
5bb3d7c114 format_fix -> format; rename svelte-check for consistency 2020-11-12 20:19:32 +10:00
Damien Elmes
2897707263 update Python deps 2020-11-12 20:03:41 +10:00
Damien Elmes
b0aedd6c76 orjson was missing from dep list; drop 32 bit compat 2020-11-12 20:03:41 +10:00
Damien Elmes
8ca023048a add coding specifier to anki/__init__.py
older gettext versions will complain otherwise (was breaking Windows CI)
2020-11-11 21:51:11 +10:00
Damien Elmes
0fcccae6e8
Merge pull request #817 from cecini/formatcheck
Update mypy and black format check to python version 3.8
2020-11-11 21:36:32 +10:00
Damien Elmes
8d4df820cc update i18n scripts
- export updated .po files for consumption
- add a script to pull and push translations
2020-11-11 21:08:06 +10:00
cecini
62da8e6a40 Update mypy and black format check to python version 3.8 2020-11-11 09:24:28 +00:00
Damien Elmes
fd5815653f fix error exporting v2 collection when translations don't match
https://forums.ankiweb.net/t/utf8-error-in-importing-deck/4430/13
2020-11-11 15:42:08 +10:00
Damien Elmes
6e3f971ae1 handle packaged pylib buildinfo.txt; drop aqt buildinfo 2020-11-11 10:33:49 +10:00
Damien Elmes
e99c0dbe15
Merge pull request #793 from nwwt/object-audio-tags-support
Audio & object tag support
2020-11-11 10:33:31 +10:00
Andreas Reis
e68a40f13e cleanup / renames
・ soundRegexps →  sound_regexps

・ htmlRegexps →  html_media_regexps

・ HTML_TAGS →  HTML_MEDIA_TAGS

・ escapeImages →  escape_media_filenames + alias

・ strip_html_preserving_image_filenames →  strip_html_preserving_media_filenames
2020-11-10 14:53:04 +01:00
ianki
c2901e4859 Add hooks for filtering media. 2020-11-09 02:12:23 -08:00
Damien Elmes
29ae7480f2 cleanups 2020-11-05 11:21:13 +10:00
Damien Elmes
95317a4f17 fix backend_pb2 race 2020-11-05 11:02:40 +10:00
Damien Elmes
927a44e36e unused import 2020-11-04 21:04:42 +10:00
Damien Elmes
0d354da93a move aqt_data into source folder; implement wheel building 2020-11-04 12:14:03 +10:00
Damien Elmes
9fe53ff549 switch to the stable Python ABI
Should allow the library to be imported in both Python 3.8+3.9.
2020-11-03 20:29:07 +10:00
Alan Du
562ea403b3 Update to PyO3 0.12
+ cargo raze by Damien
2020-11-02 18:38:34 +10:00
Damien Elmes
dc3bd07919 update cargo deps; add script to copy them from rslib/ 2020-11-02 18:17:26 +10:00
Damien Elmes
e0817c004d move backend.proto into rslib/ 2020-11-02 16:28:31 +10:00
Damien Elmes
45ed97c56c rspy -> pylib/rsbridge 2020-11-02 15:21:12 +10:00
Damien Elmes
b17d537a9e remove old makefiles 2020-11-01 14:41:01 +10:00
Damien Elmes
aea0a6fcc6 initial Bazel conversion
Running and testing should be working on the three platforms, but
there's still a fair bit that needs to be done:

- Wheel building + testing in a venv still needs to be implemented.
- Python requirements still need to be compiled with piptool and pinned;
need to compile on all platforms then merge
- Cargo deps in cargo/ and rslib/ need to be cleaned up, and ideally
unified into one place
- Currently using rustls to work around openssl compilation issues
on Linux, but this will break corporate proxies with custom SSL
authorities; need to conditionally use openssl or use
https://github.com/seanmonstar/reqwest/pull/1058
- Makefiles and docs still need cleaning up
- It may make sense to reparent ts/* to the top level, as we don't
nest the other modules under a specific language.
- rspy and pylib must always be updated in lock-step, so merging
rspy into pylib as a private module would simplify things.
- Merging desktop-ftl and mobile-ftl into the core ftl would make
managing and updating translations easier.
- Obsolete scripts need removing.
- And probably more.
2020-11-01 14:26:58 +10:00
Andreas Reis
6e9aaad11e Add audio & object tags to media check
Makes the media check recognize files in <audio> and <object> tags as used.

They've been observed/supported by the WebView (checked: Anki, AnkiDroid) since just about forever already and are extremely useful if one knows a thing about web dev.
2020-10-25 13:09:57 +01:00
Arthur Milchior
d6dd1849cf NF: uses consts and update comment according to code 2020-10-15 08:22:23 +02:00
Damien Elmes
a4a461c17b
Merge pull request #782 from johan456789/patch-1
fix outdated help site
2020-10-12 12:15:46 +10:00
Damien Elmes
727ddd74b6 fixes for latest mypy 2020-10-10 19:02:59 +10:00
johan456789
e8e5314a97
fix outdated help site 2020-10-07 19:38:49 +08:00
Damien Elmes
53a984ba15 bump version 2020-10-02 10:22:21 +10:00
Arthur Milchior
7850d2d662 NF: uses consts in col 2020-09-27 09:01:47 +02:00
Damien Elmes
c125893eba bump version 2020-09-24 10:52:24 +10:00
Arthur Milchior
51ba2b5870 NF: remove _changedGuids
Nothing is ever added to the map.
That was a bug detected by lint in ankidroid
2020-09-21 06:02:10 +02:00
Damien Elmes
45724a0474 small learning steps were being stored as a float
https://forums.ankiweb.net/t/bug-with-fractional-learning-intervals/3524/5
2020-09-20 10:29:39 +10:00
Damien Elmes
ade7f438ce rebuild_filtered_deck() and new_filtered() 2020-09-03 18:02:47 +10:00
Damien Elmes
f87fa762be empty_filtered_deck() 2020-09-03 17:43:07 +10:00
Damien Elmes
56ceb6ba76 set_deck() 2020-09-03 17:42:46 +10:00
Damien Elmes
b65174a026 move card sorting and resetting to backend 2020-09-03 15:54:15 +10:00
Damien Elmes
ce49ca9401 log manual reschedule, but ignore the log entry in the stats 2020-09-02 17:56:23 +10:00
Damien Elmes
39212a38aa move reschedCards() to backend 2020-09-02 17:56:23 +10:00
Damien Elmes
8f9037cf0f move filtered deck empty/fill to backend
emptying of individual card ids still to be done
2020-09-02 17:56:23 +10:00
Damien Elmes
8d2867aa2d fix night mode on old graphs 2020-09-02 17:56:12 +10:00
Damien Elmes
a834df60ce rename some card+note fields in backend 2020-09-01 10:24:38 +10:00
Damien Elmes
d3dede057a move bury/suspend into backend 2020-09-01 10:24:38 +10:00
Damien Elmes
ac265fe75a formatting fixes for latest black 2020-09-01 10:24:38 +10:00
Damien Elmes
ccfa989c62 move unbury/unsuspend routines into backend 2020-09-01 10:24:38 +10:00
Damien Elmes
e5685254c6 reimplement congrats screen in Rust+Typescript 2020-09-01 10:24:38 +10:00
Damien Elmes
5a4043524a add missing pylint/isort deps 2020-08-31 14:07:04 +10:00
Damien Elmes
a517accee3 update to latest black 2020-08-31 13:29:28 +10:00
Damien Elmes
603210149c update to latest isort, pylint and pytest 2020-08-31 12:05:36 +10:00
Damien Elmes
20432ccecf fix new pylint raise-missing-from lint 2020-08-31 12:04:14 +10:00
Damien Elmes
819dce3ab6 bump version 2020-08-31 11:07:54 +10:00
Damien Elmes
4662a9fe1a check if we need to unbury at the start of the sync process
https://forums.ankiweb.net/t/bug-buried-cards-in-filtered-decks-not-being-unburied-next-day/2541/24
2020-08-28 21:09:07 +10:00
Damien Elmes
96f9ad1f25 fix next learn message overestimating delay
https://forums.ankiweb.net/t/bug-with-short-intervals-in-anki-2-1-scheduler/2678
2020-08-27 09:35:31 +10:00
Damien Elmes
5355c3c25e fix description in export screen (thanks to ANH)
https://forums.ankiweb.net/t/anki-2-1-31-exporting-display-bug/2669/3
2020-08-26 08:33:35 +10:00
Damien Elmes
7e6a65ed3d bump version 2020-08-26 08:05:45 +10:00
Damien Elmes
7d7c791504 bump version 2020-08-24 11:28:22 +10:00
Damien Elmes
d266f9a80a revlog entry should not be deleted when undoing preview card
The plan is to add a revlog entry when previewing in the future; this
is just a temporary fix.
2020-08-19 16:44:06 +10:00
Arthur Milchior
c4db4bd291 Any removed 2020-08-12 01:37:21 +02:00
Arthur Milchior
c3b2b8625e NF: childMapNode 2020-08-12 00:42:42 +02:00
Damien Elmes
b380f304bf bump version 2020-08-09 13:44:59 +10:00
Damien Elmes
760ce2282d previous fs encoding test didn't catch things like latin-1
https://forums.ankiweb.net/t/unicodeencodeerror-when-syncing/1746
2020-08-03 11:29:07 +10:00
Damien Elmes
5a73641b57 enable strict equality checks in mypy
Without it, the following code reports no problems:

def foo() -> int:
    return 5
print(foo == 5)
2020-08-03 10:26:40 +10:00
Damien Elmes
2bcf9a82d1 fix missing translations in export screen
https://forums.ankiweb.net/t/untranslated-strings/1623
2020-07-31 13:33:41 +10:00
Damien Elmes
186ff1f185 pin pytest due to pylint issue 2020-07-29 14:52:45 +10:00
Matt Krump
5e6f532f56 Turn on check_untyped_defs for aqt.exporting 2020-07-28 18:42:22 -06:00
Damien Elmes
227703f9fa bump version 2020-07-28 12:59:56 +10:00
Damien Elmes
9f3eebfa80 force old graphs to use ltr
otherwise the axis labels are way off

https://forums.ankiweb.net/t/anki-2-1-29-beta/1220/8
2020-07-22 14:30:56 +10:00
Damien Elmes
412f1777bd bump version 2020-07-21 15:54:14 +10:00
Damien Elmes
01ff6ab55d apply rtl dir to webviews
https://forums.ankiweb.net/t/gui-problems-with-right-to-left-languages/1205
2020-07-21 11:52:25 +10:00
Damien Elmes
15f13145ea
Merge pull request #698 from Arthur-Milchior/remove_clear_overdue
remove _clearOverdue
2020-07-21 10:27:04 +10:00
Arthur Milchior
a3f8a15c37 remove unused variable 2020-07-20 10:17:23 +02:00
Arthur Milchior
5c9c5f6ebc duplicate assignment removed 2020-07-20 06:47:47 +02:00
Arthur Milchior
e02d47a0d9 typo 2020-07-20 06:28:36 +02:00
Arthur Milchior
0449785b7a remove useless variable cram 2020-07-20 06:24:42 +02:00
Arthur Milchior
3fd16beaa5 remove _clearOverdue
This member is never read
2020-07-20 05:45:18 +02:00
Damien Elmes
67abb98993
Merge pull request #692 from Arthur-Milchior/remove_useles_variables
Remove useless variables
2020-07-20 11:35:40 +10:00
Damien Elmes
928a1d3a75
Merge pull request #697 from Arthur-Milchior/typos
Comment typo
2020-07-20 11:34:02 +10:00
Damien Elmes
2bb5826598
Merge pull request #696 from Arthur-Milchior/note_to_add_note
For some reason, add_note were assigned to a unused variable
2020-07-20 11:32:55 +10:00
Damien Elmes
63c0557824
Merge pull request #695 from Arthur-Milchior/note->field
replace "note" by "field"
2020-07-20 11:32:30 +10:00
Arthur Milchior
ff62829e6e Comment typo 2020-07-19 11:24:58 +02:00
Arthur Milchior
35cfbc2bae For some reason, add_note were assigned to a unused variable
I remove it for clarity
2020-07-19 10:58:40 +02:00
Arthur Milchior
bff784dc9a replace "note" by "field"
My bad. In one case `f` did represent "field" and not "fact"
2020-07-19 08:24:43 +02:00
Arthur Milchior
23eeb84556 Uses constant in tests 2020-07-19 05:34:22 +02:00
Arthur Milchior
1b4a180fb9 d2->col2 2020-07-17 17:55:57 +02:00
Arthur Milchior
e7d75c2c8d tmp->col in tests 2020-07-17 17:37:17 +02:00
Arthur Milchior
e7378734d2 f4->note4 2020-07-17 17:34:39 +02:00
Arthur Milchior
0db941ed98 f3->note3 2020-07-17 17:33:58 +02:00
Arthur Milchior
9c5bb199d0 f->n in id 2020-07-17 17:30:29 +02:00
Arthur Milchior
93ad194862 NF: deck2->col2 2020-07-17 17:27:40 +02:00
Arthur Milchior
452daf8d80 Remove useless variables 2020-07-17 08:38:48 +02:00
Arthur Milchior
1af59545bd gn->deckn in test
Obtained by
```
sed -i "s/\bg1\b/deck1/g" pylib/tests/*py qt/tests/*py
sed -i "s/\bg2\b/deck2/g" pylib/tests/*py qt/tests/*py
```
2020-07-17 06:58:32 +02:00
Arthur Milchior
2c73dcb2e5 d->col in tests
obtained by
```
sed -i "s/\bd\b/col/g" pylib/tests/*py qt/tests/*py
```
2020-07-17 06:58:32 +02:00
Arthur Milchior
c376714a9b deck->col in tests
Obtained by
```
sed -i "s/\bdeck\b/col/g" pylib/tests/*py qt/tests/*py
```
2020-07-17 06:50:46 +02:00
Arthur Milchior
425b82e6e7 f2->note2 in test
Obtained by
```
sed -i "s/\bf2\b/note2/g" pylib/tests/*py qt/tests/*py
```
2020-07-17 06:47:44 +02:00
Arthur Milchior
4c25835d27 f->note in test
Obtained by sed -i "s/\bf\b/note/g" pylib/tests/*py qt/tests/*py
2020-07-17 06:47:44 +02:00
Arthur Milchior
6a529e51cc note->n
Next commit will transform f into note, and this lead to a variable clash here
2020-07-17 06:08:33 +02:00
Damien Elmes
19541c4a9d fix deck tree with a day delta, and support arbitrary timestamps 2020-07-06 19:16:03 +10:00
Damien Elmes
4d23a69e9a formatting 2020-07-01 14:01:24 +10:00
Damien Elmes
572e2d10dc hack around future unburied date
We want to avoid unburied != self.today, because the unburied time
is synchronized as part of the collection at the moment, and we don't
want a client with an older unburied time that was modified more
recently to cause cards to be unburied twice - so we only unbury
if today is more than 7 days earlier than the last unbury time.

Unsure what caused these users to end up in that state in the first
place:
https://anki.tenderapp.com/discussions/ankidesktop/41335-cards-remain-buried-forever-unless-manually-unburied
2020-07-01 13:12:45 +10:00
Damien Elmes
82568a1f3e experiment with exposing raw card/revlog data to frontend 2020-06-29 15:48:00 +10:00
Damien Elmes
3ca4a13cf2 protobuf package should be in PascalCase 2020-06-29 15:48:00 +10:00
Damien Elmes
d99ea0c7a0 fix media not working after full sync 2020-06-24 09:52:02 +10:00
Damien Elmes
83b3d3249f drop yellow colour in "filtered" for now
It's difficult to read against a light background
2020-06-16 16:39:07 +10:00
Damien Elmes
b51f03085e migrate card stats to backend
Currently this renders the HTML directly like the previous Python
implementation - doing it in JS would probably make more sense in the
future.
2020-06-15 17:22:16 +10:00
Damien Elmes
772c7a945c fix lint issues with latest mypy_protobuf 2020-06-14 15:38:43 +10:00
Damien Elmes
8e895aa247 handle db errors the same way as other backend requests 2020-06-12 20:39:02 +10:00
Damien Elmes
1cb0ac3670 update unit test for leech change 2020-06-09 14:12:34 +10:00
Damien Elmes
c4ead8ad28 strip out \r on export
(private post)
https://anki.tenderapp.com/discussions/ankidesktop/42315-bug-report-exporting-selected-cards-in-browser-issue
2020-06-09 12:56:16 +10:00
Damien Elmes
8bac28470f fix error when importing v2 apkg
https://anki.tenderapp.com/discussions/ankidesktop/42070-anki-closes-without-warning-when-importing-conflicting-shared-deck
2020-06-09 12:06:52 +10:00
Damien Elmes
b277849db1 fix audio being included in FrontSide 2020-06-09 08:16:03 +10:00
Damien Elmes
7c444b4d35 add progress to db check 2020-06-08 21:07:36 +10:00
Damien Elmes
4570ae3d12
Merge pull request #658 from BlueGreenMagick/media-type
add type hint for media dir
2020-06-08 11:31:01 +10:00
Damien Elmes
4df3777aed fix legacy deckDueTree() 2020-06-08 11:12:24 +10:00
BlueGreenMagick
c6ec9e44e4 add type hint for media dir 2020-06-07 10:35:48 +09:00
Damien Elmes
1fe18718f7 add daily count updating to backend 2020-06-05 19:49:53 +10:00
Damien Elmes
fee6cdff22 support generating a due tree for a different date 2020-06-05 09:38:31 +10:00
Damien Elmes
4a69b55a90 add note/card removal to backend 2020-06-04 18:21:04 +10:00
Damien Elmes
e1b0fe1832 add .count() to hooks, and list->sequence in note deletion 2020-06-04 18:20:03 +10:00
Damien Elmes
14a5ab353e fix duplicate/empty check 2020-06-02 17:34:34 +10:00
Damien Elmes
4d7e23111e change sync label to indicate sync state
- blue for normal sync, red for full sync required
- refactor status fetching code so we don't hold a collection lock
during the network request, which slows things down
- fix sync spinner restarting when returning to deck list
2020-06-02 13:23:01 +10:00
Damien Elmes
5729e9e336 "fix" v1 scheduler breaking after burySiblings change 2020-06-01 19:44:25 +10:00
Damien Elmes
90e19daec2 handle aborting normal sync
- Use a separate abort handle, as the media sync is running
in the background and we need to be able to target them separately.
The current progress handling is going to need a rethink if we introduce
any other background tasks in the future.
- Roll back the transaction when interrupting.
2020-06-01 13:57:10 +10:00
Damien Elmes
c6f0710ce7 report normal sync progress
Also:
- provide a way for the progress handler to skip the throttling so that
we can ensure progress is updated at the end of a stage
- show 'checking' at the end of full sync
2020-06-01 13:57:10 +10:00
Damien Elmes
aecce5a516 fix mtime being bumped in .reset() 2020-06-01 13:57:10 +10:00
Damien Elmes
42302b070e fix de-auth when no media DB set up 2020-06-01 13:57:10 +10:00
Damien Elmes
0e5b7da62a login/full up/full down plugged in 2020-06-01 13:57:10 +10:00
Damien Elmes
ee6d7f82e7 rework progress handling
- client now polls status instead of backend pushing it
- supports multiple threads
- update throttling happens in one place
2020-06-01 13:57:10 +10:00
Damien Elmes
6204a86879 tidy up sibling burying
closes #649
2020-06-01 13:48:15 +10:00
Damien Elmes
8516ed8655 handle images served from directory + svg content type
https://anki.tenderapp.com/discussions/ankidesktop/41974-win-linux-when-pasting-some-html-i-get-error-in-_run_command-ankirsbackendioerror-ioerror
2020-06-01 13:40:17 +10:00
Damien Elmes
8f9c6fbf95
Merge pull request #643 from evandroforks/add_repr_functions
Added __repr__ functions to common objects
2020-06-01 13:29:21 +10:00
evandrocoan
3318f23ff3 Say which card failed with an exception 2020-05-31 19:41:18 -03:00
evandrocoan
ef5c38dbc6 Added super().__repr__() to new __repr__() calls 2020-05-31 19:39:19 -03:00
evandrocoan
1e216e47ed Added __repr__ functions to common objects 2020-05-31 19:39:19 -03:00
Damien Elmes
97618564f4 fix typechecking breaking with latest mypy_protobuf
the change that caused it:
https://github.com/dropbox/mypy-protobuf/issues/118

This is more awkward to handle now, as the types are only available
at type-checking time. Python's static typing is such a mess :-(
2020-05-27 09:14:02 +10:00
Damien Elmes
3e156911e7 avoid printing the original exception bytes
Prevents the "while processing this exception, another exception
occurred" message
2020-05-25 14:28:37 +10:00
Damien Elmes
015de0c51f move generated methods into separate, gitignored file 2020-05-24 20:41:53 +10:00
Damien Elmes
c8d13209cd move dupe check to backend 2020-05-24 19:48:56 +10:00
Damien Elmes
38508c3ad7 use keyword args for calls with more than one argument 2020-05-24 09:12:47 +10:00
Damien Elmes
89dde3aeb0 migrate the remaining methods 2020-05-24 08:36:50 +10:00
Damien Elmes
4bf8175bcb migrate more scheduling/media/etc
almost there
2020-05-23 21:34:19 +10:00
Damien Elmes
a105037ec9 migrate notetypes, update GIL list 2020-05-23 20:43:55 +10:00
Damien Elmes
6710e3d528 add some more newtypes to the RPC defs 2020-05-23 16:58:01 +10:00
Damien Elmes
95735f106a migrate cards and notes 2020-05-23 16:19:48 +10:00
Damien Elmes
7550e6241c migrate decks and dconf methods 2020-05-23 15:09:16 +10:00
Damien Elmes
081a61a438 more methods 2020-05-23 14:01:36 +10:00
Damien Elmes
175afa9fee migrate more methods to service 2020-05-22 22:09:33 +10:00
Damien Elmes
9c20d9a02b start reworking protobuf handling
Will allow us to cut down on boilerplate by automatically generating
code from RPC service definitions
2020-05-22 20:56:15 +10:00
Damien Elmes
0bf4fe400a fix deletion of decks; allow deleting cards from default
https://anki.tenderapp.com/discussions/beta-testing/1967-2126-189-g7384df8f-crash-at-note-types-fields-save#comment_48353232
2020-05-22 11:24:56 +10:00
Damien Elmes
9baa8530d5 move deck/notetype update hooks to gui
We need to migrate away from firing hooks in libanki, since libanki
methods may be running on a background thread, and hook consumers
typically expect the code to run in the main thread. We could document
it, but it would frequently be forgotten about, and could lead to
crashes.

https://anki.tenderapp.com/discussions/ankidesktop/41748-qobject-cannot-create-children-for-a-parent-that-is-in-a-different-thread-when-hitting-the-save-button-on-clayoutpy-window
2020-05-22 10:47:14 +10:00
Damien Elmes
1844cc84cc can't use _card.note_type() in clayout 2020-05-22 09:58:58 +10:00
Damien Elmes
c52a076176 add back most of .fields() to avoid breaking add-ons 2020-05-21 12:08:51 +10:00
Damien Elmes
44ca4b32eb use longer delay in test_timing()
was intermittently failing in slow Windows CI
2020-05-21 09:33:49 +10:00
evandrocoan
b388c43454 Fixed HttpClient session not being closed 2020-05-20 19:20:41 -03:00
Damien Elmes
d5e48fdf65 fix deck age being used instead of collection
https://anki.tenderapp.com/discussions/ankidesktop/41637-bug-in-statistics
2020-05-20 19:46:01 +10:00
Damien Elmes
e2bb5cd14a update missed storage._Collection references 2020-05-20 19:45:46 +10:00
Damien Elmes
50fdf9b03d storage->collection 2020-05-20 17:58:28 +10:00
Damien Elmes
c49c378296 move storage logic into collection.py; fix export bug
https://anki.tenderapp.com/discussions/ankidesktop/41495-using-file-export-closes-the-collection-on-mwcoldb-if-the-browser-window-is-open
2020-05-20 17:43:34 +10:00
Damien Elmes
0c85397461 fix extending limits in custom study
https://anki.tenderapp.com/discussions/beta-testing/1967-2126-189-g7384df8f-crash-at-note-types-fields-save
2020-05-20 14:13:40 +10:00
Damien Elmes
7384df8f19
Merge pull request #613 from evandroforks/add_missing_file_descriptors_close
Add missing close file descriptors using context managers
2020-05-19 14:39:07 +10:00
Damien Elmes
e17d63083c catch protobuf error as well
Sad that we can't exhaustively match protobuf oneofs in
Python :-(
2020-05-19 13:10:20 +10:00
evandrocoan
083cc8ae4e Simplified csvfile.py super call __del__ call 2020-05-18 16:20:33 -03:00
evandrocoan
200bad3714 Explicitly close the importer file descriptor
https://github.com/ankitects/anki/pull 613
2020-05-18 15:54:20 -03:00
evandrocoan
efb62b9528 Add missing close file descriptors using context managers 2020-05-18 15:54:20 -03:00
Damien Elmes
8bd5d756e2 bump version 2020-05-18 12:50:20 +10:00
Damien Elmes
68465ae07b protobuf tidyups 2020-05-18 09:26:14 +10:00
Damien Elmes
7ec3f1ecc0 fix syncing 2020-05-17 20:52:02 +10:00
Damien Elmes
69537bb748 minor tidyups in decks.py 2020-05-17 20:13:29 +10:00
Damien Elmes
803aeff16e update current note type in backend 2020-05-17 20:01:16 +10:00
Damien Elmes
7daa417dc8 fix renaming corner cases and decks.update()
- .update() should update a single deck and preserve usn by default,
as that's what existing code expects
- decks are automatically renamed when they conflict with an existing
name
2020-05-17 19:07:15 +10:00
Damien Elmes
df48fa8cf7 handle deletion of default deck in backend; use + instead of _ 2020-05-17 15:22:19 +10:00
Damien Elmes
252eb3a444 fix shared deck conf warning 2020-05-17 14:37:59 +10:00
Damien Elmes
b9b837e7bd update before_upload() 2020-05-17 14:13:21 +10:00
Damien Elmes
6114836484 move deck config to protobuf 2020-05-17 13:28:41 +10:00
Damien Elmes
54670580ad add option to limit deck tree counts to a particular node 2020-05-17 08:38:49 +10:00
Damien Elmes
8b57a61746 use deck tree for new/review count calculation
- wins back the performance lost by the decks and dconf not being
in memory, and the overhead of serializing data for DB calls
- card counts are no longer capped to 1000
- learn counts are currently still calculated separately - can't merge
v1 counts without changing the existing behaviour
- partially rendering the tree may yield more savings
2020-05-16 20:28:03 +10:00
Damien Elmes
5590b22683 speed up children() and add deck_and_child_ids() 2020-05-16 15:40:07 +10:00
Damien Elmes
2efda14200 rework and merge updateCutoff
- the old "mutate but don't save" approach to resetting the "done today"
counts no longer works, and was inefficient anyway - now we just check
the day when returning the count
- remove separate implementation for v1 scheduler

This is a stop-gap solution - a bigger refactor will need to wait
until the deck/note type changes have stabilized.
2020-05-16 15:14:16 +10:00
Damien Elmes
bd1ce123af formatting 2020-05-16 14:59:47 +10:00
Damien Elmes
1cddd6d23e only update active when selecting deck/resetting
We were previously doing this every time a card was answered.
2020-05-16 14:57:46 +10:00
Damien Elmes
8eada2b57d add find_deck_in_tree() 2020-05-16 13:05:20 +10:00
Damien Elmes
24dd116f91 update unit tests to use deck_due_tree() 2020-05-16 12:10:40 +10:00
Damien Elmes
f2086fc2e3 switch to new deck tree in deck browser
Saves us having to look up collapsed/filtered as we render, and gives
us type completion.
2020-05-16 10:52:14 +10:00
Damien Elmes
4d5908dc20 remove unused default(Dynamic)Deck 2020-05-15 21:47:33 +10:00
Damien Elmes
964a69e54e handle default deck and filtered deck suppression in the backend 2020-05-15 21:21:10 +10:00
Damien Elmes
769bf04f75 remove unused deckDueList() and associated tree code
The progress bar add-ons appear to be the only active users of it;
they can switch their old code from iterating over the list to
simply locating the selected deck in deckDueTree(), as its counts should
summarize all the child decks.
2020-05-15 18:37:12 +10:00
Damien Elmes
e44b3bf93c reuse stock basic type for default field/notetype/etc
Could add extra methods in the backend to allocate these in the
future, but as this is not a hot path, this should do for now.
2020-05-15 17:35:00 +10:00
Damien Elmes
2ac33500eb fetch stock notetypes from backend 2020-05-15 17:08:24 +10:00
Damien Elmes
f650e5557f add back card deletion count
cheaper to look up now that there's an index on notes.mid
2020-05-15 15:28:07 +10:00
Damien Elmes
7c5980a941 <= in modified_after_begin for unit tests 2020-05-15 14:24:59 +10:00
Damien Elmes
46c363d4aa track changes in fields dialog as well
And avoid bumping schema until user actually saves, but warn at
start.
2020-05-15 13:59:44 +10:00
Damien Elmes
a2b7a30841 fetch/set remaining collection properties as required 2020-05-15 13:33:37 +10:00
Damien Elmes
31480be5e7 fix exporting bug
can't/shouldn't pop up confirmation message on export
2020-05-15 11:03:34 +10:00
Damien Elmes
782911471b add "fill empty" checkbox 2020-05-14 20:58:45 +10:00
Damien Elmes
5167bb57be start reworking card layout screen
- front/back/css shown in tabs
- front/back preview switchable; only one webview needs to be loaded
- dropdown to select cloze number in preview
- search box to search in front/back/css
2020-05-14 15:24:29 +10:00
Damien Elmes
f23eb350e4 drop availOrds(), and use backend for getting cloze numbers 2020-05-14 12:14:00 +10:00
Damien Elmes
9f676dbe0b remove availOrds() check in importer
Like adding individual cards, we now support importing material even
if it wouldn't generate any cards, and the old availOrds check can't
handle negated conditionals.
2020-05-14 10:27:54 +10:00
Damien Elmes
c601dcef24 remove obsolete preview code 2020-05-14 09:22:53 +10:00
Damien Elmes
6680cdf1d3 update the card layout screen
- changes are now committed in bulk when closing the dialog,
and can be canceled
- it's not necessary to save the note to the database to preview it
- duplicate fields are now shown as duplicates in the top list
- redraw preview more quickly
- use + instead of _ when deduplicating names, as the latter is a
glob character
2020-05-13 17:24:49 +10:00
Damien Elmes
12b8fe6147 don't hide static template text when card is empty 2020-05-13 11:17:44 +10:00
Damien Elmes
826cbb0108 fetch template and note fields in backend during normal card render
Saves having to serialize the note fields and q/a templates, which
is particularly a win when rendering question/answer in the browse
screen.

Also some work towards being able to preview notes without having to
commit them to the database.
2020-05-13 10:38:49 +10:00
Damien Elmes
9317cee9ba handle scheduling preferences in the backend 2020-05-12 21:13:34 +10:00
Damien Elmes
ea4f150455 fetch timing_today() params in backend 2020-05-12 21:13:34 +10:00
Damien Elmes
eee0d7e92f switch server back into a bool and rely on config 2020-05-12 21:13:34 +10:00
Damien Elmes
2c7900989c fix default rollover 2020-05-12 21:13:34 +10:00
Damien Elmes
70cc1699a6 rewrite DB check
- notes with wrong field count are now recovered instead of
being deleted
- notes with missing note types are now recovered
- notes with missing cards are now recovered
- recover_missing_deck() still needs implementing
- checks required
2020-05-12 21:13:34 +10:00
Damien Elmes
2413f286b1 bulk tag add/remove/update; canonify on note save
also remove the tag list updated hook - we'll need a better solution in
the future than having the library code call back into the GUI code
2020-05-12 21:13:34 +10:00
Damien Elmes
7bab99d873 support disabling unicode normalization in notes 2020-05-12 21:13:34 +10:00
Damien Elmes
a7a485d550 use backend for genCards() and updateFieldCache() 2020-05-12 21:13:34 +10:00
Damien Elmes
05ca797ee6 add pep8 name for findReplace 2020-05-12 21:13:34 +10:00
Damien Elmes
2317574f02 fix tag saving in notes 2020-05-12 21:13:34 +10:00
Damien Elmes
1852e32183 update find&replace in browser
sadly the UI still stutters on large selections - the calls
to get the selected rows from Qt are really slow.
2020-05-12 21:13:34 +10:00
Damien Elmes
8b557ec382 move find&replace to backend 2020-05-12 21:13:34 +10:00
Damien Elmes
25f122bf5c update fields and models diags
- field changes are now applied when user closes dialog with save
button, in bulk
- models diag now fetches note type and saves it as required, instead
of holding on top a copy that can grow stale as changes are made in
subdialogs
- both dialogs now perform operations in the backend
- note.model() now fetches the note type on the fly, instead of
holding on to a copy that may become stale
2020-05-12 21:13:34 +10:00
Damien Elmes
2308b136fd add an index on notes(mid) so we can avoid the tablescan 2020-05-12 21:13:34 +10:00
Damien Elmes
1233e9de12 release GIL on notetype save/delete 2020-05-12 21:13:34 +10:00
Damien Elmes
fd4406222a remove invalidated part of test_review_limits
Previously if the sum of child counts was above the parent's limit,
the deck tree would show a parent count above the parent's limit, and
clicking on the parent would show a lower count. The new deck tree
code never shows a parent count above the parent's limit, so this
part of the test is no longer valid.
2020-05-12 21:13:33 +10:00
Damien Elmes
5ce59f6559 run black 2020-05-12 21:13:33 +10:00
Damien Elmes
68fdd651e5 remove dconf cache 2020-05-12 21:13:33 +10:00
Damien Elmes
238441f2d9 use the backend for the deck due tree
- approx 3x faster on a large test deck
- counts are no longer capped to 1000 in the tree
2020-05-12 21:13:33 +10:00
Damien Elmes
5fb5338d97 add missing decks in backend
- need to compare parents with unicode case folding
- duplicate check enforced by the DB
2020-05-12 21:13:33 +10:00
Damien Elmes
5d6581faf2 remove pybackend.py 2020-05-12 21:13:33 +10:00
Damien Elmes
a88bc1e836 speed up browser load by rendering deck tree in Rust and skipping counts 2020-05-12 21:13:33 +10:00
Damien Elmes
f592672fa9 add separate decks table, and start on moving deck handling to Rust
The Python tests are passing, but there are still a number of issues
to work through, and the table/protobuf schema is not yet finalized.
2020-05-12 21:13:33 +10:00
Damien Elmes
6e1d2990a0 remove unused _updateRequired and associated code 2020-05-12 21:13:33 +10:00
Damien Elmes
6e8860cafa hook the empty cards code up to the GUI 2020-05-12 21:13:33 +10:00
Damien Elmes
f637ac957d hook up new note and note type handling
- notetypes are fetched from the DB as needed, and cached in Python
- handle note type changes in the backend. Multiple operations can now
be performed in one go, but this is not currently exposed in the GUI.
- extra methods to grab sorted note type names quickly, and fetch by
name
- col.models.save() without a provided notetype is now a no-op
- note loading/saving handled in the backend
- notes with no valid cards can now be added
- templates can now be deleted even if they would previously
orphan notes

a number of fixmes have been left in notes.py and models.py
2020-05-12 21:13:33 +10:00
Damien Elmes
e0de3d6b8c add an extra second to a unit test 2020-05-12 21:13:33 +10:00
Damien Elmes
d6646a6db5 expose stock notetypes 2020-05-12 21:13:33 +10:00
Damien Elmes
fcb8567185 drop legacy newBury option 2020-05-12 21:13:33 +10:00
Damien Elmes
540892639f add stock note types in backend 2020-05-12 21:13:33 +10:00
Damien Elmes
74c97ad6d3 bump version 2020-05-11 19:28:17 +10:00
Damien Elmes
c02716ccd8 python formatting+lints 2020-05-08 17:30:27 +10:00
Damien Elmes
4a26e2ba77 bundle socks
https://anki.tenderapp.com/discussions/ankidesktop/39801-sync-error
2020-05-08 15:26:19 +10:00
Damien Elmes
a095a8bb07 fix due of preview cards being reset
https://anki.tenderapp.com/discussions/ankidesktop/41243-undo-function-causes-error-in-filtered-decks
2020-05-08 15:25:54 +10:00
Damien Elmes
54734ec88e fix error undoing card in preview queue
https://anki.tenderapp.com/discussions/ankidesktop/41243-undo-function-causes-error-in-filtered-decks
2020-05-08 15:25:38 +10:00
Damien Elmes
e37774f0bd fix v1 log appearing next to export 2020-05-05 16:15:49 +10:00
Damien Elmes
9bb4a02e0a fix unnecessary spaces being added to notes with empty tags 2020-05-04 21:53:22 +10:00
Damien Elmes
b337dda8df bump version 2020-05-02 10:22:00 +10:00
evandrocoan
b19b3a6706 Stop requiring ankirspy while running on development because
maturin develop hides the package from pip
https://github.com/PyO3/maturin/issues 304
2020-04-30 23:37:19 -03:00
evandrocoan
a48fa4ad87 Add missing aqt and anki modules dependency requirements 2020-04-30 17:30:22 -03:00
Damien Elmes
94d369db18 if conf points to an invalid configuration, fall back on default 2020-04-30 11:45:13 +10:00
Damien Elmes
e27d015ff9 expose clock hack via env var
closes #594
2020-04-30 09:33:02 +10:00
Damien Elmes
ff170bff31 fix tags with missing leading/trailing spaces in DB check 2020-04-30 08:54:17 +10:00
Damien Elmes
4e33775ed4 drop type answer requirement special case
While it makes no sense to have the typing box on the front without
another non-empty field, "the front of this card is empty" when
a typing box is on the template seems to be confusing some users, so
it is clearer to show them the box.
2020-04-29 21:29:16 +10:00
Damien Elmes
00cf4fc585 bump version 2020-04-28 08:57:56 +10:00
Damien Elmes
01fc958c0e
Merge pull request #587 from BlueGreenMagick/tags
remove unnecessary code
2020-04-27 19:25:42 +10:00
BlueGreenMagick
55eb0d1e68 remove unnecessary code 2020-04-27 10:05:38 +09:00
evandrocoan
26480fb13c Fixed make clean rule not working on Windows 2020-04-26 03:02:02 -03:00
Damien Elmes
683f664d85 fix deleting deck configs 2020-04-20 13:23:05 +10:00
Damien Elmes
16be20e2fa don't write log files when exporting 2020-04-15 21:45:32 +10:00
Damien Elmes
b55742509a embed sort kind enum to avoid future namespace conflicts 2020-04-14 20:31:10 +10:00
Damien Elmes
7f2610568a Revert "remove unused decks.count()"
This reverts commit c79b6835bf.

c79b6835bf
2020-04-13 19:26:12 +10:00
Damien Elmes
351d8a309f move autoplay() into card 2020-04-13 09:04:30 +10:00
Damien Elmes
10eb947402 fix replay audio again, and decouple the code from the reviewer 2020-04-13 08:59:36 +10:00
Damien Elmes
2f1523f82a set db mod flag if mtime changed by backend 2020-04-11 15:41:21 +10:00
Damien Elmes
330848abe3 document ankidev and remove sync changes
https://github.com/ankitects/anki/pull/548
2020-04-11 14:36:05 +10:00
Damien Elmes
c79b6835bf remove unused decks.count() 2020-04-10 10:25:31 +10:00
Damien Elmes
4c7210b430 (de)serialize decks in backend 2020-04-09 12:41:59 +10:00
Damien Elmes
ce2890ca15 fix errorsAfterMidnight 2020-04-08 10:05:19 +10:00
Damien Elmes
36ec7830a9 load/save note types in backend
This allows us to normalize bad data, and is the first step towards
splitting note types into separate tables.
2020-04-08 10:05:07 +10:00
Damien Elmes
6ecf2ffa2c
Merge pull request #543 from Arthur-Milchior/sort_according_to_path
Sort according to path
2020-04-07 14:44:53 +10:00
Damien Elmes
16ab351bf8 avoid unnecessary work in 'make build' 2020-04-07 10:59:14 +10:00
Arthur Milchior
64bb71e5bd immediate_parent 2020-04-06 23:56:24 +02:00
Arthur Milchior
285e9280cf immediate_parent_path 2020-04-06 23:55:17 +02:00
Arthur Milchior
bda2935de1 _basename to basename, since it's not private in use 2020-04-06 23:51:50 +02:00
Arthur Milchior
5315b717c0 _basename used where possible 2020-04-06 23:51:42 +02:00
Arthur Milchior
69a9425cd0 replace _path by path (because it's not private here) 2020-04-06 23:50:43 +02:00
Arthur Milchior
266c2022b5 uses _path where possible 2020-04-06 23:50:37 +02:00
Arthur Milchior
5d55c4cda2 Sort decks according to their paths
Currently it's sorted alphabetically. Because of this, "A::B" appears
between "A9" and "AA" in list of decks.
2020-04-06 22:49:25 +02:00
Arthur Milchior
77741977a1 make _path static 2020-04-06 22:45:30 +02:00
Damien Elmes
e247ac3c47 hide deprecation warning triggered by supermemo test 2020-04-06 20:24:17 +10:00
Damien Elmes
e005140909 hide warning when running tests 2020-04-06 20:24:05 +10:00
Damien Elmes
8efc09d4ef emulate named args 2020-04-06 20:09:44 +10:00
Damien Elmes
dc62d5072c use bytes for deck config proto 2020-04-06 15:39:47 +10:00
Damien Elmes
164bd29438 use bytes for config proto 2020-04-06 15:39:47 +10:00
Damien Elmes
991e6bdd4c use a new file each time when testing graphs 2020-04-06 15:39:47 +10:00
Damien Elmes
676f4e74a8 store config in separate DB table
- mtime is tracked on each key individually, which will allow
merging of config changes when syncing in the future
- added col.(get|set|remove)_config()
- in order to support existing code that was mutating returned
values (eg col.conf["something"]["another"] = 5), the returned list/dict
will be automatically wrapped so that when the value is dropped, it
will save the mutated item back to the DB if it's changed. Code that
is fetching lists/dicts from the config like so:

col.conf["foo"]["bar"] = baz
col.setMod()

will continue to work in most case, but should be gradually updated to:

conf = col.get_config("foo")
conf["bar"] = baz
col.set_config("foo", conf)
2020-04-06 15:39:47 +10:00
Arthur Milchior
7365b93c1a Remove useless recursion in DeckManager.rem
For any deck the children of it's children are its children. So
applying rem to children of children is useless and actually slightly
costly for deep subdecks
2020-04-05 11:33:23 +02:00
Damien Elmes
484377b809 downgrade when writing dummy collection 2020-04-04 18:43:26 +10:00
Damien Elmes
7375a0389a add flag to skip downgrade on collection close
Disabled for now; when enabled it will allow faster collection
open and close in the normal case, while continuing to downgrade
when exporting or doing a full sync.

Also, when downgrading is disabled, the journal mode is no longer
changed back to delete.
2020-04-04 17:21:45 +10:00
Damien Elmes
ac4284b2de update tag handling
- tag list stored in a separate DB table
- non-wildcard searches now do full unicode case folding
(eg tag:masse matches 'Maße')
- wildcard matches do simple unicode case folding
- some functions haven't been updated yet, so ascii folding will
continue to be used in some operations
2020-04-03 19:34:46 +10:00
Damien Elmes
333d0735ff preserve mtime/usn when syncing deck config, and add snake_case names 2020-04-03 19:34:46 +10:00
Damien Elmes
d5f6d8b476 set col mod explicitly in decks.select() 2020-04-03 19:34:46 +10:00
Damien Elmes
ab6eeb5882 ensure pending deck/tag/note type changes flushed before searching 2020-04-03 19:34:46 +10:00
Damien Elmes
342bb64092
Merge pull request #535 from evandroforks/upload_wheels_to_pypi
Created the GitHub Actions step Upload to PyPi
2020-04-03 08:40:17 +10:00
evandrocoan
28bb56744d Fixed double python version check for python_requires=">=3.7" 2020-04-02 12:31:12 -03:00
evandrocoan
069cc11a86 Created the GitHub Actions step Upload to PyPi to run only on
tagged releases of anki:
https://anki.tenderapp.com/discussions/ankidesktop/40025-anki-in-python-package-index
2020-04-02 02:57:34 -03:00
Damien Elmes
03f9be21e9 return the added card id instead of mutating the backend card object 2020-04-02 12:09:46 +10:00
Damien Elmes
431683aa5d make sure None is returned in no-such-card case 2020-04-02 11:29:40 +10:00
Damien Elmes
c57801c168 tolerate string values in deck["conf"] 2020-04-01 19:36:40 +10:00
Damien Elmes
d342955830 remove defaultConf 2020-04-01 17:36:46 +10:00
Damien Elmes
c9da4bc1a6 allow aborting a media sync while http req in flight
The progress handling code needs a rethink, as we now have two separate
ways to flag that the media sync should abort. In the future, it may
make sense to switch to polling the backend for progress, instead of
passing a callback in.
2020-04-01 09:49:25 +10:00
Damien Elmes
fa2965d39a add a temporary cache to bring deck list performance back 2020-03-30 20:27:53 +10:00
Damien Elmes
35c03af520 split deck config into separate SQL table
- on collection load, the schema is upgraded to 12
- on collection close, the changes are reversed so older clients
can continue to open the collection
- in the future, we could potentially skip the reversal except
when exporting/doing a full sync
- the same approach should work for decks, note types and tags in the
future too
- the deck list code needs updating to cache the deck confs for the
life of the call
2020-03-30 20:01:16 +10:00
Damien Elmes
004cc2b5f8 move deck conf handling to backend 2020-03-30 14:39:46 +10:00
Damien Elmes
5b26b20697 explicitly save deck conf after mutating it 2020-03-30 12:27:52 +10:00
Damien Elmes
bf83715ee0 initial work on undo support 2020-03-29 17:52:16 +10:00
Damien Elmes
158ce7bc01 add an extra second so slow CI server doesn't fail 2020-03-27 15:52:35 +10:00
Damien Elmes
f6219b59ac
Merge pull request #528 from evandroforks/create_actions_for_windows_macos
Create actions for Windows and Mac OS
2020-03-27 15:26:22 +10:00
Damien Elmes
84b84ae31c use add_card() 2020-03-27 15:11:07 +10:00
evandrocoan
b07454ca0c Merge remote-tracking branch 'danielelmes/master' into create_actions_for_windows_macos 2020-03-26 19:31:01 -03:00
Damien Elmes
7f16f436c3 handle mtime/usn bump in backend, and tweak integer sizes 2020-03-26 20:55:04 +10:00
Damien Elmes
13c7c82ae3 fix two cases where a float was being written into due 2020-03-26 19:05:18 +10:00
Damien Elmes
47504245dc update_card() 2020-03-26 18:54:20 +10:00
Damien Elmes
1acfe7d3cc tweak code for mypy 2020-03-26 17:47:53 +10:00
Damien Elmes
7ddaf93f7a use backend to get card 2020-03-26 17:47:43 +10:00
Damien Elmes
8c80f96314 high due numbers shouldn't force a full sync 2020-03-26 09:09:11 +10:00
evandrocoan
721453f923 Merge remote-tracking branch 'danielelmes/master' into create_actions_for_windows_macos
# Conflicts:
#	.github/scripts/trailing-newlines.sh
#	.github/workflows/checks.yml
#	Makefile
#	pylib/Makefile
#	qt/Makefile
#	qt/tools/typecheck-setup.sh
#	rspy/Makefile
2020-03-24 22:49:49 -03:00
Damien Elmes
ea3c6cad42 don't error when -l passes in language without _ 2020-03-25 08:53:31 +10:00
Damien Elmes
e29d380d4c fix sync getting stuck in a loop when changes is a multiple of 250 2020-03-24 19:30:35 +10:00
Damien Elmes
cc34157e4b
Merge pull request #510 from evandroforks/fix_tests_on_windows
Fix tests on windows
2020-03-24 15:33:02 +10:00
Damien Elmes
5c5d1c2af5 remove : check from dbproxy 2020-03-24 10:37:12 +10:00
evandrocoan
20c9837770 Created the .github/workflows/windows.yml
# Conflicts:
#	.github/scripts/trailing-newlines.sh
#	Makefile
#	qt/tools/typecheck-setup.sh
#	react/Makefile
#	rspy/Makefile
#	svelte/Makefile
#	tslib/Makefile
2020-03-23 19:51:03 -03:00
evandrocoan
b1b3e5b87c Merge remote-tracking branch 'danielelmes/master' into fix_tests_on_windows
# Conflicts:
#	.github/scripts/trailing-newlines.sh
2020-03-23 18:44:11 -03:00
Damien Elmes
11a4d582b4 convert asc to desc instead of appending desc to the end of the order
as the latter doesn't work when sorting on more than one column

https://anki.tenderapp.com/discussions/beta-testing/1868-anki-2124-beta#comment_48174812
2020-03-23 19:53:57 +10:00
Damien Elmes
966eb666f0 fix v2 timing being returned for v1 users 2020-03-23 13:53:09 +10:00
Damien Elmes
4e2e0d1b84 fix setting of wal 2020-03-23 13:52:57 +10:00
Damien Elmes
cd9ceebd59 simplify how the local offset is passed around
- no need to store it in conf
- move local_minutes_west() call to collection
2020-03-23 13:52:52 +10:00
Damien Elmes
dc8cf9d554 release GIL during collection open/close 2020-03-23 09:27:42 +10:00
Damien Elmes
75b7ebb156 add back new_timezone_enabled(), as it's used in the prefs screen 2020-03-23 07:40:50 +10:00
Damien Elmes
427bf268fc apply same list->tuple fix to v1 sched 2020-03-22 21:56:02 +10:00
zjosua
0b94eee97e Fill _lrnQueue with tuples, not lists 2020-03-22 11:49:40 +01:00
Damien Elmes
6c6817563e fix sync error introduced by 69d8cdd9ed 2020-03-22 17:32:34 +10:00
Damien Elmes
ac36fba90f handle the two remaining timing issues 2020-03-22 14:43:29 +10:00
Damien Elmes
69d8cdd9ed use backend for v1 and v2 cutoff calculations
this should also fix the CI failures, which were happening because
the datetime module wasn't matching the shifted time.time()
2020-03-22 14:28:26 +10:00
Damien Elmes
f28e57a367 add enum for controlling sort order
eg col.find_cards("", order=BuiltinSortKind.CARD_DUE)
2020-03-22 12:59:24 +10:00
Damien Elmes
9dda5cf6ca fall back on stock json if orjson unavailable 2020-03-21 21:24:21 +10:00
Damien Elmes
9afbcd4178 remove old finder code; add search hooks to browser & remove old one 2020-03-21 16:38:46 +10:00
Damien Elmes
a5787781d7 add note searching 2020-03-21 09:00:05 +10:00
Damien Elmes
307aadfd8a don't set deck.sched.today in test 2020-03-21 08:12:32 +10:00
Damien Elmes
daa848bb4d update tests to reflect what now constitutes an error 2020-03-21 08:12:01 +10:00
Damien Elmes
868c463fb1 tests need to flush before searching 2020-03-21 08:10:52 +10:00
Damien Elmes
5debd3e0f8 add the ability to provide a custom sort order; use backend for find 2020-03-21 07:55:21 +10:00
Damien Elmes
bca5f2ddff prototype of integration
no ordering yet, and no tests
2020-03-20 21:15:23 +10:00
Damien Elmes
d7daa63dbd make sure we set db to None so we can tell when we've closed the DB 2020-03-20 21:15:23 +10:00
Damien Elmes
ba17567617 drop the separate i18n backend 2020-03-20 21:15:23 +10:00
Damien Elmes
874bc085fe support opening and closing the DB while keeping backend alive
This is safer than just dropping the backend, as .close() will
block if something else is holding the mutex. Also means we can
drop the extra I18nBackend code.

Media syncing still needs fixing.
2020-03-20 21:15:23 +10:00
Damien Elmes
d0d6aa1433 drop usage of flushSched() 2020-03-20 21:15:23 +10:00
Damien Elmes
7986a79530 remove db.close() 2020-03-20 21:15:23 +10:00
Damien Elmes
fa12213e98 move .reopen() to mw; fix exporting 2020-03-20 21:15:23 +10:00
Damien Elmes
0f38514ad7 drop the DB progress handler code
This code was an awful hack to provide some semblance of UI
responsiveness while executing DB statements on the main thread.
Instead, we can just run DB statements in a background thread now,
keeping the UI responsive.
2020-03-20 21:15:23 +10:00
Damien Elmes
90de4a267d drop lock() and setAutocommit()
We no longer need to worry about pysqlite implicitly beginning
transactions, and can be more explicit about beginning/ending
transactions

save() now also has a trx argument controlling whether a
transaction should be started / left open
2020-03-20 21:15:23 +10:00
Damien Elmes
63e3357068 pass weakref in from storage to fix type checking/code completion 2020-03-20 21:15:23 +10:00
Damien Elmes
db1508e27c support first_row_only 2020-03-20 21:15:23 +10:00
Damien Elmes
e14c5e4745 proper implementation of executemany(); drop executescript() 2020-03-20 21:15:23 +10:00
Damien Elmes
ae06b9e446 add Collection struct, and get media check working again
- media check no longer needs collection to be closed
- use savepoints for operations initiated by Rust, so they are
atomic without forcing a commit
2020-03-20 21:15:23 +10:00
Damien Elmes
2cd7885ec0 add begin/commit/rollback, and support creating collections
all but one unit test is now passing
2020-03-20 21:15:23 +10:00
Damien Elmes
6db4418f05 drop log= argument from Collection 2020-03-20 21:15:23 +10:00
Damien Elmes
818401e464 remove remaining db kwargs 2020-03-20 21:15:23 +10:00
Damien Elmes
874ee80a68 add a temporary executemany() 2020-03-20 21:15:23 +10:00
Damien Elmes
b51e575a9d drop the protobuf prototype 2020-03-20 21:15:23 +10:00
Damien Elmes
b876d97770 use (or)json for DB bridge
Some initial testing with orjson indicates performance varies from
slightly better than pysqlite to about 2x slower depending on the type
of query.

Performance could be improved by building the Python list in rspy
instead of sending back json that needs to be decoded, but it may make
more sense to rewrite the hotspots in Rust instead. More testing is
required in any case.
2020-03-20 21:15:23 +10:00
Damien Elmes
04ca8ec038 initial work on DB handling in Rust
committing the Protobuf implementation for posterity, but will replace
it with json, as Protobuf measures about 6x slower for some workloads
like 'select * from notes'
2020-03-20 21:15:23 +10:00
Damien Elmes
77cf7dd4b7 tweak db type hints 2020-03-20 21:15:23 +10:00
Damien Elmes
b5c6134d80 drop usage of pysqlite Cursor 2020-03-20 21:15:23 +10:00
Damien Elmes
0b1d96fce0 tweak layout of db methods 2020-03-20 21:15:23 +10:00
Damien Elmes
5778459d7c drop .cursor() 2020-03-20 21:15:23 +10:00
Damien Elmes
87415c0d7f use total_changes() sqlite func 2020-03-20 21:15:23 +10:00
Damien Elmes
5f442ae95e drop the schema <11 upgrade code 2020-03-20 21:15:23 +10:00
Damien Elmes
527d269681 drop context manager 2020-03-20 21:15:23 +10:00
Damien Elmes
f4d4078537 drop named sql arguments 2020-03-20 21:15:23 +10:00
Damien Elmes
c8b9afac0c drop progress handler and timeout arg 2020-03-20 21:15:23 +10:00
Damien Elmes
8ef28f8571 drop echo and text factory 2020-03-20 21:15:23 +10:00
Damien Elmes
c1252d68f0 clone db.py into dbproxy.py 2020-03-20 21:15:23 +10:00
evandrocoan
1ade1a1a0f Fixed moved comment line on qt/aqt/main.py, long variables names on
pylib/Makefile and qt/Makefile, and rg --version not going to /dev/null
on .github/scripts/trailing-newlines.sh
2020-03-18 11:36:50 -03:00
evandrocoan
802c5b59cb Fixed mypy and pylint not building on Windows
1. error: unused 'type: ignore' comment
2. Module 'pywintypes' has no 'error' member
3. Module 'win32pipe' has no 'SetNamedPipeHandleState' member,
   but source is unavailable. Consider adding this module to
   extension-pkg-whitelist if you want to perform analysis based on
   run-time introspection of living objects.
2020-03-17 19:48:16 -03:00
evandrocoan
07a24c0d42 Fixed make check for pylint not working on Windows due
F:\Python\python.exe: can't open file '/cygdrive/f/anki/pyenv/Scripts/pylint': [Errno 2] No such file or directory
2020-03-17 19:48:16 -03:00
evandrocoan
88ea0b18bf Fixed test_importing.py unit tests failing on windows with
PermissionError: [Errno 13] Permission denied
2020-03-17 12:49:36 -03:00
evandrocoan
9dd54c421b Fixed UnicodeEncodeError: 'charmap' codec can't encode character
'\u2068' in position 2724: character maps to <undefined> for
pylib/tests/test_stats.py
2020-03-17 12:49:25 -03:00
evandrocoan
2e54d315e1 Fixed BeautifulSoup breaking string paths
https://anki.tenderapp.com/discussions/ankidesktop/39543-anki-is-replacing-the-character-by-when-i-exit-the-html-edit-mode-ctrlshiftx
2020-03-12 21:19:09 -03:00
Damien Elmes
1f26bac890
Merge pull request #501 from evandroforks/fix_beautiful_soup
Renamed BeautifulSoup import name for consistency with other usages of it
2020-03-11 15:55:15 +10:00
Damien Elmes
2f24e3f5e2 don't error when an add-on passes None to CardStats
https://anki.tenderapp.com/discussions/beta-testing/1842-syncing-message
2020-03-11 15:18:28 +10:00
Damien Elmes
5fd2eaba21 Spanish is 'es' on disk 2020-03-11 14:53:19 +10:00
Damien Elmes
25724c28b6 Revert "es-ES -> es"
This reverts commit eae52de71e.

This change broke Anki:

https://anki.tenderapp.com/discussions/ankidesktop/39589-lang_to_disk_lang-startup-error
2020-03-11 14:52:35 +10:00
evandrocoan
c7bf6f3a8d Renamed _decode_htmlescapes s variable 2020-03-10 13:57:09 -03:00
Damien Elmes
131d37dca5 add switch in prefs for new timezone handling code; bump sync version
AD devs: before updating the sync version to 10, please make sure
the new timezone code has been ported over. The core change to the
scheduler is in _updateCutoff():

9736e4a970/pylib/anki/schedv2.py (L1357)

with the following supporting Python functions:

9736e4a970/pylib/anki/schedv2.py (L1410)

 _timing_today() is calculated in Rust (lines up to 92, the rest are
tests):

9736e4a970/rslib/src/sched/cutoff.rs (L20)

The change went through a few iterations before stabilising, so it's
probably easier to refer to the above code than the patches that got
us to that point.
2020-03-10 17:50:18 +10:00
Damien Elmes
0f4c3ab611 add restore media action 2020-03-10 13:35:09 +10:00
Damien Elmes
6ad2a1f9a3 add empty trash action in aqt 2020-03-10 12:49:40 +10:00
Damien Elmes
862e2b48f0 add col.weakref() and fix more reference cycles in pylib 2020-03-05 09:47:47 +10:00
Damien Elmes
6b204274c0 fix retain cycle caused by col.tr
We can't use a weakref.proxy with a method, so manually proxy the
call instead.
2020-03-05 09:45:51 +10:00
Arthur Milchior
0c9de3b19c hooks for limit new/rev for a single deck 2020-03-04 16:11:13 +01:00
Arthur Milchior
c4b2ab96a6 single return in sched2 _deckRevLimitSingle 2020-03-04 16:07:15 +01:00
Damien Elmes
c35afd4aaa add diffing script 2020-03-04 21:34:18 +10:00
Damien Elmes
e95eea68ec remove a few more common methods 2020-03-04 21:33:44 +10:00
Damien Elmes
c14132332b use _deckLimit() in a few more places 2020-03-04 21:24:09 +10:00
Damien Elmes
f054fa14d6 reuse _leftToday() 2020-03-04 12:26:57 +10:00
Damien Elmes
0e8339358b import tidyup 2020-03-04 12:25:02 +10:00
Damien Elmes
e8bdd8616b reuse _deckNewLimitSingle() 2020-03-04 12:23:56 +10:00
Damien Elmes
2079854d3f reuse v2's _logRev() 2020-03-04 12:23:42 +10:00
Damien Elmes
961026b04b remove duplicate methods from sched.py 2020-03-04 12:14:26 +10:00
Damien Elmes
1c09d80558 add some type hints that were only in the v1 scheduler 2020-03-04 12:10:38 +10:00
Damien Elmes
8c3e4a8bee make v1 scheduler inherit from v2 so we can delete duplicate code 2020-03-04 11:41:23 +10:00
Damien Elmes
ffe6ecf44c use weakref for backrefs so collection doesn't need to be garbage collected 2020-03-03 21:25:32 +10:00
Damien Elmes
a8e6fbd0fd fix backend not deallocating due to circular reference 2020-03-03 21:12:38 +10:00
Damien Elmes
9f73d67b5a
Merge pull request #478 from Arthur-Milchior/missing_constant
countsIdx return a queue type.
2020-03-02 15:43:31 +10:00
Alan Du
6c2dda6c9c Monkeytype qt/aqt/reviewer.py 2020-03-01 10:16:08 -05:00
Arthur Milchior
ab9999dbc9 countsIdx return a queue type.
I missed this constant before
2020-03-01 13:00:36 +01:00
Damien Elmes
8960d12aac add nfd tag fix to db check
we already normalize in the editor and importing, so perhaps these
tags were from an old version

https://anki.tenderapp.com/discussions/ankidesktop/39120-bug-filter-do-not-work-with-tags-which-contain-german-letters-like
2020-03-01 11:21:25 +10:00
Damien Elmes
7bde0556cb
Merge pull request #473 from evandroforks/fix_docs_urllink
Fixed anki website docs link on pylib/anki/consts.py
2020-02-29 21:39:11 +10:00
Damien Elmes
ba4fe71eba make logging explicit, and support logging to a file 2020-02-29 20:44:01 +10:00
evandrocoan
21b66cd86b Fixed anki website docs link on pylib/anki/consts.py 2020-02-28 22:18:19 -03:00
Alan Du
7c971837ff Add some more types 2020-02-27 21:27:59 -05:00
Alan Du
f8af9c509b Monkeytype pylib/anki/importing/supermemo_xml.py 2020-02-27 19:27:32 -05:00
Alan Du
2879dc1158 Type pylib/anki/schedv2.py 2020-02-27 19:27:32 -05:00
Alan Du
b451f4e3f2 Monkeytype anki/rsbackend.py 2020-02-27 19:27:32 -05:00
Alan Du
02dd30f2a0 Monkeytype pylib/anki/sched.py 2020-02-27 19:27:32 -05:00
Alan Du
b157ee7570 Monkeytype pylib/anki/find.py 2020-02-27 19:27:32 -05:00
Damien Elmes
43f5d13ed6 migrate strings with trailing newlines to fluent 2020-02-27 20:36:40 +10:00
Alan Du
2476e120ad Fix type warning 2020-02-27 00:07:19 -05:00
Alan Du
53b088f09a Monkeytype pylib/anki/latex.py 2020-02-27 00:07:19 -05:00
Alan Du
b83e44b688 Monkeytype pylib/anki/stdmodels.py 2020-02-27 00:07:19 -05:00
Alan Du
ad90af3c37 Monkeytype pylib/anki/stats.py 2020-02-27 00:07:19 -05:00
Alan Du
1942d97cf5 Monkeytype pylib/anki/template.py 2020-02-27 00:07:19 -05:00
Alan Du
78a002d666 Monkeytype anki/tags.py 2020-02-27 00:07:19 -05:00
Alan Du
ac76c61a2f Monkeytype pylib/anki/errors.py 2020-02-27 00:07:19 -05:00
Alan Du
750a3e4aed Monkeytype pylib/anki/db.py 2020-02-27 00:07:19 -05:00
Alan Du
948c09e84b Monkeytype pylib/anki/decks.py 2020-02-27 00:07:19 -05:00
evandrocoan
ba3a84f89a Merge remote-tracking branch 'danielelmes/master' into fix_windows_build
# Conflicts:
#	CONTRIBUTORS
2020-02-27 00:54:16 -03:00
Alan Du
cbeb47f8df Improve mypy config
- Make mypy stricter
- Warn for unnecessary workarounds
2020-02-26 22:22:40 -05:00
evandrocoan
dc049ce26a Merge remote-tracking branch 'danielelmes/master' into fix_windows_build
# Conflicts:
#	Makefile
2020-02-27 00:20:34 -03:00
Damien Elmes
4d917cc65b add self.col.tr() shortcut 2020-02-27 12:33:15 +10:00
Damien Elmes
0c49431719 FString -> TR 2020-02-27 12:25:19 +10:00
Damien Elmes
644670d0d6 return a localized error for all error kinds
some errors are not yet localized, but now the Python code
doesn't need to think about which property to use
2020-02-27 10:46:24 +10:00
Damien Elmes
fbbbbd6a7d tweak rounding
- avoid rounding minutes
- round the seconds taken in the card info screen
- provide different precise and imprecise modes, since we need
to display seconds to multiple decimals in some areas
2020-02-25 17:29:06 +10:00
evandrocoan
ac4933faca Merge remote-tracking branch 'danielelmes/master' into fix_windows_build
# Conflicts:
#	Makefile
2020-02-25 03:16:57 -03:00
evandrocoan
26cdff29ec Renamed FIND_EXEC to FIND, replaced IS_WINDOWS by specific commands
as PYTHON_BIN, ACTIVE_SCRIPT and INSTALL_PYAUDIO.
Fixed echo statements not using @ to suppress double message output.
Deprecated the usage of ECHOCMD := /bin/echo -e because it has no
effect: https://stackoverflow.com/questions/60387684/how-to-make-the-makefile-echos-to-use-bin-echo-e

# Conflicts:
#	Makefile
2020-02-25 03:15:11 -03:00
Damien Elmes
b1a192b384 cap answer buttons to 1 decimal place
we can switch to NUMBER() instead in the future, but will need
to update all the translations at the same time
2020-02-25 13:24:29 +10:00
evandrocoan
19f1c98025 Fixed development compilation with Windows 10
1. Documented on README.development how to setup the environment
   for Windows.
2. Fixed qt/ts/package.json not working due usage of ; instead
   of &&
3. Fixed copy-qt-files rsync using Windows paths instead of Unix
   ones
4. Fixed Makefile's using Windows Linux Subsystem bash instead of
    the Cygwin one.
5. Ensured running the correct pip module by using python -m pip
    instead of just pip.
6. Fixed Makefiles using Windows `find` command, instead of the
    Cygwin's one (POSIX find).
7. Fixed pyenv sourcing/activate using /pyevn/bin/ instead of
    /python/Scripts/ on Windows.
8. Fixed pyaudio not installing/linking with portaudio on Windows
    by installing for a patched fork at evandroforks/pyaudio
9. Forked and fixed portaudio not building with Visual Studio 2017
    or superior and added the reference for the patched fork on
    README.development at evandroforks/portaudio.
2020-02-24 14:59:11 -03:00
Damien Elmes
2f4ee0e523
Merge pull request #456 from Arthur-Milchior/noDefaultDeckInBrowser
No default deck in browser
2020-02-24 19:35:49 +10:00
Damien Elmes
b9280ca31e enable v2 apkg export 2020-02-24 18:54:55 +10:00
Damien Elmes
9f7c3a2fcf expand clozes before rendering LaTeX
https://anki.tenderapp.com/discussions/ankidesktop/39071-latex-media-windows-version-2121-683b7983-fail-rendering-latex
2020-02-24 18:34:08 +10:00
Damien Elmes
e73157285e remove old fmtTimeSpan() and associated strings 2020-02-23 18:47:16 +10:00
Damien Elmes
7230b6e390 support aqt-specific FTL files 2020-02-23 18:00:13 +10:00
Damien Elmes
0e931808c9 translations no longer require an open collection 2020-02-23 14:57:02 +10:00
Damien Elmes
4430c67069 rework Fluent handling
- all .ftl files for a language are concatenated into a single file
at build time
- all languages are included in the binary
- external ftl files placed in the ftl folder can override the
built-in definitions
- constants are automatically generated for each string key
- dropped the separate StringsGroup enum
2020-02-23 13:22:50 +10:00
Arthur Milchior
bb86c9dbd6 should(default)deckbedisplayed in snake case 2020-02-22 04:08:01 -08:00
Arthur Milchior
8e15ed7e13 defaultDeck to default_deck 2020-02-22 04:03:42 -08:00
Arthur Milchior
927749d7a6 Remove options for all/allNames
Instead, we always see default deck if it has a child
As indicated in https://github.com/ankitects/anki/pull/452
2020-02-22 04:03:42 -08:00
Arthur Milchior
1126ae293e forceDefault to force_default 2020-02-22 04:01:42 -08:00
Damien Elmes
eae52de71e es-ES -> es 2020-02-22 19:47:23 +10:00
Damien Elmes
bf3562841a formatting fix 2020-02-21 21:21:36 +10:00
Damien Elmes
f4b9aff58a reviews 2020-02-21 20:36:22 +10:00
Damien Elmes
972aee5f7a add next learning due time + remaining count to congrats screen
https://anki.tenderapp.com/discussions/ankidesktop/38000-v2-scheduler-learning-cards
2020-02-21 19:54:50 +10:00
Damien Elmes
49fe080636 add studied_today(), move to statistics.ftl 2020-02-21 18:01:15 +10:00
Damien Elmes
0fbe59cd57 add average-answer-time to Fluent
drop the 0.1 special case; we're using two decimals now
2020-02-21 17:42:55 +10:00
Damien Elmes
2fc15d0d3a add non-abbreviated timespan translation; update existing short=True calls
- drop the '5m3s' special casing done in the card stats screen, and
just use decimals
- change alignment of the review log so that the non-abbreviated
spans are easier to read
2020-02-21 15:29:38 +10:00
Damien Elmes
99c07cfdcb move answer_button_time to the backend, split sched into separate module 2020-02-21 15:29:38 +10:00
Damien Elmes
232a8625bf move answer button labels into fluent 2020-02-21 15:29:38 +10:00
Damien Elmes
370bb38b8b update to latest fluent-rs and add basic locale-aware decimals
- git version pinned at the moment until the concurrency fix
lands in 0.10.2
- currently float values are hard-coded at 2 decimal places;
we should switch to using NUMBER() in the future
2020-02-21 15:29:38 +10:00
Damien Elmes
abe9f50c14 Revert "Merge pull request #452 from Arthur-Milchior/noDefaultDeckInBrowser"
This reverts commit b93d30795c, reversing
changes made to e16d6055c1.

More discussion required on https://github.com/ankitects/anki/pull/452
2020-02-21 12:27:39 +10:00
Damien Elmes
b93d30795c
Merge pull request #452 from Arthur-Milchior/noDefaultDeckInBrowser
No default deck in browser
2020-02-21 12:10:36 +10:00
Damien Elmes
e16d6055c1 fix Deck field in card templates showing filtered deck
https://anki.tenderapp.com/discussions/ankidesktop/38984-deck-changed
2020-02-19 20:00:06 +10:00
Arthur Milchior
bdf10d9649 method shouldBeDisplayed 2020-02-19 01:56:33 -08:00
Damien Elmes
ef7b0b1e82 don't error when fuzz is 0
https://anki.tenderapp.com/discussions/ankidesktop/38956-bug-report-sched2-anki2120
2020-02-18 11:00:26 +10:00
Damien Elmes
0309113b0a fix legacy filter return values being ignored 2020-02-18 09:12:16 +10:00
Damien Elmes
1524e7dcac split "Due" into three different contexts for translators 2020-02-17 14:41:01 +10:00
Damien Elmes
d612aa0945 localize some error messages 2020-02-17 11:38:22 +10:00
Damien Elmes
6e3f1d2e26 Revert "test out the Python Fluent implementation"
This reverts commit 181c17a0988cf9e57b2604746000c6072cb96206.

Reverting this to keep as a record.
2020-02-17 08:40:17 +10:00
Damien Elmes
8abb35372a test out the Python Fluent implementation
The parsing step is considerably slower in Python, but if parsing
is moved out of the test function, Python wins at 45ms to Rust's 67ms
on 10,000 rounds, presumably due to the overhead of serializing to
Protobuf. Not enough of a difference to justify the inclusion of extra
dependencies and duplicating the lookup code in any case.
2020-02-17 08:40:17 +10:00
Damien Elmes
c395003def expose translations to Python 2020-02-17 08:40:17 +10:00
Damien Elmes
f6a881f950 pass progress back as translated string(s) 2020-02-17 08:40:17 +10:00
Damien Elmes
d1e587fca9 add ftl to the build process, and a sync-git script
also
- ensure po files are checked when updated
- add start of sync.ftl
2020-02-17 08:40:17 +10:00
Damien Elmes
6c9e9eb330 drop unused threadLocal and noHint i18n code 2020-02-17 08:40:17 +10:00
Damien Elmes
97b9b94fc7 use new file locations for translations
- translation files are now stored in a separate repo, and
use a layout compatible with Pontoon
- normalize the language code in aqt, so that old config settings
and command line arguments are correctly handled
- store Qt and gettext translations in separate subfolders
- remove Crowdin scripts
2020-02-17 08:40:17 +10:00
Damien Elmes
f6ddcd81df fix sync deauth 2020-02-17 08:40:17 +10:00
Damien Elmes
7d68da2b57 pass locale details to backend 2020-02-17 08:40:17 +10:00
Damien Elmes
fe874e9909 fix Lojban selection 2020-02-17 08:40:17 +10:00
Damien Elmes
0cc1938657 move empty card check into template code 2020-02-17 08:40:17 +10:00
Damien Elmes
33367c8edf make template errors translatable 2020-02-17 08:40:17 +10:00
Damien Elmes
6240bd613d update media DB when adding LaTeX images 2020-02-17 08:40:17 +10:00
Damien Elmes
d73fec3280 shorten add_file_to_media_folder 2020-02-17 08:40:17 +10:00
Damien Elmes
4c0f216df2 use media.trash for unused media deletion as well 2020-02-17 08:40:17 +10:00
Damien Elmes
0c27126817 fix latex render progress; display more frequently 2020-02-17 08:40:17 +10:00
Damien Elmes
2d0499580f if latex fails to render in bulk, show the user the problem 2020-02-17 08:40:17 +10:00
Damien Elmes
9df2a08cb0 new render_all_latex() + gui button; remove some old code 2020-02-17 08:40:17 +10:00
Damien Elmes
7f365faf3f add extract_latex to backend; use it for latex build 2020-02-17 08:40:17 +10:00
Damien Elmes
79c1732b00 stripLatex() does not appear to be used anywhere 2020-02-17 08:40:17 +10:00
Damien Elmes
6f158c8555 plug new media check in 2020-02-17 08:40:17 +10:00
Damien Elmes
aa832e9117 backend stores media folder/db locations; don't need to pass them in 2020-02-17 08:40:17 +10:00
Damien Elmes
5fe1bfc5b4 simplify code by accumulating stats at the source 2020-02-17 08:40:17 +10:00
Damien Elmes
6a64c8dfcc use enums for some common errors 2020-02-17 08:40:16 +10:00
Damien Elmes
347ac80086 remove unused code 2020-02-17 08:40:16 +10:00
Damien Elmes
ea4de9a6de connect media sync progress to Python, add a progress dialog 2020-02-17 08:40:16 +10:00
Damien Elmes
00f431d94e use separate fn to init backend, for future pyo3 0.9 release compat 2020-02-17 08:40:16 +10:00
Damien Elmes
01470c4854 backend init can now fail, and update media db when file is added
- Adding files inside Anki now updates the media DB, so a full file
scan at sync time is no longer required if no other changes have been
made.
- Use a protobuf message for backend initialization, and return a
string error if initialization fails.
2020-02-17 08:40:16 +10:00
Damien Elmes
d94a86930f drop support for vfat 2020-02-17 08:40:16 +10:00
Damien Elmes
e5f2e0df92 drop support for the early 2.0 release media db format 2020-02-17 08:40:16 +10:00
Damien Elmes
78f20d05a9 drop the clean* funcs 2020-02-17 08:40:16 +10:00
Damien Elmes
4096d21c07 add add_file() and write_data() 2020-02-17 08:40:16 +10:00
Arthur Milchior
fcfa78bba3 Hook card_is_being_flushed
It often arrives that I want to know when a card is going to be
flushed and in this case change it.

This could be the case if I want to change the scheduler without
implementing a whole scheduler. It simply reads the card history and
change interval and due date.

It's also the case for the "'trigger -> action' rules", which apply
some coded actions when some event occurs. E.g. suspend/unsuspend a
sibling when card become mature/is forgotten.
2020-02-14 00:59:32 -08:00
Arthur Milchior
81daad878e Factorizing card's flush 2020-02-14 00:59:32 -08:00
Arthur Milchior
b2ef003207 hook note_is_being_flushed
I created multiple add-ons which want to transform a note before it is
being saved. For example, one add-on trim it, and remove useless line
break which arrived by accident.

Another add-on want to compile LaTeX as soon as the note is done, and
warn the user if LaTeX can't be compiled.

Having a hook in pre-flush would be useful here
2020-02-14 00:57:27 -08:00
Damien Elmes
f7ebb8c28f
Merge pull request #433 from Arthur-Milchior/ints
Constants
2020-02-14 08:37:31 +10:00
Damien Elmes
36201a5448 remove redundant declaration 2020-02-12 08:06:35 +10:00
Arthur Milchior
b5fed631d5 deckIds return deck of selected cards 2020-02-11 10:50:59 -08:00
Arthur Milchior
e70a317ac5 ofCids: returns did of all cids 2020-02-11 10:50:59 -08:00