Anki is a smart spaced repetition flashcard program
869 matches across 13 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | pylib/hatch_build.py | 5 | |
| LOW | pylib/hatch_build.py | 6 | |
| LOW | pylib/tools/hookslib.py | 8 | |
| LOW | pylib/tests/test_stats.py | 7 | |
| LOW | pylib/tests/test_exporting.py | 4 | |
| LOW | pylib/tests/test_exporting.py | 10 | |
| LOW | pylib/tests/test_schedv3.py | 5 | |
| LOW | pylib/tests/test_schedv3.py | 7 | |
| LOW | pylib/tests/test_schedv3.py | 8 | |
| LOW | pylib/tests/test_schedv3.py | 10 | |
| LOW | pylib/tests/test_schedv3.py | 12 | |
| LOW | pylib/tests/test_schedv3.py | 13 | |
| LOW | pylib/tests/test_collection.py | 8 | |
| LOW | pylib/tests/test_collection.py | 12 | |
| LOW | pylib/tests/shared.py | 4 | |
| LOW | pylib/tests/test_importing.py | 9 | |
| LOW | pylib/tests/test_importing.py | 11 | |
| LOW | pylib/tests/test_find.py | 8 | |
| LOW | pylib/tests/test_models.py | 6 | |
| LOW | pylib/tests/test_models.py | 11 | |
| LOW | pylib/tests/test_httpclient.py | 4 | |
| LOW | pylib/anki/tags.py | 12 | |
| LOW | pylib/anki/lang.py | 4 | |
| LOW | pylib/anki/sound.py | 10 | |
| LOW | pylib/anki/db.py | 12 | |
| LOW | pylib/anki/hooks.py | 14 | |
| LOW | pylib/anki/hooks.py | 22 | |
| LOW | pylib/anki/media.py | 4 | |
| LOW | pylib/anki/media.py | 15 | |
| LOW | pylib/anki/config.py | 20 | |
| LOW | pylib/anki/httpclient.py | 8 | |
| LOW | pylib/anki/models.py | 4 | |
| LOW | pylib/anki/models.py | 19 | |
| LOW | pylib/anki/_backend.py | 4 | |
| LOW | pylib/anki/_backend.py | 14 | |
| LOW | pylib/anki/stdmodels.py | 4 | |
| LOW | pylib/anki/cards.py | 4 | |
| LOW | pylib/anki/cards.py | 17 | |
| LOW | pylib/anki/notes.py | 4 | |
| LOW | pylib/anki/consts.py | 4 | |
| LOW | pylib/anki/exporting.py | 5 | |
| LOW | pylib/anki/utils.py | 4 | |
| LOW | pylib/anki/dbproxy.py | 4 | |
| LOW | pylib/anki/dbproxy.py | 13 | |
| LOW | pylib/anki/stats.py | 5 | |
| LOW | pylib/anki/stats.py | 15 | |
| LOW | pylib/anki/collection.py | 4 | |
| LOW | pylib/anki/collection.py | 76 | |
| LOW | pylib/anki/template.py | 29 | |
| LOW | pylib/anki/find.py | 5 | |
| LOW | pylib/anki/errors.py | 4 | |
| LOW | pylib/anki/rsbackend.py | 9 | |
| LOW | pylib/anki/rsbackend.py | 10 | |
| LOW | pylib/anki/rsbackend.py | 10 | |
| LOW | pylib/anki/rsbackend.py | 11 | |
| LOW | pylib/anki/rsbackend.py | 12 | |
| LOW | pylib/anki/rsbackend.py | 13 | |
| LOW | pylib/anki/rsbackend.py | 13 | |
| LOW | pylib/anki/decks.py | 4 | |
| LOW | pylib/anki/decks.py | 18 | |
| 345 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | pylib/tests/test_utils.py | 52 | def test_int_version_rejects_garbage(): |
| LOW | pylib/tests/test_schedv3.py | 627 | def test_filt_reviewing_early_normal(): |
| LOW | pylib/tests/test_importing.py | 244 | def test_tsv_tag_multiple_tags(): |
| LOW | pylib/tests/test_importing.py | 278 | def test_csv_tag_only_if_modified(): |
| LOW | pylib/tests/test_httpclient.py | 14 | def test_http_client_mounts_system_store_adapter() -> None: |
| LOW | pylib/tests/test_httpclient.py | 23 | def test_system_store_adapter_does_not_use_certifi_for_default_verification( |
| LOW | pylib/tests/test_httpclient.py | 26 | def fail_if_parent_verification_is_used(*_args, **_kwargs) -> None: |
| LOW | pylib/tests/test_httpclient.py | 45 | def test_noverifyssl_disables_ssl_verification( |
| LOW | pylib/anki/lang.py | 245 | def without_unicode_isolation(string: str) -> str: |
| LOW | pylib/anki/lang.py | 249 | def with_collapsed_whitespace(string: str) -> str: |
| LOW | pylib/anki/media.py | 23 | def media_paths_from_col_path(col_path: str) -> tuple[str, str]: |
| LOW | pylib/anki/media.py | 103 | def add_extension_based_on_mime(self, fname: str, content_type: str) -> str: |
| LOW | pylib/anki/media.py | 152 | def extract_static_media_files(self, mid: NotetypeId) -> Sequence[str]: |
| LOW | pylib/anki/models.py | 380 | def get_single_notetype_of_notes( |
| LOW | pylib/anki/models.py | 410 | def restore_notetype_to_stock( |
| LOW | pylib/anki/_backend.py | 153 | def compute_params_from_items(self, items: Iterable[FsrsItem]) -> Sequence[float]: |
| LOW | pylib/anki/_backend.py | 203 | def backend_exception_to_pylib(err: backend_pb2.BackendError) -> Exception: |
| LOW | pylib/anki/stdmodels.py | 74 | def _legacy_add_basic_typing_model( |
| LOW | pylib/anki/stdmodels.py | 82 | def _legacy_add_forward_reverse( |
| LOW | pylib/anki/stdmodels.py | 90 | def _legacy_add_forward_optional_reverse( |
| LOW | pylib/anki/cards.py | 206 | def replay_question_audio_on_answer_side(self) -> bool: |
| LOW | pylib/anki/collection.py | 140 | def initialize_backend_logging() -> None: |
| LOW | pylib/anki/collection.py | 354 | def export_collection_package( |
| LOW | pylib/anki/collection.py | 425 | def export_dataset_for_research( |
| LOW | pylib/anki/collection.py | 436 | def add_image_occlusion_notetype(self) -> None: |
| LOW | pylib/anki/collection.py | 463 | def update_image_occlusion_note( |
| LOW | pylib/anki/collection.py | 585 | def default_deck_for_notetype(self, notetype_id: NotetypeId) -> DeckId | None: |
| LOW | pylib/anki/collection.py | 612 | def remove_cards_and_orphaned_notes( |
| LOW | pylib/anki/collection.py | 884 | def load_browser_card_columns(self) -> list[str]: |
| LOW | pylib/anki/collection.py | 896 | def load_browser_note_columns(self) -> list[str]: |
| LOW | pylib/anki/collection.py | 986 | def _get_load_balancer_enabled(self) -> bool: |
| LOW | pylib/anki/collection.py | 989 | def _set_load_balancer_enabled(self, value: bool) -> None: |
| LOW | pylib/anki/collection.py | 996 | def _get_enable_fsrs_short_term_with_steps(self) -> bool: |
| LOW | pylib/anki/collection.py | 999 | def _set_enable_fsrs_short_term_with_steps(self, value: bool) -> None: |
| LOW | pylib/anki/collection.py | 1081 | def _check_backend_undo_status(self) -> UndoStatus | None: |
| LOW | pylib/anki/decks.py | 104 | def add_normal_deck_with_name(self, name: str) -> OpChangesWithId: |
| LOW | pylib/anki/decks.py | 295 | def get_deck_configs_for_update(self, deck_id: DeckId) -> DeckConfigsForUpdate: |
| LOW | pylib/anki/decks.py | 361 | def set_config_id_for_deck_dict(self, deck: DeckDict, id: DeckConfigId) -> None: |
| LOW | pylib/anki/_legacy.py | 35 | def print_deprecation_warning(msg: str, frame: int = 1) -> None: |
| LOW | pylib/anki/_legacy.py | 48 | def _print_replacement_warning(old: str, new: str, frame: int = 1) -> None: |
| LOW | pylib/anki/_legacy.py | 53 | def _get_remapped_and_replacement( |
| LOW | pylib/anki/_legacy.py | 89 | def register_deprecated_aliases(cls, **kwargs: DeprecatedAliasTarget) -> None: |
| LOW | pylib/anki/_legacy.py | 99 | def register_deprecated_attributes( |
| LOW | pylib/anki/_legacy.py | 156 | def register_deprecated_aliases(self, **kwargs: DeprecatedAliasTarget) -> None: |
| LOW | pylib/anki/_legacy.py | 159 | def register_deprecated_attributes( |
| LOW | pylib/anki/latex.py | 87 | def render_latex_returning_errors( |
| LOW | pylib/anki/scheduler/legacy.py | 119 | def total_rev_for_current_deck(self) -> int: |
| LOW | pylib/anki/scheduler/v3.py | 188 | def _interval_for_normal_state( |
| LOW | pylib/anki/scheduler/v3.py | 204 | def _interval_for_filtered_state( |
| LOW | pylib/anki/scheduler/base.py | 126 | def get_or_create_filtered_deck(self, deck_id: DeckId) -> FilteredDeckForUpdate: |
| LOW | pylib/anki/scheduler/base.py | 129 | def add_or_update_filtered_deck( |
| LOW | pylib/anki/scheduler/base.py | 134 | def filtered_deck_order_labels(self) -> Sequence[str]: |
| LOW | pylib/anki/scheduler/base.py | 200 | def schedule_cards_as_new_defaults( |
| LOW | qt/tools/genhooks_gui.py | 65 | def on_overview_will_render_content(overview, content): |
| LOW | qt/tools/genhooks_gui.py | 348 | def on_deck_browser_will_render_content(deck_browser, content): |
| LOW | qt/tools/genhooks_gui.py | 531 | def on_browser_will_build_tree(handled, root, stage, browser): |
| LOW | qt/tools/genhooks_gui.py | 758 | def on_webview_will_set_content(web_content: WebContent, context): |
| LOW | qt/tools/genhooks_gui.py | 880 | def on_top_toolbar_did_init_links(links, toolbar): |
| LOW | qt/tools/build_installer.py | 49 | def get_briefcase_template_path() -> Path: |
| LOW | qt/tools/build_installer.py | 58 | def get_briefcase_output_format() -> list[str]: |
| 193 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | tools/reload_webviews.py | 20 | print(f"Error: {message}", file=sys.stderr) |
| LOW | tools/reload_webviews.py | 42 | except Exception as e: |
| LOW | pylib/tools/hookslib.py | 129 | except Exception: |
| LOW | pylib/tools/hookslib.py | 165 | except Exception: |
| LOW | pylib/tests/test_importing.py | 28 | except Exception: |
| LOW | pylib/anki/lang.py | 212 | except Exception: |
| LOW | pylib/anki/hooks.py | 37 | except Exception: |
| LOW | pylib/anki/hooks.py | 48 | except Exception: |
| LOW | pylib/anki/syncserver.py | 15 | except Exception as exc: |
| LOW | pylib/anki/_backend.py | 120 | except Exception as error: |
| LOW | pylib/anki/_backend.py | 163 | except Exception as error: |
| LOW | pylib/anki/notes.py | 163 | except Exception as exc: |
| LOW | pylib/anki/utils.py | 31 | except Exception: |
| LOW | pylib/anki/utils.py | 217 | except Exception: |
| LOW | pylib/anki/utils.py | 291 | except Exception: |
| LOW | pylib/anki/stats.py | 725 | except Exception: |
| LOW | pylib/anki/latex.py | 173 | except Exception: |
| LOW | pylib/anki/importing/apkg.py | 42 | except Exception as exc: |
| LOW | pylib/anki/importing/csvfile.py | 101 | except Exception: |
| LOW | pylib/anki/importing/csvfile.py | 104 | except Exception: |
| LOW | pylib/anki/importing/csvfile.py | 109 | except Exception: |
| LOW | pylib/anki/importing/csvfile.py | 128 | except Exception: |
| LOW | qt/launcher/versions.py | 38 | except Exception as e: |
| MEDIUM | qt/launcher/versions.py | 39 | print(f"Error fetching versions: {e}", file=sys.stderr) |
| LOW | qt/launcher/addon/__init__.py | 80 | except Exception as e: |
| LOW | qt/aqt/package.py | 138 | except Exception as e: |
| LOW | qt/aqt/sync.py | 52 | except Exception as e: |
| LOW | qt/aqt/sync.py | 112 | except Exception as err: |
| LOW | qt/aqt/sync.py | 261 | except Exception as err: |
| LOW | qt/aqt/sync.py | 293 | except Exception as err: |
| LOW | qt/aqt/sync.py | 323 | except Exception as err: |
| LOW | qt/aqt/deckconf.py | 270 | except Exception: |
| LOW | qt/aqt/sound.py | 377 | except Exception as e: |
| LOW | qt/aqt/sound.py | 390 | except Exception as e: |
| LOW | qt/aqt/sound.py | 570 | except Exception as e: |
| LOW | qt/aqt/sound.py | 870 | except Exception as e: |
| LOW | qt/aqt/theme.py | 357 | except Exception: |
| LOW | qt/aqt/importing.py | 213 | except Exception as e: |
| LOW | qt/aqt/importing.py | 365 | except Exception as e: |
| LOW | qt/aqt/importing.py | 404 | except Exception as e: |
| LOW | qt/aqt/ankihub.py | 42 | except Exception as exc: |
| LOW | qt/aqt/addons.py | 250 | except Exception: |
| LOW | qt/aqt/addons.py | 343 | except Exception: |
| LOW | qt/aqt/addons.py | 501 | except Exception: |
| LOW | qt/aqt/addons.py | 655 | except Exception: |
| LOW | qt/aqt/addons.py | 1134 | except Exception as e: |
| LOW | qt/aqt/addons.py | 1607 | except Exception as exc: |
| LOW | qt/aqt/addons.py | 1719 | except Exception as e: |
| LOW | qt/aqt/preferences.py | 438 | except Exception: |
| LOW | qt/aqt/mpv.py | 399 | except Exception: |
| LOW | qt/aqt/tts.py | 499 | except Exception as exc: |
| LOW | qt/aqt/tts.py | 515 | except Exception: |
| LOW | qt/aqt/tts.py | 521 | except Exception: |
| LOW | qt/aqt/__init__.py | 240 | except Exception: |
| LOW | qt/aqt/__init__.py | 586 | except Exception: |
| LOW | qt/aqt/__init__.py | 660 | except Exception: |
| LOW | qt/aqt/__init__.py | 744 | except Exception: |
| LOW | qt/aqt/debug_console.py | 351 | except Exception: |
| LOW | qt/aqt/changenotetype.py | 91 | except Exception as e: |
| LOW | qt/aqt/exporting.py | 194 | except Exception as exc: |
| 41 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | pylib/anki/_backend.py | 203 | |
| LOW | pylib/anki/exporting.py | 199 | |
| LOW | pylib/anki/utils.py | 272 | |
| LOW | pylib/anki/stats.py | 211 | |
| LOW | pylib/anki/stats.py | 959 | |
| LOW | pylib/anki/collection.py | 211 | |
| LOW | pylib/anki/foreign_data/mnemosyne.py | 175 | |
| LOW | pylib/anki/scheduler/v3.py | 66 | |
| LOW | pylib/anki/scheduler/v3.py | 152 | |
| LOW | pylib/anki/scheduler/v3.py | 188 | |
| LOW | pylib/anki/scheduler/v3.py | 216 | |
| LOW | pylib/anki/importing/noteimp.py | 116 | |
| LOW | pylib/anki/importing/anki2.py | 92 | |
| LOW | pylib/anki/importing/csvfile.py | 29 | |
| LOW | pylib/anki/importing/csvfile.py | 92 | |
| LOW | pylib/anki/importing/mnemo.py | 19 | |
| LOW | qt/launcher/versions.py | 13 | |
| LOW | qt/aqt/sync.py | 138 | |
| LOW | qt/aqt/sound.py | 364 | |
| LOW | qt/aqt/customstudy.py | 90 | |
| LOW | qt/aqt/customstudy.py | 158 | |
| LOW | qt/aqt/customstudy.py | 177 | |
| LOW | qt/aqt/theme.py | 211 | |
| LOW | qt/aqt/importing.py | 338 | |
| LOW | qt/aqt/importing.py | 165 | |
| LOW | qt/aqt/importing.py | 389 | |
| LOW | qt/aqt/preferences.py | 464 | |
| LOW | qt/aqt/mpv.py | 174 | |
| LOW | qt/aqt/mpv.py | 250 | |
| LOW | qt/aqt/__init__.py | 482 | |
| LOW | qt/aqt/__init__.py | 411 | |
| LOW | qt/aqt/__init__.py | 494 | |
| LOW | qt/aqt/studydeck.py | 104 | |
| LOW | qt/aqt/overview.py | 96 | |
| LOW | qt/aqt/overview.py | 152 | |
| LOW | qt/aqt/utils.py | 290 | |
| LOW | qt/aqt/utils.py | 940 | |
| LOW | qt/aqt/utils.py | 127 | |
| LOW | qt/aqt/reviewer.py | 203 | |
| LOW | qt/aqt/reviewer.py | 221 | |
| LOW | qt/aqt/reviewer.py | 502 | |
| LOW | qt/aqt/reviewer.py | 675 | |
| LOW | qt/aqt/editor.py | 438 | |
| LOW | qt/aqt/editor.py | 990 | |
| LOW | qt/aqt/editor.py | 1042 | |
| LOW | qt/aqt/editor.py | 1702 | |
| LOW | qt/aqt/webview.py | 627 | |
| LOW | qt/aqt/main.py | 863 | |
| LOW | qt/aqt/addcards.py | 218 | |
| LOW | qt/aqt/addcards.py | 314 | |
| LOW | qt/aqt/deckbrowser.py | 105 | |
| LOW | qt/aqt/mediasrv.py | 223 | |
| LOW | qt/aqt/mediasrv.py | 328 | |
| LOW | qt/aqt/mediasrv.py | 369 | |
| LOW | qt/aqt/browser/browser.py | 183 | |
| LOW | qt/aqt/browser/browser.py | 220 | |
| LOW | qt/aqt/browser/previewer.py | 206 | |
| LOW | qt/aqt/browser/sidebar/tree.py | 273 | |
| LOW | qt/aqt/browser/sidebar/tree.py | 455 | |
| LOW | qt/aqt/browser/sidebar/tree.py | 519 | |
| 3 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | ftl/copy-core-string.sh | 1 | #!/bin/bash |
| LOW | ftl/remove-unused.sh | 1 | #!/bin/bash |
| LOW | ftl/src/main.rs | 21 | |
| LOW | pylib/tests/test_schedv3.py | 61 | # t = mm.new_template("Reverse") |
| LOW | qt/aqt/addons.py | 181 | "properties": { |
| LOW | qt/aqt/mpv.py | 1 | # ------------------------------------------------------------------------------ |
| LOW | qt/aqt/__init__.py | 101 | profiler: cProfile.Profile | None = None |
| LOW | …ux-template/{{ cookiecutter.format }}/bootstrap/main.c | 1 | // |
| LOW | rslib/linkchecker/src/lib.rs | 1 | // Copyright: Ankitects Pty Ltd and contributors |
| LOW | rslib/proto_gen/src/lib.rs | 21 | use prost_reflect::MessageDescriptor; |
| LOW | rslib/src/import_export/text/csv/metadata.rs | 201 | } |
| LOW | rslib/src/sync/version.rs | 21 | /// |
| LOW | rslib/src/revlog/mod.rs | 41 | /// - 0 represents manual rescheduling. |
| LOW | ts/lib/domlib/surround/surround.test.ts | 281 | }); |
| LOW | ts/lib/domlib/surround/surround.test.ts | 301 | // expect(removedNodes).toHaveLength(0); |
| LOW | ts/lib/domlib/surround/surround.test.ts | 321 | // }); |
| LOW | ts/lib/domlib/surround/surround.test.ts | 341 | |
| LOW | ts/lib/domlib/surround/unsurround.test.ts | 21 | unsurround(range, body, easyBold); |
| LOW | ts/lib/domlib/surround/unsurround.test.ts | 61 | }); |
| LOW | ts/lib/domlib/surround/unsurround.test.ts | 81 | // }); |
| LOW | ts/lib/domlib/surround/unsurround.test.ts | 121 | unsurround(range, body, easyBold); |
| LOW | ts/routes/graphs/graph-styles.ts | 1 | // Copyright: Ankitects Pty Ltd and contributors |
| LOW | ts/routes/tmp/_page.ts | 1 | // Copyright: Ankitects Pty Ltd and contributors |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | pylib/tools/genhooks.py | 133 | # This file is automatically generated; edit tools/genhooks.py instead. |
| MEDIUM | qt/tools/genhooks_gui.py | 18 | # This file is automatically generated; edit tools/genhooks_gui.py instead. |
| MEDIUM | qt/aqt/sound.py | 651 | # Create the audio source with the chosen format |
| MEDIUM | qt/aqt/log.py | 42 | # Create a new add-on logger |
| MEDIUM | qt/aqt/webview.py | 155 | # Create a new profile if not cached |
| MEDIUM | qt/mac/build.sh | 15 | # Create the wheel using uv |
| MEDIUM | rslib/i18n/python.rs | 67 | # This file is automatically generated from the *.ftl files. |
| MEDIUM | .github/scripts/setup_apple_signing.sh | 9 | # Create a temporary keychain |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | qt/aqt/url_schemes.py | 57 | tr.preferences_url_scheme_warning(link=url.toString(), scheme=url.scheme()) |
| HIGH | qt/aqt/editor.py | 1694 | url = qurl.toString() |
| HIGH | qt/aqt/profiles.py | 415 | (name text primary key collate nocase, data blob not null);""" |
| HIGH | qt/tests/launch_anki_for_e2e.py | 69 | "create table profiles (name text primary key collate nocase, data blob not null)" |
| Severity | File | Line | Snippet |
|---|---|---|---|
| CRITICAL | qt/aqt/editor.py | 1779 | path = os.path.join(self.editor.mw.col.media.dir(), file_name) |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | qt/hatch_build.py | 56 | # For editable installs, just add anki without version constraint |
| MEDIUM | qt/tests/launch_anki_for_e2e.py | 102 | # Headless Qt: the e2e harness only needs mediasrv's HTTP stack, |
| MEDIUM | ts/licenses.json | 789 | "repository": "https://github.com/mourner/robust-predicates", |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | qt/aqt/sound.py | 705 | # Check if we need to convert float samples to int16 |
| LOW | qt/aqt/importing.py | 142 | # Check if the entered value is valid and if not fallback to default |
| LOW | docs/syncserver/entrypoint.sh | 15 | # Check if group exists, create if not |
| LOW | docs/syncserver/entrypoint.sh | 20 | # Check if user exists, create if not |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | qt/aqt/mpv.py | 1 | # ------------------------------------------------------------------------------ |
| MEDIUM | qt/aqt/mpv.py | 25 | # ------------------------------------------------------------------------------ |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | qt/aqt/importing.py | 446 |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | qt/aqt/mediasrv.py | 328 | def handle_request(pathin: str) -> Response: |