/
utils.py
40 lines (31 loc) · 996 Bytes
/
utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import logging
import sys
import tokenize
import traceback
from telethon.tl import TLObject
from tgpy import App
from tgpy.run_code import autoawait
def convert_result(result):
if isinstance(result, TLObject):
result = result.stringify()
return result
def format_traceback():
exc_type, exc_value, exc_traceback = sys.exc_info()
exc_traceback = exc_traceback.tb_next.tb_next
return traceback.format_exception(exc_type, exc_value, exc_traceback)
def apply_code_transformers(app: App, code: str) -> str:
try:
code = autoawait.pre_transform(code)
except tokenize.TokenError:
pass
for _, transformer in app.api.code_transformers:
try:
code = transformer(code)
except Exception:
logger = logging.getLogger(__name__)
logger.exception(
f'Error while applying code transformer {transformer}',
exc_info=True,
)
raise
return code