Heroku/heroku/compat/geek.py

69 lines
2.5 KiB
Python

# ©️ Dan Gazizullin, 2021-2023
# This file is a part of Hikka Userbot
# 🌐 https://github.com/hikariatama/Hikka
# You can redistribute it and/or modify it under the terms of the GNU AGPLv3
# 🔑 https://www.gnu.org/licenses/agpl-3.0.html
# ©️ Codrago, 2024-2025
# This file is a part of Heroku Userbot
# 🌐 https://github.com/coddrago/Heroku
# You can redistribute it and/or modify it under the terms of the GNU AGPLv3
# 🔑 https://www.gnu.org/licenses/agpl-3.0.html
import re
def compat(code: str) -> str:
"""
Reformats modules, built for GeekTG to work with Heroku
:param code: code to reformat
:return: reformatted code
:rtype: str
:example:
```python
code = '''
from ..inline import GeekInlineQuery, rand
from ..inline import rand, InlineQueryResultArticle
from ..inline import InlineQueryResultArticle, rand
from ..inline import rand, InlineQueryResultArticle, InputTextMessageContent
'''
print(compat(code))
```
"""
return "\n".join(
[
re.sub(
r"^( *)from \.\.inline import (.+)$",
r"\1from ..inline.types import \2",
re.sub(
r"^( *)from \.\.inline import rand[^,]*$",
r"\1from ..utils import rand",
re.sub(
r"^( *)from \.\.inline import rand, ?(.+)$",
r"\1from ..inline.types import \2\n\1from ..utils import rand",
re.sub(
r"^( *)from \.\.inline import (.+), ?rand[^,]*$",
r"\1from ..inline.types import \2\n\1from ..utils import"
r" rand",
re.sub(
r"^( *)from \.\.inline import (.+), ?rand, ?(.+)$",
r"\1from ..inline.types import \2, \3\n\1from ..utils"
r" import rand",
line.replace("GeekInlineQuery", "InlineQuery").replace(
"self.inline._bot",
"self.inline.bot",
),
flags=re.M,
),
flags=re.M,
),
flags=re.M,
),
flags=re.M,
),
flags=re.M,
)
for line in code.splitlines()
]
)