mirror of
https://github.com/python-telegram-bot/python-telegram-bot.git
synced 2024-12-22 06:25:12 +01:00
Allow Sequence
in Application.add_handlers
(#4531)
This commit is contained in:
parent
2ce687c8f1
commit
efacc3dd1b
2 changed files with 16 additions and 8 deletions
|
@ -115,6 +115,7 @@ The following wonderful people contributed directly or indirectly to this projec
|
||||||
- `Sascha <https://github.com/saschalalala>`_
|
- `Sascha <https://github.com/saschalalala>`_
|
||||||
- `Shelomentsev D <https://github.com/shelomentsevd>`_
|
- `Shelomentsev D <https://github.com/shelomentsevd>`_
|
||||||
- `Shivam Saini <https://github.com/shivamsn97>`_
|
- `Shivam Saini <https://github.com/shivamsn97>`_
|
||||||
|
- `Siloé Garcez <https://github.com/roast-lord>`_
|
||||||
- `Simon Schürrle <https://github.com/SitiSchu>`_
|
- `Simon Schürrle <https://github.com/SitiSchu>`_
|
||||||
- `sooyhwang <https://github.com/sooyhwang>`_
|
- `sooyhwang <https://github.com/sooyhwang>`_
|
||||||
- `syntx <https://github.com/syntx>`_
|
- `syntx <https://github.com/syntx>`_
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
# You should have received a copy of the GNU Lesser Public License
|
# You should have received a copy of the GNU Lesser Public License
|
||||||
# along with this program. If not, see [http://www.gnu.org/licenses/].
|
# along with this program. If not, see [http://www.gnu.org/licenses/].
|
||||||
"""This module contains the Application class."""
|
"""This module contains the Application class."""
|
||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
import contextlib
|
import contextlib
|
||||||
import inspect
|
import inspect
|
||||||
|
@ -45,7 +46,6 @@ from typing import (
|
||||||
Optional,
|
Optional,
|
||||||
Sequence,
|
Sequence,
|
||||||
Set,
|
Set,
|
||||||
Tuple,
|
|
||||||
Type,
|
Type,
|
||||||
TypeVar,
|
TypeVar,
|
||||||
Union,
|
Union,
|
||||||
|
@ -1420,8 +1420,8 @@ class Application(Generic[BT, CCT, UD, CD, BD, JQ], AsyncContextManager["Applica
|
||||||
def add_handlers(
|
def add_handlers(
|
||||||
self,
|
self,
|
||||||
handlers: Union[
|
handlers: Union[
|
||||||
Union[List[BaseHandler[Any, CCT, Any]], Tuple[BaseHandler[Any, CCT, Any]]],
|
Sequence[BaseHandler[Any, CCT, Any]],
|
||||||
Dict[int, Union[List[BaseHandler[Any, CCT, Any]], Tuple[BaseHandler[Any, CCT, Any]]]],
|
Dict[int, Sequence[BaseHandler[Any, CCT, Any]]],
|
||||||
],
|
],
|
||||||
group: Union[int, DefaultValue[int]] = _DEFAULT_0,
|
group: Union[int, DefaultValue[int]] = _DEFAULT_0,
|
||||||
) -> None:
|
) -> None:
|
||||||
|
@ -1431,10 +1431,15 @@ class Application(Generic[BT, CCT, UD, CD, BD, JQ], AsyncContextManager["Applica
|
||||||
.. versionadded:: 20.0
|
.. versionadded:: 20.0
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
handlers (List[:class:`telegram.ext.BaseHandler`] | \
|
handlers (Sequence[:class:`telegram.ext.BaseHandler`] | \
|
||||||
Dict[int, List[:class:`telegram.ext.BaseHandler`]]): \
|
Dict[int, Sequence[:class:`telegram.ext.BaseHandler`]]):
|
||||||
Specify a sequence of handlers *or* a dictionary where the keys are groups and
|
Specify a sequence of handlers *or* a dictionary where the keys are groups and
|
||||||
values are handlers.
|
values are handlers.
|
||||||
|
|
||||||
|
.. versionchanged:: NEXT.VERSION
|
||||||
|
Accepts any :class:`collections.abc.Sequence` as input instead of just a list
|
||||||
|
or tuple.
|
||||||
|
|
||||||
group (:obj:`int`, optional): Specify which group the sequence of :paramref:`handlers`
|
group (:obj:`int`, optional): Specify which group the sequence of :paramref:`handlers`
|
||||||
should be added to. Defaults to ``0``.
|
should be added to. Defaults to ``0``.
|
||||||
|
|
||||||
|
@ -1453,13 +1458,15 @@ class Application(Generic[BT, CCT, UD, CD, BD, JQ], AsyncContextManager["Applica
|
||||||
|
|
||||||
if isinstance(handlers, dict):
|
if isinstance(handlers, dict):
|
||||||
for handler_group, grp_handlers in handlers.items():
|
for handler_group, grp_handlers in handlers.items():
|
||||||
if not isinstance(grp_handlers, (list, tuple)):
|
if not isinstance(grp_handlers, Sequence):
|
||||||
raise TypeError(f"Handlers for group {handler_group} must be a list or tuple")
|
raise TypeError(
|
||||||
|
f"Handlers for group {handler_group} must be a sequence of handlers."
|
||||||
|
)
|
||||||
|
|
||||||
for handler in grp_handlers:
|
for handler in grp_handlers:
|
||||||
self.add_handler(handler, handler_group)
|
self.add_handler(handler, handler_group)
|
||||||
|
|
||||||
elif isinstance(handlers, (list, tuple)):
|
elif isinstance(handlers, Sequence):
|
||||||
for handler in handlers:
|
for handler in handlers:
|
||||||
self.add_handler(handler, DefaultValue.get_value(group))
|
self.add_handler(handler, DefaultValue.get_value(group))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue