Merge branch 'dev-2.x'

# Conflicts:
#	aiogram/__init__.py
This commit is contained in:
Alex Root Junior 2020-01-25 17:58:32 +02:00
commit 6831962e3c
6 changed files with 29 additions and 15 deletions

View file

@ -38,5 +38,5 @@ __all__ = [
'utils'
]
__version__ = '2.6'
__version__ = '2.6.1'
__api_version__ = '4.6'

View file

@ -45,7 +45,7 @@ from .passport_element_error import PassportElementError, PassportElementErrorDa
PassportElementErrorSelfie
from .passport_file import PassportFile
from .photo_size import PhotoSize
from .poll import PollOption, Poll, PollAnswer
from .poll import PollOption, Poll, PollAnswer, PollType
from .pre_checkout_query import PreCheckoutQuery
from .reply_keyboard import KeyboardButton, ReplyKeyboardMarkup, ReplyKeyboardRemove, KeyboardButtonPollType
from .response_parameters import ResponseParameters
@ -150,6 +150,7 @@ __all__ = (
'Poll',
'PollAnswer',
'PollOption',
'PollType',
'PreCheckoutQuery',
'ReplyKeyboardMarkup',
'ReplyKeyboardRemove',

View file

@ -120,7 +120,7 @@ class TelegramObject(ContextInstanceMixin, metaclass=MetaTelegramObject):
return getattr(self, ALIASES_ATTR_NAME, {})
@property
def values(self) -> typing.Tuple[str]:
def values(self) -> typing.Dict[str, typing.Any]:
"""
Get values
@ -161,9 +161,10 @@ class TelegramObject(ContextInstanceMixin, metaclass=MetaTelegramObject):
:return:
"""
self.clean()
result = {}
for name, value in self.values.items():
if value is None:
continue
if name in self.props:
value = self.props[name].export(self)
if isinstance(value, TelegramObject):
@ -191,7 +192,7 @@ class TelegramObject(ContextInstanceMixin, metaclass=MetaTelegramObject):
return json.dumps(self.to_python())
@classmethod
def create(cls: Type[T], *args: typing.Any, **kwargs: typing.Any) -> T:
def create(cls: typing.Type[T], *args: typing.Any, **kwargs: typing.Any) -> T:
raise NotImplemented
def __str__(self) -> str:
@ -225,15 +226,15 @@ class TelegramObject(ContextInstanceMixin, metaclass=MetaTelegramObject):
return self.props[key].set_value(self, value, self.conf.get('parent', None))
raise KeyError(key)
def __contains__(self, item: typing.Dict[str, typing.Any]) -> bool:
def __contains__(self, item: str) -> bool:
"""
Check key contains in that object
:param item:
:return:
"""
self.clean()
return item in self.values
# self.clean()
return bool(self.values.get(item, None))
def __iter__(self) -> typing.Iterator[str]:
"""
@ -263,7 +264,7 @@ class TelegramObject(ContextInstanceMixin, metaclass=MetaTelegramObject):
yield value
def __hash__(self) -> int:
def _hash(obj)-> int:
def _hash(obj) -> int:
buf: int = 0
if isinstance(obj, list):
for item in obj:

View file

@ -349,7 +349,7 @@ class MediaGroup(base.TelegramObject):
:return:
"""
self.clean()
# self.clean()
result = []
for obj in self.media:
if isinstance(obj, base.TelegramObject):

View file

@ -1,7 +1,7 @@
import typing
from . import base
from . import fields
from ..utils import helper
from . import base, fields
from .user import User
@ -11,6 +11,7 @@ class PollOption(base.TelegramObject):
https://core.telegram.org/bots/api#polloption
"""
text: base.String = fields.Field()
voter_count: base.Integer = fields.Field()
@ -21,6 +22,7 @@ class PollAnswer(base.TelegramObject):
https://core.telegram.org/bots/api#pollanswer
"""
poll_id: base.String = fields.Field()
user: User = fields.Field(base=User)
option_ids: typing.List[base.Integer] = fields.ListField()
@ -32,6 +34,7 @@ class Poll(base.TelegramObject):
https://core.telegram.org/bots/api#poll
"""
id: base.String = fields.Field()
question: base.String = fields.Field()
options: typing.List[PollOption] = fields.ListField(base=PollOption)
@ -41,3 +44,10 @@ class Poll(base.TelegramObject):
type: base.String = fields.Field()
allows_multiple_answers: base.Boolean = fields.Field()
correct_option_id: base.Integer = fields.Field()
class PollType(helper.Helper):
mode = helper.HelperMode.snake_case
REGULAR = helper.Item()
QUIZ = helper.Item()

View file

@ -12,7 +12,7 @@ class KeyboardButtonPollType(base.TelegramObject):
"""
type: base.String = fields.Field()
def __init__(self, type: base.String):
def __init__(self, type: typing.Optional[base.String] = None):
super(KeyboardButtonPollType, self).__init__(type=type)
@ -110,10 +110,12 @@ class KeyboardButton(base.TelegramObject):
def __init__(self, text: base.String,
request_contact: base.Boolean = None,
request_location: base.Boolean = None):
request_location: base.Boolean = None,
request_poll: KeyboardButtonPollType = None):
super(KeyboardButton, self).__init__(text=text,
request_contact=request_contact,
request_location=request_location)
request_location=request_location,
request_poll=request_poll)
class ReplyKeyboardRemove(base.TelegramObject):