Anki 25.07.5 (7172b2d2) (ao)
Python 3.13.5 Qt 6.9.1 PyQt 6.9.1
Platform: macOS-26.0-arm64-arm-64bit-Mach-O
Traceback (most recent call last):
File “/Users/nicholasjwaida/Library/Application Support/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/taskman.py”, line 152, in raise_exception
raise exception
File “/Users/nicholasjwaida/Library/Application Support/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/taskman.py”, line 148, in _on_closures_pending
closure()
~~~~~~~^^
File “/Users/nicholasjwaida/Library/Application Support/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/taskman.py”, line 88, in
lambda future: self.run_on_main(lambda: on_done(future))
~~~~~~~^^^^^^^^
File “/Users/nicholasjwaida/Library/Application Support/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/taskman.py”, line 111, in wrapped_done
on_done(fut)
~~~~~~~^^^^^
File “/Users/nicholasjwaida/Library/Application Support/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/operations/_init_.py”, line 253, in wrapped_done
self._failure(exception)
~~~~~~~~~~~~~^^^^^^^^^^^
File “/Users/nicholasjwaida/Library/Application Support/Anki2/addons21/1322529746/gui/operations/ankihub_sync.py”, line 150, in on_failure
on_done(future_with_exception(exception))
~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/Users/nicholasjwaida/Library/Application Support/Anki2/addons21/1322529746/gui/auto_sync.py”, line 100, in sync_with_ankiweb
future.result()
~~~~~~~~~~~~~^^
File “/Users/nicholasjwaida/Library/Application Support/AnkiProgramFiles/python/cpython-3.13.5-macos-aarch64-none/lib/python3.13/concurrent/futures/_base.py”, line 449, in result
return self.__get_result()
~~~~~~~~~~~~~~~~~^^
File “/Users/nicholasjwaida/Library/Application Support/AnkiProgramFiles/python/cpython-3.13.5-macos-aarch64-none/lib/python3.13/concurrent/futures/_base.py”, line 401, in __get_result
raise self._exception
File “/Users/nicholasjwaida/Library/Application Support/AnkiProgramFiles/python/cpython-3.13.5-macos-aarch64-none/lib/python3.13/concurrent/futures/thread.py”, line 59, in run
result = self.fn(*self.args, **self.kwargs)
File “/Users/nicholasjwaida/Library/Application Support/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/operations/_init_.py”, line 243, in wrapped_op
return self._op(mw.col)
~~~~~~~~^^^^^^^^
File “/Users/nicholasjwaida/Library/Application Support/Anki2/addons21/1322529746/gui/operations/ankihub_sync.py”, line 139, in
op=lambda _: ah_deck_updater.update_decks_and_media(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
ah_dids,
^^^^^^^^
raise_if_full_sync_required=raise_if_full_sync_required,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
start_media_sync=start_media_sync,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
),
^
File “/Users/nicholasjwaida/Library/Application Support/Anki2/addons21/1322529746/gui/deck_updater.py”, line 65, in update_decks_and_media
self._update_decks(ah_dids)
~~~~~~~~~~~~~~~~~~^^^^^^^^^
File “/Users/nicholasjwaida/Library/Application Support/Anki2/addons21/1322529746/gui/deck_updater.py”, line 95, in _update_decks
raise e
File “/Users/nicholasjwaida/Library/Application Support/Anki2/addons21/1322529746/gui/deck_updater.py”, line 88, in _update_decks
should_continue = self._update_single_deck(ah_did)
File “/Users/nicholasjwaida/Library/Application Support/Anki2/addons21/1322529746/gui/deck_updater.py”, line 102, in _update_single_deck
result = self._fetch_and_apply_deck_updates(ankihub_did)
File “/Users/nicholasjwaida/Library/Application Support/Anki2/addons21/1322529746/gui/deck_updater.py”, line 124, in _fetch_and_apply_deck_updates
deck_updates = self._client.get_deck_updates(
ankihub_did,
…<6 lines>…
should_cancel=lambda: aqt.mw.progress.want_cancel(),
)
File “/Users/nicholasjwaida/Library/Application Support/Anki2/addons21/1322529746/ankihub_client/ankihub_client.py”, line 702, in get_deck_updates
for chunk in self._get_deck_updates_inner(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
ah_did,
^^^^^^^
…<3 lines>…
deck_download_progress_cb,
^^^^^^^^^^^^^^^^^^^^^^^^^^
):
^
File “/Users/nicholasjwaida/Library/Application Support/Anki2/addons21/1322529746/ankihub_client/ankihub_client.py”, line 776, in _get_deck_updates_inner
notes_data_deck = self.download_deck(
ah_did,
deck_download_progress_cb,
s3_presigned_url=data[“external_notes_url”],
)
File “/Users/nicholasjwaida/Library/Application Support/Anki2/addons21/1322529746/ankihub_client/ankihub_client.py”, line 634, in download_deck
s3_response_content = self._download_with_progress_cb(s3_url_suffix, download_progress_cb)
File “/Users/nicholasjwaida/Library/Application Support/Anki2/addons21/1322529746/ankihub_client/ankihub_client.py”, line 658, in _download_with_progress_cb
raise AnkiHubHTTPError(response)
1322529746.ankihub_client.ankihub_client.AnkiHubHTTPError: AnkiHub request error: 403 Forbidden