And here's just an insanely large-scale update that wasn't really planned. But having sensibly evaluated the code, I realized that I would really like to rewrite many details. And so, in order:
- Completely rewritten by lazy_editing. Outwardly it is not noticeable, but it has become much more stable, neater and once again more stable
- Keyboard classes have been completely rewritten. This, unfortunately, will already be visible externally. Now the Reply buttons are placed in separate classes, ReplyBuilder, ReplyRow and ReplyButton, respectively. At the same time, the usual Builder, Row and Button have not changed much externally, but they have become only for inline buttons
- The filter method was added to Pydantic and Iteration filters - it was created both for backward compatibility with CallbackDataFactory, and just for convenient parsing of what is not limited to simple equals
- PydanticFilter is now inherited from the general filter for dataclasses, and in the next update it will make it easy to add BaseDataclassFilter
- Pydantic has been updated to version 2
- Aiogram updated to 3.0.0b8
- All code is now rewritten with mypy in mind
- Added a huge number of tests
- Added the stable parameter for StackerMiddleware. It checks if enough time has passed before changing the message to lazy_editing. If the time has not passed, then it is waiting. This should slightly reduce the bugs of inline keyboards
- And much, much more! In this update, the code has been rewritten by almost 80%
**Full Changelog**: https://github.com/Sethis/usefulgram/compare/v0.0.0a3...v0.0.0a4