Type hinting

This commit is contained in:
Davte 2020-04-28 12:07:37 +02:00
parent ab6a0bc0ad
commit 3896776f0e
2 changed files with 45 additions and 20 deletions

View File

@ -11,7 +11,7 @@ __author__ = "Davide Testa"
__email__ = "davide@davte.it"
__credits__ = ["Marco Origlia", "Nick Lee @Nickoala"]
__license__ = "GNU General Public License v3.0"
__version__ = "2.5.6"
__version__ = "2.5.7"
__maintainer__ = "Davide Testa"
__contact__ = "t.me/davte"

View File

@ -13,14 +13,16 @@ import asyncio
import datetime
import json
import logging
import types
from typing import Union
from typing import Union, List
# Third party modules
from sqlalchemy.exc import ResourceClosedError
# Project modules
from . import bot as davtelepot_bot, messages
from . import messages
from .bot import Bot
from .utilities import (
async_wrapper, CachedPage, Confirmator, extract, get_cleaned_text,
get_user, escape_html_chars, line_drawing_unordered_list, make_button,
@ -29,7 +31,11 @@ from .utilities import (
)
async def _forward_to(update, bot, sender, addressee, is_admin=False):
async def _forward_to(update,
bot: Bot,
sender,
addressee,
is_admin=False):
if update['text'].lower() in ['stop'] and is_admin:
with bot.db as db:
admin_record = db['users'].find_one(
@ -64,7 +70,10 @@ async def _forward_to(update, bot, sender, addressee, is_admin=False):
return
def get_talk_panel(bot, update, user_record=None, text=''):
def get_talk_panel(bot: Bot,
update,
user_record=None,
text: str = ''):
"""Return text and reply markup of talk panel.
`text` may be:
@ -202,7 +211,9 @@ def get_talk_panel(bot, update, user_record=None, text=''):
return text, reply_markup
async def _talk_command(bot, update, user_record):
async def _talk_command(bot: Bot,
update,
user_record):
text = get_cleaned_text(
update,
bot,
@ -217,7 +228,9 @@ async def _talk_command(bot, update, user_record):
)
async def start_session(bot, other_user_record, admin_record):
async def start_session(bot: Bot,
other_user_record,
admin_record):
"""Start talking session between user and admin.
Register session in database, so it gets loaded before message_loop starts.
@ -280,7 +293,9 @@ async def start_session(bot, other_user_record, admin_record):
return
async def end_session(bot, other_user_record, admin_record):
async def end_session(bot: Bot,
other_user_record,
admin_record):
"""End talking session between user and admin.
Cancel session in database, so it will not be loaded anymore.
@ -316,7 +331,10 @@ async def end_session(bot, other_user_record, admin_record):
return
async def _talk_button(bot, update, user_record, data):
async def _talk_button(bot: Bot,
update,
user_record,
data):
telegram_id = user_record['telegram_id']
command, *arguments = data
result, text, reply_markup = '', '', None
@ -390,7 +408,9 @@ async def _talk_button(bot, update, user_record, data):
return result
async def _restart_command(bot, update, user_record):
async def _restart_command(bot: Bot,
update,
user_record):
with bot.db as db:
db['restart_messages'].insert(
dict(
@ -415,7 +435,9 @@ async def _restart_command(bot, update, user_record):
return
async def _stop_command(bot, update, user_record):
async def _stop_command(bot: Bot,
update,
user_record):
text = bot.get_message(
'admin', 'stop_command', 'text',
update=update, user_record=user_record
@ -448,14 +470,17 @@ async def _stop_command(bot, update, user_record):
)
async def stop_bots(bot):
async def stop_bots(bot: Bot):
"""Stop bots in `bot` class."""
await asyncio.sleep(2)
bot.__class__.stop(message='=== STOP ===', final_state=0)
return
async def _stop_button(bot, update, user_record, data):
async def _stop_button(bot: Bot,
update,
user_record,
data: List[Union[int, str]]):
result, text, reply_markup = '', '', None
telegram_id = user_record['telegram_id']
command = data[0] if len(data) > 0 else 'None'
@ -798,7 +823,7 @@ async def get_last_commit():
return last_commit
async def _version_command(bot: davtelepot_bot, update, user_record):
async def _version_command(bot: Bot, update, user_record):
last_commit = await get_last_commit()
text = bot.get_message(
'admin', 'version_command', 'header',
@ -813,7 +838,7 @@ async def _version_command(bot: davtelepot_bot, update, user_record):
return text
async def notify_new_version(bot: davtelepot_bot):
async def notify_new_version(bot: Bot):
"""Notify `bot` administrators about new versions.
Notify admins when last commit and/or davtelepot version change.
@ -872,7 +897,7 @@ async def notify_new_version(bot: davtelepot_bot):
return
async def get_package_updates(bot: davtelepot_bot,
async def get_package_updates(bot: Bot,
monitoring_interval: Union[
int, datetime.timedelta
] = 60 * 60,
@ -945,10 +970,10 @@ async def get_package_updates(bot: davtelepot_bot,
await asyncio.sleep(monitoring_interval)
def init(telegram_bot,
talk_messages=None,
admin_messages=None,
packages=None):
def init(telegram_bot: Bot,
talk_messages: dict = None,
admin_messages: dict = None,
packages: List[types.ModuleType] = None):
"""Assign parsers, commands, buttons and queries to given `bot`."""
if packages is None:
packages = []