chgksuite 0.24.0b1__py3-none-any.whl → 0.24.0b3__py3-none-any.whl

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/cli.py CHANGED
@@ -81,6 +81,26 @@ class ArgparseBuilder:
81
81
  advanced=True,
82
82
  argtype="radiobutton",
83
83
  )
84
+ self.add_argument(
85
+ parser,
86
+ "--replace_no_break_spaces",
87
+ choices=["on", "off"],
88
+ default=default_overrides.get("replace_no_break_spaces") or "on",
89
+ help="add non-breaking spaces where applicable",
90
+ caption="Добавить неразрывные пробелы",
91
+ advanced=True,
92
+ argtype="radiobutton",
93
+ )
94
+ self.add_argument(
95
+ parser,
96
+ "--replace_no_break_hyphens",
97
+ choices=["on", "off"],
98
+ default=default_overrides.get("replace_no_break_hyphens") or "on",
99
+ help="add non-breaking hyphens where applicable",
100
+ caption="Добавить неразрывные дефисы",
101
+ advanced=True,
102
+ argtype="radiobutton",
103
+ )
84
104
  self.add_argument(
85
105
  parser,
86
106
  "-v",
@@ -17,7 +17,7 @@ import toml
17
17
  from PIL import Image
18
18
 
19
19
  import chgksuite.typotools as typotools
20
- from chgksuite.common import get_chgksuite_dir, init_logger, log_wrap, DummyLogger
20
+ from chgksuite.common import DummyLogger, get_chgksuite_dir, init_logger, log_wrap
21
21
  from chgksuite.typotools import re_lowercase, re_percent, re_uppercase, re_url
22
22
 
23
23
 
@@ -68,7 +68,9 @@ def make_filename(s, ext, args, addsuffix=""):
68
68
  if addsuffix:
69
69
  bn += addsuffix
70
70
  if args.add_ts == "on":
71
- return "{}_{}.{}".format(bn, datetime.datetime.now().strftime("%Y%m%dT%H%M"), ext)
71
+ return "{}_{}.{}".format(
72
+ bn, datetime.datetime.now().strftime("%Y%m%dT%H%M"), ext
73
+ )
72
74
  return bn + "." + ext
73
75
 
74
76
 
@@ -401,6 +403,13 @@ class BaseExporter:
401
403
  else:
402
404
  self.logger = init_logger("composer", debug=self.args.debug)
403
405
 
406
+ def _replace_no_break(self, s):
407
+ return typotools.replace_no_break(
408
+ s,
409
+ spaces=self.args.replace_no_break_spaces == "on",
410
+ hyphens=self.args.replace_no_break_hyphens == "on",
411
+ )
412
+
404
413
  def parse_4s_elem(self, *args, **kwargs):
405
414
  kwargs["logger"] = self.logger
406
415
  return _parse_4s_elem(*args, **kwargs)
@@ -14,7 +14,6 @@ from docx.shared import Pt as DocxPt
14
14
 
15
15
  from chgksuite.common import log_wrap, replace_escaped
16
16
  from chgksuite.composer.composer_common import BaseExporter, backtick_replace, parseimg
17
- from chgksuite.typotools import replace_no_break_spaces
18
17
 
19
18
  WHITEN = {
20
19
  "handout": False,
@@ -126,7 +125,7 @@ class DocxExporter(BaseExporter):
126
125
  else:
127
126
  text = run[1]["for_print"]
128
127
  if kwargs.get("replace_no_break_spaces"):
129
- text = replace_no_break_spaces(text)
128
+ text = self._replace_no_break(text)
130
129
  r = para.add_run(text)
131
130
  elif run[0] == "hyperlink" and not (
132
131
  whiten and self.args.spoilers == "whiten"
@@ -175,7 +174,7 @@ class DocxExporter(BaseExporter):
175
174
  else:
176
175
  text = run[1]
177
176
  if kwargs.get("replace_no_break_spaces"):
178
- text = replace_no_break_spaces(text)
177
+ text = self._replace_no_break(text)
179
178
  r = para.add_run(text)
180
179
  if "italic" in run[0]:
181
180
  r.italic = True
@@ -206,9 +205,7 @@ class DocxExporter(BaseExporter):
206
205
  return hyperlink
207
206
 
208
207
  def add_question(
209
- self,
210
- element, skip_qcount=False, screen_mode=False,
211
- external_para=None
208
+ self, element, skip_qcount=False, screen_mode=False, external_para=None
212
209
  ):
213
210
  q = element[1]
214
211
  if external_para is None:
@@ -326,8 +323,12 @@ class DocxExporter(BaseExporter):
326
323
  table.cell(0, 0).paragraphs[0].add_run("Версия для ведущего\n").bold = True
327
324
  table.cell(0, 1).paragraphs[0].add_run("Версия для экрана\n").bold = True
328
325
 
329
- self.add_question(element, screen_mode=False, external_para=table.cell(0, 0).paragraphs[0])
330
- self.add_question(element, screen_mode=True, external_para=table.cell(0, 1).paragraphs[0])
326
+ self.add_question(
327
+ element, screen_mode=False, external_para=table.cell(0, 0).paragraphs[0]
328
+ )
329
+ self.add_question(
330
+ element, screen_mode=True, external_para=table.cell(0, 1).paragraphs[0]
331
+ )
331
332
 
332
333
  self.doc.add_paragraph()
333
334
 
chgksuite/composer/lj.py CHANGED
@@ -17,7 +17,7 @@ from chgksuite.composer.composer_common import (
17
17
  md5,
18
18
  parseimg,
19
19
  )
20
- from chgksuite.typotools import re_lowercase, re_uppercase, replace_no_break_spaces
20
+ from chgksuite.typotools import re_lowercase, re_uppercase
21
21
 
22
22
 
23
23
  class LjExporter(BaseExporter):
@@ -375,7 +375,7 @@ class LjExporter(BaseExporter):
375
375
  else:
376
376
  res += self.htmlrepl(run[1])
377
377
  if replace_spaces:
378
- res = replace_no_break_spaces(res)
378
+ res = self._replace_no_break(res)
379
379
  return res
380
380
 
381
381
  @staticmethod
@@ -10,7 +10,6 @@ from chgksuite.composer.composer_common import (
10
10
  Imgur,
11
11
  parseimg,
12
12
  )
13
- from chgksuite.typotools import replace_no_break_spaces
14
13
 
15
14
  MEDIA_STUB = {"Key": "", "Type": "Picture"}
16
15
 
@@ -10,7 +10,6 @@ from pptx.util import Pt as PptxPt
10
10
 
11
11
  from chgksuite.common import log_wrap, replace_escaped
12
12
  from chgksuite.composer.composer_common import BaseExporter, backtick_replace, parseimg
13
- from chgksuite.typotools import replace_no_break_spaces
14
13
 
15
14
 
16
15
  class PptxExporter(BaseExporter):
@@ -51,7 +50,7 @@ class PptxExporter(BaseExporter):
51
50
  def pptx_format(self, el, para, tf, slide, replace_spaces=True):
52
51
  def r_sp(text):
53
52
  if replace_spaces:
54
- return replace_no_break_spaces(text)
53
+ return self._replace_no_break(text)
55
54
  return text
56
55
 
57
56
  if isinstance(el, list):
@@ -127,7 +126,7 @@ class PptxExporter(BaseExporter):
127
126
  for punct in (".", ",", "!", "?", ":"):
128
127
  s = s.replace(" " + punct, punct)
129
128
  if replace_spaces:
130
- s = replace_no_break_spaces(s)
129
+ s = self._replace_no_break(s)
131
130
  s = s.strip()
132
131
  return s
133
132
 
@@ -1,7 +1,7 @@
1
- import importlib
2
1
  import os
3
2
  import random
4
3
  import re
4
+ import shutil
5
5
  import sqlite3
6
6
  import time
7
7
 
@@ -27,12 +27,13 @@ class TelegramExporter(BaseExporter):
27
27
  try:
28
28
  self.init_tg()
29
29
  except (errors.AuthKeyUnregisteredError, sqlite3.OperationalError) as e:
30
- self.logger.warning(f"Session error: {str(e)}")
31
30
  filepath = os.path.join(
32
31
  self.chgksuite_dir, self.args.tgaccount + ".session"
33
32
  )
33
+ new_filepath = filepath + ".bak"
34
+ self.logger.warning(f"Session error: {str(e)}. Moving session: {filepath} -> {new_filepath}")
34
35
  if os.path.isfile(filepath):
35
- os.remove(filepath)
36
+ shutil.move(filepath, new_filepath)
36
37
  self.init_tg()
37
38
  self.qcount = 1
38
39
  self.number = 1
@@ -328,22 +329,8 @@ class TelegramExporter(BaseExporter):
328
329
  )
329
330
  root_msg_in_chat = result.messages[0]
330
331
 
331
- channel_username = getattr(self.channel_entity, "username", None)
332
- chat_username = getattr(self.chat_entity, "username", None)
333
-
334
- if channel_username:
335
- root_msg_link = f"https://t.me/{channel_username}/{root_msg.id}"
336
- else:
337
- root_msg_link = f"https://t.me/c/{str(self.channel_id)[4:]}/{root_msg.id}"
338
-
339
- if chat_username:
340
- root_msg_in_chat_link = (
341
- f"https://t.me/{chat_username}/{root_msg_in_chat.id}"
342
- )
343
- else:
344
- root_msg_in_chat_link = (
345
- f"https://t.me/c/{str(self.chat_id)[4:]}/{root_msg_in_chat.id}"
346
- )
332
+ root_msg_link = self.get_message_link(root_msg, self.channel_entity)
333
+ root_msg_in_chat_link = self.get_message_link(root_msg_in_chat, self.chat_entity)
347
334
 
348
335
  self.logger.info(
349
336
  f"Posted message {root_msg_link} ({root_msg_in_chat_link} in chat)"
@@ -1,16 +1,16 @@
1
1
  {
2
- "tour": "^(# +)?Т[Уу][Рр] ?№? ?([0-9IVXLCDM]*)([\\.:])?$",
3
- "tourrev": "^([0-9IVXLCDM]+) [Тт][Уу][Рр]([\\.:])?$",
4
- "question": "П[Ыы][Тт][Аа][Нн][Ьь]?[Нн][Ее] ?[№N]?([0-9 ]*) ?([\\.:]|\n|\r\n|$)",
5
- "handout": "Р[Аа][Зз][Дд][Аа][Тт]([Аа][Чч][Нн]|[Кк][Аа][Вв])[Ыы][ ][Мм][Аа][Тт][Ээ][Рр][Ыы][Яя][Лл][\\.:]",
6
- "answer": "А[Дд][Кк][Аа][Зз][Ыы]? ?[№N]?([0-9]+)? ?[\\.:]",
7
- "zachet": "З[Аа][Лл][Іі][Кк] ?[\\.:]",
8
- "nezachet": "Н[Ее][Зз][Аа][Лл][Іі][Кк] ?[\\.:]",
9
- "comment": "К[Аа][Мм]([Ее][Нн][Тт]([Аа][Рр]([Ыы][Йй])?|\\.)|\\.) ?[№N]?([0-9]+)? ?[\\.:]",
10
- "author": "А[Ўў][Тт][Аа][Рр](\\(?[Ыы]?\\)?|[Кк][АаИи])? ?[\\.:]",
11
- "source": "К[Рр][Ыы][Нн][Іі][Цц][АаЫы] ?[\\.:]",
12
- "editor": "[Рр][Ээ][Дд][Аа][Кк][Тт][Аа][Рр]([Ыы])?( ?[\\.:]| [\\-–—]+ )",
13
- "date": "Д[Аа][Тт][Аа] ?[\\.:]",
2
+ "tour": "^(#\\s+)?Т[Уу][Рр]\\s?№?\\s?([0-9IVXLCDM]*)([\\.:])?$",
3
+ "tourrev": "^([0-9IVXLCDM]+)\\s[Тт][Уу][Рр]([\\.:])?$",
4
+ "question": "П[Ыы][Тт][Аа][Нн][Ьь]?[Нн][Ее]\\s?[№N]?([0-9\\s]*)\\s?([\\.:]|\n|\r\n|$)",
5
+ "handout": "Р[Аа][Зз][Дд][Аа][Тт]([Аа][Чч][Нн]|[Кк][Аа][Вв])[Ыы][\\s\\s][Мм][Аа][Тт][Ээ][Рр][Ыы][Яя][Лл][\\.:]",
6
+ "answer": "А[Дд][Кк][Аа][Зз][Ыы]?\\s?[№N]?([0-9]+)?\\s?[\\.:]",
7
+ "zachet": "З[Аа][Лл][Іі][Кк]\\s?[\\.:]",
8
+ "nezachet": "Н[Ее][Зз][Аа][Лл][Іі][Кк]\\s?[\\.:]",
9
+ "comment": "К[Аа][Мм]([Ее][Нн][Тт]([Аа][Рр]([Ыы][Йй])?|\\.)|\\.)\\s?[№N]?([0-9]+)?\\s?[\\.:]",
10
+ "author": "А[Ўў][Тт][Аа][Рр](\\(?[Ыы]?\\)?|[Кк][АаИи])?\\s?[\\.:]",
11
+ "source": "К[Рр][Ыы][Нн][Іі][Цц][АаЫы]\\s?[\\.:]",
12
+ "editor": "[Рр][Ээ][Дд][Аа][Кк][Тт][Аа][Рр]([Ыы])?(\\s?[\\.:]|\\s[\\-–—]+\\s)",
13
+ "date": "Д[Аа][Тт][Аа]\\s?[\\.:]",
14
14
  "date2": "(^|\\s)студзеня|лютага|сакавіка|красавіка|мая|чэрвеня|ліпеня|жніўня|верасня|кастрычніка|лістапада|снежня(\\s|$)",
15
- "number": "^[0-9]+[\\.\\)] *"
15
+ "number": "^[0-9]+[\\.\\)]\\s*"
16
16
  }
@@ -1,16 +1,16 @@
1
1
  {
2
- "tour": "^(# +)?(B[Ll][Oo][Cc][Kk]|R[Oo][Uu][Nn][Dd]) ?№? ?([0-9IVXLCDM]*)([\\.:])?$",
3
- "tourrev": "^([0-9IVXLCDM]+) (B[Ll][Oo][Cc][Kk]|R[Oo][Uu][Nn][Dd])([\\.:])?$",
4
- "question": "Q[Uu][Ee][Ss][Tt][Ii][Oo][Nn] ?[№N]?([0-9 ]*) ?([\\.:]|\n|\r\n|$)",
5
- "answer": "A[Nn][Ss][Ww][Ee][Rr] ?[№N]?([0-9]+)? ?[\\.:]",
2
+ "tour": "^(#\\s+)?(B[Ll][Oo][Cc][Kk]|R[Oo][Uu][Nn][Dd])\\s?№?\\s?([0-9IVXLCDM]*)([\\.:])?$",
3
+ "tourrev": "^([0-9IVXLCDM]+)\\s(B[Ll][Oo][Cc][Kk]|R[Oo][Uu][Nn][Dd])([\\.:])?$",
4
+ "question": "Q[Uu][Ee][Ss][Tt][Ii][Oo][Nn]\\s?[№N]?([0-9\\s]*)\\s?([\\.:]|\n|\r\n|$)",
5
+ "answer": "A[Nn][Ss][Ww][Ee][Rr]\\s?[№N]?([0-9]+)?\\s?[\\.:]",
6
6
  "handout": "^H[Aa][Nn][Dd][Oo][Uu][Tt][\\.:]",
7
- "zachet": "A[Cc][Ee][Pp][Tt] ?[\\.:]",
8
- "nezachet": "R[Ee][Jj][Ee][Cc][Tt] ?[\\.:]",
9
- "comment": "C[Oo][Mm][Mm]?([Ee][Nn][Tt])? ?[№N]?([0-9]+)? ?[\\.:]",
10
- "author": "A[Uu][Tt][Hh][Oo][Rr][Ss]? ?[\\.:]",
11
- "source": "S[Oo][Uu][Rr][Cc][Ee][Ss]? ?[\\.:]",
12
- "editor": "E[Dd][Ii][Tt]([Oo][Rr][Ss]?|[Ee][Dd] [Bb][Yy]) ?( ?[\\.:]| [\\-–—]+ )",
13
- "date": "D[Aa][Tt][Ee] ?[\\.:]",
7
+ "zachet": "A[Cc][Ee][Pp][Tt]\\s?[\\.:]",
8
+ "nezachet": "R[Ee][Jj][Ee][Cc][Tt]\\s?[\\.:]",
9
+ "comment": "C[Oo][Mm][Mm]?([Ee][Nn][Tt])?\\s?[№N]?([0-9]+)?\\s?[\\.:]",
10
+ "author": "A[Uu][Tt][Hh][Oo][Rr][Ss]?\\s?[\\.:]",
11
+ "source": "S[Oo][Uu][Rr][Cc][Ee][Ss]?\\s?[\\.:]",
12
+ "editor": "E[Dd][Ii][Tt]([Oo][Rr][Ss]?|[Ee][Dd]\\s[Bb][Yy])\\s?(\\s?[\\.:]|\\s[\\-–—]+\\s)",
13
+ "date": "D[Aa][Tt][Ee]\\s?[\\.:]",
14
14
  "date2": "(^|\\s)Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|June?|July?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?(\\s|$)",
15
- "number": "^[0-9]+[\\.\\)] *"
15
+ "number": "^[0-9]+[\\.\\)]\\s*"
16
16
  }
@@ -1,15 +1,15 @@
1
1
  {
2
- "tour": "^(# +)?([0-9]+) ?[-–—] ?[Тт][Уу][Рр]\\s*$",
3
- "question": "([0-9]+) ?[-–—] ? С[Ұұ][Рр][Аа][Ққ]([\\.:]|\n|\r\n|$)",
4
- "handout": "^Ү[Лл][Ее][Сс][Тт][Іі][Рр][Уу][ ][Мм][Аа][Тт][Ее][Рр][Ии][Аа][Лл][Ыы][\\.:]",
5
- "answer": "Ж[Аа][Уу][Аа][Пп] ?[№N]?([0-9]+)? ?[\\.:]",
6
- "zachet": "Қ[Аа][Бб][Ыы][Лл][Дд][Аа][Нн][Аа][Тт][Ыы][Нн] [Жж][Аа][Уу][Аа][Пп](\\([Тт][Аа][Рр]\\))? ?[\\.:]",
7
- "nezachet": "Қ[Аа][Бб][Ыы][Лл][Дд][Аа][Нн][Бб][Аа][Йй][Тт][Ыы][Нн] [Жж][Аа][Уу][Аа][Пп](\\([Тт][Аа][Рр]\\))? ?[\\.:]",
8
- "comment": "Т[Үү][Сс][Іі][Нн][Іі][Кк][Тт][Ее][Мм][Ее] ?[№N]?([0-9]+)? ?[\\.:]",
9
- "author": "А[Вв][Тт][Оо][Рр]([Лл][Аа][Рр])? ?[\\.:]",
10
- "source": "Д[Ее][Рр][Ее][Кк][Кк][Өө][Зз]([Дд][Ее][Рр])? ?[\\.:]",
11
- "editor": "Р[Ее][Дд][Аа][Кк][Тт][Оо][Рр]([Лл][Аа][Рр])?( ?[\\.:]| [\\-–—]+ )",
12
- "date": "Д[Аа][Тт][Аа] ?[\\.:]",
2
+ "tour": "^(#\\s+)?([0-9]+)\\s?[-–—]\\s?[Тт][Уу][Рр]\\s*$",
3
+ "question": "([0-9]+)\\s?[-–—]\\s?\\sС[Ұұ][Рр][Аа][Ққ]([\\.:]|\n|\r\n|$)",
4
+ "handout": "^Ү[Лл][Ее][Сс][Тт][Іі][Рр][Уу][\\s\\s][Мм][Аа][Тт][Ее][Рр][Ии][Аа][Лл][Ыы][\\.:]",
5
+ "answer": "Ж[Аа][Уу][Аа][Пп]\\s?[№N]?([0-9]+)?\\s?[\\.:]",
6
+ "zachet": "Қ[Аа][Бб][Ыы][Лл][Дд][Аа][Нн][Аа][Тт][Ыы][Нн]\\s[Жж][Аа][Уу][Аа][Пп](\\([Тт][Аа][Рр]\\))?\\s?[\\.:]",
7
+ "nezachet": "Қ[Аа][Бб][Ыы][Лл][Дд][Аа][Нн][Бб][Аа][Йй][Тт][Ыы][Нн]\\s[Жж][Аа][Уу][Аа][Пп](\\([Тт][Аа][Рр]\\))?\\s?[\\.:]",
8
+ "comment": "Т[Үү][Сс][Іі][Нн][Іі][Кк][Тт][Ее][Мм][Ее]\\s?[№N]?([0-9]+)?\\s?[\\.:]",
9
+ "author": "А[Вв][Тт][Оо][Рр]([Лл][Аа][Рр])?\\s?[\\.:]",
10
+ "source": "Д[Ее][Рр][Ее][Кк][Кк][Өө][Зз]([Дд][Ее][Рр])?\\s?[\\.:]",
11
+ "editor": "Р[Ее][Дд][Аа][Кк][Тт][Оо][Рр]([Лл][Аа][Рр])?(\\s?[\\.:]|\\s[\\-–—]+\\s)",
12
+ "date": "Д[Аа][Тт][Аа]\\s?[\\.:]",
13
13
  "date2": "(^|\\s)[Яя][Нн][Вв][Аа][Рр][ЬьЯя]|[Фф][Ее][Вв][Рр][Аа][Лл][ЬьЯя]|[Мм][Аа][Рр][Тт][Аа]?|[Аа][Пп][Рр][Ее][Лл][ЬьЯя]|[Мм][Аа][ЙйЯя]|[Ии][Юю][Нн][ЬьЯя]|[Ии][Юю][Лл][ЬьЯя]|[Аа][Вв][Гг][Уу][Сс][Тт][Аа]?|[Сс][Ее][Нн][Тт][Яя][Бб][Рр][ЬьЯя]|[Оо][Кк][Тт][Яя][Бб][Рр][ЬьЯя]|[Нн][Оо][Яя][Бб][Рр][ЬьЯя]|[Дд][Ее][Кк][Аа][Бб][Рр][ЬьЯя](\\s|$)",
14
- "number": "^[0-9]+[\\.\\)] *"
14
+ "number": "^[0-9]+[\\.\\)]\\s*"
15
15
  }
@@ -1,16 +1,16 @@
1
1
  {
2
- "tour": "^(# +)?Т[Уу][Рр] ?№? ?([0-9IVXLCDM]*)([\\.:])?$",
3
- "tourrev": "^([0-9IVXLCDM]+) [Тт][Уу][Рр]([\\.:])?$",
4
- "question": "В[Оо][Пп][Рр][Оо][Сс] ?[№N]?([0-9 ]*) ?([\\.:]|\n|\r\n|$)",
5
- "handout": "^Р[Аа][Зз][Дд][Аа][Тт][Оо][Чч][Нн][Ыы][Йй] +[Мм][Аа][Тт][Ее][Рр][Ии][Аа][Лл][\\.:]",
6
- "answer": "О[Тт][Вв][Ее][Тт][Ыы]? ?[№N]?([0-9]+)? ?[\\.:]",
7
- "zachet": "З[Аа][Чч][ЕеЁё][Тт] ?[\\.:]",
8
- "nezachet": "Н[Ее][Зз][Аа][Чч][ЕеЁё][Тт] ?[\\.:]",
9
- "comment": "К[Оо][Мм][Мм]?([Ее][Нн][Тт]([Аа][Рр][Ии][ИиЙй]|\\.)|\\.) ?[№N]?([0-9]+)? ?[\\.:]",
10
- "author": "А[Вв][Тт][Оо][Рр](\\(?[Ыы]?\\)?|[Кк][АаИи])? ?[\\.:]",
11
- "source": "И[Сс][Тт][Оо][Чч][Нн][Ии][Кк]\\(?[Ии]?\\)? ?[\\.:]",
12
- "editor": "[Рр][Ее][Дд][Аа][Кк][Тт][Оо][Рр]([Ыы]|[Сс][Кк][Аа][Яя] [Гг][Рр][Уу][Пп][Пп][Аа])?( ?[\\.:]| [\\-–—]+ )",
13
- "date": "Д[Аа][Тт][Аа] ?[\\.:]",
2
+ "tour": "^(#\\s+)?Т[Уу][Рр]\\s?№?\\s?([0-9IVXLCDM]*)([\\.:])?$",
3
+ "tourrev": "^([0-9IVXLCDM]+)\\s[Тт][Уу][Рр]([\\.:])?$",
4
+ "question": "В[Оо][Пп][Рр][Оо][Сс]\\s?[№N]?([0-9\\s]*)\\s?([\\.:]|\n|\r\n|$)",
5
+ "handout": "^Р[Аа][Зз][Дд][Аа][Тт][Оо][Чч][Нн][Ыы][Йй]\\s+[Мм][Аа][Тт][Ее][Рр][Ии][Аа][Лл][\\.:]",
6
+ "answer": "О[Тт][Вв][Ее][Тт][Ыы]?\\s?[№N]?([0-9]+)?\\s?[\\.:]",
7
+ "zachet": "З[Аа][Чч][ЕеЁё][Тт]\\s?[\\.:]",
8
+ "nezachet": "Н[Ее][Зз][Аа][Чч][ЕеЁё][Тт]\\s?[\\.:]",
9
+ "comment": "К[Оо][Мм][Мм]?([Ее][Нн][Тт]([Аа][Рр][Ии][ИиЙй]|\\.)|\\.)\\s?[№N]?([0-9]+)?\\s?[\\.:]",
10
+ "author": "А[Вв][Тт][Оо][Рр](\\(?[Ыы]?\\)?|[Кк][АаИи])?\\s?[\\.:]",
11
+ "source": "И[Сс][Тт][Оо][Чч][Нн][Ии][Кк]\\(?[Ии]?\\)?\\s?[\\.:]",
12
+ "editor": "[Рр][Ее][Дд][Аа][Кк][Тт][Оо][Рр]([Ыы]|[Сс][Кк][Аа][Яя]\\s[Гг][Рр][Уу][Пп][Пп][Аа])?(\\s?[\\.:]|\\s[\\-–—]+\\s)",
13
+ "date": "Д[Аа][Тт][Аа]\\s?[\\.:]",
14
14
  "date2": "(^|\\s)[Яя][Нн][Вв][Аа][Рр][ЬьЯя]|[Фф][Ее][Вв][Рр][Аа][Лл][ЬьЯя]|[Мм][Аа][Рр][Тт][Аа]?|[Аа][Пп][Рр][Ее][Лл][ЬьЯя]|[Мм][Аа][ЙйЯя]|[Ии][Юю][Нн][ЬьЯя]|[Ии][Юю][Лл][ЬьЯя]|[Аа][Вв][Гг][Уу][Сс][Тт][Аа]?|[Сс][Ее][Нн][Тт][Яя][Бб][Рр][ЬьЯя]|[Оо][Кк][Тт][Яя][Бб][Рр][ЬьЯя]|[Нн][Оо][Яя][Бб][Рр][ЬьЯя]|[Дд][Ее][Кк][Аа][Бб][Рр][ЬьЯя](\\s|$)",
15
- "number": "^[0-9]+[\\.\\)] *"
15
+ "number": "^[0-9]+[\\.\\)]\\s*"
16
16
  }
@@ -1,16 +1,16 @@
1
1
  {
2
- "tour": "^(# +)?R[Uu][Nn][Dd][Aa] ?№? ?([0-9IVXLCDM]*)([\\.:])?$",
3
- "tourrev": "^([0-9IVXLCDM]+) R[Uu][Nn][Dd][Aa]([\\.:])?$",
4
- "question": "P[Ii][Tt][Aa][Nn][Jj][Ee] ?[№N]?([0-9 ]*) ?([\\.:]|\n|\r\n|$)",
5
- "answer": "O[Dd][Gg][Oo][Vv][Oo][Rr] ?[№N]?([0-9]+)? ?[\\.:]",
2
+ "tour": "^(#\\s+)?R[Uu][Nn][Dd][Aa]\\s?№?\\s?([0-9IVXLCDM]*)([\\.:])?$",
3
+ "tourrev": "^([0-9IVXLCDM]+)\\sR[Uu][Nn][Dd][Aa]([\\.:])?$",
4
+ "question": "P[Ii][Tt][Aa][Nn][Jj][Ee]\\s?[№N]?([0-9\\s]*)\\s?([\\.:]|\n|\r\n|$)",
5
+ "answer": "O[Dd][Gg][Oo][Vv][Oo][Rr]\\s?[№N]?([0-9]+)?\\s?[\\.:]",
6
6
  "handout": "^(M[Aa][Tt][Ee][Rr][Ii][Jj][Aa][Ll]|P[Oo][Dd][Ee][Ll][Jj][Ee][Nn][Oo])[\\.:]",
7
- "zachet": "P[Rr][Ii][Hh][Vv][Aa][Tt][Aa] [Ss][Ee] ?[\\.:]",
8
- "nezachet": "N[Ee] [Pp][Rr][Ii][Hh][Vv][Aa][Tt][Aa] [Ss][Ee] ?[\\.:]",
9
- "comment": "K[Oo][Mm][Ee][Nn][Tt][Aa][Rr] ?[№N]?([0-9]+)? ?[\\.:]",
10
- "author": "A[Uu][Tt][Oo][Rr][Ii]? ?[\\.:]",
11
- "source": "I[Zz][Vv][Oo][Rr][Ii]? ?[\\.:]",
12
- "editor": "U[Rr][Ee][Dd][Nn][Ii][Kk][Ii]? ?( ?[\\.:]| [\\-–—]+ )",
13
- "date": "D[Aa][Tt][Uu][Mm] ?[\\.:]",
7
+ "zachet": "P[Rr][Ii][Hh][Vv][Aa][Tt][Aa]\\s[Ss][Ee]\\s?[\\.:]",
8
+ "nezachet": "N[Ee]\\s[Pp][Rr][Ii][Hh][Vv][Aa][Tt][Aa]\\s[Ss][Ee]\\s?[\\.:]",
9
+ "comment": "K[Oo][Mm][Ee][Nn][Tt][Aa][Rr]\\s?[№N]?([0-9]+)?\\s?[\\.:]",
10
+ "author": "A[Uu][Tt][Oo][Rr][Ii]?\\s?[\\.:]",
11
+ "source": "I[Zz][Vv][Oo][Rr][Ii]?\\s?[\\.:]",
12
+ "editor": "U[Rr][Ee][Dd][Nn][Ii][Kk][Ii]?\\s?(\\s?[\\.:]|\\s[\\-–—]+\\s)",
13
+ "date": "D[Aa][Tt][Uu][Mm]\\s?[\\.:]",
14
14
  "date2": "WILL_FILL_LATER",
15
- "number": "^[0-9]+[\\.\\)] *"
15
+ "number": "^[0-9]+[\\.\\)]\\s*"
16
16
  }
@@ -1,16 +1,16 @@
1
1
  {
2
- "tour": "^(# +)?Т[Уу][Рр] ?№? ?([0-9IVXLCDM]*)([\\.:])?$",
3
- "tourrev": "^([0-9IVXLCDM]+) [Тт][Уу][Рр]([\\.:])?$",
4
- "question": "З[Аа][Пп][Ии][Тт][Аа][Нн][Нн][Яя] ?[№N]?([0-9 ]*) ?([\\.:]|\n|\r\n|$)",
5
- "handout": "Р[Оо][Зз][Дд][Аа][Тт][Кк][Оо][Вв][Ии][Йй][ ][Мм][Аа][Тт][Ее][Рр][Іі][Аа][Лл][\\.:]",
6
- "answer": "В[Іі][Дд][Пп][Оо][Вв][Іі][Дд][Ьь]? ?[№N]?([0-9]+)? ?[\\.:]",
7
- "zachet": "З[Аа][Лл][Іі][Кк] ?[\\.:]",
8
- "nezachet": "Н[Ее][Зз][Аа]Лл][Іі][Кк] ?[\\.:]",
9
- "comment": "К[Оо][Мм][Мм]?([Ее][Нн][Тт]([Аа][Рр]|\\.)|\\.) ?[№N]?([0-9]+)? ?[\\.:]",
10
- "author": "А[Вв][Тт][Оо][Рр](\\(?[Ии]?\\)?|[Кк][АаИи])? ?[\\.:]",
11
- "source": "Д[Жж][Ее][Рр][Ее][Лл][ОоАа] ?[\\.:]",
12
- "editor": "[Рр][Ее][Дд][Аа][Кк][Тт][Оо][Рр]([Ии]|[Сс][Ьь][Кк][Аа] [Гг][Рр][Уу][Пп][Аа])?( ?[\\.:]| [\\-–—]+ )",
13
- "date": "Д[Аа][Тт][Аа] ?[\\.:]",
2
+ "tour": "^(#\\s+)?Т[Уу][Рр]\\s?№?\\s?([0-9IVXLCDM]*)([\\.:])?$",
3
+ "tourrev": "^([0-9IVXLCDM]+)\\s[Тт][Уу][Рр]([\\.:])?$",
4
+ "question": "З[Аа][Пп][Ии][Тт][Аа][Нн][Нн][Яя]\\s?[№N]?([0-9\\s]*)\\s?([\\.:]|\n|\r\n|$)",
5
+ "handout": "Р[Оо][Зз][Дд][Аа][Тт][Кк][Оо][Вв][Ии][Йй][\\s\\s][Мм][Аа][Тт][Ее][Рр][Іі][Аа][Лл][\\.:]",
6
+ "answer": "В[Іі][Дд][Пп][Оо][Вв][Іі][Дд][Ьь]?\\s?[№N]?([0-9]+)?\\s?[\\.:]",
7
+ "zachet": "З[Аа][Лл][Іі][Кк]\\s?[\\.:]",
8
+ "nezachet": "Н[Ее][Зз][Аа]Лл][Іі][Кк]\\s?[\\.:]",
9
+ "comment": "К[Оо][Мм][Мм]?([Ее][Нн][Тт]([Аа][Рр]|\\.)|\\.)\\s?[№N]?([0-9]+)?\\s?[\\.:]",
10
+ "author": "А[Вв][Тт][Оо][Рр](\\(?[Ии]?\\)?|[Кк][АаИи])?\\s?[\\.:]",
11
+ "source": "Д[Жж][Ее][Рр][Ее][Лл][ОоАа]\\s?[\\.:]",
12
+ "editor": "[Рр][Ее][Дд][Аа][Кк][Тт][Оо][Рр]([Ии]|[Сс][Ьь][Кк][Аа]\\s[Гг][Рр][Уу][Пп][Аа])?(\\s?[\\.:]|\\s[\\-–—]+\\s)",
13
+ "date": "Д[Аа][Тт][Аа]\\s?[\\.:]",
14
14
  "date2": "(^|\\s)cічня|лютого|березня|квітня|травня|червня|липня|серпня|вересня|жовтня|листопада|грудня(\\s|$)",
15
- "number": "^[0-9]+[\\.\\)] *"
15
+ "number": "^[0-9]+[\\.\\)]\\s*"
16
16
  }
@@ -1,15 +1,15 @@
1
1
  {
2
- "tour": "^(# +)?([0-9]+) ?[-–—] ?[Тт][Уу][Рр]\\s*$",
3
- "question": "([0-9]+) ?[-–—] ? С[Аа][Вв][Оо][Лл]([\\.:]|\n|\r\n|$)",
4
- "answer": "Ж[Аа][Вв][Оо][Бб] ?[№N]?([0-9]+)? ?[\\.:]",
5
- "handout": "Т[Аа][Рр][Ққ][Аа][Тт][Мм][Аа][ ][Мм][Аа][Тт][Ее][Рр][Ии][Аа][Лл][\\.:]",
6
- "zachet": "Қ[Аа][Бб][Уу][Лл] ?[\\.:]",
7
- "nezachet": "Қ[Аа][Бб][Уу][Лл] [Ээ][Мм][Аа][Сс]?[\\.:]",
8
- "comment": "И[Зз][Оо][Ҳҳ] ?[№N]?([0-9]+)? ?[\\.:]",
9
- "author": "М[Уу][Аа][Лл][Лл][Ии][Фф]([Лл][Аа][Рр])? ?[\\.:]",
10
- "source": "М[Аа][Нн][Бб][Аа] ?[\\.:]",
11
- "editor": "(М|Тур м)[Уу][Ҳҳ][Аа][Рр][Рр][Ии][Рр]([Лл][Аа][Рр][Ии]?)?( ?[\\.:]| [\\-–—]+ )",
12
- "date": "С[Аа][Нн][Аа] ?[\\.:]",
2
+ "tour": "^(#\\s+)?([0-9]+)\\s?[-–—]\\s?[Тт][Уу][Рр]\\s*$",
3
+ "question": "([0-9]+)\\s?[-–—]\\s?\\sС[Аа][Вв][Оо][Лл]([\\.:]|\n|\r\n|$)",
4
+ "answer": "Ж[Аа][Вв][Оо][Бб]\\s?[№N]?([0-9]+)?\\s?[\\.:]",
5
+ "handout": "Т[Аа][Рр][Ққ][Аа][Тт][Мм][Аа][\\s\\s][Мм][Аа][Тт][Ее][Рр][Ии][Аа][Лл][\\.:]",
6
+ "zachet": "Қ[Аа][Бб][Уу][Лл]\\s?[\\.:]",
7
+ "nezachet": "Қ[Аа][Бб][Уу][Лл]\\s[Ээ][Мм][Аа][Сс]?[\\.:]",
8
+ "comment": "И[Зз][Оо][Ҳҳ]\\s?[№N]?([0-9]+)?\\s?[\\.:]",
9
+ "author": "М[Уу][Аа][Лл][Лл][Ии][Фф]([Лл][Аа][Рр])?\\s?[\\.:]",
10
+ "source": "М[Аа][Нн][Бб][Аа]\\s?[\\.:]",
11
+ "editor": "(М|Тур\\sм)[Уу][Ҳҳ][Аа][Рр][Рр][Ии][Рр]([Лл][Аа][Рр][Ии]?)?(\\s?[\\.:]|\\s[\\-–—]+\\s)",
12
+ "date": "С[Аа][Нн][Аа]\\s?[\\.:]",
13
13
  "date2": "(^|\\s)январь|февраль|март|апрель|май|июнь|июль|август|сентябрь|октябрь|ноябрь|декабрь(\\s|$)",
14
- "number": "^[0-9]+[\\.\\)] *"
14
+ "number": "^[0-9]+[\\.\\)]\\s*"
15
15
  }
chgksuite/typotools.py CHANGED
@@ -252,21 +252,23 @@ def get_dashes_right(s):
252
252
  return s
253
253
 
254
254
 
255
- def replace_no_break_spaces(s):
256
- for sp in NO_BREAK_SEQUENCES + [x.title() for x in NO_BREAK_SEQUENCES]:
257
- r_from = "(^|[ \u00a0]){sp} ".format(sp=sp)
258
- r_to = "\\g<1>{sp}\u00a0".format(sp=sp)
259
- s = re.sub(r_from, r_to, s)
260
- for sp in NO_BREAK_SEQUENCES_LEFT + [x.title() for x in NO_BREAK_SEQUENCES_LEFT]:
261
- r_from = " {sp}([ \u00a0]|$)".format(sp=sp)
262
- r_to = "\u00a0{sp}\\g<1>".format(sp=sp)
263
- s = re.sub(r_from, r_to, s)
264
- srch = re_nbh.search(s)
265
- while srch:
266
- s = s.replace(
267
- srch.group("word"), srch.group("word").replace("-", "\u2011")
268
- ) # non-breaking hyphen
255
+ def replace_no_break(s, spaces=True, hyphens=True):
256
+ if spaces:
257
+ for sp in NO_BREAK_SEQUENCES + [x.title() for x in NO_BREAK_SEQUENCES]:
258
+ r_from = "(^|[ \u00a0]){sp} ".format(sp=sp)
259
+ r_to = "\\g<1>{sp}\u00a0".format(sp=sp)
260
+ s = re.sub(r_from, r_to, s)
261
+ for sp in NO_BREAK_SEQUENCES_LEFT + [x.title() for x in NO_BREAK_SEQUENCES_LEFT]:
262
+ r_from = " {sp}([ \u00a0]|$)".format(sp=sp)
263
+ r_to = "\u00a0{sp}\\g<1>".format(sp=sp)
264
+ s = re.sub(r_from, r_to, s)
265
+ if hyphens:
269
266
  srch = re_nbh.search(s)
267
+ while srch:
268
+ s = s.replace(
269
+ srch.group("word"), srch.group("word").replace("-", "\u2011")
270
+ ) # non-breaking hyphen
271
+ srch = re_nbh.search(s)
270
272
  return s
271
273
 
272
274
 
chgksuite/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.24.0b1"
1
+ __version__ = "0.24.0b3"
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: chgksuite
3
- Version: 0.24.0b1
3
+ Version: 0.24.0b3
4
4
  Summary: A package for chgk automation
5
5
  Home-page: https://gitlab.com/peczony/chgksuite
6
6
  Author: Alexander Pecheny
@@ -33,6 +33,7 @@ Dynamic: classifier
33
33
  Dynamic: description
34
34
  Dynamic: description-content-type
35
35
  Dynamic: home-page
36
+ Dynamic: license-file
36
37
  Dynamic: requires-dist
37
38
  Dynamic: summary
38
39
 
@@ -1,25 +1,25 @@
1
1
  chgksuite/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  chgksuite/__main__.py,sha256=0-_jfloveTW3SZYW5XEagbyaHKGCiDhGNgcLxsT_dMs,140
3
- chgksuite/cli.py,sha256=cs3uoMDdlVwj8JjyfMbGkQdvRt2L9tmdakBuQJ-En3s,31165
3
+ chgksuite/cli.py,sha256=8YoHWfc-wv6gdYMPH3X8HxV9SG70S7M6IQqavJaBXV4,31990
4
4
  chgksuite/common.py,sha256=lHQG72HghaBudr1X6ognGbrKmStW5k9nGSLdoxydMSA,10834
5
5
  chgksuite/parser.py,sha256=AVNeTUgv0aGHsxWunV_7bM4Ul2hbDslkzqg0dU49lic,37285
6
6
  chgksuite/parser_db.py,sha256=W1--OcDnx18mehH1T2ISHu3Saeq-9mqHo-xJopNySXI,11135
7
7
  chgksuite/trello.py,sha256=BG1Qb_W7Uu4o3Mfc_tK71ElU8ysdSplGlj_sAKfvUn4,14730
8
- chgksuite/typotools.py,sha256=YHClK2g44-i_RBS0pNjIcwts1Uv-6QIUrMr0xhz1ZY8,12664
9
- chgksuite/version.py,sha256=EhoxcBd-7ecA74Nba0hiIt3gNKIAWMmx0smPrVxcPhE,25
8
+ chgksuite/typotools.py,sha256=Jdk65Wn_bXqpQtOT7PkBZyD2ZG1MBeeZFPMzcHEPkf4,12771
9
+ chgksuite/version.py,sha256=_g51twxO95ihIudz5fXK0W3t40T0co_jzKU7dVW0AN0,25
10
10
  chgksuite/vulture_whitelist.py,sha256=P__p_X0zt10ivddIf81uyxsobV14vFg8uS2lt4foYpc,3582
11
11
  chgksuite/composer/__init__.py,sha256=MAOVZIYXmZmD6nNQSo9DueV6b5RgxF7_HGeLvsAhMJs,6490
12
12
  chgksuite/composer/chgksuite_parser.py,sha256=gOFAqPXRh-I5_GAPM6j1Jki-Wcdald5vPp2vFU1NwOM,8303
13
- chgksuite/composer/composer_common.py,sha256=4Y5M6l7CwsXQE_DSaBQgQXUi6OHFIYjPUgBFyP61FVI,15056
13
+ chgksuite/composer/composer_common.py,sha256=S5ipehxep6LlGIZ9dcBnifbVaMYXijMhq6-pUHRISo8,15309
14
14
  chgksuite/composer/db.py,sha256=71cINE_V8s6YidvqpmBmmlWbcXraUEGZA1xpVFAUENw,8173
15
- chgksuite/composer/docx.py,sha256=JHgBsGVglayVPI12cEieU50-dMkVFMN-dnaT7_-JHIc,18376
15
+ chgksuite/composer/docx.py,sha256=5MASXACM-ztWrr3VdO8HZ-W-hWWQ5TY1jXMsCQIufGc,18346
16
16
  chgksuite/composer/latex.py,sha256=WtLdUICxeX4_5vHEJRF0YhFLpTsOUwBkQFunQS488FA,9248
17
- chgksuite/composer/lj.py,sha256=K6B0xp6SJkgCPLPZreXLY3n7rvq4Urj7OH3cAhOziWo,15239
18
- chgksuite/composer/openquiz.py,sha256=y8tjPaD3lIMcQFGBaFGvx7B5iQW5Ihzeer1CPcopXOs,7076
19
- chgksuite/composer/pptx.py,sha256=1kp2Sxzsk7zXVnsciep0geaUol0Sw2A-xbi95I67S8Y,19177
17
+ chgksuite/composer/lj.py,sha256=nty3Zs3N1H0gNK378U04aAHo71_5cABhCM1Mm9jiUEA,15213
18
+ chgksuite/composer/openquiz.py,sha256=CWGxb_cPG2Qh3dQ3hu0pS5fOfhKc8klZuO38Lo9hUF8,7020
19
+ chgksuite/composer/pptx.py,sha256=05JxulgU80jBmxRqC3cFh0q_B3bMUCe31JzLYvnNZYM,19119
20
20
  chgksuite/composer/reddit.py,sha256=-Eg4CqMHhyGGfCteVwdQdtE1pfUXQ42XcP5OYUrBXmo,3878
21
21
  chgksuite/composer/stats.py,sha256=GbraSrjaZ8Mc2URs5aGAsI4ekboAKzlJJOqsbe96ELA,3995
22
- chgksuite/composer/telegram.py,sha256=HLSTmZvK54I8EfgcEpyKCsXj5i2ETR7xCnQ0cw5xLT4,26044
22
+ chgksuite/composer/telegram.py,sha256=Af0LJIjz3vO5OiQikV7XQObx4ABJewBp7YqHRt0P4GY,25670
23
23
  chgksuite/composer/telegram_parser.py,sha256=50WqOuvzzdMJJm5wsSLS49oURAQRYToPnbPJjQbMYC4,8096
24
24
  chgksuite/resources/cheader.tex,sha256=Jfe3LESk0VIV0HCObbajSQpEMljaIDAIEGSs6YY9rTk,3454
25
25
  chgksuite/resources/fix-unnumbered-sections.sty,sha256=FN6ZSWC6MvoRoThPm5AxCF98DdgcxbxyBYG6YImM05s,1409
@@ -33,19 +33,19 @@ chgksuite/resources/labels_ua.toml,sha256=sUZdwwpkddb_56bmrZyO56cDrm68ft_JoMqR38
33
33
  chgksuite/resources/labels_uz.toml,sha256=uRnf6tjBf1rYpWjt675ecB2MPn_Ohz-Hj6XDYNPpe3o,609
34
34
  chgksuite/resources/labels_uz_cyr.toml,sha256=ztqHItwhJjfBTOIj_vA1hrneYo8s5gvZkkSr0k9S3rs,814
35
35
  chgksuite/resources/pptx_config.toml,sha256=pbdQpZTBZajfXxf9Ej6jFQv8luA9_h2Lsihx9hs2jkI,570
36
- chgksuite/resources/regexes_by.json,sha256=SdmBZScVCKL5iZxbulHVorv22sMFN7z5kUXb7GwcNbg,1252
37
- chgksuite/resources/regexes_en.json,sha256=Ax_91Diozvhi7Oi9hLyT0xXjT1qbX3yRGJpB3NwibEM,959
38
- chgksuite/resources/regexes_kz_cyr.json,sha256=cJEOBPU5_zJnxhMRXg3t7RSCc9NdX12q_Nymqp-ECW0,1633
39
- chgksuite/resources/regexes_ru.json,sha256=Y7lFJKMDNgFgSul0n18bfHRn4vcTEB5HYxYIJB7lDJg,1608
40
- chgksuite/resources/regexes_sr.json,sha256=B_X0ZciHYwUO75vjbd2vkEt0TL4RG-yywgTtJ9QqoDI,877
41
- chgksuite/resources/regexes_ua.json,sha256=0pO0WRF1TWRIZis5gr-GmCwlAO_eVforpFuFiO6EQ04,1284
42
- chgksuite/resources/regexes_uz_cyr.json,sha256=cIQrNXbjDzRwvywDlicy7m6VEvgpE3V1DOOeIlEQAwc,1062
36
+ chgksuite/resources/regexes_by.json,sha256=43K_jjNocNrx75OcSlVxg2zHNJKoHwzceFbtfZgM0Vo,1296
37
+ chgksuite/resources/regexes_en.json,sha256=v1RPW8Oj0UiS_86ieYjpFOGm3qN5-OlM-qgAqa6oCy4,1003
38
+ chgksuite/resources/regexes_kz_cyr.json,sha256=QW6MxkPjSRNU-KPAAqh4jwFZ--ckJo9EOn_p30gihiQ,1679
39
+ chgksuite/resources/regexes_ru.json,sha256=_ZgSG31eV348eIYgmcEWvygKL3cWZeaauXsBWyrCWaM,1652
40
+ chgksuite/resources/regexes_sr.json,sha256=SiDDtxWND41XOBvHM4MgSXcogh7bRTqsY3JbJPT2wF4,925
41
+ chgksuite/resources/regexes_ua.json,sha256=IXtJtoUY15OoBu5Y5yW6adhJUhsDRkwfxWsPYIrbgPA,1330
42
+ chgksuite/resources/regexes_uz_cyr.json,sha256=mIvWjyZZXQ3lr_ntuC7-ybknnYJxSSQEKxqnGluTvow,1106
43
43
  chgksuite/resources/template.docx,sha256=Do29TAsg3YbH0rRSaXhVzKEoh4pwXkklW_idWA34HVE,11189
44
44
  chgksuite/resources/template.pptx,sha256=hEFWqE-yYpwZ8ejrMCJIPEyoMT3eDqaqtiEeQ7I4fyk,29777
45
45
  chgksuite/resources/trello.json,sha256=M5Q9JR-AAJF1u16YtNAxDX-7c7VoVTXuq4POTqYvq8o,555
46
- chgksuite-0.24.0b1.dist-info/LICENSE,sha256=_a1yfntuPmctLsuiE_08xMSORuCfGS8X5hQph2U_PUw,1081
47
- chgksuite-0.24.0b1.dist-info/METADATA,sha256=WYB2NUdETBk5leavlerf1k8BSmszdVhqP9DBLey5nyE,1287
48
- chgksuite-0.24.0b1.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
49
- chgksuite-0.24.0b1.dist-info/entry_points.txt,sha256=lqjX6ULQZGDt0rgouTXBuwEPiwKkDQkSiNsT877A_Jg,54
50
- chgksuite-0.24.0b1.dist-info/top_level.txt,sha256=cSWiRBOGZW9nIO6Rv1IrEfwPgV2ZWs87QV9wPXeBGqM,10
51
- chgksuite-0.24.0b1.dist-info/RECORD,,
46
+ chgksuite-0.24.0b3.dist-info/licenses/LICENSE,sha256=_a1yfntuPmctLsuiE_08xMSORuCfGS8X5hQph2U_PUw,1081
47
+ chgksuite-0.24.0b3.dist-info/METADATA,sha256=onWj7gdTXF2zHFbAeD7CSg09Tx619sywCW33HtvNRFk,1309
48
+ chgksuite-0.24.0b3.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
49
+ chgksuite-0.24.0b3.dist-info/entry_points.txt,sha256=lqjX6ULQZGDt0rgouTXBuwEPiwKkDQkSiNsT877A_Jg,54
50
+ chgksuite-0.24.0b3.dist-info/top_level.txt,sha256=cSWiRBOGZW9nIO6Rv1IrEfwPgV2ZWs87QV9wPXeBGqM,10
51
+ chgksuite-0.24.0b3.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (76.0.0)
2
+ Generator: setuptools (78.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5