From f02c12b70ab4d0a6394885b983793f5924b700fc Mon Sep 17 00:00:00 2001 From: sudoskys Date: Wed, 11 Sep 2024 12:40:50 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=F0=9F=92=84=20docs:=20update=20README=20to?= =?UTF-8?q?=20reflect=20completed=20task=20lists?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed incorrect task list completion status and formatting. --- README.md | 5 ++--- playground/use_case.py | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a123e3f..f335462 100644 --- a/README.md +++ b/README.md @@ -48,13 +48,12 @@ pdm add telegramify-markdown - [x] Block Quotes `>` - [x] Strikethrough `~~Strikethrough~~` - [x] Spoilers `||Spoiler||` -- [ ] Task Lists +- [x] Task Lists - [ ] Strikethrough `~Strikethrough~` - [ ] Telegram Emojis - [ ] Telegram User Mentions -> [!NOTE] -> Since mistletoe doesn't parse `- [ ] TODO`, we can't implement it. +> [!NOTE] > Despite `~Strikethrough~` being mentioned in Telegram's official documentation, it can't be parsed as strikethrough. ## Use case diff --git a/playground/use_case.py b/playground/use_case.py index 3fe7ea1..a7c48bc 100644 --- a/playground/use_case.py +++ b/playground/use_case.py @@ -11,7 +11,7 @@ quote = """>test""" task = """ - [x] task1? -- [x] task2? +-- [x] task2? """ test_md = """ **bold text** From e6f5061062057dfa898981781a27b2e6c2077582 Mon Sep 17 00:00:00 2001 From: sudoskys Date: Sat, 28 Sep 2024 00:21:43 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=F0=9F=92=84=20docs:=20update=20README=20to?= =?UTF-8?q?=20reflect=20completed=20task=20lists?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed incorrect task list completion status and formatting. --- .github/result-6.png | Bin 0 -> 71344 bytes README.md | 16 ++++++++++++-- pdm.lock | 5 +++-- playground/show_send.py | 25 +++++++++++++++++----- playground/telegram_exp.py | 8 ++++++- playground/use_case.py | 5 +++++ pyproject.toml | 4 ++-- src/telegramify_markdown/customize.py | 1 + src/telegramify_markdown/render.py | 29 +++++++++++++++++++++++--- 9 files changed, 78 insertions(+), 15 deletions(-) create mode 100644 .github/result-6.png diff --git a/.github/result-6.png b/.github/result-6.png new file mode 100644 index 0000000000000000000000000000000000000000..211de37272d6921d30adf071abd1f5c5ab17618c GIT binary patch literal 71344 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 Quote > Multiline Quote In Markdown it's not possible to send multiline quote in telegram without using code block or html tag but telegramify_markdown can do it. + +> If you quote is too long, it will be automatically set in expandable citation. +> This is the second line of the quote. +> This is the third line of the quote. +> This is the fourth line of the quote. +> This is the fifth line of the quote. + ```python print("Hello, World!") ``` @@ -109,4 +118,7 @@ print(converted) output as follows: -![.github/result.png](.github/result-5.png) +| Exp 1 | Exp 2 | +|---------------------------------|---------------------------------| +| ![result](.github/result-5.png) | ![result](.github/result-6.png) | + diff --git a/pdm.lock b/pdm.lock index 7fef2ef..50c8157 100644 --- a/pdm.lock +++ b/pdm.lock @@ -81,7 +81,7 @@ files = [ [[package]] name = "pytelegrambotapi" -version = "4.22.1" +version = "4.23.0" requires_python = ">=3.8" summary = "Python Telegram bot api." groups = ["default"] @@ -90,7 +90,8 @@ dependencies = [ "requests", ] files = [ - {file = "pytelegrambotapi-4.22.1-py3-none-any.whl", hash = "sha256:58a4bc11b054683ba4ef43452e125c80786bbeffd1ba08dfa45291f56e5d08c4"}, + {file = "pytelegrambotapi-4.23.0-py3-none-any.whl", hash = "sha256:4fd4a64f3d5ec389270cf4f1eacd68f6d25d199e1048b76a1caefcb17fbe214b"}, + {file = "pytelegrambotapi-4.23.0.tar.gz", hash = "sha256:ced74787cfaf59d959799786f12a401cdb3abeb58dcd25568fc91363ba1cccfa"}, ] [[package]] diff --git a/playground/show_send.py b/playground/show_send.py index 85247e9..a9b713d 100644 --- a/playground/show_send.py +++ b/playground/show_send.py @@ -15,6 +15,13 @@ ## Subtitle ### Subsubtitle #### Subsubsubtitle + +\(TEST +\\(TEST +\\\(TEST +\\\\(TEST +\\\\\(TEST + '\_', '\*', '\[', '\]', '\(', '\)', '\~', '\`', '\>', '\#', '\+', '\-', '\=', '\|', '\{', '\}', '\.', '\!' _ , * , [ , ] , ( , ) , ~ , ` , > , # , + , - , = , | , { , } , . , ! We will remove the \ symbol from the original text. @@ -28,15 +35,18 @@ *bold _italic bold ~~italic bold strikethrough ||italic bold strikethrough spoiler||~~ __underline italic bold___ bold* __underline italic bold__ [link](https://www.google.com) - - [ ] Uncompleted task list item -- [ ] __Underline__ ~~Strikethrough~~ _italic_ Item - [x] Completed task list item -- [x] **Bold** ||Spoiler|| `Inline Code` Item - > Quote > Multiline Quote In Markdown it's not possible to send multiline quote in telegram without using code block or html tag but telegramify_markdown can do it. + +> If you quote is too long, it will be automatically set in expandable citation. +> This is the second line of the quote. +> This is the third line of the quote. +> This is the fourth line of the quote. +> This is the fifth line of the quote. + ```python print("Hello, World!") ``` @@ -47,8 +57,13 @@ - Another item. 1. Actual numbers don't matter, just that it's a number """ -converted = telegramify_markdown.convert(md) +converted = telegramify_markdown.markdownify( + md, + max_line_length=None, # If you want to change the max line length for links, images, set it to the desired value. + normalize_whitespace=False +) print(converted) +# export Markdown to Telegram MarkdownV2 style. load_dotenv() telegram_bot_token = os.getenv("TELEGRAM_BOT_TOKEN", None) chat_id = os.getenv("TELEGRAM_CHAT_ID", None) diff --git a/playground/telegram_exp.py b/playground/telegram_exp.py index 9a11e7c..83183e1 100644 --- a/playground/telegram_exp.py +++ b/playground/telegram_exp.py @@ -26,7 +26,13 @@ def ignore(a): """__Hello, World\!__""" ignore(formatting.mstrikethrough("Hello, World!")) """~Hello, World\!~""" -ignore(formatting.mcite("Hello, World!")) +ignore(formatting.mcite("Hello, World!\n2Hello, World!\n3Hello, World!", expandable=True)) +""" +**>Hello, World\! +>2Hello, World\! +>3Hello, World\!|| +""" +ignore(formatting.mcite("Hello, World!", expandable=True)) """>Hello, World\!""" ignore(formatting.escape_markdown("Hello, World!")) """Hello, World\!""" diff --git a/playground/use_case.py b/playground/use_case.py index a7c48bc..1a7393e 100644 --- a/playground/use_case.py +++ b/playground/use_case.py @@ -12,6 +12,11 @@ task = """ - [x] task1? -- [x] task2? + +\\\\( T\\(n\\) \\= 100^\\{10\\} \\\\) 用大 O 记号表示。\\~\\[RULE\\]\n\n观察此函数可知,它是一个常数 + +>1231 + """ test_md = """ **bold text** diff --git a/pyproject.toml b/pyproject.toml index be4670f..c0122d6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,13 +1,13 @@ [project] name = "telegramify-markdown" -version = "0.1.12" +version = "0.1.13" description = "Convert Markdown to a format usable by Telegram." authors = [ { name = "sudoskys", email = "coldlando@hotmail.com" }, ] dependencies = [ "mistletoe==1.4.0", - "pytelegrambotapi>=4.18.1", + "pytelegrambotapi>=4.22.0", ] requires-python = ">=3.8" readme = "README.md" diff --git a/src/telegramify_markdown/customize.py b/src/telegramify_markdown/customize.py index f04c809..7b9deba 100644 --- a/src/telegramify_markdown/customize.py +++ b/src/telegramify_markdown/customize.py @@ -18,5 +18,6 @@ class Symbol(object): markdown_symbol = Symbol() +cite_expandable = True strict_markdown = True unescape_html = False diff --git a/src/telegramify_markdown/render.py b/src/telegramify_markdown/render.py index 6b040e4..878bb2c 100644 --- a/src/telegramify_markdown/render.py +++ b/src/telegramify_markdown/render.py @@ -1,6 +1,6 @@ import html import re -from itertools import chain +from itertools import chain, tee from typing import Iterable from mistletoe import block_token, span_token @@ -9,7 +9,7 @@ from mistletoe.span_token import SpanToken from telebot import formatting -from .customize import markdown_symbol, strict_markdown +from .customize import markdown_symbol, strict_markdown, cite_expandable class Spoiler(SpanToken): @@ -90,12 +90,35 @@ def __init__(self, *extras, **kwargs): def render_quote( self, token: block_token.Quote, max_line_length: int ) -> Iterable[str]: + def add_expanded_suffix(iterable: Iterable[str]) -> Iterable[str]: + iterator = iter(iterable) + try: + previous_item = next(iterator) + except StopIteration: + return iter([]) + for current_item in iterator: + yield previous_item + previous_item = current_item + yield f"{previous_item}||" + max_child_line_length = max_line_length - 2 if max_line_length else None lines = self.blocks_to_lines( token.children, max_line_length=max_child_line_length ) + lines, counter = tee(lines) + total_characters = sum(len(s) for s in counter) # NOTE: Remove the space after the > , but it is not standard markdown - return self.prefix_lines(lines or [""], ">") + append_expanded_cite = cite_expandable and total_characters > 200 + if append_expanded_cite: + first_line_prefix = "**>" + lines = add_expanded_suffix(lines) + else: + first_line_prefix = ">" + yield from self.prefix_lines( + lines or [""], + first_line_prefix=first_line_prefix, + following_line_prefix=">" + ) def render_heading( self, token: block_token.Heading, max_line_length: int From 6874b34eccfe3322c646290b49660f9c78313bc4 Mon Sep 17 00:00:00 2001 From: sudoskys Date: Sat, 28 Sep 2024 00:24:37 +0800 Subject: [PATCH 3/3] :lock: chore(deps): update dependencies and lockfile Updated dependencies and their respective files' hashes in pdm.lock file. --- pdm.lock | 134 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 110 insertions(+), 24 deletions(-) diff --git a/pdm.lock b/pdm.lock index 50c8157..207dbee 100644 --- a/pdm.lock +++ b/pdm.lock @@ -5,24 +5,20 @@ groups = ["default", "dev"] strategy = ["inherit_metadata"] lock_version = "4.5.0" -content_hash = "sha256:e6272602386ebd900fc85c1efa3805fd0f2be20b8ca0e9b4d7083e047df42461" +content_hash = "sha256:3cf8d47cec590c7442b7422fed43475271b9e598e41b3d87929f01cbb4419ce4" [[metadata.targets]] -requires_python = "==3.12.5" -platform = "manylinux_2_40_x86_64" -implementation = "cpython" -gil_disabled = false +requires_python = ">=3.8" [[package]] name = "certifi" -version = "2024.7.4" +version = "2024.8.30" requires_python = ">=3.6" summary = "Python package for providing Mozilla's CA Bundle." groups = ["default"] -marker = "python_full_version == \"3.12.5\"" files = [ - {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, - {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, + {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, + {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, ] [[package]] @@ -31,23 +27,107 @@ version = "3.3.2" requires_python = ">=3.7.0" summary = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." groups = ["default"] -marker = "python_full_version == \"3.12.5\"" files = [ {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] +[[package]] +name = "colorama" +version = "0.4.6" +requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +summary = "Cross-platform colored terminal text." +groups = ["dev"] +marker = "sys_platform == \"win32\"" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + [[package]] name = "idna" -version = "3.7" -requires_python = ">=3.5" +version = "3.10" +requires_python = ">=3.6" summary = "Internationalized Domain Names in Applications (IDNA)" groups = ["default"] -marker = "python_full_version == \"3.12.5\"" files = [ - {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, - {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] [[package]] @@ -56,7 +136,6 @@ version = "0.7.2" requires_python = ">=3.5" summary = "Python logging made (stupidly) simple" groups = ["dev"] -marker = "python_full_version == \"3.12.5\"" dependencies = [ "aiocontextvars>=0.2.0; python_version < \"3.7\"", "colorama>=0.3.4; sys_platform == \"win32\"", @@ -73,7 +152,6 @@ version = "1.4.0" requires_python = "~=3.5" summary = "A fast, extensible Markdown parser in pure Python." groups = ["default"] -marker = "python_full_version == \"3.12.5\"" files = [ {file = "mistletoe-1.4.0-py3-none-any.whl", hash = "sha256:44a477803861de1237ba22e375c6b617690a31d2902b47279d1f8f7ed498a794"}, {file = "mistletoe-1.4.0.tar.gz", hash = "sha256:1630f906e5e4bbe66fdeb4d29d277e2ea515d642bb18a9b49b136361a9818c9d"}, @@ -85,7 +163,6 @@ version = "4.23.0" requires_python = ">=3.8" summary = "Python Telegram bot api." groups = ["default"] -marker = "python_full_version == \"3.12.5\"" dependencies = [ "requests", ] @@ -100,7 +177,6 @@ version = "1.0.1" requires_python = ">=3.8" summary = "Read key-value pairs from a .env file and set them as environment variables" groups = ["dev"] -marker = "python_full_version == \"3.12.5\"" files = [ {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, @@ -112,7 +188,6 @@ version = "2.32.3" requires_python = ">=3.8" summary = "Python HTTP for Humans." groups = ["default"] -marker = "python_full_version == \"3.12.5\"" dependencies = [ "certifi>=2017.4.17", "charset-normalizer<4,>=2", @@ -126,12 +201,23 @@ files = [ [[package]] name = "urllib3" -version = "2.2.2" +version = "2.2.3" requires_python = ">=3.8" summary = "HTTP library with thread-safe connection pooling, file post, and more." groups = ["default"] -marker = "python_full_version == \"3.12.5\"" files = [ - {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, - {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, +] + +[[package]] +name = "win32-setctime" +version = "1.1.0" +requires_python = ">=3.5" +summary = "A small Python utility to set file creation time on Windows" +groups = ["dev"] +marker = "sys_platform == \"win32\"" +files = [ + {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"}, + {file = "win32_setctime-1.1.0.tar.gz", hash = "sha256:15cf5750465118d6929ae4de4eb46e8edae9a5634350c01ba582df868e932cb2"}, ]