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.
Files changed (68) hide show
  1. {chgksuite-0.26.0b11/chgksuite.egg-info → chgksuite-0.26.1}/PKG-INFO +1 -1
  2. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/cli.py +17 -0
  3. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/chgksuite_parser.py +4 -2
  4. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/composer_common.py +18 -0
  5. chgksuite-0.26.1/chgksuite/composer/docx.py +704 -0
  6. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/latex.py +2 -2
  7. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/pptx.py +17 -5
  8. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/telegram.py +20 -9
  9. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/handouter/runner.py +3 -0
  10. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/handouter/utils.py +22 -1
  11. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/parser.py +193 -11
  12. chgksuite-0.26.1/chgksuite/version.py +1 -0
  13. {chgksuite-0.26.0b11 → chgksuite-0.26.1/chgksuite.egg-info}/PKG-INFO +1 -1
  14. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/history.md +17 -0
  15. chgksuite-0.26.0b11/chgksuite/composer/docx.py +0 -475
  16. chgksuite-0.26.0b11/chgksuite/version.py +0 -1
  17. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/LICENSE +0 -0
  18. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/MANIFEST.in +0 -0
  19. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/README.md +0 -0
  20. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/__init__.py +0 -0
  21. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/__main__.py +0 -0
  22. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/common.py +0 -0
  23. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/__init__.py +0 -0
  24. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/db.py +0 -0
  25. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/lj.py +0 -0
  26. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/openquiz.py +0 -0
  27. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/reddit.py +0 -0
  28. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/stats.py +0 -0
  29. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/telegram_bot.py +0 -0
  30. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/composer/telegram_parser.py +0 -0
  31. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/handouter/__init__.py +0 -0
  32. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/handouter/gen.py +0 -0
  33. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/handouter/installer.py +0 -0
  34. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/handouter/pack.py +0 -0
  35. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/handouter/tex_internals.py +0 -0
  36. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/parser_db.py +0 -0
  37. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/cheader.tex +0 -0
  38. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/fix-unnumbered-sections.sty +0 -0
  39. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/labels_by.toml +0 -0
  40. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/labels_by_tar.toml +0 -0
  41. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/labels_en.toml +0 -0
  42. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/labels_kz_cyr.toml +0 -0
  43. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/labels_ru.toml +0 -0
  44. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/labels_sr.toml +0 -0
  45. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/labels_ua.toml +0 -0
  46. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/labels_uz.toml +0 -0
  47. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/labels_uz_cyr.toml +0 -0
  48. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/pptx_config.toml +0 -0
  49. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/regexes_by.json +0 -0
  50. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/regexes_en.json +0 -0
  51. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/regexes_kz_cyr.json +0 -0
  52. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/regexes_ru.json +0 -0
  53. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/regexes_sr.json +0 -0
  54. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/regexes_ua.json +0 -0
  55. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/regexes_uz_cyr.json +0 -0
  56. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/template.docx +0 -0
  57. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/template.pptx +0 -0
  58. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/resources/trello.json +0 -0
  59. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/trello.py +0 -0
  60. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/typotools.py +0 -0
  61. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite/vulture_whitelist.py +0 -0
  62. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite.egg-info/SOURCES.txt +0 -0
  63. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite.egg-info/dependency_links.txt +0 -0
  64. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite.egg-info/entry_points.txt +0 -0
  65. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite.egg-info/requires.txt +0 -0
  66. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/chgksuite.egg-info/top_level.txt +0 -0
  67. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/setup.cfg +0 -0
  68. {chgksuite-0.26.0b11 → chgksuite-0.26.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: chgksuite
3
- Version: 0.26.0b11
3
+ Version: 0.26.1
4
4
  Summary: A package for chgk automation
5
5
  Home-page: https://gitlab.com/peczony/chgksuite
6
6
  Author: Alexander Pecheny
@@ -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 = "set 4SCOUNTER(?P<counter_id_set>[0-9a-zA-Z_]*) = (?P<counter_value>[0-9+])"
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"