Use explicit kwargs for all class inits in pure api.

While not stickily necessary for most classes (since user isn't directly creating them) it still unifies our approach.
However for some like ReplyKeyboardHide where users are making the classes themselves it should improve IDE autocomplete support.
This commit is contained in:
Jacob Bom 2016-10-16 16:24:13 +02:00
parent b610316667
commit e367b8519d
19 changed files with 167 additions and 95 deletions

View file

@ -44,15 +44,22 @@ class Audio(TelegramObject):
file_size (Optional[int]): file_size (Optional[int]):
""" """
def __init__(self, file_id, duration, **kwargs): def __init__(self,
file_id,
duration,
performer='',
title='',
mime_type='',
file_size=0,
**kwargs):
# Required # Required
self.file_id = str(file_id) self.file_id = str(file_id)
self.duration = int(duration) self.duration = int(duration)
# Optionals # Optionals
self.performer = kwargs.get('performer', '') self.performer = performer
self.title = kwargs.get('title', '') self.title = title
self.mime_type = str(kwargs.get('mime_type', '')) self.mime_type = str(mime_type)
self.file_size = int(kwargs.get('file_size', 0)) self.file_size = int(file_size)
@staticmethod @staticmethod
def de_json(data, bot): def de_json(data, bot):

View file

@ -25,14 +25,15 @@ from telegram import TelegramObject, Message, User
class CallbackQuery(TelegramObject): class CallbackQuery(TelegramObject):
"""This object represents a Telegram CallbackQuery.""" """This object represents a Telegram CallbackQuery."""
def __init__(self, id, from_user, data, bot=None, **kwargs): def __init__(self, id, from_user, data, message=None, inline_message_id='', bot=None,
**kwargs):
# Required # Required
self.id = id self.id = id
self.from_user = from_user self.from_user = from_user
self.data = data self.data = data
# Optionals # Optionals
self.message = kwargs.get('message') self.message = message
self.inline_message_id = kwargs.get('inline_message_id', '') self.inline_message_id = inline_message_id
self.bot = bot self.bot = bot

View file

@ -48,15 +48,23 @@ class Chat(TelegramObject):
SUPERGROUP = 'supergroup' SUPERGROUP = 'supergroup'
CHANNEL = 'channel' CHANNEL = 'channel'
def __init__(self, id, type, bot=None, **kwargs): def __init__(self,
id,
type,
title='',
username='',
first_name='',
last_name='',
bot=None,
**kwargs):
# Required # Required
self.id = int(id) self.id = int(id)
self.type = type self.type = type
# Optionals # Optionals
self.title = kwargs.get('title', '') self.title = title
self.username = kwargs.get('username', '') self.username = username
self.first_name = kwargs.get('first_name', '') self.first_name = first_name
self.last_name = kwargs.get('last_name', '') self.last_name = last_name
self.bot = bot self.bot = bot

View file

@ -40,13 +40,13 @@ class Contact(TelegramObject):
user_id (Optional[int]): user_id (Optional[int]):
""" """
def __init__(self, phone_number, first_name, **kwargs): def __init__(self, phone_number, first_name, last_name='', user_id=0, **kwargs):
# Required # Required
self.phone_number = str(phone_number) self.phone_number = str(phone_number)
self.first_name = first_name self.first_name = first_name
# Optionals # Optionals
self.last_name = kwargs.get('last_name', '') self.last_name = last_name
self.user_id = int(kwargs.get('user_id', 0)) self.user_id = int(user_id)
@staticmethod @staticmethod
def de_json(data, bot): def de_json(data, bot):

View file

@ -42,14 +42,14 @@ class Document(TelegramObject):
file_size (Optional[int]): file_size (Optional[int]):
""" """
def __init__(self, file_id, **kwargs): def __init__(self, file_id, thumb=None, file_name='', mime_type='', file_size=0, **kwargs):
# Required # Required
self.file_id = str(file_id) self.file_id = str(file_id)
# Optionals # Optionals
self.thumb = kwargs.get('thumb') self.thumb = thumb
self.file_name = kwargs.get('file_name', '') self.file_name = file_name
self.mime_type = str(kwargs.get('mime_type', '')) self.mime_type = str(mime_type)
self.file_size = int(kwargs.get('file_size', 0)) self.file_size = int(file_size)
@staticmethod @staticmethod
def de_json(data, bot): def de_json(data, bot):

View file

@ -42,13 +42,13 @@ class File(TelegramObject):
""" """
def __init__(self, file_id, bot, **kwargs): def __init__(self, file_id, bot, file_size=0, file_path='', **kwargs):
# Required # Required
self.file_id = str(file_id) self.file_id = str(file_id)
# Optionals # Optionals
self.file_size = int(kwargs.get('file_size', 0)) self.file_size = int(file_size)
self.file_path = str(kwargs.get('file_path', '')) self.file_path = str(file_path)
self.bot = bot self.bot = bot

View file

@ -36,11 +36,11 @@ class ForceReply(ReplyMarkup):
selective (Optional[bool]): selective (Optional[bool]):
""" """
def __init__(self, force_reply=True, **kwargs): def __init__(self, force_reply=True, selective=False, **kwargs):
# Required # Required
self.force_reply = bool(force_reply) self.force_reply = bool(force_reply)
# Optionals # Optionals
self.selective = bool(kwargs.get('selective', False)) self.selective = bool(selective)
@staticmethod @staticmethod
def de_json(data, bot): def de_json(data, bot):

View file

@ -42,14 +42,14 @@ class InlineKeyboardButton(TelegramObject):
""" """
def __init__(self, text, **kwargs): def __init__(self, text, url=None, callback_data=None, switch_inline_query=None, **kwargs):
# Required # Required
self.text = text self.text = text
# Optionals # Optionals
self.url = kwargs.get('url') self.url = url
self.callback_data = kwargs.get('callback_data') self.callback_data = callback_data
self.switch_inline_query = kwargs.get('switch_inline_query') self.switch_inline_query = switch_inline_query
@staticmethod @staticmethod
def de_json(data, bot): def de_json(data, bot):

View file

@ -45,7 +45,7 @@ class InlineQuery(TelegramObject):
bot (Optional[Bot]): The Bot to use for instance methods bot (Optional[Bot]): The Bot to use for instance methods
""" """
def __init__(self, id, from_user, query, offset, bot=None, **kwargs): def __init__(self, id, from_user, query, offset, location=None, bot=None, **kwargs):
# Required # Required
self.id = id self.id = id
self.from_user = from_user self.from_user = from_user
@ -53,7 +53,7 @@ class InlineQuery(TelegramObject):
self.offset = offset self.offset = offset
# Optional # Optional
self.location = kwargs.get('location') self.location = location
self.bot = bot self.bot = bot

View file

@ -106,41 +106,77 @@ class Message(TelegramObject):
bot (Optional[Bot]): The Bot to use for instance methods bot (Optional[Bot]): The Bot to use for instance methods
""" """
def __init__(self, message_id, from_user, date, chat, bot=None, **kwargs): def __init__(self,
message_id,
from_user,
date,
chat,
forward_from=None,
forward_from_chat=None,
forward_date=None,
reply_to_message=None,
edit_date=None,
text='',
entities=None,
audio=None,
document=None,
photo=None,
sticker=None,
video=None,
voice=None,
caption='',
contact=None,
location=None,
venue=None,
new_chat_member=None,
left_chat_member=None,
new_chat_title='',
new_chat_photo=None,
delete_chat_photo=False,
group_chat_created=False,
supergroup_chat_created=False,
migrate_to_chat_id=0,
migrate_from_chat_id=0,
channel_chat_created=False,
pinned_message=None,
bot=None,
**kwargs):
# Required # Required
self.message_id = int(message_id) self.message_id = int(message_id)
self.from_user = from_user self.from_user = from_user
self.date = date self.date = date
self.chat = chat self.chat = chat
# Optionals # Optionals
self.forward_from = kwargs.get('forward_from') self.forward_from = forward_from
self.forward_from_chat = kwargs.get('forward_from_chat') self.forward_from_chat = forward_from_chat
self.forward_date = kwargs.get('forward_date') self.forward_date = forward_date
self.reply_to_message = kwargs.get('reply_to_message') self.reply_to_message = reply_to_message
self.edit_date = kwargs.get('edit_date') self.edit_date = edit_date
self.text = kwargs.get('text', '') self.text = text
self.entities = kwargs.get('entities', list()) if entities is None:
self.audio = kwargs.get('audio') entities = list()
self.document = kwargs.get('document') self.entities = entities
self.photo = kwargs.get('photo') self.audio = audio
self.sticker = kwargs.get('sticker') self.document = document
self.video = kwargs.get('video') self.photo = photo
self.voice = kwargs.get('voice') self.sticker = sticker
self.caption = kwargs.get('caption', '') self.video = video
self.contact = kwargs.get('contact') self.voice = voice
self.location = kwargs.get('location') self.caption = caption
self.venue = kwargs.get('venue') self.contact = contact
self.new_chat_member = kwargs.get('new_chat_member') self.location = location
self.left_chat_member = kwargs.get('left_chat_member') self.venue = venue
self.new_chat_title = kwargs.get('new_chat_title', '') self.new_chat_member = new_chat_member
self.new_chat_photo = kwargs.get('new_chat_photo') self.left_chat_member = left_chat_member
self.delete_chat_photo = bool(kwargs.get('delete_chat_photo', False)) self.new_chat_title = new_chat_title
self.group_chat_created = bool(kwargs.get('group_chat_created', False)) self.new_chat_photo = new_chat_photo
self.supergroup_chat_created = bool(kwargs.get('supergroup_chat_created', False)) self.delete_chat_photo = bool(delete_chat_photo)
self.migrate_to_chat_id = int(kwargs.get('migrate_to_chat_id', 0)) self.group_chat_created = bool(group_chat_created)
self.migrate_from_chat_id = int(kwargs.get('migrate_from_chat_id', 0)) self.supergroup_chat_created = bool(supergroup_chat_created)
self.channel_chat_created = bool(kwargs.get('channel_chat_created', False)) self.migrate_to_chat_id = int(migrate_to_chat_id)
self.pinned_message = kwargs.get('pinned_message') self.migrate_from_chat_id = int(migrate_from_chat_id)
self.channel_chat_created = bool(channel_chat_created)
self.pinned_message = pinned_message
self.bot = bot self.bot = bot

View file

@ -34,14 +34,14 @@ class MessageEntity(TelegramObject):
user (Optional[:class:`telegram.User`]): user (Optional[:class:`telegram.User`]):
""" """
def __init__(self, type, offset, length, **kwargs): def __init__(self, type, offset, length, url=None, user=None, **kwargs):
# Required # Required
self.type = type self.type = type
self.offset = offset self.offset = offset
self.length = length self.length = length
# Optionals # Optionals
self.url = kwargs.get('url') self.url = url
self.user = kwargs.get('user') self.user = user
@staticmethod @staticmethod
def de_json(data, bot): def de_json(data, bot):

View file

@ -40,13 +40,13 @@ class PhotoSize(TelegramObject):
file_size (Optional[int]): file_size (Optional[int]):
""" """
def __init__(self, file_id, width, height, **kwargs): def __init__(self, file_id, width, height, file_size=0, **kwargs):
# Required # Required
self.file_id = str(file_id) self.file_id = str(file_id)
self.width = int(width) self.width = int(width)
self.height = int(height) self.height = int(height)
# Optionals # Optionals
self.file_size = int(kwargs.get('file_size', 0)) self.file_size = int(file_size)
def __eq__(self, other): def __eq__(self, other):
if not isinstance(other, self.__class__): if not isinstance(other, self.__class__):

View file

@ -37,11 +37,11 @@ class ReplyKeyboardHide(ReplyMarkup):
selective (Optional[bool]): selective (Optional[bool]):
""" """
def __init__(self, hide_keyboard=True, **kwargs): def __init__(self, hide_keyboard=True, selective=False, **kwargs):
# Required # Required
self.hide_keyboard = bool(hide_keyboard) self.hide_keyboard = bool(hide_keyboard)
# Optionals # Optionals
self.selective = bool(kwargs.get('selective', False)) self.selective = bool(selective)
@staticmethod @staticmethod
def de_json(data, bot): def de_json(data, bot):

View file

@ -41,13 +41,18 @@ class ReplyKeyboardMarkup(ReplyMarkup):
selective (Optional[bool]): selective (Optional[bool]):
""" """
def __init__(self, keyboard, **kwargs): def __init__(self,
keyboard,
resize_keyboard=False,
one_time_keyboard=False,
selective=False,
**kwargs):
# Required # Required
self.keyboard = keyboard self.keyboard = keyboard
# Optionals # Optionals
self.resize_keyboard = bool(kwargs.get('resize_keyboard', False)) self.resize_keyboard = bool(resize_keyboard)
self.one_time_keyboard = bool(kwargs.get('one_time_keyboard', False)) self.one_time_keyboard = bool(one_time_keyboard)
self.selective = bool(kwargs.get('selective', False)) self.selective = bool(selective)
@staticmethod @staticmethod
def de_json(data, bot): def de_json(data, bot):

View file

@ -44,15 +44,15 @@ class Sticker(TelegramObject):
file_size (Optional[int]): file_size (Optional[int]):
""" """
def __init__(self, file_id, width, height, **kwargs): def __init__(self, file_id, width, height, thumb=None, emoji='', file_size=0, **kwargs):
# Required # Required
self.file_id = str(file_id) self.file_id = str(file_id)
self.width = int(width) self.width = int(width)
self.height = int(height) self.height = int(height)
# Optionals # Optionals
self.thumb = kwargs.get('thumb') self.thumb = thumb
self.emoji = kwargs.get('emoji', '') self.emoji = emoji
self.file_size = int(kwargs.get('file_size', 0)) self.file_size = int(file_size)
@staticmethod @staticmethod
def de_json(data, bot): def de_json(data, bot):

View file

@ -44,15 +44,22 @@ class Update(TelegramObject):
callback_query (Optional[:class:`telegram.CallbackQuery`]): callback_query (Optional[:class:`telegram.CallbackQuery`]):
""" """
def __init__(self, update_id, **kwargs): def __init__(self,
update_id,
message=None,
edited_message=None,
inline_query=None,
chosen_inline_result=None,
callback_query=None,
**kwargs):
# Required # Required
self.update_id = int(update_id) self.update_id = int(update_id)
# Optionals # Optionals
self.message = kwargs.get('message') self.message = message
self.edited_message = kwargs.get('edited_message') self.edited_message = edited_message
self.inline_query = kwargs.get('inline_query') self.inline_query = inline_query
self.chosen_inline_result = kwargs.get('chosen_inline_result') self.chosen_inline_result = chosen_inline_result
self.callback_query = kwargs.get('callback_query') self.callback_query = callback_query
@staticmethod @staticmethod
def de_json(data, bot): def de_json(data, bot):

View file

@ -44,14 +44,14 @@ class User(TelegramObject):
bot (Optional[Bot]): The Bot to use for instance methods bot (Optional[Bot]): The Bot to use for instance methods
""" """
def __init__(self, id, first_name, bot=None, **kwargs): def __init__(self, id, first_name, type='', last_name='', username='', bot=None, **kwargs):
# Required # Required
self.id = int(id) self.id = int(id)
self.first_name = first_name self.first_name = first_name
# Optionals # Optionals
self.type = kwargs.get('type', '') self.type = type
self.last_name = kwargs.get('last_name', '') self.last_name = last_name
self.username = kwargs.get('username', '') self.username = username
self.bot = bot self.bot = bot

View file

@ -46,16 +46,24 @@ class Video(TelegramObject):
file_size (Optional[int]): file_size (Optional[int]):
""" """
def __init__(self, file_id, width, height, duration, **kwargs): def __init__(self,
file_id,
width,
height,
duration,
thumb=None,
mime_type='',
file_size=0,
**kwargs):
# Required # Required
self.file_id = str(file_id) self.file_id = str(file_id)
self.width = int(width) self.width = int(width)
self.height = int(height) self.height = int(height)
self.duration = int(duration) self.duration = int(duration)
# Optionals # Optionals
self.thumb = kwargs.get('thumb') self.thumb = thumb
self.mime_type = str(kwargs.get('mime_type', '')) self.mime_type = str(mime_type)
self.file_size = int(kwargs.get('file_size', 0)) self.file_size = int(file_size)
@staticmethod @staticmethod
def de_json(data, bot): def de_json(data, bot):

View file

@ -32,21 +32,21 @@ class Voice(TelegramObject):
Args: Args:
file_id (str): file_id (str):
duration (Optional[int]):
**kwargs: Arbitrary keyword arguments. **kwargs: Arbitrary keyword arguments.
Keyword Args: Keyword Args:
duration (Optional[int]):
mime_type (Optional[str]): mime_type (Optional[str]):
file_size (Optional[int]): file_size (Optional[int]):
""" """
def __init__(self, file_id, **kwargs): def __init__(self, file_id, duration, mime_type='', file_size=0, **kwargs):
# Required # Required
self.file_id = str(file_id) self.file_id = str(file_id)
self.duration = int(duration)
# Optionals # Optionals
self.duration = int(kwargs.get('duration', 0)) self.mime_type = str(mime_type)
self.mime_type = str(kwargs.get('mime_type', '')) self.file_size = int(file_size)
self.file_size = int(kwargs.get('file_size', 0))
@staticmethod @staticmethod
def de_json(data, bot): def de_json(data, bot):