Update Python deps

- Black's formatting has changed
- Pylint has introduced a new lint
This commit is contained in:
Damien Elmes 2023-03-31 14:02:40 +10:00
parent 066db4bae8
commit 0a0d17ff98
34 changed files with 831 additions and 661 deletions

View file

@ -33,7 +33,8 @@ disable=
arguments-differ, arguments-differ,
arguments-renamed, arguments-renamed,
consider-using-f-string, consider-using-f-string,
invalid-name invalid-name,
broad-exception-raised
[BASIC] [BASIC]
good-names = good-names =

View file

@ -183,7 +183,6 @@ def spinalcase(string):
def dotcase(string): def dotcase(string):
"""Convert string into dot case. """Convert string into dot case.
Join punctuation with dot. Join punctuation with dot.

View file

@ -116,6 +116,7 @@ def emulate_named_args(
args2.append(val) args2.append(val)
number = len(args2) number = len(args2)
arg_num[key] = number arg_num[key] = number
# update refs # update refs
def repl(match: Match) -> str: def repl(match: Match) -> str:
arg = match.group(1) arg = match.group(1)

View file

@ -101,7 +101,6 @@ class Exporter:
class TextCardExporter(Exporter): class TextCardExporter(Exporter):
ext = ".txt" ext = ".txt"
includeHTML = True includeHTML = True
@ -134,7 +133,6 @@ class TextCardExporter(Exporter):
class TextNoteExporter(Exporter): class TextNoteExporter(Exporter):
ext = ".txt" ext = ".txt"
includeTags = True includeTags = True
includeHTML = True includeHTML = True
@ -179,7 +177,6 @@ where cards.id in %s)"""
class AnkiExporter(Exporter): class AnkiExporter(Exporter):
ext = ".anki2" ext = ".anki2"
includeSched: bool | None = False includeSched: bool | None = False
includeMedia = True includeMedia = True
@ -332,7 +329,6 @@ class AnkiExporter(Exporter):
class AnkiPackageExporter(AnkiExporter): class AnkiPackageExporter(AnkiExporter):
ext = ".apkg" ext = ".apkg"
def __init__(self, col: Collection) -> None: def __init__(self, col: Collection) -> None:
@ -418,7 +414,6 @@ class AnkiPackageExporter(AnkiExporter):
class AnkiCollectionPackageExporter(AnkiPackageExporter): class AnkiCollectionPackageExporter(AnkiPackageExporter):
ext = ".colpkg" ext = ".colpkg"
verbatim = True verbatim = True
includeSched = None includeSched = None

View file

@ -22,7 +22,6 @@ ProgressCallback = Callable[[int, int], None]
class HttpClient(DeprecatedNamesMixin): class HttpClient(DeprecatedNamesMixin):
verify = True verify = True
timeout = 60 timeout = 60
# args are (upload_bytes_in_chunk, download_bytes_in_chunk) # args are (upload_bytes_in_chunk, download_bytes_in_chunk)

View file

@ -30,7 +30,6 @@ class MediaMapInvalid(Exception):
class Anki2Importer(Importer): class Anki2Importer(Importer):
needMapper = False needMapper = False
deckPrefix: Optional[str] = None deckPrefix: Optional[str] = None
allowUpdate = True allowUpdate = True

View file

@ -13,7 +13,6 @@ from anki.utils import max_id
class Importer: class Importer:
needMapper = False needMapper = False
needDelimiter = False needDelimiter = False
dst: Optional[Collection] dst: Optional[Collection]

View file

@ -14,7 +14,6 @@ from anki.importing.noteimp import ForeignNote, NoteImporter
class TextImporter(NoteImporter): class TextImporter(NoteImporter):
needDelimiter = True needDelimiter = True
patterns = "\t|,;:" patterns = "\t|,;:"
@ -54,7 +53,7 @@ class TextImporter(NoteImporter):
continue continue
note = self.noteFromFields(row) note = self.noteFromFields(row)
notes.append(note) notes.append(note)
except (csv.Error) as e: except csv.Error as e:
log.append(self.col.tr.importing_aborted(val=str(e))) log.append(self.col.tr.importing_aborted(val=str(e)))
self.log = log self.log = log
self.ignored = ignored self.ignored = ignored

View file

@ -13,7 +13,6 @@ from anki.stdmodels import _legacy_add_basic_model, _legacy_add_cloze_model
class MnemosyneImporter(NoteImporter): class MnemosyneImporter(NoteImporter):
needMapper = False needMapper = False
update = False update = False
allowHTML = True allowHTML = True

View file

@ -72,7 +72,6 @@ ADD_MODE = 2
class NoteImporter(Importer): class NoteImporter(Importer):
needMapper = True needMapper = True
needDelimiter = False needDelimiter = False
allowHTML = False allowHTML = False

View file

@ -65,7 +65,6 @@ class SuperMemoElement(SmartDict):
# This is an AnkiImporter # This is an AnkiImporter
class SupermemoXmlImporter(NoteImporter): class SupermemoXmlImporter(NoteImporter):
needMapper = False needMapper = False
allowHTML = True allowHTML = True
@ -186,7 +185,6 @@ class SupermemoXmlImporter(NoteImporter):
## DEFAULT IMPORTER METHODS ## DEFAULT IMPORTER METHODS
def foreignNotes(self) -> list[ForeignNote]: def foreignNotes(self) -> list[ForeignNote]:
# Load file and parse it by minidom # Load file and parse it by minidom
self.loadSource(self.file) self.loadSource(self.file)
@ -402,7 +400,6 @@ class SupermemoXmlImporter(NoteImporter):
# if smel.Lapses != None and smel.Interval != None and smel.Question != None and smel.Answer != None: # if smel.Lapses != None and smel.Interval != None and smel.Question != None and smel.Answer != None:
if smel.Title is None and smel.Question is not None and smel.Answer is not None: if smel.Title is None and smel.Question is not None and smel.Answer is not None:
if smel.Answer.strip() != "" and smel.Question.strip() != "": if smel.Answer.strip() != "" and smel.Question.strip() != "":
# migrate only memorized otherway skip/continue # migrate only memorized otherway skip/continue
if self.META.onlyMemorizedItems and not (int(smel.Interval) > 0): if self.META.onlyMemorizedItems and not (int(smel.Interval) > 0):
self.logger("Element skipped \t- not memorized ...", level=3) self.logger("Element skipped \t- not memorized ...", level=3)

View file

@ -30,7 +30,6 @@ CheckMediaResponse = media_pb2.CheckMediaResponse
class MediaManager(DeprecatedNamesMixin): class MediaManager(DeprecatedNamesMixin):
sound_regexps = [r"(?i)(\[sound:(?P<fname>[^]]+)\])"] sound_regexps = [r"(?i)(\[sound:(?P<fname>[^]]+)\])"]
html_media_regexps = [ html_media_regexps = [
# src element quoted case # src element quoted case
@ -186,10 +185,9 @@ class MediaManager(DeprecatedNamesMixin):
""" """
last_progress = time.time() last_progress = time.time()
checked = 0 checked = 0
for (nid, mid, flds) in self.col.db.execute( for nid, mid, flds in self.col.db.execute(
"select id, mid, flds from notes where flds like '%[%'" "select id, mid, flds from notes where flds like '%[%'"
): ):
model = self.col.models.get(mid) model = self.col.models.get(mid)
_html, errors = render_latex_returning_errors( _html, errors = render_latex_returning_errors(
flds, model, self.col, expand_clozes=True flds, model, self.col, expand_clozes=True

View file

@ -164,6 +164,7 @@ from revlog where id > ? """
rev = rev or 0 rev = rev or 0
relrn = relrn or 0 relrn = relrn or 0
filt = filt or 0 filt = filt or 0
# studied # studied
def bold(s: str) -> str: def bold(s: str) -> str:
return "<b>" + str(s) + "</b>" return "<b>" + str(s) + "</b>"
@ -462,11 +463,11 @@ group by day order by day"""
totd: dict[int, Any] = {} totd: dict[int, Any] = {}
alltot = [] alltot = []
allcnt: float = 0 allcnt: float = 0
for (n, col, lab) in spec: for n, col, lab in spec:
totcnt[n] = 0.0 totcnt[n] = 0.0
totd[n] = [] totd[n] = []
for row in data: for row in data:
for (n, col, lab) in spec: for n, col, lab in spec:
if n not in sep: if n not in sep:
sep[n] = [] sep[n] = []
sep[n].append((row[0], row[n])) sep[n].append((row[0], row[n]))
@ -475,7 +476,7 @@ group by day order by day"""
totd[n].append((row[0], totcnt[n])) totd[n].append((row[0], totcnt[n]))
alltot.append((row[0], allcnt)) alltot.append((row[0], allcnt))
ret = [] ret = []
for (n, col, lab) in spec: for n, col, lab in spec:
if len(totd[n]) and totcnt[n]: if len(totd[n]) and totcnt[n]:
# bars # bars
ret.append(dict(data=sep[n], color=col, label=lab)) ret.append(dict(data=sep[n], color=col, label=lab))
@ -599,7 +600,7 @@ group by day order by day)"""
totd = [] totd = []
if not ivls or not all: if not ivls or not all:
return "" return ""
for (grp, cnt) in ivls: for grp, cnt in ivls:
tot += cnt tot += cnt
totd.append((grp, tot / float(all) * 100)) totd.append((grp, tot / float(all) * 100))
if self.type == PERIOD_MONTH: if self.type == PERIOD_MONTH:
@ -670,7 +671,7 @@ select count(), avg(ivl), max(ivl) from cards where did in %s and queue = {QUEUE
d: dict[str, list] = {"lrn": [], "yng": [], "mtr": []} d: dict[str, list] = {"lrn": [], "yng": [], "mtr": []}
types = ("lrn", "yng", "mtr") types = ("lrn", "yng", "mtr")
eases = self._eases() eases = self._eases()
for (type, ease, cnt) in eases: for type, ease, cnt in eases:
if type == CARD_TYPE_LRN: if type == CARD_TYPE_LRN:
ease += 5 ease += 5
elif type == CARD_TYPE_REV: elif type == CARD_TYPE_REV:
@ -711,7 +712,7 @@ select count(), avg(ivl), max(ivl) from cards where did in %s and queue = {QUEUE
def _easeInfo(self, eases: list[tuple[int, int, int]]) -> str: def _easeInfo(self, eases: list[tuple[int, int, int]]) -> str:
types = {PERIOD_MONTH: [0, 0], PERIOD_YEAR: [0, 0], PERIOD_LIFE: [0, 0]} types = {PERIOD_MONTH: [0, 0], PERIOD_YEAR: [0, 0], PERIOD_LIFE: [0, 0]}
for (type, ease, cnt) in eases: for type, ease, cnt in eases:
if ease == 1: if ease == 1:
types[type][0] += cnt types[type][0] += cnt
else: else:

View file

@ -48,7 +48,7 @@ def get_stock_notetypes(
out.append((note_type["name"], instance_getter(note_type))) out.append((note_type["name"], instance_getter(note_type)))
# add extras from add-ons # add extras from add-ons
for (name_or_func, func) in models: for name_or_func, func in models:
if not isinstance(name_or_func, str): if not isinstance(name_or_func, str):
name = name_or_func() name = name_or_func()
else: else:

View file

@ -56,7 +56,6 @@ def methods() -> str:
def get_arg_types(args: list[Variable]) -> str: def get_arg_types(args: list[Variable]) -> str:
return ", ".join( return ", ".join(
[f"{stringcase.snakecase(arg['name'])}: {arg_kind(arg)}" for arg in args] [f"{stringcase.snakecase(arg['name'])}: {arg_kind(arg)}" for arg in args]
) )

View file

@ -1,6 +1,6 @@
build==0.9.0 \ build==0.10.0 \
--hash=sha256:1a07724e891cbd898923145eb7752ee7653674c511378eb9c7691aab1612bc3c \ --hash=sha256:af266720050a66c893a6096a2f410989eeac74ff9a68ba194b3f6473e8e26171 \
--hash=sha256:38a7a2b7a0bdc61a42a0a67509d88c71ecfc37b393baba770fae34e20929ff69 --hash=sha256:d5b71264afdb5951d6704482aac78de887c80691c52b88a9ad195983ca2c9269
# via pip-tools # via pip-tools
click==8.1.3 \ click==8.1.3 \
--hash=sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e \ --hash=sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e \
@ -10,39 +10,35 @@ colorama==0.4.6 \
--hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \
--hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
# via -r requirements.base.in # via -r requirements.base.in
packaging==21.3 \ packaging==23.0 \
--hash=sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb \ --hash=sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2 \
--hash=sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522 --hash=sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97
# via build # via build
pep517==0.13.0 \ pip-tools==6.12.3 \
--hash=sha256:4ba4446d80aed5b5eac6509ade100bff3e7943a8489de249654a5ae9b33ee35b \ --hash=sha256:480d44fae6e09fad3f9bd3d0a7e8423088715d10477e8ef0663440db25e3114f \
--hash=sha256:ae69927c5c172be1add9203726d4b84cf3ebad1edcd5f71fcdc746e66e829f59 --hash=sha256:8510420f46572b2e26c357541390593d9365eb6edd2d1e7505267910ecaec080
# via build
pip-tools==6.10.0 \
--hash=sha256:57ac98392548f5ca96c2831927deec3035efe81ff476e3c744bd474ca9c6a1f2 \
--hash=sha256:7f9f7356052db6942b5aaabc8eba29983591ca0ad75affbf2f0a25d9361be624
# via -r requirements.base.in # via -r requirements.base.in
pyparsing==3.0.9 \ pyproject-hooks==1.0.0 \
--hash=sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb \ --hash=sha256:283c11acd6b928d2f6a7c73fa0d01cb2bdc5f07c57a2eeb6e83d5e56b97976f8 \
--hash=sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc --hash=sha256:f271b298b97f5955d53fb12b72c1fb1948c22c1a6b70b315c54cedaca0264ef5
# via packaging # via build
tomli==2.0.1 \ tomli==2.0.1 \
--hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \
--hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f
# via # via
# build # build
# pep517 # pyproject-hooks
wheel==0.38.4 \ wheel==0.40.0 \
--hash=sha256:965f5259b566725405b05e7cf774052044b1ed30119b5d586b2703aafe8719ac \ --hash=sha256:cd1196f3faee2b31968d626e1731c94f99cbdb67cf5a46e4f5656cbee7738873 \
--hash=sha256:b60533f3f5d530e971d6737ca6d58681ee434818fab630c83a734bb10c083ce8 --hash=sha256:d236b20e7cb522daf2390fa84c55eea81c5c30190f90f29ae2ca1ad8355bf247
# via pip-tools # via pip-tools
# The following packages are considered to be unsafe in a requirements file: # The following packages are considered to be unsafe in a requirements file:
pip==22.3.1 \ pip==23.0.1 \
--hash=sha256:65fd48317359f3af8e593943e6ae1506b66325085ea64b706a998c6e83eeaf38 \ --hash=sha256:236bcb61156d76c4b8a05821b988c7b8c35bf0da28a4b614e8d6ab5212c25c6f \
--hash=sha256:908c78e6bc29b676ede1c4d57981d490cb892eb45cd8c214ab6298125119e077 --hash=sha256:cd015ea1bfb0fcef59d8a286c1f8bebcb983f6317719d415dc5351efb7cd7024
# via pip-tools # via pip-tools
setuptools==65.5.1 \ setuptools==67.6.1 \
--hash=sha256:d0b9a8433464d5800cbe05094acf5c6d52a91bfac9b52bcfc4d41382be5d5d31 \ --hash=sha256:257de92a9d50a60b8e22abfcbb771571fde0dbf3ec234463212027a4eeecbe9a \
--hash=sha256:e197a19aa8ec9722928f2206f8de752def0e4c9fc6953527360d1c36d94ddb2f --hash=sha256:e728ca814a823bf7bf60162daf9db95b93d532948c4c0bea762ce62f60189078
# via pip-tools # via pip-tools

View file

@ -1,16 +1,16 @@
attrs==22.1.0 \ attrs==22.2.0 \
--hash=sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6 \ --hash=sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836 \
--hash=sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c --hash=sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99
# via jsonschema # via jsonschema
beautifulsoup4==4.11.1 \ beautifulsoup4==4.12.0 \
--hash=sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30 \ --hash=sha256:2130a5ad7f513200fae61a17abb5e338ca980fa28c439c0571014bc0217e9591 \
--hash=sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693 --hash=sha256:c5fceeaec29d09c84970e47c65f2f0efe57872f7cff494c9691a26ec0ff13234
# via # via
# -r requirements.anki.in # -r requirements.anki.in
# -r requirements.aqt.in # -r requirements.aqt.in
build==0.9.0 \ build==0.10.0 \
--hash=sha256:1a07724e891cbd898923145eb7752ee7653674c511378eb9c7691aab1612bc3c \ --hash=sha256:af266720050a66c893a6096a2f410989eeac74ff9a68ba194b3f6473e8e26171 \
--hash=sha256:38a7a2b7a0bdc61a42a0a67509d88c71ecfc37b393baba770fae34e20929ff69 --hash=sha256:d5b71264afdb5951d6704482aac78de887c80691c52b88a9ad195983ca2c9269
# via # via
# -r requirements.base.txt # -r requirements.base.txt
# pip-tools # pip-tools
@ -18,9 +18,82 @@ certifi==2022.12.7 \
--hash=sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3 \ --hash=sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3 \
--hash=sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18 --hash=sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18
# via requests # via requests
charset-normalizer==2.1.1 \ charset-normalizer==3.1.0 \
--hash=sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845 \ --hash=sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6 \
--hash=sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f --hash=sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1 \
--hash=sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e \
--hash=sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373 \
--hash=sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62 \
--hash=sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230 \
--hash=sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be \
--hash=sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c \
--hash=sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0 \
--hash=sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448 \
--hash=sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f \
--hash=sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649 \
--hash=sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d \
--hash=sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0 \
--hash=sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706 \
--hash=sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a \
--hash=sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59 \
--hash=sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23 \
--hash=sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5 \
--hash=sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb \
--hash=sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e \
--hash=sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e \
--hash=sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c \
--hash=sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28 \
--hash=sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d \
--hash=sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41 \
--hash=sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974 \
--hash=sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce \
--hash=sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f \
--hash=sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1 \
--hash=sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d \
--hash=sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8 \
--hash=sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017 \
--hash=sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31 \
--hash=sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7 \
--hash=sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8 \
--hash=sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e \
--hash=sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14 \
--hash=sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd \
--hash=sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d \
--hash=sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795 \
--hash=sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b \
--hash=sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b \
--hash=sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b \
--hash=sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203 \
--hash=sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f \
--hash=sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19 \
--hash=sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1 \
--hash=sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a \
--hash=sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac \
--hash=sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9 \
--hash=sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0 \
--hash=sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137 \
--hash=sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f \
--hash=sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6 \
--hash=sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5 \
--hash=sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909 \
--hash=sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f \
--hash=sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0 \
--hash=sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324 \
--hash=sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755 \
--hash=sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb \
--hash=sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854 \
--hash=sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c \
--hash=sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60 \
--hash=sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84 \
--hash=sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0 \
--hash=sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b \
--hash=sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1 \
--hash=sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531 \
--hash=sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1 \
--hash=sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11 \
--hash=sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326 \
--hash=sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df \
--hash=sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab
# via requests # via requests
click==8.1.3 \ click==8.1.3 \
--hash=sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e \ --hash=sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e \
@ -41,9 +114,9 @@ distro==1.8.0 ; sys_platform != "darwin" and sys_platform != "win32" \
--hash=sha256:02e111d1dc6a50abb8eed6bf31c3e48ed8b0830d1ea2a1b78c61765c2513fdd8 \ --hash=sha256:02e111d1dc6a50abb8eed6bf31c3e48ed8b0830d1ea2a1b78c61765c2513fdd8 \
--hash=sha256:99522ca3e365cac527b44bde033f64c6945d90eb9f769703caaec52b09bbd3ff --hash=sha256:99522ca3e365cac527b44bde033f64c6945d90eb9f769703caaec52b09bbd3ff
# via -r requirements.anki.in # via -r requirements.anki.in
flask==2.2.2 \ flask==2.2.3 \
--hash=sha256:642c450d19c4ad482f96729bd2a8f6d32554aa1e231f4f6b4e7e5264b16cca2b \ --hash=sha256:7eb373984bf1c770023fce9db164ed0c3353cd0b53f130f4693da0ca756a2e6d \
--hash=sha256:b9c46cc36662a7949f34b52d8ec7bb59c0d74ba08ba6cb9ce9adc1d8676d9526 --hash=sha256:c0bec9477df1cb867e5a67c9e1ab758de9cb4a3e52dd70681f59fa40a62b3f2d
# via # via
# -r requirements.aqt.in # -r requirements.aqt.in
# flask-cors # flask-cors
@ -55,9 +128,9 @@ idna==3.4 \
--hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \
--hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2
# via requests # via requests
importlib-metadata==5.0.0 \ importlib-metadata==6.1.0 \
--hash=sha256:da31db32b304314d044d3c12c79bd59e307889b287ad12ff387b3500835fc2ab \ --hash=sha256:43ce9281e097583d758c2c708c4376371261a02c34682491a8e98352365aad20 \
--hash=sha256:ddb0e35065e8938f867ed4928d0ae5bf2a53b7773871bfe6bcc7e4fcdc7dea43 --hash=sha256:ff80f3b5394912eb1b108fcfd444dc78b7f1f3e16b16188054bd01cb9cb86f09
# via # via
# flask # flask
# markdown # markdown
@ -75,175 +148,183 @@ jsonschema==4.1.2 \
# via # via
# -r requirements.aqt.in # -r requirements.aqt.in
# -r requirements.bundle.in # -r requirements.bundle.in
markdown==3.4.1 \ markdown==3.4.3 \
--hash=sha256:08fb8465cffd03d10b9dd34a5c3fea908e20391a2a90b88d66362cb05beed186 \ --hash=sha256:065fd4df22da73a625f14890dd77eb8040edcbd68794bcd35943be14490608b2 \
--hash=sha256:3b809086bb6efad416156e00a0da66fe47618a5d6918dd688f53f40c8e4cfeff --hash=sha256:8bf101198e004dc93e84a12a7395e31aac6a9c9942848ae1d99b9d72cf9b3520
# via -r requirements.anki.in # via -r requirements.anki.in
markupsafe==2.1.1 \ markupsafe==2.1.2 \
--hash=sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003 \ --hash=sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed \
--hash=sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88 \ --hash=sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc \
--hash=sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5 \ --hash=sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2 \
--hash=sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7 \ --hash=sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460 \
--hash=sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a \ --hash=sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7 \
--hash=sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603 \ --hash=sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0 \
--hash=sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1 \ --hash=sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1 \
--hash=sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135 \ --hash=sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa \
--hash=sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247 \ --hash=sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03 \
--hash=sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6 \ --hash=sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323 \
--hash=sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601 \ --hash=sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65 \
--hash=sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77 \ --hash=sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013 \
--hash=sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02 \ --hash=sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036 \
--hash=sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e \ --hash=sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f \
--hash=sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63 \ --hash=sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4 \
--hash=sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f \ --hash=sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419 \
--hash=sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980 \ --hash=sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2 \
--hash=sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b \ --hash=sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619 \
--hash=sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812 \ --hash=sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a \
--hash=sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff \ --hash=sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a \
--hash=sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96 \ --hash=sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd \
--hash=sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1 \ --hash=sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7 \
--hash=sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925 \ --hash=sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666 \
--hash=sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a \ --hash=sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65 \
--hash=sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6 \ --hash=sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859 \
--hash=sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e \ --hash=sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625 \
--hash=sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f \ --hash=sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff \
--hash=sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4 \ --hash=sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156 \
--hash=sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f \ --hash=sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd \
--hash=sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3 \ --hash=sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba \
--hash=sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c \ --hash=sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f \
--hash=sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a \ --hash=sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1 \
--hash=sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417 \ --hash=sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094 \
--hash=sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a \ --hash=sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a \
--hash=sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a \ --hash=sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513 \
--hash=sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37 \ --hash=sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed \
--hash=sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452 \ --hash=sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d \
--hash=sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933 \ --hash=sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3 \
--hash=sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a \ --hash=sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147 \
--hash=sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7 --hash=sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c \
--hash=sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603 \
--hash=sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601 \
--hash=sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a \
--hash=sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1 \
--hash=sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d \
--hash=sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3 \
--hash=sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54 \
--hash=sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2 \
--hash=sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6 \
--hash=sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58
# via # via
# jinja2 # jinja2
# werkzeug # werkzeug
orjson==3.8.1 \ orjson==3.8.9 \
--hash=sha256:03389e3750c521a7f3d4837de23cfd21a7f24574b4b3985c9498f440d21adb03 \ --hash=sha256:090b10bdb06baae6d5cd3550d772ecbabd833bfceed7592ff167c0a82f5b4c20 \
--hash=sha256:07c42de52dfef56cdcaf2278f58e837b26f5b5af5f1fd133a68c4af203851fc7 \ --hash=sha256:0ce8a2a667221e2e5160021e26b09e9c13eeedafb5cda1981340c8c0c0bc8f9d \
--hash=sha256:0b4e3857dd2416b479f700e9bdf4fcec8c690d2716622397d2b7e848f9833e50 \ --hash=sha256:183de66eff4d41c330a3006f210ab0bce7affe398da6f6eda9579b67245a34ff \
--hash=sha256:0bd5b4e539db8a9635776bdf9a25c3db84e37165e65d45c8ca90437adc46d6d8 \ --hash=sha256:189ccb16ed140a824d133fa1c55175cf0d2207edaade54f1db0456a526cb5fd8 \
--hash=sha256:0f21eed14697083c01f7e00a87e21056fc8fb5851e8a7bca98345189abcdb4d4 \ --hash=sha256:236b9313425cb2570626c64dd5cb6caff13882d1717d491da542cff228b96e97 \
--hash=sha256:124207d2cd04e845eaf2a6171933cde40aebcb8c2d7d3b081e01be066d3014b6 \ --hash=sha256:251653437632583d02203e6b118b72b99c04425175853f35340f4bac7034a36e \
--hash=sha256:21efb87b168066201a120b0f54a2381f6f51ff3727e07b3908993732412b314a \ --hash=sha256:2ba366009b98ac8899e935eff6fef7672d3ea43d3ce9deb3ee33452134b6cc3a \
--hash=sha256:231c30958ed99c23128a21993c5ac0a70e1e568e6a898a47f70d5d37461ca47c \ --hash=sha256:405933c05490efb209d0f940d8ef1403d2932a97e47010a26d2694e9dd49f84d \
--hash=sha256:395d02fd6be45f960da014372e7ecefc9e5f8df57a0558b7111a5fa8423c0669 \ --hash=sha256:4c0399631b88fa4868956badef2561fba07dffcaf050bf53959ee50d26edf6f6 \
--hash=sha256:3fd5472020042482d7da4c26a0ee65dbd931f691e1c838c6cf4232823179ecc1 \ --hash=sha256:598598b7f81f8fda7c3e09c88165f844152b7be223bc4ea929ec8ad59b00ea17 \
--hash=sha256:4449e70b98f3ad3e43958360e4be1189c549865c0a128e8629ec96ce92d251c3 \ --hash=sha256:5d029843eae7b6cbd6468b63517b8b61471afed6572162171d8b6471b6dbf41f \
--hash=sha256:45357eea9114bd41ef19280066591e9069bb4f6f5bffd533e9bfc12a439d735f \ --hash=sha256:5fd4193f260d9d30112b5e379d0870b54dc88040807c93cbe8d67bfea148ba5a \
--hash=sha256:45c1914795ffedb2970bfcd3ed83daf49124c7c37943ed0a7368971c6ea5e278 \ --hash=sha256:6c5b10ba1e62df8f96cbc37f6d5ae9acb3f6475926dea8b1b6a1a60f201a64f7 \
--hash=sha256:4f5a9bc5bc4d730153529cb0584c63ff286d50663ccd48c9435423660b1bb12d \ --hash=sha256:6ea833751f017ba321c277e7425b51c0b1a18a2c60f8c9c0f4c6c4d7e16cbd6c \
--hash=sha256:59b4baf71c9f39125d7e535974b146cc180926462969f6d8821b4c5e975e11b3 \ --hash=sha256:6f33e9ea45b4c9457eedca0c40f38cf5732c91b0fb68f091ac59e6ea68e03eb2 \
--hash=sha256:5a9e324213220578d324e0858baeab47808a13d3c3fbc6ba55a3f4f069d757cf \ --hash=sha256:70eae063ad8d7405dc63873760567b600fc10728ba0da24a69d49c1a5d318d6d \
--hash=sha256:5ded261268d5dfd307078fe3370295e5eb15bdde838bbb882acf8538e061c451 \ --hash=sha256:723ec880c5290fe4de330febb8030e57c1978fbd624fc5b9399969e7d7d74984 \
--hash=sha256:5e3db6496463c3000d15b7a712da5a9601c6c43682f23f81862fe1d2a338f295 \ --hash=sha256:73019b6d2cc998c99556020c6bd8f8bc28420c69583186ca290c66a27916a3b7 \
--hash=sha256:6071bcf51f0ae4d53b9d3e9164f7138164df4291c484a7b14562075aaa7a2b7b \ --hash=sha256:74fa9e02589339defc9d3662de9e7eef51d8f9f3a7f6304b43b18b39d7bbf10f \
--hash=sha256:6802edf98f6918e89df355f56be6e7db369b31eed64ff2496324febb8b0aa43b \ --hash=sha256:7629841ccdcccd3c43ebc6a4165abe9844909fcedb2041994c0153470f610801 \
--hash=sha256:69097c50c3ccbcc61292192b045927f1688ca57ce80525dc5d120e0b91e19bb0 \ --hash=sha256:7742649e4c357d4e7ad483a35ff5f55d519e895de56772cc486913614ee7d23b \
--hash=sha256:6956cf7a1ac97523e96f75b11534ff851df99a6474a561ad836b6e82004acbb8 \ --hash=sha256:7b91d88fe96b698b28bb1b95b1fce226f72757ab3ab7d8d97551e23bc629c84f \
--hash=sha256:6a7b76d4b44bca418f7797b1e157907b56b7d31caa9091db4e99ebee51c16933 \ --hash=sha256:81869a6de00bc676d10056fa8bb28cbe805b1cf498a45c14cb7b1765eee33fcb \
--hash=sha256:7adaac93678ac61f5dc070f615b18639d16ee66f6a946d5221dbf315e8b74bec \ --hash=sha256:855dee152daecb7de7b4cd7069d7854e11aa291687bffe8433156af0a224417e \
--hash=sha256:8623ac25fa0850a44ac845e9333c4da9ae5707b7cec8ac87cbe9d4e41137180f \ --hash=sha256:8563c2cdeb923b82a5cc5bfc76c28c786777428263ee39292d928e9687165fb4 \
--hash=sha256:8f672f3987f6424f60ab2e86ea7ed76dd2806b8e9b506a373fc8499aed85ddb5 \ --hash=sha256:8a32c9fb742868a34346f3c52e12d893a9d27f8e0c0bf3c480db7e6903d8be28 \
--hash=sha256:97839a6abbebb06099294e6057d5b3061721ada08b76ae792e7041b6cb54c97f \ --hash=sha256:8c7eba3610ae69f4aba4032ecb61b0a6fbd1e4537283d1553eb8c1cb136e9118 \
--hash=sha256:a4244f4199a160717f0027e434abb886e322093ceadb2f790ff0c73ed3e17662 \ --hash=sha256:8f5c3daa8b02786ad5f0e14ae16a59bbb4e02cbae3a41989a25188e5a6c962ff \
--hash=sha256:a70aaa2e56356e58c6e1b49f7b7f069df5b15e55db002a74db3ff3f7af67c7ff \ --hash=sha256:97d94322a2eaab767ba8d52f6bf9d0ec0f35313fe36287be6e6085dd65d55d37 \
--hash=sha256:a806aca6b80fa1d996aa16593e4995a71126a085ee1a59fff19ccad29a4e47fd \ --hash=sha256:a25a5a215b19d414de8d416a3c5414f29165843a06f704cc0345ded9eac34ac1 \
--hash=sha256:b0c1750f73658906b82cabbf4be2f74300644c17cb037fbc8b48d746c3b90c76 \ --hash=sha256:a651123d01bc399fcd866e56acc2d76512e62aae3673652b13b470ea69faf1f4 \
--hash=sha256:b0f9d9b5c6692097de07dd0b2d5ff20fd135bacd1b2fb7ea383ee717a4150c93 \ --hash=sha256:b11f8a71c82d19fce11ce487efeec2ca0dc3bcf5b4564445fecfc68d9c268744 \
--hash=sha256:b9abc49c014def1b832fcd53bdc670474b6fe41f373d16f40409882c0d0eccba \ --hash=sha256:b2079bf86dec62731c1b90fdfea3211f993f0c894d9261e0ce9b68ed9c9dfbec \
--hash=sha256:c15e7d691cee75b5192fc1fa8487bf541d463246dc25c926b9b40f5b6ab56770 \ --hash=sha256:b30240eb6b22daab604f1595f6aacf92bcdac0d29e2d7ad507dfac68d2b39182 \
--hash=sha256:c2c9ef10b6344465fd5ac002be2d34f818211274dd79b44c75b2c14a979f84f3 \ --hash=sha256:b6566fb8daa538c7848fd6822e2409a7e1c41dae8e65e6536598d505f641a318 \
--hash=sha256:caff3c1e964cfee044a03a46244ecf6373f3c56142ad16458a1446ac6d69824a \ --hash=sha256:b707fa4481e1af19b3052ec9352c688bad3f539d7bdd8aa4a451f6dd7e4bae73 \
--hash=sha256:d45db052d01d0ab7579470141d5c3592f4402d43cfacb67f023bc1210a67b7bc \ --hash=sha256:b8ed8d780e9fab01bc404a70d755a8b2b34ea6c0b6604b65de135daaaadaf9a9 \
--hash=sha256:d67a0bd0283a3b17ac43c5ab8e4a7e9d3aa758d6ec5d51c232343c408825a5ad \ --hash=sha256:bb4081fe340ed1df42dddfd055e1d50479cb0ccb976d13e6b5e8667a07fec6f4 \
--hash=sha256:d89ef8a4444d83e0a5171d14f2ab4895936ab1773165b020f97d29cf289a2d88 \ --hash=sha256:bd46f688ddf9c2ea10367446fe9bf3ceba0f7490c15b4f96420491c7f00bb283 \
--hash=sha256:d8ed77098c2e22181fce971f49a34204c38b79ca91c01d515d07015339ae8165 \ --hash=sha256:c02ece4f36a160c83efe74adfba5f189c7c7702361f02b809ab73744923ee139 \
--hash=sha256:da6306e1f03e7085fe0db61d4a3377f70c6fd865118d0afe17f80ae9a8f6f124 \ --hash=sha256:c3d988eb562da1dda7d49e9abd8a64b3cabc632b4299d177fb9e0c0ca9f06b8c \
--hash=sha256:e073338e422f518c1d4d80efc713cd17f3ed6d37c8c7459af04a95459f3206d1 \ --hash=sha256:c40bece58c11cb09aff17424d21b41f6f767d2b1252b2f745ec3ff29cce6a240 \
--hash=sha256:e2aae92398c0023ac26a6cd026375f765ef5afe127eccabf563c78af7b572d59 \ --hash=sha256:d11593a2e736055dd7b9587dbf89cd1cbe4a42a70e70f186e51aee7e1b38902e \
--hash=sha256:e399ed1b0d6f8089b9b6ff2cb3e71ba63a56d8ea88e1d95467949795cc74adfd \ --hash=sha256:d4850fe5650cead3c0f8822192e381cee9d4c3b8162eb082c86c927124572dc6 \
--hash=sha256:e7822cba140f7ca48ed0256229f422dbae69e3a3475176185db0c0538cfadb57 \ --hash=sha256:d875b304e19f4b2758d233bbf2b9d627c66fac50b3150b8d31a35ba6cda3db67 \
--hash=sha256:f532c2cbe8c140faffaebcfb34d43c9946599ea8138971f181a399bec7d6b123 \ --hash=sha256:dec0f2bea52e30ea98ce095f1f42da04535791f9a31b2aab2499caa88307bc49 \
--hash=sha256:f850489d89ea12be486492e68f0fd63e402fa28e426d4f0b5fc1eec0595e6109 \ --hash=sha256:e20649359e28f34d01b2570e4650a076f439a959bae3a8bbe7f5923ad80f54e8 \
--hash=sha256:f8873e490dea0f9cd975d66f84618b6fb57b1ba45ecb218313707a71173d764f \ --hash=sha256:e8efc7e9ec35336f7cc98b6692536b1262046ff1d2a545295a4d89b8a2495903 \
--hash=sha256:fe25f50dc3d45364428baa0dbe3f613a5171c64eb0286eb775136b74e61ba58a --hash=sha256:f0e19801836cf1b30f333d475b05d79051b8ae8639a8e2422fb5f64e82676ae7
# via -r requirements.anki.in # via -r requirements.anki.in
packaging==21.3 \ packaging==23.0 \
--hash=sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb \ --hash=sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2 \
--hash=sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522 --hash=sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97
# via # via
# -r requirements.base.txt # -r requirements.base.txt
# build # build
pep517==0.13.0 \ pip-tools==6.12.3 \
--hash=sha256:4ba4446d80aed5b5eac6509ade100bff3e7943a8489de249654a5ae9b33ee35b \ --hash=sha256:480d44fae6e09fad3f9bd3d0a7e8423088715d10477e8ef0663440db25e3114f \
--hash=sha256:ae69927c5c172be1add9203726d4b84cf3ebad1edcd5f71fcdc746e66e829f59 --hash=sha256:8510420f46572b2e26c357541390593d9365eb6edd2d1e7505267910ecaec080
# via
# -r requirements.base.txt
# build
pip-tools==6.10.0 \
--hash=sha256:57ac98392548f5ca96c2831927deec3035efe81ff476e3c744bd474ca9c6a1f2 \
--hash=sha256:7f9f7356052db6942b5aaabc8eba29983591ca0ad75affbf2f0a25d9361be624
# via -r requirements.base.txt # via -r requirements.base.txt
protobuf==4.21.9 \ protobuf==4.22.1 \
--hash=sha256:2c9c2ed7466ad565f18668aa4731c535511c5d9a40c6da39524bccf43e441719 \ --hash=sha256:3e19dcf4adbf608924d3486ece469dd4f4f2cf7d2649900f0efcd1a84e8fd3ba \
--hash=sha256:48e2cd6b88c6ed3d5877a3ea40df79d08374088e89bedc32557348848dff250b \ --hash=sha256:5917412347e1da08ce2939eb5cd60650dfb1a9ab4606a415b9278a1041fb4d19 \
--hash=sha256:5b0834e61fb38f34ba8840d7dcb2e5a2f03de0c714e0293b3963b79db26de8ce \ --hash=sha256:651113695bc2e5678b799ee5d906b5d3613f4ccfa61b12252cfceb6404558af0 \
--hash=sha256:61f21493d96d2a77f9ca84fefa105872550ab5ef71d21c458eb80edcf4885a99 \ --hash=sha256:67b7d19da0fda2733702c2299fd1ef6cb4b3d99f09263eacaf1aa151d9d05f02 \
--hash=sha256:6e0be9f09bf9b6cf497b27425487706fa48c6d1632ddd94dab1a5fe11a422392 \ --hash=sha256:6e100f7bc787cd0a0ae58dbf0ab8bbf1ee7953f862b89148b6cf5436d5e9eaa1 \
--hash=sha256:6e312e280fbe3c74ea9e080d9e6080b636798b5e3939242298b591064470b06b \ --hash=sha256:85aa9acc5a777adc0c21b449dafbc40d9a0b6413ff3a4f77ef9df194be7f975b \
--hash=sha256:7eb8f2cc41a34e9c956c256e3ac766cf4e1a4c9c925dc757a41a01be3e852965 \ --hash=sha256:87a6393fa634f294bf24d1cfe9fdd6bb605cbc247af81b9b10c4c0f12dfce4b3 \
--hash=sha256:84ea107016244dfc1eecae7684f7ce13c788b9a644cd3fca5b77871366556444 \ --hash=sha256:8bc971d76c03f1dd49f18115b002254f2ddb2d4b143c583bb860b796bb0d399e \
--hash=sha256:9227c14010acd9ae7702d6467b4625b6fe853175a6b150e539b21d2b2f2b409c \ --hash=sha256:953fc7904ef46900262a26374b28c2864610b60cdc8b272f864e22143f8373c4 \
--hash=sha256:a419cc95fca8694804709b8c4f2326266d29659b126a93befe210f5bbc772536 \ --hash=sha256:9e12e2810e7d297dbce3c129ae5e912ffd94240b050d33f9ecf023f35563b14f \
--hash=sha256:a7d0ea43949d45b836234f4ebb5ba0b22e7432d065394b532cdca8f98415e3cf \ --hash=sha256:b8700792f88e59ccecfa246fa48f689d6eee6900eddd486cdae908ff706c482b \
--hash=sha256:b5ab0b8918c136345ff045d4b3d5f719b505b7c8af45092d7f45e304f55e50a1 \ --hash=sha256:dce7a55d501c31ecf688adb2f6c3f763cf11bc0be815d1946a84d74772ab07a7 \
--hash=sha256:e575c57dc8b5b2b2caa436c16d44ef6981f2235eb7179bfc847557886376d740 \ --hash=sha256:e3fb58076bdb550e75db06ace2a8b3879d4c4f7ec9dd86e4254656118f4a78d7
--hash=sha256:f9eae277dd240ae19bb06ff4e2346e771252b0e619421965504bd1b1bba7c5fa
# via -r requirements.anki.in # via -r requirements.anki.in
pyparsing==3.0.9 \ pyproject-hooks==1.0.0 \
--hash=sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb \ --hash=sha256:283c11acd6b928d2f6a7c73fa0d01cb2bdc5f07c57a2eeb6e83d5e56b97976f8 \
--hash=sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc --hash=sha256:f271b298b97f5955d53fb12b72c1fb1948c22c1a6b70b315c54cedaca0264ef5
# via # via
# -r requirements.base.txt # -r requirements.base.txt
# packaging # build
pyrsistent==0.19.2 \ pyrsistent==0.19.3 \
--hash=sha256:055ab45d5911d7cae397dc418808d8802fb95262751872c841c170b0dbf51eed \ --hash=sha256:016ad1afadf318eb7911baa24b049909f7f3bb2c5b1ed7b6a8f21db21ea3faa8 \
--hash=sha256:111156137b2e71f3a9936baf27cb322e8024dac3dc54ec7fb9f0bcf3249e68bb \ --hash=sha256:1a2994773706bbb4995c31a97bc94f1418314923bd1048c6d964837040376440 \
--hash=sha256:187d5730b0507d9285a96fca9716310d572e5464cadd19f22b63a6976254d77a \ --hash=sha256:20460ac0ea439a3e79caa1dbd560344b64ed75e85d8703943e0b66c2a6150e4a \
--hash=sha256:21455e2b16000440e896ab99e8304617151981ed40c29e9507ef1c2e4314ee95 \ --hash=sha256:3311cb4237a341aa52ab8448c27e3a9931e2ee09561ad150ba94e4cfd3fc888c \
--hash=sha256:2aede922a488861de0ad00c7630a6e2d57e8023e4be72d9d7147a9fcd2d30712 \ --hash=sha256:3a8cb235fa6d3fd7aae6a4f1429bbb1fec1577d978098da1252f0489937786f3 \
--hash=sha256:3ba4134a3ff0fc7ad225b6b457d1309f4698108fb6b35532d015dca8f5abed73 \ --hash=sha256:3ab2204234c0ecd8b9368dbd6a53e83c3d4f3cab10ecaf6d0e772f456c442393 \
--hash=sha256:456cb30ca8bff00596519f2c53e42c245c09e1a4543945703acd4312949bfd41 \ --hash=sha256:42ac0b2f44607eb92ae88609eda931a4f0dfa03038c44c772e07f43e738bcac9 \
--hash=sha256:71d332b0320642b3261e9fee47ab9e65872c2bd90260e5d225dabeed93cbd42b \ --hash=sha256:49c32f216c17148695ca0e02a5c521e28a4ee6c5089f97e34fe24163113722da \
--hash=sha256:879b4c2f4d41585c42df4d7654ddffff1239dc4065bc88b745f0341828b83e78 \ --hash=sha256:4b774f9288dda8d425adb6544e5903f1fb6c273ab3128a355c6b972b7df39dcf \
--hash=sha256:9cd3e9978d12b5d99cbdc727a3022da0430ad007dacf33d0bf554b96427f33ab \ --hash=sha256:4c18264cb84b5e68e7085a43723f9e4c1fd1d935ab240ce02c0324a8e01ccb64 \
--hash=sha256:a178209e2df710e3f142cbd05313ba0c5ebed0a55d78d9945ac7a4e09d923308 \ --hash=sha256:5a474fb80f5e0d6c9394d8db0fc19e90fa540b82ee52dba7d246a7791712f74a \
--hash=sha256:b39725209e06759217d1ac5fcdb510e98670af9e37223985f330b611f62e7425 \ --hash=sha256:64220c429e42a7150f4bfd280f6f4bb2850f95956bde93c6fda1b70507af6ef3 \
--hash=sha256:bfa0351be89c9fcbcb8c9879b826f4353be10f58f8a677efab0c017bf7137ec2 \ --hash=sha256:878433581fc23e906d947a6814336eee031a00e6defba224234169ae3d3d6a98 \
--hash=sha256:bfd880614c6237243ff53a0539f1cb26987a6dc8ac6e66e0c5a40617296a045e \ --hash=sha256:99abb85579e2165bd8522f0c0138864da97847875ecbd45f3e7e2af569bfc6f2 \
--hash=sha256:c43bec251bbd10e3cb58ced80609c5c1eb238da9ca78b964aea410fb820d00d6 \ --hash=sha256:a2471f3f8693101975b1ff85ffd19bb7ca7dd7c38f8a81701f67d6b4f97b87d8 \
--hash=sha256:d690b18ac4b3e3cab73b0b7aa7dbe65978a172ff94970ff98d82f2031f8971c2 \ --hash=sha256:aeda827381f5e5d65cced3024126529ddc4289d944f75e090572c77ceb19adbf \
--hash=sha256:d6982b5a0237e1b7d876b60265564648a69b14017f3b5f908c5be2de3f9abb7a \ --hash=sha256:b735e538f74ec31378f5a1e3886a26d2ca6351106b4dfde376a26fc32a044edc \
--hash=sha256:dec3eac7549869365fe263831f576c8457f6c833937c68542d08fde73457d291 \ --hash=sha256:c147257a92374fde8498491f53ffa8f4822cd70c0d85037e09028e478cababb7 \
--hash=sha256:e371b844cec09d8dc424d940e54bba8f67a03ebea20ff7b7b0d56f526c71d584 \ --hash=sha256:c4db1bd596fefd66b296a3d5d943c94f4fac5bcd13e99bffe2ba6a759d959a28 \
--hash=sha256:e5d8f84d81e3729c3b506657dddfe46e8ba9c330bf1858ee33108f8bb2adb38a \ --hash=sha256:c74bed51f9b41c48366a286395c67f4e894374306b197e62810e0fdaf2364da2 \
--hash=sha256:ea6b79a02a28550c98b6ca9c35b9f492beaa54d7c5c9e9949555893c8a9234d0 \ --hash=sha256:c9bb60a40a0ab9aba40a59f68214eed5a29c6274c83b2cc206a359c4a89fa41b \
--hash=sha256:f1258f4e6c42ad0b20f9cfcc3ada5bd6b83374516cd01c0960e3cb75fdca6770 --hash=sha256:cc5d149f31706762c1f8bda2e8c4f8fead6e80312e3692619a75301d3dbb819a \
--hash=sha256:ccf0d6bd208f8111179f0c26fdf84ed7c3891982f2edaeae7422575f47e66b64 \
--hash=sha256:e42296a09e83028b3476f7073fcb69ffebac0e66dbbfd1bd847d61f74db30f19 \
--hash=sha256:e8f2b814a3dc6225964fa03d8582c6e0b6650d68a232df41e3cc1b66a5d2f8d1 \
--hash=sha256:f0774bf48631f3a20471dd7c5989657b639fd2d285b861237ea9e82c36a415a9 \
--hash=sha256:f0e7c4b2f77593871e918be000b96c8107da48444d57005b6a6bc61fb4331b2c
# via jsonschema # via jsonschema
pysocks==1.7.1 \ pysocks==1.7.1 \
--hash=sha256:08e69f092cc6dbe92a0fdd16eeb9b9ffbc13cadfe5ca4c7bd92ffb078b293299 \ --hash=sha256:08e69f092cc6dbe92a0fdd16eeb9b9ffbc13cadfe5ca4c7bd92ffb078b293299 \
--hash=sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5 \ --hash=sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5 \
--hash=sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0 --hash=sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0
# via requests # via requests
requests==2.28.1 \ requests==2.28.2 \
--hash=sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983 \ --hash=sha256:64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa \
--hash=sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349 --hash=sha256:98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf
# via # via
# -r requirements.anki.in # -r requirements.anki.in
# -r requirements.aqt.in # -r requirements.aqt.in
@ -255,9 +336,9 @@ six==1.16.0 \
--hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \
--hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254
# via flask-cors # via flask-cors
soupsieve==2.3.2.post1 \ soupsieve==2.4 \
--hash=sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759 \ --hash=sha256:49e5368c2cda80ee7e84da9dbe3e110b70a4575f196efb74e51b94549d921955 \
--hash=sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d --hash=sha256:e28dba9ca6c7c00173e34e4ba57448f0688bb681b7c5e8bf4971daafc093d69a
# via beautifulsoup4 # via beautifulsoup4
tomli==2.0.1 \ tomli==2.0.1 \
--hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \
@ -265,10 +346,10 @@ tomli==2.0.1 \
# via # via
# -r requirements.base.txt # -r requirements.base.txt
# build # build
# pep517 # pyproject-hooks
urllib3==1.26.12 \ urllib3==1.26.15 \
--hash=sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e \ --hash=sha256:8a388717b9476f934a21484e8c8e61875ab60644d29b9b39e11e4b9dc1c6b305 \
--hash=sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997 --hash=sha256:aa751d169e23c7479ce47a0cb0da579e3ede798f994f5816a74e4f4500dcea42
# via requests # via requests
waitress==2.1.2 \ waitress==2.1.2 \
--hash=sha256:7500c9625927c8ec60f54377d590f67b30c8e70ef4b8894214ac6e4cad233d2a \ --hash=sha256:7500c9625927c8ec60f54377d590f67b30c8e70ef4b8894214ac6e4cad233d2a \
@ -278,27 +359,27 @@ werkzeug==2.2.3 \
--hash=sha256:2e1ccc9417d4da358b9de6f174e3ac094391ea1d4fbef2d667865d819dfd0afe \ --hash=sha256:2e1ccc9417d4da358b9de6f174e3ac094391ea1d4fbef2d667865d819dfd0afe \
--hash=sha256:56433961bc1f12533306c624f3be5e744389ac61d722175d543e1751285da612 --hash=sha256:56433961bc1f12533306c624f3be5e744389ac61d722175d543e1751285da612
# via flask # via flask
wheel==0.38.4 \ wheel==0.40.0 \
--hash=sha256:965f5259b566725405b05e7cf774052044b1ed30119b5d586b2703aafe8719ac \ --hash=sha256:cd1196f3faee2b31968d626e1731c94f99cbdb67cf5a46e4f5656cbee7738873 \
--hash=sha256:b60533f3f5d530e971d6737ca6d58681ee434818fab630c83a734bb10c083ce8 --hash=sha256:d236b20e7cb522daf2390fa84c55eea81c5c30190f90f29ae2ca1ad8355bf247
# via # via
# -r requirements.base.txt # -r requirements.base.txt
# pip-tools # pip-tools
zipp==3.10.0 \ zipp==3.15.0 \
--hash=sha256:4fcb6f278987a6605757302a6e40e896257570d11c51628968ccb2a47e80c6c1 \ --hash=sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b \
--hash=sha256:7a7262fd930bd3e36c50b9a64897aec3fafff3dfdeec9623ae22b40e93f99bb8 --hash=sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556
# via importlib-metadata # via importlib-metadata
# The following packages are considered to be unsafe in a requirements file: # The following packages are considered to be unsafe in a requirements file:
pip==22.3.1 \ pip==23.0.1 \
--hash=sha256:65fd48317359f3af8e593943e6ae1506b66325085ea64b706a998c6e83eeaf38 \ --hash=sha256:236bcb61156d76c4b8a05821b988c7b8c35bf0da28a4b614e8d6ab5212c25c6f \
--hash=sha256:908c78e6bc29b676ede1c4d57981d490cb892eb45cd8c214ab6298125119e077 --hash=sha256:cd015ea1bfb0fcef59d8a286c1f8bebcb983f6317719d415dc5351efb7cd7024
# via # via
# -r requirements.base.txt # -r requirements.base.txt
# pip-tools # pip-tools
setuptools==65.5.1 \ setuptools==67.6.1 \
--hash=sha256:d0b9a8433464d5800cbe05094acf5c6d52a91bfac9b52bcfc4d41382be5d5d31 \ --hash=sha256:257de92a9d50a60b8e22abfcbb771571fde0dbf3ec234463212027a4eeecbe9a \
--hash=sha256:e197a19aa8ec9722928f2206f8de752def0e4c9fc6953527360d1c36d94ddb2f --hash=sha256:e728ca814a823bf7bf60162daf9db95b93d532948c4c0bea762ce62f60189078
# via # via
# -r requirements.base.txt # -r requirements.base.txt
# pip-tools # pip-tools

File diff suppressed because it is too large Load diff

View file

@ -102,7 +102,6 @@ from aqt import stats, about, preferences, mediasync # isort:skip
class DialogManager: class DialogManager:
_dialogs: dict[str, list] = { _dialogs: dict[str, list] = {
"AddCards": [addcards.AddCards, None], "AddCards": [addcards.AddCards, None],
"AddonsDialog": [addons.AddonsDialog, None], "AddonsDialog": [addons.AddonsDialog, None],
@ -146,7 +145,7 @@ class DialogManager:
return None return None
# ask all windows to close and await a reply # ask all windows to close and await a reply
for (name, (creator, instance)) in self._dialogs.items(): for name, (creator, instance) in self._dialogs.items():
if not instance: if not instance:
continue continue
@ -271,7 +270,6 @@ def setupLangAndBackend(
class AnkiApp(QApplication): class AnkiApp(QApplication):
# Single instance support on Win32/Linux # Single instance support on Win32/Linux
################################################## ##################################################
@ -477,7 +475,6 @@ PROFILE_CODE = os.environ.get("ANKI_PROFILE_CODE")
def write_profile_results() -> None: def write_profile_results() -> None:
profiler.disable() profiler.disable()
profile = os.path.join(os.environ.get("BUILD_WORKSPACE_DIRECTORY", ""), "anki.prof") profile = os.path.join(os.environ.get("BUILD_WORKSPACE_DIRECTORY", ""), "anki.prof")
profiler.dump_stats(profile) profiler.dump_stats(profile)
@ -523,7 +520,6 @@ def _run(argv: Optional[list[str]] = None, exec: bool = True) -> Optional[AnkiAp
return None return None
if PROFILE_CODE: if PROFILE_CODE:
profiler = cProfile.Profile() profiler = cProfile.Profile()
profiler.enable() profiler.enable()

View file

@ -179,7 +179,6 @@ def package_name_valid(name: str) -> bool:
# fixme: this class should not have any GUI code in it # fixme: this class should not have any GUI code in it
class AddonManager: class AddonManager:
exts: list[str] = [".ankiaddon", ".zip"] exts: list[str] = [".ankiaddon", ".zip"]
_manifest_schema: dict = { _manifest_schema: dict = {
"type": "object", "type": "object",
@ -491,7 +490,6 @@ class AddonManager:
parent: QWidget | None = None, parent: QWidget | None = None,
force_enable: bool = False, force_enable: bool = False,
) -> tuple[list[str], list[str]]: ) -> tuple[list[str], list[str]]:
log = [] log = []
errs = [] errs = []
@ -520,7 +518,6 @@ class AddonManager:
def _installationErrorReport( def _installationErrorReport(
self, result: InstallError, base: str, mode: str = "download" self, result: InstallError, base: str, mode: str = "download"
) -> list[str]: ) -> list[str]:
messages = { messages = {
"zip": tr.addons_corrupt_addon_file(), "zip": tr.addons_corrupt_addon_file(),
"manifest": tr.addons_invalid_addon_manifest(), "manifest": tr.addons_invalid_addon_manifest(),
@ -538,7 +535,6 @@ class AddonManager:
def _installationSuccessReport( def _installationSuccessReport(
self, result: InstallOk, base: str, mode: str = "download" self, result: InstallOk, base: str, mode: str = "download"
) -> list[str]: ) -> list[str]:
name = result.name or base name = result.name or base
if mode == "download": if mode == "download":
template = tr.addons_downloaded_fnames(fname=name) template = tr.addons_downloaded_fnames(fname=name)
@ -1661,7 +1657,6 @@ def installAddonPackages(
advise_restart: bool = False, advise_restart: bool = False,
force_enable: bool = False, force_enable: bool = False,
) -> bool: ) -> bool:
if warn: if warn:
names = ",<br>".join(f"<b>{os.path.basename(p)}</b>" for p in paths) names = ",<br>".join(f"<b>{os.path.basename(p)}</b>" for p in paths)
q = tr.addons_important_as_addons_are_programs_downloaded() % dict(names=names) q = tr.addons_important_as_addons_are_programs_downloaded() % dict(names=names)

View file

@ -27,7 +27,6 @@ from aqt.webview import AnkiWebView, AnkiWebViewKind
class ChangeNotetypeDialog(QDialog): class ChangeNotetypeDialog(QDialog):
TITLE = "changeNotetype" TITLE = "changeNotetype"
silentlyClose = True silentlyClose = True

View file

@ -244,6 +244,7 @@ class DeckBrowser:
node.deck_id, node.deck_id,
html.escape(node.name), html.escape(node.name),
) )
# due counts # due counts
def nonzeroColour(cnt: int, klass: str) -> str: def nonzeroColour(cnt: int, klass: str) -> str:
if not cnt: if not cnt:

View file

@ -14,7 +14,6 @@ from aqt.utils import addCloseShortcut, disable_help_button, restoreGeom, saveGe
class DeckDescriptionDialog(QDialog): class DeckDescriptionDialog(QDialog):
TITLE = "deckDescription" TITLE = "deckDescription"
silentlyClose = True silentlyClose = True

View file

@ -1341,6 +1341,7 @@ class EditorWebView(AnkiWebView):
processed.append(link) processed.append(link)
else: else:
token = html.escape(token).replace("\t", " " * 4) token = html.escape(token).replace("\t", " " * 4)
# if there's more than one consecutive space, # if there's more than one consecutive space,
# use non-breaking spaces for the second one on # use non-breaking spaces for the second one on
def repl(match: Match) -> str: def repl(match: Match) -> str:

View file

@ -14,7 +14,6 @@ from aqt.webview import AnkiWebView, AnkiWebViewKind
class ImportCsvDialog(QDialog): class ImportCsvDialog(QDialog):
TITLE = "csv import" TITLE = "csv import"
silentlyClose = True silentlyClose = True

View file

@ -122,7 +122,6 @@ class ImportDialog(QDialog):
self.showMapping() self.showMapping()
def onDelimiter(self) -> None: def onDelimiter(self) -> None:
# Open a modal dialog to enter an delimiter # Open a modal dialog to enter an delimiter
# Todo/Idea Constrain the maximum width, so it doesn't take up that much screen space # Todo/Idea Constrain the maximum width, so it doesn't take up that much screen space
delim, ok = getText( delim, ok = getText(

View file

@ -64,7 +64,6 @@ DynamicRequest = Callable[[], Response]
class MediaServer(threading.Thread): class MediaServer(threading.Thread):
_ready = threading.Event() _ready = threading.Event()
daemon = True daemon = True

View file

@ -251,7 +251,7 @@ class AddModel(QDialog):
self.notetypes: list[ self.notetypes: list[
Union[NotetypeDict, Callable[[Collection], NotetypeDict]] Union[NotetypeDict, Callable[[Collection], NotetypeDict]]
] = [] ] = []
for (name, func) in stdmodels.get_stock_notetypes(self.col): for name, func in stdmodels.get_stock_notetypes(self.col):
item = QListWidgetItem(tr.notetypes_add(val=name)) item = QListWidgetItem(tr.notetypes_add(val=name))
self.dialog.models.addItem(item) self.dialog.models.addItem(item)
self.notetypes.append(func) self.notetypes.append(func)

View file

@ -626,6 +626,7 @@ class Reviewer:
expected = self.typeCorrect expected = self.typeCorrect
provided = self.typedAnswer provided = self.typedAnswer
output = self.mw.col.compare_answer(expected, provided) output = self.mw.col.compare_answer(expected, provided)
# and update the type answer area # and update the type answer area
def repl(match: Match) -> str: def repl(match: Match) -> str:
# can't pass a string in directly, and can't use re.escape as it # can't pass a string in directly, and can't use re.escape as it
@ -994,13 +995,19 @@ time = %(time)d;
def bury_current_note(self) -> None: def bury_current_note(self) -> None:
gui_hooks.reviewer_will_bury_note(self.card.nid) gui_hooks.reviewer_will_bury_note(self.card.nid)
bury_notes(parent=self.mw, note_ids=[self.card.nid],).success( bury_notes(
parent=self.mw,
note_ids=[self.card.nid],
).success(
lambda res: tooltip(tr.studying_cards_buried(count=res.count)) lambda res: tooltip(tr.studying_cards_buried(count=res.count))
).run_in_background() ).run_in_background()
def bury_current_card(self) -> None: def bury_current_card(self) -> None:
gui_hooks.reviewer_will_bury_card(self.card.id) gui_hooks.reviewer_will_bury_card(self.card.id)
bury_cards(parent=self.mw, card_ids=[self.card.id],).success( bury_cards(
parent=self.mw,
card_ids=[self.card.id],
).success(
lambda res: tooltip(tr.studying_cards_buried(count=res.count)) lambda res: tooltip(tr.studying_cards_buried(count=res.count))
).run_in_background() ).run_in_background()

View file

@ -237,6 +237,7 @@ av_player = AVPlayer()
# Packaged commands # Packaged commands
########################################################################## ##########################################################################
# return modified command array that points to bundled command, and return # return modified command array that points to bundled command, and return
# required environment # required environment
def _packagedCmd(cmd: list[str]) -> tuple[Any, dict[str, str]]: def _packagedCmd(cmd: list[str]) -> tuple[Any, dict[str, str]]:
@ -263,6 +264,7 @@ def _packagedCmd(cmd: list[str]) -> tuple[Any, dict[str, str]]:
# legacy global for add-ons # legacy global for add-ons
si = startup_info() si = startup_info()
# osx throws interrupted system call errors frequently # osx throws interrupted system call errors frequently
def retryWait(proc: subprocess.Popen) -> int: def retryWait(proc: subprocess.Popen) -> int:
while 1: while 1:
@ -390,7 +392,6 @@ class SimpleMplayerPlayer(SimpleProcessPlayer, SoundOrVideoPlayer):
class MpvManager(MPV, SoundOrVideoPlayer): class MpvManager(MPV, SoundOrVideoPlayer):
if not is_lin: if not is_lin:
default_argv = MPVBase.default_argv + [ default_argv = MPVBase.default_argv + [
"--input-media-keys=no", "--input-media-keys=no",
@ -797,7 +798,7 @@ mpvManager: MpvManager | None = None
# add everything from this module into anki.sound for backwards compat # add everything from this module into anki.sound for backwards compat
_exports = [i for i in locals().items() if not i[0].startswith("__")] _exports = [i for i in locals().items() if not i[0].startswith("__")]
for (k, v) in _exports: for k, v in _exports:
sys.modules["anki.sound"].__dict__[k] = v sys.modules["anki.sound"].__dict__[k] = v
# Tag handling # Tag handling

View file

@ -107,6 +107,7 @@ class NewDeckStats(QDialog):
path = self._imagePath() path = self._imagePath()
if not path: if not path:
return return
# When scrolled down in dark mode, the top of the page in the # When scrolled down in dark mode, the top of the page in the
# final PDF will have a white background, making the text and graphs # final PDF will have a white background, making the text and graphs
# unreadable. A simple fix for now is to scroll to the top of the # unreadable. A simple fix for now is to scroll to the top of the

View file

@ -451,7 +451,6 @@ class Toolbar:
class BottomBar(Toolbar): class BottomBar(Toolbar):
_centerBody = """ _centerBody = """
<center id=outer><table width=100%% id=header><tr><td align=center> <center id=outer><table width=100%% id=header><tr><td align=center>
%s</td></tr></table></center> %s</td></tr></table></center>

View file

@ -14,7 +14,6 @@ from aqt.utils import openLink, showText, tr
class LatestVersionFinder(QThread): class LatestVersionFinder(QThread):
newVerAvail = pyqtSignal(str) newVerAvail = pyqtSignal(str)
newMsg = pyqtSignal(dict) newMsg = pyqtSignal(dict)
clockIsOff = pyqtSignal(float) clockIsOff = pyqtSignal(float)

View file

@ -1131,6 +1131,7 @@ Add-ons, last update check: {}
###################################################################### ######################################################################
# adapted from version detection in qutebrowser # adapted from version detection in qutebrowser
def opengl_vendor() -> str | None: def opengl_vendor() -> str | None:
if qtmajor != 5: if qtmajor != 5: