chgksuite 0.26.0b11__tar.gz → 0.26.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {chgksuite-0.26.0b11/chgksuite.egg-info → chgksuite-0.26.1}/PKG-INFO +1 -1
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/cli.py +17 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/chgksuite_parser.py +4 -2
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/composer_common.py +18 -0
- chgksuite-0.26.1/chgksuite/composer/docx.py +704 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/latex.py +2 -2
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/pptx.py +17 -5
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/telegram.py +20 -9
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/handouter/runner.py +3 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/handouter/utils.py +22 -1
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/parser.py +193 -11
- chgksuite-0.26.1/chgksuite/version.py +1 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1/chgksuite.egg-info}/PKG-INFO +1 -1
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/history.md +17 -0
- chgksuite-0.26.0b11/chgksuite/composer/docx.py +0 -475
- chgksuite-0.26.0b11/chgksuite/version.py +0 -1
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/LICENSE +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/MANIFEST.in +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/README.md +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/__init__.py +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/__main__.py +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/common.py +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/__init__.py +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/db.py +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/lj.py +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/openquiz.py +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/reddit.py +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/stats.py +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/telegram_bot.py +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/telegram_parser.py +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/handouter/__init__.py +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/handouter/gen.py +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/handouter/installer.py +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/handouter/pack.py +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/handouter/tex_internals.py +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/parser_db.py +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/cheader.tex +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/fix-unnumbered-sections.sty +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/labels_by.toml +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/labels_by_tar.toml +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/labels_en.toml +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/labels_kz_cyr.toml +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/labels_ru.toml +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/labels_sr.toml +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/labels_ua.toml +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/labels_uz.toml +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/labels_uz_cyr.toml +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/pptx_config.toml +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/regexes_by.json +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/regexes_en.json +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/regexes_kz_cyr.json +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/regexes_ru.json +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/regexes_sr.json +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/regexes_ua.json +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/regexes_uz_cyr.json +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/template.docx +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/template.pptx +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/trello.json +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/trello.py +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/typotools.py +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/vulture_whitelist.py +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite.egg-info/SOURCES.txt +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite.egg-info/dependency_links.txt +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite.egg-info/entry_points.txt +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite.egg-info/requires.txt +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite.egg-info/top_level.txt +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/setup.cfg +0 -0
- {chgksuite-0.26.0b11 → chgksuite-0.26.1}/setup.py +0 -0
|
@@ -277,6 +277,14 @@ class ArgparseBuilder:
|
|
|
277
277
|
advanced=True,
|
|
278
278
|
argtype="radiobutton",
|
|
279
279
|
)
|
|
280
|
+
self.add_argument(
|
|
281
|
+
cmdparse,
|
|
282
|
+
"--download_images",
|
|
283
|
+
action="store_true",
|
|
284
|
+
help="download images from direct URLs and replace with local references",
|
|
285
|
+
caption="Скачивать изображения по прямым ссылкам",
|
|
286
|
+
advanced=True,
|
|
287
|
+
)
|
|
280
288
|
self.add_argument(
|
|
281
289
|
cmdparse,
|
|
282
290
|
"--add_ts",
|
|
@@ -436,6 +444,15 @@ class ArgparseBuilder:
|
|
|
436
444
|
advanced=True,
|
|
437
445
|
caption='Без переноса строки после "Вопрос N."',
|
|
438
446
|
)
|
|
447
|
+
|
|
448
|
+
self.add_argument(
|
|
449
|
+
cmdcompose_docx,
|
|
450
|
+
"--only_question_number",
|
|
451
|
+
action="store_true",
|
|
452
|
+
help="only show question number",
|
|
453
|
+
advanced=True,
|
|
454
|
+
caption='Без слова "Вопрос" в "Вопрос N."',
|
|
455
|
+
)
|
|
439
456
|
self.add_argument(
|
|
440
457
|
cmdcompose_docx,
|
|
441
458
|
"--randomize",
|
|
@@ -64,7 +64,9 @@ def process_list(element):
|
|
|
64
64
|
|
|
65
65
|
|
|
66
66
|
RE_COUNTER = "4SCOUNTER(?P<counter_id>[0-9a-zA-Z_]*)"
|
|
67
|
-
RE_SET_COUNTER =
|
|
67
|
+
RE_SET_COUNTER = (
|
|
68
|
+
"set 4SCOUNTER(?P<counter_id_set>[0-9a-zA-Z_]*) = (?P<counter_value>[0-9+])"
|
|
69
|
+
)
|
|
68
70
|
RE_COUNTER_UNIFY = re.compile(f"({RE_COUNTER}|{RE_SET_COUNTER})")
|
|
69
71
|
|
|
70
72
|
|
|
@@ -83,7 +85,7 @@ def replace_counters(string_):
|
|
|
83
85
|
counter_id = match.group("counter_id")
|
|
84
86
|
string_ = string_[: span[0]] + str(dd[counter_id]) + string_[span[1] :]
|
|
85
87
|
dd[counter_id] += 1
|
|
86
|
-
match = RE_COUNTER_UNIFY.search(string_)
|
|
88
|
+
match = RE_COUNTER_UNIFY.search(string_)
|
|
87
89
|
return string_
|
|
88
90
|
|
|
89
91
|
|
|
@@ -59,6 +59,22 @@ def backtick_replace(el):
|
|
|
59
59
|
return el
|
|
60
60
|
|
|
61
61
|
|
|
62
|
+
def remove_accents_standalone(s, labels):
|
|
63
|
+
hs = labels["question_labels"]["handout_short"]
|
|
64
|
+
re_hs = re.compile(f"\\[{hs}(.+?)\\]", flags=re.DOTALL)
|
|
65
|
+
replacements = {}
|
|
66
|
+
n_handouts = 0
|
|
67
|
+
while match := re_hs.search(s):
|
|
68
|
+
original = match.group(0)
|
|
69
|
+
n_handouts += 1
|
|
70
|
+
replacements[original] = f"HANDOUT_{str(n_handouts).zfill(3)}"
|
|
71
|
+
s = s.replace(original, replacements[original])
|
|
72
|
+
s = s.replace("\u0301", "")
|
|
73
|
+
for k, v in replacements.items():
|
|
74
|
+
s = s.replace(v, k)
|
|
75
|
+
return s
|
|
76
|
+
|
|
77
|
+
|
|
62
78
|
def unquote(bytestring):
|
|
63
79
|
return urllib.parse.unquote(bytestring.decode("utf8")).encode("utf8")
|
|
64
80
|
|
|
@@ -415,6 +431,8 @@ class BaseExporter:
|
|
|
415
431
|
return _parse_4s_elem(*args, **kwargs)
|
|
416
432
|
|
|
417
433
|
def get_label(self, question, field, number=None):
|
|
434
|
+
if field == "question" and self.args.only_question_number:
|
|
435
|
+
return str(question.get("number") or number)
|
|
418
436
|
if field in ("question", "tour"):
|
|
419
437
|
lbl = (question.get("overrides") or {}).get(field) or self.labels[
|
|
420
438
|
"question_labels"
|