Commit graph

127 commits

Author SHA1 Message Date
Alex Root Junior
3d63bf3b99
PoC Scenes (#1280)
* Base implementation

* Small refactoring + added possibility to specify post-action on handlers

* Move scene properties to config object

* Revise aiogram/scenes with wizard-based design pattern

Modified files in aiogram/scenes to incorporate the Wizard design pattern. Files affected are _marker.py, _registry.py, _wizard.py and __init__.py. The changes introduced a SceneWizard Class and ScenesManager, both of which aid in controlling navigation between different scenes or states. This helps clarifying the codebase, streamline scene transitions and offer more control over the app flow.

* Added example

* Small optimizations

* Replace ValueError with SceneException in scenes. Added error safety in scene resolver.

* str

* Added possibility to reset context on scene entered and to handle callback query in any state

* Remove inline markup in example

* Small changes

* Docs + example

* Small refactoring

* Remove scene inclusion methods from router

The methods for including scenes as sub-routers have been removed from the router.py file. Instead, the SceneRegistry class is now set to register scenes by default upon initializing. This streamlines the scene management process by removing redundant routers and making registration automatic.

* Init tests

* Small fix in tests

* Add support for State instance in the scene

The aiogram FSM scene now allows the use of State instance as an argument, enabling more customization. Modified the 'as_handler' method to receive **kwargs arguments, allowing passing of attributes to the handler. An additional type check has been also added to ensure the 'scene' is either a subclass of Scene or a string.

* Fixed test

* Expand test coverage for test_fsm module

The commit enhances tests for the test_fsm module to improve code reliability. It includes additional unit tests for the ObserverDecorator and ActionContainer classes and introduces new tests for the SceneHandlerWrapper class. This ensures the correct functionality of the decorator methods, the action container execution, and the handler wrapper.

* Reformat code

* Fixed long line in the example

* Skip some tests on PyPy

* Change mock return_value

* Compatibility...

* Compatibility...

* Compatibility...

* Added base changes description

* Scenes Tests (#1369)

* ADD tests for `SceneRegistry`

* ADD tests for `ScenesManager`

* ADD Changelog

* Revert "ADD Changelog"

This reverts commit 6dd9301252.

* Remove `@pytest.mark.asyncio`, Reformat code

* Scenes Tests. Part 2 (#1371)

* ADD tests for `SceneWizard`

* ADD tests for `Scene`

* Refactor ObserverDecorator to use on.message syntax in test_scene.py
Cover `Scene::__init_subclass__::if isinstance(value, ObserverDecorator):`

* Refactor `HistoryManager` in `aiogram/fsm/scene.py`
Removed condition that checked if 'history' is empty before calling 'update_data' in 'Scene'.

* ADD tests for `HistoryManager`

* Small changes in the documentation

* Small changes in the documentation

* Small changes in the documentation

---------

Co-authored-by: Andrew <11490628+andrew000@users.noreply.github.com>
2023-11-23 00:41:21 +02:00
Oleg A
e17e3bc71c
Fix CallbackData without default Optional (#1370)
* fix: CallbackData set optional as None

* docs: add fix changelog

* Add support for nullable fields in callback data

This update extends the callback data handling by adding support for nullable fields. The code now uses the Python typing structures `Optional` and `Union` to parse such fields correctly. A helper function `_check_field_is_nullable` has been added to assist in efficiently checking if a given field is nullable.

* Add support for nullable fields in callback data

This update extends the callback data handling by adding support for nullable fields. The code now uses the Python typing structures `Optional` and `Union` to parse such fields correctly. A helper function `_check_field_is_nullable` has been added to assist in efficiently checking if a given field is nullable.

---------

Co-authored-by: JRoot Junior <jroot.junior@gmail.com>
2023-11-20 22:39:09 +02:00
Nachtalb
c1bafea3e8
Upgrade to py12 (#1354)
* Upgrade to py12 compatible aiohttp beta version

* Fix uvloop deprecation warning causing pytest not to run

* Fix test due to asyncio task scheduling race condition

* Fix test_state_in_unknown_class for Python 3.12+ due to PEP 678 changes

* Add Python 3.12 support in GitHub Actions and project configurations

* Add changelog entry

---------

Co-authored-by: Alex Root Junior <jroot.junior@gmail.com>
2023-11-18 21:24:19 +02:00
Alex Root Junior
3b21262d34
Skip unused ignore 2023-10-21 22:09:46 +03:00
Alex Root Junior
eef277ae65
Ignore uvloop attr-defined 2023-10-21 22:04:10 +03:00
Alex Root Junior
d29b18da8c
#1191 Added possibility to pass custom headers to URLInputFile object (#1197) 2023-06-25 01:39:26 +03:00
Alex Root Junior
6570d0bab1
Bot API 6.6 (#1139)
* Added basic support of Bot API 6.6

* Update descriptions

* Added StickerFormat enum

* Bump version

* Refresh from docs

* Fixed CommandStart

* Fixed files uploading

* Cover new functionality

* Added changelog

* Update texts
2023-03-11 02:17:47 +02:00
Alex Root Junior
e8d279c8f2
Bump API version 2023-02-07 22:42:57 +02:00
Alex Root Junior
e59d4652bf
Added full support of Bot API 6.5 (#1112)
* Added full support of Bot API 6.5

* Shut up, linters (Fixed errors)

* Oops. Added lost files.

* Fixed tests

* Added changes description

* Update description from docs

* Fixed anchors

* Update Butcher

* Added danger zone to changelog

* Type
2023-02-04 19:53:32 +02:00
Alex Root Junior
f4ce4431f9
Migrate to hatchling (#1095)
* Migrate to hatchling instead of poetry, ruff instead of flake8

* Migrate to hatchling instead of poetry, ruff instead of flake8

* Update tests suite

* venv?

* -m venv?

* Change dependencies

* Remove venv

* Change mypy config

* Added changelog

* Mark uvloop incompatible with pypy

* Update release script

* Use internal caching for dependencies

* Re-disable cov branches

* Added contributing guide
2023-01-12 02:49:58 +02:00
Alex Root Junior
730485e43a
Added full support of Bot API 6.4 (#1088)
* Remove warnings about pytest asyncio mode

* Update Bot API to 6.4

* Bump version

* Added changelog

* Update translations
2022-12-30 22:44:25 +02:00
Alex Root Junior
c7779abc50
Bump version 2022-11-19 20:32:36 +02:00
Alex Root Junior
b287551590
Bot API 6.3 (#1063)
* Added API changes

* Added changelog

* Oops. Move changelog

* Update tests

* Remove experimental

* Added message content type

* Update message aliases

* Update changes

* Update texts

* Bump version

* Remove versionadded badge
2022-11-06 14:28:21 +02:00
Alex Root Junior
f4251382e8
Remove filters factory, introduce docs translation (#978)
* Rewrite filters

* Update README.rst

* Fixed tests

* Small optimization of the Text filter (TY to @bomzheg)

* Remove dataclass slots argument in due to the only Python 3.10 has an slots argument

* Fixed mypy

* Update tests

* Disable Python 3.11

* Fixed #1013: Empty mention should be None instead of empty string.

* Added #990 to the changelog

* Added #942 to the changelog

* Fixed coverage

* Update poetry and dependencies

* Fixed mypy

* Remove deprecated code

* Added more tests, update pyproject.toml

* Partial update docs

* Added initial Docs translation files

* Added more changes

* Added log message when connection is established in polling process

* Fixed action

* Disable lint for PyPy

* Added changelog for docs translation
2022-10-02 00:04:31 +03:00
Alex Root Junior
c1341ba2df
Added support of Bot API 6.2 (#975)
* Added support of Bot API 6.2
* Added changelog
* Update tests
* Update API version
* Update dependencies, pre-commit config
* Added pytest config
2022-08-14 16:32:29 +03:00
Alex Root Junior
4315ecf1a2
Dev 3.x flat package (#961)
* Move packages

* Added changelog

* Update examples/echo_bot.py

Co-authored-by: Oleg A. <t0rr@mail.ru>

* Rename `handler` -> `handlers`

* Update __init__.py

Co-authored-by: Oleg A. <t0rr@mail.ru>
2022-08-14 01:07:52 +03:00
Alex Root Junior
247ffbef69
3.x Bot API 6.1 (#937)
Added support of Bot API 6.1
2022-06-25 18:14:29 +03:00
Alex Root Junior
0d650fc38c
Release 3.0.0-beta.3 2022-04-19 22:16:35 +03:00
Alex Root Junior
7776cf9cf6
Bot API 5.7 and some new features (#834)
* Update API, added some new features

* Fixed unknown chat_action value

* Separate events from dispatcher messages

* Disabled cache for I18n LazyProxy

* Rework events isolation

* Added chat member status changed filter, update Bot API 5.7, other small changes

* Improve exceptions in chat member status filter

* Fixed tests, covered flags and events isolation modules

* Try to fix flake8 unused type ignore

* Fixed linter error

* Cover chat member updated filter

* Cover chat action sender

* Added docs for chat action util

* Try to fix tests for python <= 3.9

* Fixed headers

* Added docs for flags functionality

* Added docs for chat_member_updated filter

* Added change notes

* Update dependencies and fix mypy checks

* Bump version
2022-02-19 01:45:59 +02:00
Alex Root Junior
1634dc1162 Bump version, small changes in docs 2021-12-12 18:59:57 +02:00
Alex Root Junior
9ec689b562
[3.x] Bot API 5.5 (#777)
* Re-generate API, cover changes

* Added patchnotes
2021-12-12 17:21:01 +02:00
Alex Root Junior
812fb87d67 Bump version (Maybe can be bumped to beta stage before release) 2021-11-24 06:31:49 +02:00
Alex Root Junior
d7be55bc58
Extended MagicFilter with aiogram-specific operation (#759)
* Extend MagicFilter with aiogram-specific operation

* Added tests

* Added changes annotation and update docs
2021-11-24 06:00:37 +02:00
Alex Root Junior
9b43a33b7f
Dev 3.x api 5.4 (#744)
* Re-generate API

* Added new modules

* Added handling new event type and approve/decline aliases for ChatJoinRequest

* Fixed code-coverage

* Bump API version

* Added patch-notes
2021-11-08 02:37:37 +02:00
Alex Root Junior
7c6cf3c122 Rework FSM storage key 2021-10-11 01:30:19 +03:00
Alex Root Junior
c19cbc6a5f Added html/md_text properties to Message object and refactor I18n context 2021-09-23 23:45:22 +03:00
Alex Root Junior
481aec2144 Bump version 2021-09-22 02:00:45 +03:00
Alex Root Junior
40cb222314 Bump version 2021-09-10 00:02:53 +03:00
Alex Root Junior
5851e32266 Bump version // 2 2021-08-17 03:07:38 +03:00
Alex Root Junior
2aa8c38691 Bump version 2021-08-17 03:06:52 +03:00
Alex Root Junior
a19b6bcf3a Bump version // 2 2021-08-01 01:11:46 +03:00
Alex Root Junior
e5a7c69e17 Bump version 2021-08-01 01:09:43 +03:00
Alex Root Junior
a70ecb767f Bump version 2021-07-29 00:42:53 +03:00
Alex Root Junior
5780d1840e Bump version 2021-06-19 02:42:56 +03:00
Alex Root Junior
83d6ab48c5
Backport and improvements (#601)
* Backport RedisStorage, deep-linking
* Allow prereleases for aioredis
* Bump dependencies
* Correctly skip Redis tests on Windows
* Reformat tests code and bump Makefile
2021-06-15 01:45:31 +03:00
Alex Root Junior
5abd9ad0c4 Bump version. Added pipeline for test PyPi 2021-05-12 00:13:03 +03:00
Alex Root Junior
0e72d8e65b
[3.0] Bot API 5.1 + FSM + Utils (#525)
* Regenerate corresponding to Bot API 5.1

* Added base of FSM. Markup constructor and small refactoring

* Fix dependencies

* Fix mypy windows error

* Move StatesGroup.get_root() from meta to class

* Fixed chat and user constraints

* Update pipeline

* Remove docs pipeline

* Added GLOBAL_USER FSM strategy

* Reformat code

* Fixed Dispatcher._process_update

* Bump Bot API 5.2. Added integration with MagicFilter

* Coverage
2021-05-11 23:04:32 +03:00
Alex Root Junior
aebccd1139 Fix version parsing 2021-02-07 19:04:26 +02:00
Alex Root Junior
4008a3114d
Upgrade architecture + 5.0 Bot API (#469)
Upgrade architecture + 5.0 Bot API (#469)
* Moved `methods`, `types` and `client` to root package
* Removed update handler from routers to dispatcher
* Reworked events propagation mechanism to handlers
* Reworked inner middlewares logic (very small change)
* Updated to Bot API 5.0
* Initial migration from MkDocs to Sphinx + config for readthedocs
2021-01-26 21:20:52 +02:00
Alex Root Junior
7844a663a9 Bump Telegram Bot API version
Change request timeout mechanism
Bump package version
2020-06-14 17:14:10 +03:00
Alex Root Junior
28382ebf5f
Add bump_versions.py script (#338)
* Add bump_versions.py script
* Fix pipeline
2020-05-27 01:24:06 +03:00
Alex Root Junior
bafc2ff341 Update middlewares docs 2020-05-26 20:26:29 +03:00
Alex Root Junior
7f26ec9935 Implement new middlewares 2020-05-26 00:23:35 +03:00
mpa
4124770b0e refactor(handler): rename observers
Rename observers but with backward compatibility, relevant documentation
2020-05-10 03:02:31 +04:00
Alex Root Junior
b097680f3c Fix package 2020-05-06 01:42:40 +03:00
Alex Root Junior
6be0b36305
Dev 3.x api 4.8 (#317)
* AIOG-T-20 Bot API 4.8

* AIOG-T-20 Update aliases

* AIOG-T-20 Add parse mode passing in sendPoll method

* AIOG-T-20 Small changes in docs

* AIOG-T-20 Revert overriding remove keyboard default value and add tests

* AIOG-T-20 Bot API 4.8
2020-05-02 23:01:32 +03:00
Alex Root Junior
5b6ec599b1 Add middlewares (API + Docs + Tests) 2020-04-12 20:27:32 +03:00
Alex Root Junior
33003f2026 Add support of Bot API 4.7. Bump version 2020-04-11 20:15:03 +03:00
Alex Root Junior
d9314a9d53 Bump versions 2020-01-25 18:32:47 +02:00
Alex Root Junior
ffb0cdf88f Telegram Bot API 4.5 2020-01-11 19:47:39 +02:00