From 9114abe919f18f78d82e461545e28f361c2cea37 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 1 Aug 2021 19:08:03 +0300 Subject: [PATCH] `towncrier` integration (#647) * Added towncrier and clone changelog from GitHub Releases page * Added record to changelog * Extended makefile * Fix typo * Changed ref in changelog * Auto-confirm towncrier question on build Co-authored-by: evgfilim1 --- CHANGES.rst | 16 ++ CHANGES/.template.rst.jinja2 | 44 ++++ CHANGES/602.doc | 1 + HISTORY.rst | 497 +++++++++++++++++++++++++++++++++++ Makefile | 20 ++ docs/changelog.rst | 5 + docs/index.rst | 1 + poetry.lock | 53 +++- pyproject.toml | 8 + 9 files changed, 644 insertions(+), 1 deletion(-) create mode 100644 CHANGES.rst create mode 100644 CHANGES/.template.rst.jinja2 create mode 100644 CHANGES/602.doc create mode 100644 HISTORY.rst create mode 100644 docs/changelog.rst diff --git a/CHANGES.rst b/CHANGES.rst new file mode 100644 index 00000000..62d17a3d --- /dev/null +++ b/CHANGES.rst @@ -0,0 +1,16 @@ +========= +Changelog +========= + +.. + You should *NOT* be adding new change log entries to this file, this + file is managed by towncrier. You *may* edit previous change logs to + fix problems like typo corrections or such. + To add a new change log entry, please see + https://pip.pypa.io/en/latest/development/#adding-a-news-entry + we named the news folder "CHANGES". + + WARNING: Don't drop the next directive! + +.. towncrier release notes start + diff --git a/CHANGES/.template.rst.jinja2 b/CHANGES/.template.rst.jinja2 new file mode 100644 index 00000000..9881cc42 --- /dev/null +++ b/CHANGES/.template.rst.jinja2 @@ -0,0 +1,44 @@ +{% if top_line %} +{{ top_line }} +{{ top_underline * ((top_line)|length)}} +{% elif versiondata.name %} +{{ versiondata.version }} ({{ versiondata.date }}) +{{ top_underline * ((versiondata.version + versiondata.date)|length + 4)}} +{% else %} +{{ versiondata.version }} ({{ versiondata.date }}) +{{ top_underline * ((versiondata.version + versiondata.date)|length + 3)}} +{% endif %} +{% for section, _ in sections.items() %} +{% set underline = underlines[0] %}{% if section %}{{section}} +{{ underline * section|length }}{% set underline = underlines[1] %} + +{% endif %} + +{% if sections[section] %} +{% for category, val in definitions.items() if category in sections[section]%} +{{ definitions[category]['name'] }} +{{ underline * definitions[category]['name']|length }} + +{% if definitions[category]['showcontent'] %} +{% for text, values in sections[section][category].items() %} +- {{ text }} + {{ values|join(', ') }} +{% endfor %} + +{% else %} +- {{ sections[section][category]['']|join(', ') }} + +{% endif %} +{% if sections[section][category]|length == 0 %} +No significant changes. + +{% else %} +{% endif %} + +{% endfor %} +{% else %} +No significant changes. + + +{% endif %} +{% endfor %} \ No newline at end of file diff --git a/CHANGES/602.doc b/CHANGES/602.doc new file mode 100644 index 00000000..1c23d1d9 --- /dev/null +++ b/CHANGES/602.doc @@ -0,0 +1 @@ +Added integration with :code:`towncrier` \ No newline at end of file diff --git a/HISTORY.rst b/HISTORY.rst new file mode 100644 index 00000000..c1dc6ad5 --- /dev/null +++ b/HISTORY.rst @@ -0,0 +1,497 @@ + +.. + Copy-pasted and reformatted from GitHub releases page + + +2.14.3 (2021-07-21) +=================== + +- Fixed :code:`ChatMember` type detection via adding customizable object serialization mechanism (`#624 `_, `#623 `_) + + +2.14.2 (2021-07-26) +=================== + +- Fixed :code:`MemoryStorage` cleaner (`#619 `_) +- Fixed unused default locale in :code:`I18nMiddleware` (`#562 `_, `#563 `_) + + +2.14 (2021-07-27) +================= + +- Full support of Bot API 5.3 (`#610 `_, `#614 `_) +- Fixed :code:`Message.send_copy` method for polls (`#603 `_) +- Updated pattern for :code:`GroupDeactivated` exception (`#549 `_ +- Added :code:`caption_entities` field in :code:`InputMedia` base class (`#583 `_) +- Fixed HTML text decorations for tag :code:`pre` (`#597 `_ fixes issues `#596 `_ and `#481 `_) +- Fixed :code:`Message.get_full_command` method for messages with caption (`#576 `_) +- Improved :code:`MongoStorage`: remove documents with empty data from :code:`aiogram_data` collection to save memory. (`#609 `_) + + +2.13 (2021-04-28) +================= + +- Added full support of Bot API 5.2 (`#572 `_) +- Fixed usage of :code:`provider_data` argument in :code:`sendInvoice` method call +- Fixed builtin command filter args (`#556 `_) (`#558 `_) +- Allowed to use State instances FSM storage directly (`#542 `_) +- Added possibility to get i18n locale without User instance (`#546 `_) +- Fixed returning type of :code:`Bot.*_chat_invite_link()` methods `#548 `_ (`#549 `_) +- Fixed deep-linking util (`#569 `_) +- Small changes in documentation - describe limits in docstrings corresponding to the current limit. (`#565 `_) +- Fixed internal call to deprecated 'is_private' method (`#553 `_) +- Added possibility to use :code:`allowed_updates` argument in Polling mode (`#564 `_) + + +2.12.1 (2021-03-22) +=================== + +- Fixed :code:`TypeError: Value should be instance of 'User' not 'NoneType'` (`#527 `_) +- Added missing :code:`Chat.message_auto_delete_time` field (`#535 `_) +- Added :code:`MediaGroup` filter (`#528 `_) +- Added :code:`Chat.delete_message` shortcut (`#526 `_) +- Added mime types parsing for :code:`aiogram.types.Document` (`#431 `_) +- Added warning in :code:`TelegramObject.__setitem__` when Telegram adds a new field (`#532 `_) +- Fixed :code:`examples/chat_type_filter.py` (`#533 `_) +- Removed redundant definitions in framework code (`#531 `_) + + +2.12 (2021-03-14) +================= + +- Full support for Telegram Bot API 5.1 (`#519 `_) +- Fixed sending playlist of audio files and documents (`#465 `_, `#468 `_) +- Fixed :code:`FSMContextProxy.setdefault` method (`#491 `_) +- Fixed :code:`Message.answer_location` and :code:`Message.reply_location` unable to send live location (`#497 `_) +- Fixed :code:`user_id` and :code:`chat_id` getters from the context at Dispatcher :code:`check_key`, :code:`release_key` and :code:`throttle` methods (`#520 `_) +- Fixed :code:`Chat.update_chat` method and all similar situations (`#516 `_) +- Fixed :code:`MediaGroup` attach methods (`#514 `_) +- Fixed state filter for inline keyboard query callback in groups (`#508 `_, `#510 `_) +- Added missing :code:`ContentTypes.DICE` (`#466 `_) +- Added missing vcard argument to :code:`InputContactMessageContent` constructor (`#473 `_) +- Add missing exceptions: :code:`MessageIdInvalid`, :code:`CantRestrictChatOwner` and :code:`UserIsAnAdministratorOfTheChat` (`#474 `_, `#512 `_) +- Added :code:`answer_chat_action` to the :code:`Message` object (`#501 `_) +- Added dice to :code:`message.send_copy` method (`#511 `_) +- Removed deprecation warning from :code:`Message.send_copy` +- Added an example of integration between externally created aiohttp Application and aiogram (`#433 `_) +- Added :code:`split_separator` argument to :code:`safe_split_text` (`#515 `_) +- Fixed some typos in docs and examples (`#489 `_, `#490 `_, `#498 `_, `#504 `_, `#514 `_) + + +2.11.2 (2021-11-10) +=================== + +- Fixed default parse mode +- Added missing "supports_streaming" argument to answer_video method `#462 `_ + + +2.11.1 (2021-11-10) +=================== + +- Fixed files URL template +- Fix MessageEntity serialization for API calls `#457 `_ +- When entities are set, default parse_mode become disabled (`#461 `_) +- Added parameter supports_streaming to reply_video, remove redundant docstrings (`#459 `_) +- Added missing parameter to promoteChatMember alias (`#458 `_) + + +2.11 (2021-11-08) +================= + +- Added full support of Telegram Bot API 5.0 (`#454 `_) +- Added possibility to more easy specify custom API Server (example) + - WARNING: API method :code:`close` was named in Bot class as close_bot in due to Bot instance already has method with the same name. It will be changed in :code:`aiogram 3.0` +- Added alias to Message object :code:`Message.copy_to` with deprecation of :code:`Message.send_copy` +- :code:`ChatType.SUPER_GROUP` renamed to :code:`ChatType.SUPERGROUP` (`#438 `_) + + +2.10.1 (2021-09-14) +=================== + +- Fixed critical bug with getting asyncio event loop in executor. (`#424 `_) :code:`AttributeError: 'NoneType' object has no attribute 'run_until_complete'` + + +2.10 (2021-09-13) +================== + +- Breaking change: Stop using _MainThread event loop in bot/dispatcher instances (`#397 `_) +- Breaking change: Replaced aiomongo with motor (`#368 `_, `#380 `_) +- Fixed: TelegramObject's aren't destroyed after update handling `#307 `_ (`#371 `_) +- Add setting current context of Telegram types (`#369 `_) +- Fixed markdown escaping issues (`#363 `_) +- Fixed HTML characters escaping (`#409 `_) +- Fixed italic and underline decorations when parse entities to Markdown +- Fixed `#413 `_: parse entities positioning (`#414 `_) +- Added missing thumb parameter (`#362 `_) +- Added public methods to register filters and middlewares (`#370 `_) +- Added ChatType builtin filter (`#356 `_) +- Fixed IDFilter checking message from channel (`#376 `_) +- Added missed answer_poll and reply_poll (`#384 `_) +- Added possibility to ignore message caption in commands filter (`#383 `_) +- Fixed addStickerToSet method +- Added preparing thumb in send_document method (`#391 `_) +- Added exception MessageToPinNotFound (`#404 `_) +- Fixed handlers parameter-spec solving (`#408 `_) +- Fixed CallbackQuery.answer() returns nothing (`#420 `_) +- CHOSEN_INLINE_RESULT is a correct API-term (`#415 `_) +- Fixed missing attributes for Animation class (`#422 `_) +- Added missed emoji argument to reply_dice (`#395 `_) +- Added is_chat_creator method to ChatMemberStatus (`#394 `_) +- Added missed ChatPermissions to __all__ (`#393 `_) +- Added is_forward method to Message (`#390 `_) +- Fixed usage of deprecated is_private function (`#421 `_) + +and many others documentation and examples changes: + +- Updated docstring of RedisStorage2 (`#423 `_) +- Updated I18n example (added docs and fixed typos) (`#419 `_) +- A little documentation revision (`#381 `_) +- Added comments about correct errors_handlers usage (`#398 `_) +- Fixed typo rexex -> regex (`#386 `_) +- Fixed docs Quick start page code blocks (`#417 `_) +- fixed type hints of callback_data (`#400 `_) +- Prettify readme, update downloads stats badge (`#406 `_) + + +2.9.2 (2021-06-13) +================== + +- Fixed :code:`Message.get_full_command()` `#352 `_ +- Fixed markdown util `#353 `_ + + +2.9 (2021-06-08) +================ + +- Added full support of Telegram Bot API 4.9 +- Fixed user context at poll_answer update (`#322 `_) +- Fix Chat.set_description (`#325 `_) +- Add lazy session generator (`#326 `_) +- Fix text decorations (`#315 `_, `#316 `_, `#328 `_) +- Fix missing :code:`InlineQueryResultPhoto` :code:`parse_mode` field (`#331 `_) +- Fix fields from parent object in :code:`KeyboardButton` (`#344 `_ fixes `#343 `_) +- Add possibility to get bot id without calling :code:`get_me` (`#296 `_) + + +2.8 (2021-04-26) +================ + +- Added full support of Bot API 4.8 +- Added :code:`Message.answer_dice` and :code:`Message.reply_dice` methods (`#306 `_) + + +2.7 (2021-04-07) +================ + +- Added full support of Bot API 4.7 (`#294 `_ `#289 `_) +- Added default parse mode for send_animation method (`#293 `_ `#292 `_) +- Added new API exception when poll requested in public chats (`#270 `_) +- Make correct User and Chat get_mention methods (`#277 `_) +- Small changes and other minor improvements + + +2.6.1 (2021-01-25) +================== + +- Fixed reply :code:`KeyboardButton` initializer with :code:`request_poll` argument (`#266 `_) +- Added helper for poll types (:code:`aiogram.types.PollType`) +- Changed behavior of Telegram_object :code:`.as_*` and :code:`.to_*` methods. It will no more mutate the object. (`#247 `_) + + +2.6 (2021-01-23) +================ + +- Full support of Telegram Bot API v4.6 (Polls 2.0) `#265 `_ +- Aded new filter - IsContactSender (commit) +- Fixed proxy extra dependencies version `#262 `_ + + +2.5.3 (2021-01-05) +================== + +- `#255 `_ Updated CallbackData factory validity check. More correct for non-latin symbols +- `#256 `_ Fixed :code:`renamed_argument` decorator error +- `#257 `_ One more fix of CommandStart filter + + +2.5.2 (2021-01-01) +================== + +- Get back :code:`quote_html` and :code:`escape_md` functions + + +2.5.1 (2021-01-01) +================== + +- Hot-fix of :code:`CommandStart` filter + + +2.5 (2021-01-01) +================ + +- Added full support of Telegram Bot API 4.5 (`#250 `_, `#251 `_) +- `#239 `_ Fixed :code:`check_token` method +- `#238 `_, `#241 `_: Added deep-linking utils +- `#248 `_ Fixed support of aiohttp-socks +- Updated setup.py. No more use of internal pip API +- Updated links to documentations (https://docs.aiogram.dev) +- Other small changes and minor improvements (`#223 `_ and others...) + + +2.4 (2021-10-29) +================ + +- Added Message.send_copy method (forward message without forwarding) +- Safe close of aiohttp client session (no more exception when application is shutdown) +- No more "adWanced" words in project `#209 `_ +- Arguments user and chat is renamed to user_id and chat_id in Dispatcher.throttle method `#196 `_ +- Fixed set_chat_permissions `#198 `_ +- Fixed Dispatcher polling task does not process cancellation `#199 `_, `#201 `_ +- Fixed compatibility with latest asyncio version `#200 `_ +- Disabled caching by default for lazy_gettext method of I18nMiddleware `#203 `_ +- Fixed HTML user mention parser `#205 `_ +- Added IsReplyFilter `#210 `_ +- Fixed send_poll method arguments `#211 `_ +- Added OrderedHelper `#215 `_ +- Fix incorrect completion order. `#217 `_ + + +2.3 (2021-08-16) +================ + +- Full support of Telegram Bot API 4.4 +- Fixed `#143 `_ +- Added new filters from issue `#151 `_: `#172 `_, `#176 `_, `#182 `_ +- Added expire argument to RedisStorage2 and other storage fixes `#145 `_ +- Fixed JSON and Pickle storages `#138 `_ +- Implemented MongoStorage `#153 `_ based on aiomongo (soon motor will be also added) +- Improved tests +- Updated examples +- Warning: Updated auth widget util. `#190 `_ +- Implemented throttle decorator `#181 `_ + + +2.2 (2021-06-09) +================ + +- Provides latest Telegram Bot API (4.3) +- Updated docs for filters +- Added opportunity to use different bot tokens from single bot instance (via context manager, `#100 `_) +- IMPORTANT: Fixed Typo: :code:`data` -> :code:`bucket` in :code:`update_bucket` for RedisStorage2 (`#132 `_) + + +2.1 (2021-04-18) +================ + +- Implemented all new features from Telegram Bot API 4.2 +- :code:`is_member` and :code:`is_admin` methods of :code:`ChatMember` and :code:`ChatMemberStatus` was renamed to :code:`is_chat_member` and :code:`is_chat_admin` +- Remover func filter +- Added some useful Message edit functions (:code:`Message.edit_caption`, :code:`Message.edit_media`, :code:`Message.edit_reply_markup`) (`#121 `_, `#103 `_, `#104 `_, `#112 `_) +- Added requests timeout for all methods (`#110 `_) +- Added :code:`answer*` methods to :code:`Message` object (`#112 `_) +- Maked some improvements of :code:`CallbackData` factory +- Added deep-linking parameter filter to :code:`CommandStart` filter +- Implemented opportunity to use DNS over socks (`#97 `_ -> `#98 `_) +- Implemented logging filter for extending LogRecord attributes (Will be usefull with external logs collector utils like GrayLog, Kibana and etc.) +- Updated :code:`requirements.txt` and :code:`dev_requirements.txt` files +- Other small changes and minor improvements + + +2.0.1 (2021-12-31) +================== + +- Implemented CallbackData factory (`example `_) +- Implemented methods for answering to inline query from context and reply with animation to the messages. `#85 `_ +- Fixed installation from tar.gz `#84 `_ +- More exceptions (:code:`ChatIdIsEmpty` and :code:`NotEnoughRightsToRestrict`) + + +2.0 (2021-10-28) +================ + +This update will break backward compability with Python 3.6 and works only with Python 3.7+: +- contextvars (PEP-567); +- New syntax for annotations (PEP-563). + +Changes: +- Used contextvars instead of :code:`aiogram.utils.context`; +- Implemented filters factory; +- Implemented new filters mechanism; +- Allowed to customize command prefix in CommandsFilter; +- Implemented mechanism of passing results from filters (as dicts) as kwargs in handlers (like fixtures in pytest); +- Implemented states group feature; +- Implemented FSM storage's proxy; +- Changed files uploading mechanism; +- Implemented pipe for uploading files from URL; +- Implemented I18n Middleware; +- Errors handlers now should accept only two arguments (current update and exception); +- Used :code:`aiohttp_socks` instead of :code:`aiosocksy` for Socks4/5 proxy; +- types.ContentType was divided to :code:`types.ContentType` and :code:`types.ContentTypes`; +- Allowed to use rapidjson instead of ujson/json; +- :code:`.current()` method in bot and dispatcher objects was renamed to :code:`get_current()`; + +Full changelog +- You can read more details about this release in migration FAQ: ``_ + + +1.4 (2021-08-03) +================ + +- Bot API 4.0 (`#57 `_) + + +1.3.3 (2021-07-16) +================== + +- Fixed markup-entities parsing; +- Added more API exceptions; +- Now InlineQueryResultLocation has live_period; +- Added more message content types; +- Other small changes and minor improvements. + + +1.3.2 (2021-05-27) +================== + +- Fixed crashing of polling process. (i think) +- Added parse_mode field into input query results according to Bot API Docs. +- Added new methods for Chat object. (`#42 `_, `#43 `_) +- **Warning**: disabled connections limit for bot aiohttp session. +- **Warning**: Destroyed "temp sessions" mechanism. +- Added new error types. +- Refactored detection of error type. +- Small fixes of executor util. +- Fixed RethinkDBStorage + +1.3.1 (2018-05-27) +================== + + +1.3 (2021-04-22) +================ + +- Allow to use Socks5 proxy (need manually install :code:`aiosocksy`). +- Refactored :code:`aiogram.utils.executor` module. +- **[Warning]** Updated requirements list. + + +1.2.3 (2018-04-14) +================== + +- Fixed API errors detection +- Fixed compability of :code:`setup.py` with pip 10.0.0 + + +1.2.2 (2018-04-08) +================== + +- Added more error types. +- Implemented method :code:`InputFile.from_url(url: str)` for downloading files. +- Implemented big part of API method tests. +- Other small changes and mminor improvements. + + +1.2.1 (2018-03-25) +================== + +- Fixed handling Venue's [`#27 `_, `#26 `_] +- Added parse_mode to all medias (Bot API 3.6 support) [`#23 `_] +- Now regexp filter can be used with callback query data [`#19 `_] +- Improvements in :code:`InlineKeyboardMarkup` & :code:`ReplyKeyboardMarkup` objects [`#21 `_] +- Other bug & typo fixes and minor improvements. + + +1.2 (2018-02-23) +================ + +- Full provide Telegram Bot API 3.6 +- Fixed critical error: :code:`Fatal Python error: PyImport_GetModuleDict: no module dictionary!` +- Implemented connection pool in RethinkDB driver +- Typo fixes of documentstion +- Other bug fixes and minor improvements. + + +1.1 (2018-01-27) +================ + +- Added more methods for data types (like :code:`message.reply_sticker(...)` or :code:`file.download(...)` +- Typo fixes of documentstion +- Allow to set default parse mode for messages (:code:`Bot( ... , parse_mode='HTML')`) +- Allowed to cancel event from the :code:`Middleware.on_pre_process_` +- Fixed sending files with correct names. +- Fixed MediaGroup +- Added RethinkDB storage for FSM (:code:`aiogram.contrib.fsm_storage.rethinkdb`) + + +1.0.4 (2018-01-10) +================== + + +1.0.3 (2018-01-07) +================== + +- Added middlewares mechanism. +- Added example for middlewares and throttling manager. +- Added logging middleware (:code:`aiogram.contrib.middlewares.logging.LoggingMiddleware`) +- Fixed handling errors in async tasks (marked as 'async_task') +- Small fixes and other minor improvements. + + +1.0.2 (2017-11-29) +================== + + +1.0.1 (2017-11-21) +================== + +- Implemented :code:`types.InputFile` for more easy sending local files +- **Danger!** Fixed typo in word pooling. Now whatever all methods with that word marked as deprecated and original methods is renamed to polling. Check it in you'r code before updating! +- Fixed helper for chat actions (:code:`types.ChatActions`) +- Added `example `_ for media group. + + +1.0 (2017-11-19) +================ + +- Remaked data types serialozation/deserialization mechanism (Speed up). +- Fully rewrited all Telegram data types. +- Bot object was fully rewritted (regenerated). +- Full provide Telegram Bot API 3.4+ (with sendMediaGroup) +- Warning: Now :code:`BaseStorage.close()` is awaitable! (FSM) +- Fixed compability with uvloop. +- More employments for :code:`aiogram.utils.context`. +- Allowed to disable :code:`ujson`. +- Other bug fixes and minor improvements. +- Migrated from Bitbucket to Github. + + +0.4.1 (2017-08-03) +================== + + +0.4 (2017-08-05) +================ + + +0.3.4 (2017-08-04) +================== + + +0.3.3 (2017-07-05) +================== + + +0.3.2 (2017-07-04) +================== + + +0.3.1 (2017-07-04) +================== + + +0.2b1 (2017-06-00) +================== + + +0.1 (2017-06-03) +================ diff --git a/Makefile b/Makefile index da73f8b7..bb66a7e0 100644 --- a/Makefile +++ b/Makefile @@ -123,3 +123,23 @@ build: clean flake8-report mypy-report test-coverage bump: poetry version $(args) $(python) scripts/bump_versions.py + +.PHONY: towncrier-build +towncrier-build: + towncrier build --yes + +.PHONY: towncrier-draft +towncrier-draft: + towncrier build --draft + +.PHONY: towncrier-draft-github +towncrier-draft-github: + mkdir -p dist + towncrier build --draft | pandoc - -o dist/release.md + +.PHONY: prepare-release +prepare-release: bump towncrier-draft-github towncrier-build + +.PHONY: tag-release +tag-release: + git tag v$(poetry version -s) diff --git a/docs/changelog.rst b/docs/changelog.rst new file mode 100644 index 00000000..ddb848d5 --- /dev/null +++ b/docs/changelog.rst @@ -0,0 +1,5 @@ +.. _aiogram_changes: + +.. include:: ../CHANGES.rst + +.. include:: ../HISTORY.rst diff --git a/docs/index.rst b/docs/index.rst index 12517c1e..0016a02e 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -93,3 +93,4 @@ Contents install api/index dispatcher/index + changelog diff --git a/poetry.lock b/poetry.lock index df96b90c..9b60c280 100644 --- a/poetry.lock +++ b/poetry.lock @@ -218,6 +218,17 @@ python-versions = ">=3.6" [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} +[[package]] +name = "click-default-group" +version = "1.2.2" +description = "Extends click.Group to invoke a command without explicit subcommand name" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +click = "*" + [[package]] name = "colorama" version = "0.4.4" @@ -354,6 +365,17 @@ zipp = ">=0.5" docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] +[[package]] +name = "incremental" +version = "21.3.0" +description = "A small library that versions your Python projects." +category = "dev" +optional = false +python-versions = "*" + +[package.extras] +scripts = ["click (>=6.0)", "twisted (>=16.4.0)"] + [[package]] name = "iniconfig" version = "1.1.1" @@ -1099,6 +1121,24 @@ category = "main" optional = false python-versions = ">= 3.5" +[[package]] +name = "towncrier" +version = "21.3.0" +description = "Building newsfiles for your project." +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +click = "*" +click-default-group = "*" +incremental = "*" +jinja2 = "*" +toml = "*" + +[package.extras] +dev = ["packaging"] + [[package]] name = "traitlets" version = "5.0.5" @@ -1201,7 +1241,7 @@ redis = ["aioredis"] [metadata] lock-version = "1.1" python-versions = "^3.8" -content-hash = "50a7fd536687179aa4a7fc2dd97f346065b6559328ad5e1d12ec75d45390d3cd" +content-hash = "f6ac17a44b1eec95b101daab369097785a093d9263d0c6cf6c9ef8d363d8962d" [metadata.files] aiofiles = [ @@ -1319,6 +1359,9 @@ click = [ {file = "click-8.0.1-py3-none-any.whl", hash = "sha256:fba402a4a47334742d782209a7c79bc448911afe1149d07bdabdf480b3e2f4b6"}, {file = "click-8.0.1.tar.gz", hash = "sha256:8c04c11192119b1ef78ea049e0a6f0463e4c48ef00a30160c704337586f3ad7a"}, ] +click-default-group = [ + {file = "click-default-group-1.2.2.tar.gz", hash = "sha256:d9560e8e8dfa44b3562fbc9425042a0fd6d21956fcc2db0077f63f34253ab904"}, +] colorama = [ {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, @@ -1421,6 +1464,10 @@ importlib-metadata = [ {file = "importlib_metadata-4.5.0-py3-none-any.whl", hash = "sha256:833b26fb89d5de469b24a390e9df088d4e52e4ba33b01dc5e0e4f41b81a16c00"}, {file = "importlib_metadata-4.5.0.tar.gz", hash = "sha256:b142cc1dd1342f31ff04bb7d022492b09920cb64fed867cd3ea6f80fe3ebd139"}, ] +incremental = [ + {file = "incremental-21.3.0-py2.py3-none-any.whl", hash = "sha256:92014aebc6a20b78a8084cdd5645eeaa7f74b8933f70fa3ada2cfbd1e3b54321"}, + {file = "incremental-21.3.0.tar.gz", hash = "sha256:02f5de5aff48f6b9f665d99d48bfc7ec03b6e3943210de7cfc88856d755d6f57"}, +] iniconfig = [ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, @@ -1883,6 +1930,10 @@ tornado = [ {file = "tornado-6.1-cp39-cp39-win_amd64.whl", hash = "sha256:548430be2740e327b3fe0201abe471f314741efcb0067ec4f2d7dcfb4825f3e4"}, {file = "tornado-6.1.tar.gz", hash = "sha256:33c6e81d7bd55b468d2e793517c909b139960b6c790a60b7991b9b6b76fb9791"}, ] +towncrier = [ + {file = "towncrier-21.3.0-py2.py3-none-any.whl", hash = "sha256:e6ccec65418bbcb8de5c908003e130e37fe0e9d6396cb77c1338241071edc082"}, + {file = "towncrier-21.3.0.tar.gz", hash = "sha256:6eed0bc924d72c98c000cb8a64de3bd566e5cb0d11032b73fcccf8a8f956ddfe"}, +] traitlets = [ {file = "traitlets-5.0.5-py3-none-any.whl", hash = "sha256:69ff3f9d5351f31a7ad80443c2674b7099df13cc41fc5fa6e2f6d3b0330b0426"}, {file = "traitlets-5.0.5.tar.gz", hash = "sha256:178f4ce988f69189f7e523337a3e11d91c786ded9360174a3d9ca83e79bc5396"}, diff --git a/pyproject.toml b/pyproject.toml index 32acbf98..513b6a2c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -81,6 +81,7 @@ sphinx-copybutton = "^0.3.1" furo = "^2021.6.18-beta.36" sphinx-prompt = "^1.3.0" Sphinx-Substitution-Extensions = "^2020.9.30" +towncrier = "^21.3.0" [tool.poetry.extras] @@ -131,6 +132,13 @@ known_third_party = [ "pytest" ] +[tool.towncrier] +package = "aiogram" +filename = "CHANGES.rst" +directory = "CHANGES/" +template = "CHANGES/.template.rst.jinja2" +issue_format = "`#{issue} `_" + [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api"