chgksuite 0.24.0b3__tar.gz → 0.24.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 (61) hide show
  1. {chgksuite-0.24.0b3/chgksuite.egg-info → chgksuite-0.24.1}/PKG-INFO +2 -3
  2. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/common.py +12 -4
  3. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/composer/chgksuite_parser.py +17 -8
  4. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/composer/pptx.py +5 -4
  5. chgksuite-0.24.1/chgksuite/composer/telegram.py +1210 -0
  6. chgksuite-0.24.1/chgksuite/composer/telegram_bot.py +115 -0
  7. chgksuite-0.24.1/chgksuite/version.py +1 -0
  8. {chgksuite-0.24.0b3 → chgksuite-0.24.1/chgksuite.egg-info}/PKG-INFO +2 -3
  9. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite.egg-info/SOURCES.txt +1 -0
  10. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite.egg-info/requires.txt +1 -2
  11. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/history.md +1 -1
  12. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/setup.py +1 -2
  13. chgksuite-0.24.0b3/chgksuite/composer/telegram.py +0 -678
  14. chgksuite-0.24.0b3/chgksuite/version.py +0 -1
  15. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/LICENSE +0 -0
  16. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/MANIFEST.in +0 -0
  17. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/README.md +0 -0
  18. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/__init__.py +0 -0
  19. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/__main__.py +0 -0
  20. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/cli.py +0 -0
  21. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/composer/__init__.py +0 -0
  22. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/composer/composer_common.py +0 -0
  23. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/composer/db.py +0 -0
  24. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/composer/docx.py +0 -0
  25. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/composer/latex.py +0 -0
  26. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/composer/lj.py +0 -0
  27. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/composer/openquiz.py +0 -0
  28. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/composer/reddit.py +0 -0
  29. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/composer/stats.py +0 -0
  30. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/composer/telegram_parser.py +0 -0
  31. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/parser.py +0 -0
  32. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/parser_db.py +0 -0
  33. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/resources/cheader.tex +0 -0
  34. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/resources/fix-unnumbered-sections.sty +0 -0
  35. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/resources/labels_by.toml +0 -0
  36. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/resources/labels_by_tar.toml +0 -0
  37. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/resources/labels_en.toml +0 -0
  38. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/resources/labels_kz_cyr.toml +0 -0
  39. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/resources/labels_ru.toml +0 -0
  40. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/resources/labels_sr.toml +0 -0
  41. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/resources/labels_ua.toml +0 -0
  42. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/resources/labels_uz.toml +0 -0
  43. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/resources/labels_uz_cyr.toml +0 -0
  44. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/resources/pptx_config.toml +0 -0
  45. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/resources/regexes_by.json +0 -0
  46. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/resources/regexes_en.json +0 -0
  47. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/resources/regexes_kz_cyr.json +0 -0
  48. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/resources/regexes_ru.json +0 -0
  49. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/resources/regexes_sr.json +0 -0
  50. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/resources/regexes_ua.json +0 -0
  51. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/resources/regexes_uz_cyr.json +0 -0
  52. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/resources/template.docx +0 -0
  53. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/resources/template.pptx +0 -0
  54. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/resources/trello.json +0 -0
  55. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/trello.py +0 -0
  56. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/typotools.py +0 -0
  57. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite/vulture_whitelist.py +0 -0
  58. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite.egg-info/dependency_links.txt +0 -0
  59. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite.egg-info/entry_points.txt +0 -0
  60. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/chgksuite.egg-info/top_level.txt +0 -0
  61. {chgksuite-0.24.0b3 → chgksuite-0.24.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: chgksuite
3
- Version: 0.24.0b3
3
+ Version: 0.24.1
4
4
  Summary: A package for chgk automation
5
5
  Home-page: https://gitlab.com/peczony/chgksuite
6
6
  Author: Alexander Pecheny
@@ -24,8 +24,7 @@ Requires-Dist: pyperclip
24
24
  Requires-Dist: python-docx
25
25
  Requires-Dist: python-pptx
26
26
  Requires-Dist: requests
27
- Requires-Dist: telethon
28
- Requires-Dist: TgCrypto
27
+ Requires-Dist: python-telegram-bot
29
28
  Requires-Dist: toml
30
29
  Dynamic: author
31
30
  Dynamic: author-email
@@ -226,17 +226,25 @@ def xlsx_to_results(xlsx_file_path):
226
226
  for row in sheet.iter_rows(values_only=True):
227
227
  if first:
228
228
  assert row[1] == "Название"
229
- assert row[3] == "Тур"
229
+ if row[3] == "Тур":
230
+ table_type = "tour"
231
+ elif row[3] in ("1", 1):
232
+ table_type = "full"
230
233
  first = False
231
234
  continue
232
235
  team_id = row[0]
233
236
  team_name = row[1]
234
- tour = row[3]
235
- results = [x for x in row[4:] if x is not None]
237
+ if table_type == "tour":
238
+ tour = row[3]
239
+ results = [x for x in row[4:] if x is not None]
240
+ else:
241
+ tour = 1
242
+ results = [x for x in row[3:] if x is not None]
236
243
  rlen = len(results)
237
244
  tour_len[tour] = max(tour_len[tour], rlen)
238
245
  res_by_tour[(team_id, team_name)][tour] = results
239
246
  results = []
247
+
240
248
  tours = sorted(tour_len)
241
249
  for team_tup in res_by_tour:
242
250
  team_id, team_name = team_tup
@@ -246,7 +254,7 @@ def xlsx_to_results(xlsx_file_path):
246
254
  if len(team_res) < tour_len[tour]:
247
255
  team_res += [0] * (tour_len[tour] - len(team_res))
248
256
  for element in team_res:
249
- if element in (1, 0):
257
+ if tryint(element) in (1, 0):
250
258
  mask.append(str(element))
251
259
  else:
252
260
  mask.append("0")
@@ -1,7 +1,7 @@
1
1
  import codecs
2
2
  import random
3
3
  import re
4
- from collections import Counter
4
+ from collections import defaultdict
5
5
 
6
6
  from chgksuite.common import QUESTION_LABELS, check_question, init_logger, log_wrap
7
7
  from chgksuite.typotools import remove_excessive_whitespace as rew
@@ -63,18 +63,27 @@ def process_list(element):
63
63
  element[1] = inner_list
64
64
 
65
65
 
66
- RE_COUNTER = re.compile("4SCOUNTER([0-9a-zA-Z_]*)")
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+])"
68
+ RE_COUNTER_UNIFY = re.compile(f"({RE_COUNTER}|{RE_SET_COUNTER})")
67
69
 
68
70
 
69
71
  def replace_counters(string_):
70
- dd = Counter()
71
- match = RE_COUNTER.search(string_)
72
+ dd = defaultdict(lambda: 1)
73
+ match = RE_COUNTER_UNIFY.search(string_)
72
74
  while match:
73
75
  span = match.span()
74
- counter_id = match.group(1)
75
- dd[counter_id] += 1
76
- string_ = string_[: span[0]] + str(dd[counter_id]) + string_[span[1] :]
77
- match = RE_COUNTER.search(string_)
76
+ if re.search(RE_SET_COUNTER, match.group(0)):
77
+ counter_id = match.group("counter_id_set")
78
+ counter_value = int(match.group("counter_value"))
79
+ dd[counter_id] = counter_value
80
+ string_ = string_[: span[0]] + string_[span[1] :]
81
+ else:
82
+ span = match.span()
83
+ counter_id = match.group("counter_id")
84
+ string_ = string_[: span[0]] + str(dd[counter_id]) + string_[span[1] :]
85
+ dd[counter_id] += 1
86
+ match = RE_COUNTER_UNIFY.search(string_)
78
87
  return string_
79
88
 
80
89
 
@@ -151,12 +151,12 @@ class PptxExporter(BaseExporter):
151
151
  add_line_break = False
152
152
  if section:
153
153
  r = p.add_run()
154
- r.text = replace_no_break_spaces(self.pptx_process_text(section[0][1]))
154
+ r.text = self._replace_no_break(self.pptx_process_text(section[0][1]))
155
155
  r.font.size = PptxPt(self.c["text_size_grid"]["section"])
156
156
  add_line_break = True
157
157
  if editor:
158
158
  r = p.add_run()
159
- r.text = replace_no_break_spaces(
159
+ r.text = self._replace_no_break(
160
160
  ("\n" if add_line_break else "")
161
161
  + self.pptx_process_text(editor[0][1])
162
162
  + "\n"
@@ -165,7 +165,7 @@ class PptxExporter(BaseExporter):
165
165
  if meta:
166
166
  for element in meta:
167
167
  r = p.add_run()
168
- r.text = replace_no_break_spaces(
168
+ r.text = self._replace_no_break(
169
169
  ("\n" if add_line_break else "")
170
170
  + self.pptx_process_text(element[1])
171
171
  + "\n"
@@ -468,7 +468,8 @@ class PptxExporter(BaseExporter):
468
468
  os.chdir(wd)
469
469
  self.prs = Presentation(template)
470
470
  self.TITLE_SLIDE = self.prs.slide_layouts[0]
471
- self.BLANK_SLIDE = self.prs.slide_layouts[6]
471
+ # self.BLANK_SLIDE = self.prs.slide_layouts[6]
472
+ self.BLANK_SLIDE = self.prs.slides[0]
472
473
  buffer = []
473
474
  for element in self.structure:
474
475
  if element[0] != "Question":