From 4abcc1938c487d2f0f74b92f4db7941650f8647a Mon Sep 17 00:00:00 2001 From: JDJG Date: Tue, 19 Mar 2024 23:36:56 -0400 Subject: [PATCH 01/31] Adds new testing feature version. --- cogs/rtfm_slash.py | 5 ++++- requirements.txt | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/cogs/rtfm_slash.py b/cogs/rtfm_slash.py index 9f5a364..bdedae1 100644 --- a/cogs/rtfm_slash.py +++ b/cogs/rtfm_slash.py @@ -23,6 +23,8 @@ class RTFMSlash(commands.Cog): def __init__(self, bot: RTFMBot) -> None: self.bot = bot + @app_commands.user_install() + @app_commands.allow_contexts(guilds=True, dms=True, private_channels=True) @app_commands.command(description="looks up docs", name="rtfm") async def rtfm_slash( self, interaction: discord.Interaction, library: str, query: typing.Optional[str] = None @@ -66,7 +68,8 @@ async def rtfm_error(self, interaction: discord.Interaction, error) -> None: print(error) print(interaction.command) - + @app_commands.user_install() + @app_commands.allow_contexts(guilds=True, dms=True, private_channels=True) @app_commands.command(description="looks up docs from discord developer docs", name="docs") async def docs( self, interaction: discord.Interaction, query: typing.Optional[str] = None diff --git a/requirements.txt b/requirements.txt index 5527107..763bee0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ git+https://github.com/Gorialis/jishaku.git -git+https://github.com/Rapptz/discord.py +git+https://github.com/Rapptz/discord.py@feature/user_apps git+https://github.com/Rapptz/asqlite/ From 9790bf8613a52c83485a0bed4cc581ce938d46db Mon Sep 17 00:00:00 2001 From: JDJG Date: Tue, 19 Mar 2024 23:58:21 -0400 Subject: [PATCH 02/31] Source Added :) --- cogs/rtfm_slash.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/cogs/rtfm_slash.py b/cogs/rtfm_slash.py index bdedae1..a24739c 100644 --- a/cogs/rtfm_slash.py +++ b/cogs/rtfm_slash.py @@ -119,5 +119,22 @@ async def docs_error(self, interaction: discord.Interaction, error) -> None: print(error) print(interaction.command) + @app_commands.user_install() + @app_commands.allow_contexts(guilds=True, dms=True, private_channels=True) + @app_commands.command(description="sends link to bot's source code", name="source") + async def source(self, interaction: discord.Interaction): + + view = discord.ui.View() + view.add_item( + discord.ui.Button( + label=f"Source", + url="https://github.com/JDsProjects/Rtfm-Bot", + style=discord.ButtonStyle.link, + ) + ) + await interaction.response.send_message( + "Source: https://github.com/JDsProjects/Rtfm-Bot", view=view + ) + async def setup(bot: RTFMBot) -> None: await bot.add_cog(RTFMSlash(bot)) From 4a5b5e2103c1d8195d4d6ef84f8afb74c2efc86b Mon Sep 17 00:00:00 2001 From: JDJG Date: Tue, 19 Mar 2024 23:59:56 -0400 Subject: [PATCH 03/31] There --- cogs/rtfm_slash.py | 1 + 1 file changed, 1 insertion(+) diff --git a/cogs/rtfm_slash.py b/cogs/rtfm_slash.py index a24739c..b347715 100644 --- a/cogs/rtfm_slash.py +++ b/cogs/rtfm_slash.py @@ -6,6 +6,7 @@ from discord.app_commands import AppCommandError, Choice from discord.app_commands import command as app_command +import discord from discord.ext import commands from discord import app_commands from utils import fuzzy From b462248c8c1af775e41fe79d42b24b099ace1557 Mon Sep 17 00:00:00 2001 From: "JDJG Inc. Official" Date: Fri, 22 Mar 2024 01:38:18 -0400 Subject: [PATCH 04/31] Adds litestar to rtfm list Seems pretty cool ngl --- bot.db | Bin 8192 -> 8192 bytes data.sql | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/bot.db b/bot.db index e82f88b422426f04fdd23c084bec4b97f9b1986b..6ccd7e165c6480a52ddde05d49a196c4b882fc20 100644 GIT binary patch delta 69 zcmZp0XmHrTBET%owP`ZDfGHE#rj3OqT$<|A%(AXInI);kC5c5DB_##LR{HuW`N_q4 SFhRYP)G~b|{mr+fR9OM&p%!fb delta 24 gcmZp0XmHrTBET%gb$c?qfa%7<`COZCOR2H~0ALaa!vFvP diff --git a/data.sql b/data.sql index c303d38..65de275 100644 --- a/data.sql +++ b/data.sql @@ -28,5 +28,6 @@ INSERT INTO "RTFM_DICTIONARY" ("name","link") VALUES ('aiogifs','https://aiogifs ('pytube','https://pytube.io/en/latest/'), ('quart','https://quart.palletsprojects.com/en/latest/'), ('vt-py','https://virustotal.github.io/vt-py/'), - ('wavelink','https://wavelink.readthedocs.io/en/latest/'); + ('wavelink','https://wavelink.readthedocs.io/en/latest/'), + ('litestar','https://docs.litestar.dev/2/'); COMMIT; From c26909c193e9dab07ab9ac2d7d391467a7ecf07a Mon Sep 17 00:00:00 2001 From: JDJG Date: Mon, 1 Apr 2024 22:06:39 -0400 Subject: [PATCH 05/31] Hmm --- cogs/rtfm_slash.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/cogs/rtfm_slash.py b/cogs/rtfm_slash.py index b347715..245b6dd 100644 --- a/cogs/rtfm_slash.py +++ b/cogs/rtfm_slash.py @@ -28,9 +28,12 @@ def __init__(self, bot: RTFMBot) -> None: @app_commands.allow_contexts(guilds=True, dms=True, private_channels=True) @app_commands.command(description="looks up docs", name="rtfm") async def rtfm_slash( - self, interaction: discord.Interaction, library: str, query: typing.Optional[str] = None + self, interaction: discord.Interaction, library: typing.Optional[str] = None, query: typing.Optional[str] = None ) -> None: """Looks up docs for a library with optionally a query.""" + + library = library or dict(rtfm_dictionary)["master"] + if query is None or query == "No Results Found": return await interaction.response.send_message(f"Alright Let's see \n{library}") @@ -49,7 +52,7 @@ async def rtfm_library_autocomplete(self, interaction: discord.Interaction, curr @rtfm_slash.autocomplete("query") async def rtfm_query_autocomplete(self, interaction: discord.Interaction, current: str) -> list[Choice]: - url = interaction.namespace.library or list(dict(self.rtfm_dictionary).values())[0] + url = interaction.namespace.library or dict(rtfm_dictionary)["master"] unfiltered_results = await utils.rtfm(self.bot, url) all_choices = [Choice(name=result.name, value=result.url.replace(url, "")) for result in unfiltered_results] From 64c0e1313669623ee3bf0c3372443b8dd0ccb8d5 Mon Sep 17 00:00:00 2001 From: JDJG Date: Mon, 1 Apr 2024 22:08:25 -0400 Subject: [PATCH 06/31] There --- cogs/rtfm_slash.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cogs/rtfm_slash.py b/cogs/rtfm_slash.py index 245b6dd..4c4ae4b 100644 --- a/cogs/rtfm_slash.py +++ b/cogs/rtfm_slash.py @@ -32,7 +32,7 @@ async def rtfm_slash( ) -> None: """Looks up docs for a library with optionally a query.""" - library = library or dict(rtfm_dictionary)["master"] + library = library or self.bot.rtfm_libraries["master"] if query is None or query == "No Results Found": return await interaction.response.send_message(f"Alright Let's see \n{library}") @@ -52,7 +52,7 @@ async def rtfm_library_autocomplete(self, interaction: discord.Interaction, curr @rtfm_slash.autocomplete("query") async def rtfm_query_autocomplete(self, interaction: discord.Interaction, current: str) -> list[Choice]: - url = interaction.namespace.library or dict(rtfm_dictionary)["master"] + url = interaction.namespace.library or self.bot.rtfm_libraries["master"] unfiltered_results = await utils.rtfm(self.bot, url) all_choices = [Choice(name=result.name, value=result.url.replace(url, "")) for result in unfiltered_results] From 039729e58a26d2efe08e59517c45430078582f4b Mon Sep 17 00:00:00 2001 From: JDJG Date: Tue, 2 Apr 2024 01:34:06 -0400 Subject: [PATCH 07/31] There --- cogs/rtfm_slash.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cogs/rtfm_slash.py b/cogs/rtfm_slash.py index 4c4ae4b..c1b7291 100644 --- a/cogs/rtfm_slash.py +++ b/cogs/rtfm_slash.py @@ -55,14 +55,14 @@ async def rtfm_query_autocomplete(self, interaction: discord.Interaction, curren url = interaction.namespace.library or self.bot.rtfm_libraries["master"] unfiltered_results = await utils.rtfm(self.bot, url) - all_choices = [Choice(name=result.name, value=result.url.replace(url, "")) for result in unfiltered_results] + all_choices = [Choice(name=result.name, value=result.url.removeprefix(url)) for result in unfiltered_results] if not current: return all_choices[:25] filtered_results = fuzzy.finder(current, unfiltered_results, key=lambda t: t[0]) - results = [Choice(name=result.name, value=result.url.replace(url, "")) for result in filtered_results] + results = [Choice(name=result.name, value=result.url.removeprefix(url)) for result in filtered_results] return results[:25] @@ -96,14 +96,14 @@ async def docs_autocomplete(self, interaction: discord.Interaction, current: str # use new method to handle results from discord ologia, but fuzzy can be used now # I will remove the starting discord api docs if necessary. - all_choices = [Choice(name=result.name, value=result.url.replace(url, "")) for result in unfiltered_results] + all_choices = [Choice(name=result.name, value=result.url.removeprefix(url)) for result in unfiltered_results] if not current: return all_choices[:25] filtered_results = fuzzy.finder(current, unfiltered_results, key=lambda t: t[0]) - results = [Choice(name=result.name, value=result.url.replace(url, "")) for result in filtered_results] + results = [Choice(name=result.name, value=result.url.removeprefix(url)) for result in filtered_results] for result in results: if len(result.value) > 100: @@ -113,7 +113,7 @@ async def docs_autocomplete(self, interaction: discord.Interaction, current: str if not results: result = utils.RtfmObject("Getting Started", "https://discord.com/developers/docs/") - results = [Choice(name=result.name, value=result.url.replace(url, ""))] + results = [Choice(name=result.name, value=result.url.removeprefix(url))] return results[:25] From f12a5d3ac151c457b35f3dd6aeddce1cff3b7ff2 Mon Sep 17 00:00:00 2001 From: JDJG Date: Thu, 18 Apr 2024 02:45:55 -0400 Subject: [PATCH 08/31] Test --- reference.txt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 reference.txt diff --git a/reference.txt b/reference.txt new file mode 100644 index 0000000..a8fa06c --- /dev/null +++ b/reference.txt @@ -0,0 +1,17 @@ +aiohttp==3.9.3 +aiosignal==1.3.1 +asqlite @ git+https://github.com/Rapptz/asqlite/@fcd8ce0672562e440f99eb4b7a56eba16f6abf4e +astunparse==1.6.3 +attrs==23.2.0 +braceexpand==0.1.7 +click==8.1.7 +discord.py @ git+https://github.com/Rapptz/discord.py@08b138cc71fea5594c068082ee565a05cde2c7fa +frozenlist==1.4.1 +idna==3.6 +import-expression==1.1.4 +jishaku @ git+https://github.com/Gorialis/jishaku.git@664e009d80a3deea599a3bcea12be7b548b1ef34 +multidict==6.0.5 +six==1.16.0 +tabulate==0.9.0 +typing_extensions==4.10.0 +yarl==1.9.4 From c1e42c3b246fb09904270c69013d828d5de84fed Mon Sep 17 00:00:00 2001 From: JDJG Date: Thu, 18 Apr 2024 02:50:45 -0400 Subject: [PATCH 09/31] oop --- reference.txt | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 reference.txt diff --git a/reference.txt b/reference.txt deleted file mode 100644 index a8fa06c..0000000 --- a/reference.txt +++ /dev/null @@ -1,17 +0,0 @@ -aiohttp==3.9.3 -aiosignal==1.3.1 -asqlite @ git+https://github.com/Rapptz/asqlite/@fcd8ce0672562e440f99eb4b7a56eba16f6abf4e -astunparse==1.6.3 -attrs==23.2.0 -braceexpand==0.1.7 -click==8.1.7 -discord.py @ git+https://github.com/Rapptz/discord.py@08b138cc71fea5594c068082ee565a05cde2c7fa -frozenlist==1.4.1 -idna==3.6 -import-expression==1.1.4 -jishaku @ git+https://github.com/Gorialis/jishaku.git@664e009d80a3deea599a3bcea12be7b548b1ef34 -multidict==6.0.5 -six==1.16.0 -tabulate==0.9.0 -typing_extensions==4.10.0 -yarl==1.9.4 From c130a4e115c52892495b7b6cc8945f67757782e8 Mon Sep 17 00:00:00 2001 From: Vioshim <63890837+Vioshim@users.noreply.github.com> Date: Sun, 28 Apr 2024 01:20:05 -0500 Subject: [PATCH 10/31] Implements transformers for params in queries --- cogs/rtfm_slash.py | 189 ++++++++++++++++++++++++--------------------- 1 file changed, 103 insertions(+), 86 deletions(-) diff --git a/cogs/rtfm_slash.py b/cogs/rtfm_slash.py index c1b7291..0b84a9b 100644 --- a/cogs/rtfm_slash.py +++ b/cogs/rtfm_slash.py @@ -1,16 +1,15 @@ from __future__ import annotations -import typing -from typing import TYPE_CHECKING import os +from typing import TYPE_CHECKING, Optional -from discord.app_commands import AppCommandError, Choice -from discord.app_commands import command as app_command -import discord -from discord.ext import commands from discord import app_commands -from utils import fuzzy +from discord.app_commands import Choice, Transform, Transformer +from discord.ext import commands + import utils +from utils import fuzzy +from utils.extra import RtfmObject if TYPE_CHECKING: from discord import Interaction @@ -20,51 +19,103 @@ RTFMBot = commands.Bot -class RTFMSlash(commands.Cog): - def __init__(self, bot: RTFMBot) -> None: - self.bot = bot +class LibraryTransformer(Transformer): + async def transform(self, interaction: Interaction[RTFMBot], value: str) -> str: + return interaction.client.rtfm_libraries.get(value, value) + + async def autocomplete(self, interaction: Interaction[RTFMBot], current: str) -> list[Choice]: + choices = [Choice(name=name, value=name) for name in interaction.client.rtfm_libraries] + start_with = list(filter(lambda x: x.name.startswith(current), choices)) or choices + return start_with[:25] + + +class QueryTransformer(Transformer): + async def transform(self, interaction: Interaction[RTFMBot], value: str) -> RtfmObject: + library = interaction.client.rtfm_libraries.get(interaction.namespace.library, interaction.namespace.library) + library = library or "https://discord.com/developers/docs/" + unfiltered_results = await utils.rtfm(interaction.client, library) + if item := fuzzy.find(value, unfiltered_results, key=lambda t: t.name): + return item + + raise commands.BadArgument("No Results Found") + + async def autocomplete(self, interaction: Interaction[RTFMBot], current: str) -> list[Choice]: + library = interaction.client.rtfm_libraries.get(interaction.namespace.library, interaction.namespace.library) + library = library or "https://discord.com/developers/docs/" + unfiltered_results = await utils.rtfm(interaction.client, library) + choices = [ + Choice(name=result.name, value=result.name) + for result in fuzzy.finder(current, unfiltered_results, key=lambda t: t.name) + ] + return choices[:25] + + +class DocsQueryTransformer(Transformer): + async def transform(self, interaction: Interaction[RTFMBot], value: str) -> RtfmObject: + unfiltered_results = await utils.algolia_lookup( + interaction.client, + os.environ["ALGOLIA_APP_ID"], + os.environ["ALGOLIA_API_KEY"], + "discord", + value, + ) - @app_commands.user_install() - @app_commands.allow_contexts(guilds=True, dms=True, private_channels=True) - @app_commands.command(description="looks up docs", name="rtfm") - async def rtfm_slash( - self, interaction: discord.Interaction, library: typing.Optional[str] = None, query: typing.Optional[str] = None - ) -> None: - """Looks up docs for a library with optionally a query.""" + if result := fuzzy.find(value, unfiltered_results, key=lambda t: t.name): + return result + + raise commands.BadArgument("No Results Found") - library = library or self.bot.rtfm_libraries["master"] + async def autocomplete(self, interaction: Interaction[RTFMBot], current: str) -> list[Choice]: + unfiltered_results = await utils.algolia_lookup( + interaction.client, + os.environ["ALGOLIA_APP_ID"], + os.environ["ALGOLIA_API_KEY"], + "discord", + current, + ) + # use new method to handle results from discord ologia, but fuzzy can be used now + # I will remove the starting discord api docs if necessary. - if query is None or query == "No Results Found": - return await interaction.response.send_message(f"Alright Let's see \n{library}") + all_choices = [Choice(name=result.name, value=result.name) for result in unfiltered_results] - await interaction.response.send_message(f"Alright Let's see \n{library+query}") + if not current: + return all_choices[:25] - @rtfm_slash.autocomplete("library") - async def rtfm_library_autocomplete(self, interaction: discord.Interaction, current: str) -> list[Choice]: - libraries = self.bot.rtfm_libraries + filtered_results = fuzzy.finder(current, unfiltered_results, key=lambda t: t.name) - all_choices: list[Choice] = [Choice(name=name, value=link) for name, link in libraries.items()] - startswith: list[Choice] = [choices for choices in all_choices if choices.name.startswith(current)] - if not (current and startswith): - return all_choices[0:25] + results = [Choice(name=result.name, value=result.name) for result in filtered_results] - return startswith[0:25] + if not results: + results = [Choice(name="Getting Started", value="Getting Started")] - @rtfm_slash.autocomplete("query") - async def rtfm_query_autocomplete(self, interaction: discord.Interaction, current: str) -> list[Choice]: - url = interaction.namespace.library or self.bot.rtfm_libraries["master"] - unfiltered_results = await utils.rtfm(self.bot, url) + return results[:25] - all_choices = [Choice(name=result.name, value=result.url.removeprefix(url)) for result in unfiltered_results] - if not current: - return all_choices[:25] +Library = Transform[str, LibraryTransformer] +Query = Transform[RtfmObject, QueryTransformer] +DocsQuery = Transform[RtfmObject, DocsQueryTransformer] - filtered_results = fuzzy.finder(current, unfiltered_results, key=lambda t: t[0]) - results = [Choice(name=result.name, value=result.url.removeprefix(url)) for result in filtered_results] - return results[:25] +class RTFMSlash(commands.Cog): + def __init__(self, bot: RTFMBot) -> None: + self.bot = bot + + @app_commands.command(name="rtfm") + @app_commands.user_install() + @app_commands.allow_contexts(guilds=True, dms=True, private_channels=True) + async def rtfm_slash(self, interaction: Interaction[RTFMBot], library: Library, query: Optional[Query]) -> None: + """Looks up docs for a library with optionally a query. + + Parameters + ---------- + library : str + The library to search for. + query : RtfmObject + The query to search for. + """ + url = query.url if query else library + await interaction.response.send_message(f"Alright Let's see \n{url}") @rtfm_slash.error async def rtfm_error(self, interaction: discord.Interaction, error) -> None: @@ -72,50 +123,18 @@ async def rtfm_error(self, interaction: discord.Interaction, error) -> None: print(error) print(interaction.command) + @app_commands.command() @app_commands.user_install() @app_commands.allow_contexts(guilds=True, dms=True, private_channels=True) - @app_commands.command(description="looks up docs from discord developer docs", name="docs") - async def docs( - self, interaction: discord.Interaction, query: typing.Optional[str] = None - ) -> None: - """Looks up docs from discord developer docs with optionally a query.""" - - url = "https://discord.com/developers/docs/" - if query is None or query == "No Results Found": - # place holder for now. - return await interaction.response.send_message(f"Alright Let's see \n{url}") - - await interaction.response.send_message(f"Alright Let's see \n{url+query}") - - @docs.autocomplete("query") - async def docs_autocomplete(self, interaction: discord.Interaction, current: str) -> list[Choice]: - - url = "https://discord.com/developers/docs/" - - unfiltered_results = await utils.algolia_lookup(self.bot, os.environ["ALGOLIA_APP_ID"], os.environ["ALGOLIA_API_KEY"], "discord", current) - # use new method to handle results from discord ologia, but fuzzy can be used now - # I will remove the starting discord api docs if necessary. - - all_choices = [Choice(name=result.name, value=result.url.removeprefix(url)) for result in unfiltered_results] + async def docs(self, interaction: Interaction[RTFMBot], query: DocsQuery): + """Looks up docs from discord developer docs with optionally a query. - if not current: - return all_choices[:25] - - filtered_results = fuzzy.finder(current, unfiltered_results, key=lambda t: t[0]) - - results = [Choice(name=result.name, value=result.url.removeprefix(url)) for result in filtered_results] - - for result in results: - if len(result.value) > 100: - print(result.value) - - # seems to have issues with some sizes. - - if not results: - result = utils.RtfmObject("Getting Started", "https://discord.com/developers/docs/") - results = [Choice(name=result.name, value=result.url.removeprefix(url))] - - return results[:25] + Parameters + ---------- + query : RtfmObject + The query to search for. + """ + await interaction.response.send_message(f"Alright Let's see \n{query.url}") @docs.error async def docs_error(self, interaction: discord.Interaction, error) -> None: @@ -123,11 +142,11 @@ async def docs_error(self, interaction: discord.Interaction, error) -> None: print(error) print(interaction.command) + @app_commands.command() @app_commands.user_install() @app_commands.allow_contexts(guilds=True, dms=True, private_channels=True) - @app_commands.command(description="sends link to bot's source code", name="source") - async def source(self, interaction: discord.Interaction): - + async def source(self, interaction: Interaction[RTFMBot]): + """Sends link to the bot's source code""" view = discord.ui.View() view.add_item( discord.ui.Button( @@ -136,9 +155,7 @@ async def source(self, interaction: discord.Interaction): style=discord.ButtonStyle.link, ) ) - await interaction.response.send_message( - "Source: https://github.com/JDsProjects/Rtfm-Bot", view=view - ) + await interaction.response.send_message("Source: https://github.com/JDsProjects/Rtfm-Bot", view=view) async def setup(bot: RTFMBot) -> None: await bot.add_cog(RTFMSlash(bot)) From 65efc48f852d85ddfe6885013812538d6716f093 Mon Sep 17 00:00:00 2001 From: JDJG <22802640+JDJGInc@users.noreply.github.com> Date: Sun, 28 Apr 2024 02:30:14 -0400 Subject: [PATCH 11/31] Isort and black ran. --- cogs/__init__.py | 2 +- cogs/rtfm.py | 7 +++---- cogs/rtfm_slash.py | 9 +++++++-- main.py | 11 +++++++---- utils/__init__.py | 4 ++-- utils/extra.py | 22 +++++++++++++++------- utils/fuzzy.py | 11 ++++++++++- utils/simple_paginator.py | 5 ++++- utils/views.py | 21 ++++++++++++--------- 9 files changed, 61 insertions(+), 31 deletions(-) diff --git a/cogs/__init__.py b/cogs/__init__.py index e5d426f..e83970d 100644 --- a/cogs/__init__.py +++ b/cogs/__init__.py @@ -1,3 +1,3 @@ from pkgutil import iter_modules -EXTENSIONS = [module.name for module in iter_modules(__path__, f"{__package__}.")] \ No newline at end of file +EXTENSIONS = [module.name for module in iter_modules(__path__, f"{__package__}.")] diff --git a/cogs/rtfm.py b/cogs/rtfm.py index ef38d03..49b458b 100644 --- a/cogs/rtfm.py +++ b/cogs/rtfm.py @@ -1,13 +1,13 @@ from random import randint from typing import TYPE_CHECKING, Any, Optional, Union +import discord from discord import AllowedMentions, Embed from discord.ext import commands -import discord -from utils.extra import RTFMEmbedPaginator, reference import utils from utils import fuzzy +from utils.extra import RTFMEmbedPaginator, reference if TYPE_CHECKING: from discord.ext.commands import Context @@ -51,14 +51,13 @@ async def rtfm_send(self, ctx, results): message_reference = reference(ctx.message) await ctx.send(embed=embed, reference=message_reference) - @commands.command( aliases=["rtd", "rtfs", "rtdm"], invoke_without_command=True, brief="a rtfm command that allows you to lookup at any library we support looking up(using selects)", ) async def rtfm(self, ctx, *, args=None): - + libraries = [utils.RtfmObject(name, url) for (name, url) in self.bot.rtfm_libraries.items()] view = utils.RtfmChoice(ctx, libraries, timeout=15.0) diff --git a/cogs/rtfm_slash.py b/cogs/rtfm_slash.py index 0b84a9b..80c2043 100644 --- a/cogs/rtfm_slash.py +++ b/cogs/rtfm_slash.py @@ -96,7 +96,6 @@ async def autocomplete(self, interaction: Interaction[RTFMBot], current: str) -> DocsQuery = Transform[RtfmObject, DocsQueryTransformer] - class RTFMSlash(commands.Cog): def __init__(self, bot: RTFMBot) -> None: self.bot = bot @@ -104,7 +103,12 @@ def __init__(self, bot: RTFMBot) -> None: @app_commands.command(name="rtfm") @app_commands.user_install() @app_commands.allow_contexts(guilds=True, dms=True, private_channels=True) - async def rtfm_slash(self, interaction: Interaction[RTFMBot], library: Library, query: Optional[Query]) -> None: + async def rtfm_slash( + self, + interaction: Interaction[RTFMBot], + library: Library, + query: Optional[Query], + ) -> None: """Looks up docs for a library with optionally a query. Parameters @@ -157,5 +161,6 @@ async def source(self, interaction: Interaction[RTFMBot]): ) await interaction.response.send_message("Source: https://github.com/JDsProjects/Rtfm-Bot", view=view) + async def setup(bot: RTFMBot) -> None: await bot.add_cog(RTFMSlash(bot)) diff --git a/main.py b/main.py index f3ea8f2..e17084c 100644 --- a/main.py +++ b/main.py @@ -25,8 +25,10 @@ class RTFMLibraryData(TypedDict): name: str link: str + from cogs import EXTENSIONS + async def get_prefix(client: RTFMBot, message: Message) -> list[str]: extras: list[str] = ["rtfm*", "rm*", "r*"] comp: Pattern[str] = re_compile("^(" + "|".join(map(re_escape, extras)) + ").*", flags=IGNORECASE) @@ -49,7 +51,7 @@ def __init__(self, *, command_prefix: PrefixType[Self], intents: Intents) -> Non async def setup_hook(self) -> None: # load extensions - + for cog in EXTENSIONS: try: await self.load_extension(f"{cog}") @@ -67,8 +69,6 @@ async def setup_hook(self) -> None: rtfm_libraries: list[Row[str]] = await result.fetchall() self.rtfm_libraries = dict(rtfm_libraries) # type: ignore # this is supported. - - async def close(self) -> None: if self.session and not self.session.closed: await self.session.close() @@ -77,7 +77,10 @@ async def close(self) -> None: await super().close() -bot = RTFMBot(command_prefix=get_prefix, intents=Intents(messages=True, message_content=True, guilds=True)) +bot = RTFMBot( + command_prefix=get_prefix, + intents=Intents(messages=True, message_content=True, guilds=True), +) @bot.event diff --git a/utils/__init__.py b/utils/__init__.py index 3302d78..3dabc83 100644 --- a/utils/__init__.py +++ b/utils/__init__.py @@ -1,3 +1,3 @@ -from .extra import reference, RTFMEmbedPaginator, rtfm, RtfmObject, algolia_lookup +from .extra import RTFMEmbedPaginator, RtfmObject, algolia_lookup, reference, rtfm from .simple_paginator import SimplePaginator -from .views import RtfmChoice \ No newline at end of file +from .views import RtfmChoice diff --git a/utils/extra.py b/utils/extra.py index 677465d..de864df 100644 --- a/utils/extra.py +++ b/utils/extra.py @@ -1,8 +1,9 @@ from __future__ import annotations + import json -from random import randint -from typing import TYPE_CHECKING, Any, Optional, NamedTuple import zlib +from random import randint +from typing import TYPE_CHECKING, Any, NamedTuple, Optional from discord import Embed, Message @@ -10,6 +11,7 @@ if TYPE_CHECKING: from discord import MessageReference + from ..main import RTFMBot else: MessageReference = Any @@ -28,7 +30,8 @@ def reference(message) -> Optional[MessageReference]: class RTFMEmbedPaginator(SimplePaginator): def format_page(self, page: str) -> Embed: return Embed(title="Packages:", description=page, color=randint(0, 16777215)) - + + class RtfmObject(NamedTuple): name: str url: str @@ -36,8 +39,9 @@ class RtfmObject(NamedTuple): def __str__(self) -> str: return self.name + async def rtfm(bot: RTFMBot, url: str) -> list[RtfmObject]: - + async with await bot.session.get(f"{url}objects.inv") as response: lines = (await response.read()).split(b"\n") @@ -73,7 +77,7 @@ async def rtfm(bot: RTFMBot, url: str) -> list[RtfmObject]: async def algolia_lookup(bot: RTFMBot, app_id: str, app_key: str, index: str, query: str): - + results = [] headers = { @@ -85,10 +89,14 @@ async def algolia_lookup(bot: RTFMBot, app_id: str, app_key: str, index: str, qu # Construct complete JSON string data_string = json.dumps({"query": query}) - async with await bot.session.post(f"https://{app_id}.algolia.net/1/indexes/{index}/query", data=data_string, headers=headers) as response: + async with await bot.session.post( + f"https://{app_id}.algolia.net/1/indexes/{index}/query", + data=data_string, + headers=headers, + ) as response: if not response.ok: - results [RtfmObject("Getting Started", "https://discord.com/developers/docs/")] + results[RtfmObject("Getting Started", "https://discord.com/developers/docs/")] # quick fix. return results diff --git a/utils/fuzzy.py b/utils/fuzzy.py index d18e222..8532f6b 100644 --- a/utils/fuzzy.py +++ b/utils/fuzzy.py @@ -17,7 +17,16 @@ import heapq import re from difflib import SequenceMatcher -from typing import Callable, Generator, Iterable, Literal, Optional, Sequence, TypeVar, overload +from typing import ( + Callable, + Generator, + Iterable, + Literal, + Optional, + Sequence, + TypeVar, + overload, +) T = TypeVar("T") diff --git a/utils/simple_paginator.py b/utils/simple_paginator.py index a4ff819..8198134 100644 --- a/utils/simple_paginator.py +++ b/utils/simple_paginator.py @@ -88,7 +88,10 @@ async def update(self, interaction: Interaction) -> None: self.message = interaction.message async def start( - self, ctx: Optional[Context] = None, interaction: Optional[Interaction] = None, **kwargs + self, + ctx: Optional[Context] = None, + interaction: Optional[Interaction] = None, + **kwargs, ) -> Optional[PossibleMessage]: kwargs = await self.get_page_kwargs(self.current_page) if self.message: diff --git a/utils/views.py b/utils/views.py index e564b93..422c7a7 100644 --- a/utils/views.py +++ b/utils/views.py @@ -1,8 +1,16 @@ import discord + class RtfmSelects(discord.ui.Select): def __init__(self, options, *args, **kwargs): - super().__init__(placeholder="Chose a library to lookup from.", min_values=1, max_values=1, options=options, *args, **kwargs) + super().__init__( + placeholder="Chose a library to lookup from.", + min_values=1, + max_values=1, + options=options, + *args, + **kwargs, + ) async def callback(self, interaction: discord.Interaction): self.view.value = self.values[0] @@ -17,17 +25,12 @@ def __init__(self, ctx, libraries, **kwargs): libraries2 = libraries[25:] libraries = libraries[:25] - self.value = [o.url for o in libraries][0] self.ctx = ctx - self.add_item( - RtfmSelects([discord.SelectOption(label=o.name, value=o.url, emoji="🔍") for o in libraries]) - ) - self.add_item( - RtfmSelects([discord.SelectOption(label=o.name, value=o.url, emoji="🔍") for o in libraries2]) - ) + self.add_item(RtfmSelects([discord.SelectOption(label=o.name, value=o.url, emoji="🔍") for o in libraries])) + self.add_item(RtfmSelects([discord.SelectOption(label=o.name, value=o.url, emoji="🔍") for o in libraries2])) async def interaction_check(self, interaction: discord.Interaction): if self.ctx.author.id != interaction.user.id: @@ -42,4 +45,4 @@ async def on_timeout(self): for item in self.children: item.disabled = True - await self.message.edit(content="Here's the default...", view=self) \ No newline at end of file + await self.message.edit(content="Here's the default...", view=self) From 982e2bd468dee267af3b088f6dface4422d48350 Mon Sep 17 00:00:00 2001 From: JDJG Date: Sun, 28 Apr 2024 02:36:18 -0400 Subject: [PATCH 12/31] Possible fix. --- cogs/rtfm_slash.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cogs/rtfm_slash.py b/cogs/rtfm_slash.py index 80c2043..3b4f7a8 100644 --- a/cogs/rtfm_slash.py +++ b/cogs/rtfm_slash.py @@ -102,7 +102,7 @@ def __init__(self, bot: RTFMBot) -> None: @app_commands.command(name="rtfm") @app_commands.user_install() - @app_commands.allow_contexts(guilds=True, dms=True, private_channels=True) + @app_commands.allowed_contexts(guilds=True, dms=True, private_channels=True) async def rtfm_slash( self, interaction: Interaction[RTFMBot], @@ -129,7 +129,7 @@ async def rtfm_error(self, interaction: discord.Interaction, error) -> None: @app_commands.command() @app_commands.user_install() - @app_commands.allow_contexts(guilds=True, dms=True, private_channels=True) + @app_commands.allowed_contexts(guilds=True, dms=True, private_channels=True) async def docs(self, interaction: Interaction[RTFMBot], query: DocsQuery): """Looks up docs from discord developer docs with optionally a query. @@ -148,7 +148,7 @@ async def docs_error(self, interaction: discord.Interaction, error) -> None: @app_commands.command() @app_commands.user_install() - @app_commands.allow_contexts(guilds=True, dms=True, private_channels=True) + @app_commands.allowed_contexts(guilds=True, dms=True, private_channels=True) async def source(self, interaction: Interaction[RTFMBot]): """Sends link to the bot's source code""" view = discord.ui.View() From 20e1341dba31819cbe36cae1e4ee4b0402ab321e Mon Sep 17 00:00:00 2001 From: JDJG Date: Sun, 28 Apr 2024 02:37:38 -0400 Subject: [PATCH 13/31] There --- utils/extra.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/utils/extra.py b/utils/extra.py index de864df..42a0559 100644 --- a/utils/extra.py +++ b/utils/extra.py @@ -43,6 +43,12 @@ def __str__(self) -> str: async def rtfm(bot: RTFMBot, url: str) -> list[RtfmObject]: async with await bot.session.get(f"{url}objects.inv") as response: + + if not response.ok: + + results[RtfmObject("Blocked Url", url)] + # quick fix. + lines = (await response.read()).split(b"\n") first_10_lines = lines[:10] From 163d8571e53add6a6fef23b04f1f8da43fa0868d Mon Sep 17 00:00:00 2001 From: JDJG Date: Sun, 28 Apr 2024 02:38:28 -0400 Subject: [PATCH 14/31] There --- utils/extra.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/utils/extra.py b/utils/extra.py index 42a0559..2ddb385 100644 --- a/utils/extra.py +++ b/utils/extra.py @@ -49,6 +49,8 @@ async def rtfm(bot: RTFMBot, url: str) -> list[RtfmObject]: results[RtfmObject("Blocked Url", url)] # quick fix. + return results + lines = (await response.read()).split(b"\n") first_10_lines = lines[:10] From 1599df0eafcb9f0fd19ff622c6445b26ceba6dcb Mon Sep 17 00:00:00 2001 From: JDJG Date: Sun, 28 Apr 2024 02:39:06 -0400 Subject: [PATCH 15/31] Fixed lol --- utils/extra.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/extra.py b/utils/extra.py index 2ddb385..d645689 100644 --- a/utils/extra.py +++ b/utils/extra.py @@ -46,7 +46,7 @@ async def rtfm(bot: RTFMBot, url: str) -> list[RtfmObject]: if not response.ok: - results[RtfmObject("Blocked Url", url)] + results = [RtfmObject("Blocked Url", url)] # quick fix. return results @@ -104,7 +104,7 @@ async def algolia_lookup(bot: RTFMBot, app_id: str, app_key: str, index: str, qu ) as response: if not response.ok: - results[RtfmObject("Getting Started", "https://discord.com/developers/docs/")] + results = [RtfmObject("Getting Started", "https://discord.com/developers/docs/")] # quick fix. return results From 0ceb6d0202666b00876daf29271fae058c45850d Mon Sep 17 00:00:00 2001 From: JDJG Date: Sun, 28 Apr 2024 03:29:25 -0400 Subject: [PATCH 16/31] Quick fix. --- cogs/rtfm_slash.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cogs/rtfm_slash.py b/cogs/rtfm_slash.py index 3b4f7a8..d18b23c 100644 --- a/cogs/rtfm_slash.py +++ b/cogs/rtfm_slash.py @@ -32,7 +32,7 @@ async def autocomplete(self, interaction: Interaction[RTFMBot], current: str) -> class QueryTransformer(Transformer): async def transform(self, interaction: Interaction[RTFMBot], value: str) -> RtfmObject: library = interaction.client.rtfm_libraries.get(interaction.namespace.library, interaction.namespace.library) - library = library or "https://discord.com/developers/docs/" + library = library or self.interaction.client.rtfm_libraries["master"] unfiltered_results = await utils.rtfm(interaction.client, library) if item := fuzzy.find(value, unfiltered_results, key=lambda t: t.name): return item @@ -41,7 +41,7 @@ async def transform(self, interaction: Interaction[RTFMBot], value: str) -> Rtfm async def autocomplete(self, interaction: Interaction[RTFMBot], current: str) -> list[Choice]: library = interaction.client.rtfm_libraries.get(interaction.namespace.library, interaction.namespace.library) - library = library or "https://discord.com/developers/docs/" + library = library or self.interaction.client.rtfm_libraries["master"] unfiltered_results = await utils.rtfm(interaction.client, library) choices = [ Choice(name=result.name, value=result.name) From 700a43ed9e142f9d8b1c8ec47e2f091981ba94bd Mon Sep 17 00:00:00 2001 From: JDJG Date: Sun, 28 Apr 2024 03:31:55 -0400 Subject: [PATCH 17/31] There --- utils/extra.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/utils/extra.py b/utils/extra.py index d645689..367051b 100644 --- a/utils/extra.py +++ b/utils/extra.py @@ -58,7 +58,15 @@ async def rtfm(bot: RTFMBot, url: str) -> list[RtfmObject]: lines = first_10_lines + lines[10:] joined_lines = b"\n".join(lines) - full_data = zlib.decompress(joined_lines) + + try: + full_data = zlib.decompress(joined_lines) + + except: + results = [RtfmObject("Getting Started", url)] + return results + # should fix invalid results + normal_data = full_data.decode() new_list = normal_data.split("\n") From 2310e286e4eea4f16dc8ca9ea06f930ccd2fc7b4 Mon Sep 17 00:00:00 2001 From: JDJG Date: Sun, 28 Apr 2024 03:34:49 -0400 Subject: [PATCH 18/31] There --- cogs/rtfm_slash.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cogs/rtfm_slash.py b/cogs/rtfm_slash.py index d18b23c..3862bb1 100644 --- a/cogs/rtfm_slash.py +++ b/cogs/rtfm_slash.py @@ -106,7 +106,7 @@ def __init__(self, bot: RTFMBot) -> None: async def rtfm_slash( self, interaction: Interaction[RTFMBot], - library: Library, + library: Optional[Library], query: Optional[Query], ) -> None: """Looks up docs for a library with optionally a query. From 8c6752f36a649f152723293228677f8ba0c2e614 Mon Sep 17 00:00:00 2001 From: JDJG Date: Sun, 28 Apr 2024 03:39:02 -0400 Subject: [PATCH 19/31] There --- cogs/rtfm_slash.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cogs/rtfm_slash.py b/cogs/rtfm_slash.py index 3862bb1..b8b269b 100644 --- a/cogs/rtfm_slash.py +++ b/cogs/rtfm_slash.py @@ -32,7 +32,7 @@ async def autocomplete(self, interaction: Interaction[RTFMBot], current: str) -> class QueryTransformer(Transformer): async def transform(self, interaction: Interaction[RTFMBot], value: str) -> RtfmObject: library = interaction.client.rtfm_libraries.get(interaction.namespace.library, interaction.namespace.library) - library = library or self.interaction.client.rtfm_libraries["master"] + library = library or interaction.client.rtfm_libraries["master"] unfiltered_results = await utils.rtfm(interaction.client, library) if item := fuzzy.find(value, unfiltered_results, key=lambda t: t.name): return item @@ -41,7 +41,7 @@ async def transform(self, interaction: Interaction[RTFMBot], value: str) -> Rtfm async def autocomplete(self, interaction: Interaction[RTFMBot], current: str) -> list[Choice]: library = interaction.client.rtfm_libraries.get(interaction.namespace.library, interaction.namespace.library) - library = library or self.interaction.client.rtfm_libraries["master"] + library = library or interaction.client.rtfm_libraries["master"] unfiltered_results = await utils.rtfm(interaction.client, library) choices = [ Choice(name=result.name, value=result.name) From 5d4841a26d1ea4dc80551ec4881757f930197343 Mon Sep 17 00:00:00 2001 From: JDJG Date: Sun, 28 Apr 2024 03:41:00 -0400 Subject: [PATCH 20/31] There --- cogs/rtfm_slash.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cogs/rtfm_slash.py b/cogs/rtfm_slash.py index b8b269b..40b2ec3 100644 --- a/cogs/rtfm_slash.py +++ b/cogs/rtfm_slash.py @@ -130,7 +130,7 @@ async def rtfm_error(self, interaction: discord.Interaction, error) -> None: @app_commands.command() @app_commands.user_install() @app_commands.allowed_contexts(guilds=True, dms=True, private_channels=True) - async def docs(self, interaction: Interaction[RTFMBot], query: DocsQuery): + async def docs(self, interaction: Interaction[RTFMBot], query: Optional[DocsQuery] = None): """Looks up docs from discord developer docs with optionally a query. Parameters @@ -138,6 +138,10 @@ async def docs(self, interaction: Interaction[RTFMBot], query: DocsQuery): query : RtfmObject The query to search for. """ + + if not query: + return await interaction.response.send_message("https://discord.com/developers/docs/") + await interaction.response.send_message(f"Alright Let's see \n{query.url}") @docs.error From 44faa9fb92aae83d9149433c582c8ffa13bebbff Mon Sep 17 00:00:00 2001 From: JDJG Date: Tue, 30 Apr 2024 21:11:34 -0400 Subject: [PATCH 21/31] Fixed --- cogs/rtfm_slash.py | 1 + 1 file changed, 1 insertion(+) diff --git a/cogs/rtfm_slash.py b/cogs/rtfm_slash.py index 40b2ec3..f4e5f90 100644 --- a/cogs/rtfm_slash.py +++ b/cogs/rtfm_slash.py @@ -3,6 +3,7 @@ import os from typing import TYPE_CHECKING, Optional +import discord from discord import app_commands from discord.app_commands import Choice, Transform, Transformer from discord.ext import commands From 3139773324c69a6080ecb8fa018e6c7cc84008ad Mon Sep 17 00:00:00 2001 From: JDJG Date: Fri, 3 May 2024 21:57:03 -0400 Subject: [PATCH 22/31] Fixes shadowing issue and naming issue. --- utils/extra.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/utils/extra.py b/utils/extra.py index 367051b..726819e 100644 --- a/utils/extra.py +++ b/utils/extra.py @@ -73,7 +73,9 @@ async def rtfm(bot: RTFMBot, url: str) -> list[RtfmObject]: results = [] for x in new_list: try: - name, type, _, fragment, *label = x.split(" ") + name, python_type, number, fragment, *label = x.split(" ") + # fixes shadowing tested with print(name, type, _) + # ('discord.Activity.emoji', 'py:attribute', '1') text = " ".join(label) From 1063b32f792bf1d86ec1f5773c67c1861bedbc78 Mon Sep 17 00:00:00 2001 From: JDJG <22802640+JDJGInc@users.noreply.github.com> Date: Fri, 3 May 2024 22:34:22 -0400 Subject: [PATCH 23/31] Revert "Fixes shadowing issue and naming issue." This reverts commit 3139773324c69a6080ecb8fa018e6c7cc84008ad. --- utils/extra.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/utils/extra.py b/utils/extra.py index 726819e..367051b 100644 --- a/utils/extra.py +++ b/utils/extra.py @@ -73,9 +73,7 @@ async def rtfm(bot: RTFMBot, url: str) -> list[RtfmObject]: results = [] for x in new_list: try: - name, python_type, number, fragment, *label = x.split(" ") - # fixes shadowing tested with print(name, type, _) - # ('discord.Activity.emoji', 'py:attribute', '1') + name, type, _, fragment, *label = x.split(" ") text = " ".join(label) From b1a42c520e5e8a47cd5a93196dac5ae0dbecaf59 Mon Sep 17 00:00:00 2001 From: JDJG <22802640+JDJGInc@users.noreply.github.com> Date: Fri, 3 May 2024 22:35:10 -0400 Subject: [PATCH 24/31] Reapply "Fixes shadowing issue and naming issue." This reverts commit 1063b32f792bf1d86ec1f5773c67c1861bedbc78. --- utils/extra.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/utils/extra.py b/utils/extra.py index 367051b..726819e 100644 --- a/utils/extra.py +++ b/utils/extra.py @@ -73,7 +73,9 @@ async def rtfm(bot: RTFMBot, url: str) -> list[RtfmObject]: results = [] for x in new_list: try: - name, type, _, fragment, *label = x.split(" ") + name, python_type, number, fragment, *label = x.split(" ") + # fixes shadowing tested with print(name, type, _) + # ('discord.Activity.emoji', 'py:attribute', '1') text = " ".join(label) From 03a79ff9637d56f2238ca33c60e4b17cde9c6657 Mon Sep 17 00:00:00 2001 From: JDJG Date: Fri, 3 May 2024 22:36:35 -0400 Subject: [PATCH 25/31] Add comment about stuff. --- utils/extra.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/utils/extra.py b/utils/extra.py index 726819e..ed0a852 100644 --- a/utils/extra.py +++ b/utils/extra.py @@ -91,6 +91,8 @@ async def rtfm(bot: RTFMBot, url: str) -> list[RtfmObject]: fragment = fragment.replace("$", name) results.append(RtfmObject(label, url + fragment)) + # results needs to get rid of duplicates at least duplicate urls. + return results From ae4ec2c4dd2a8eedb97c59f7f11cdb410e22977b Mon Sep 17 00:00:00 2001 From: JDJG Date: Sun, 5 May 2024 06:56:12 -0400 Subject: [PATCH 26/31] Update requirements.txt Changed it back to regular dpy. --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 763bee0..5527107 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ git+https://github.com/Gorialis/jishaku.git -git+https://github.com/Rapptz/discord.py@feature/user_apps +git+https://github.com/Rapptz/discord.py git+https://github.com/Rapptz/asqlite/ From 3dc5d32a250e8db4bcbbd225cb9dc7eeb5f48595 Mon Sep 17 00:00:00 2001 From: JDJG Date: Sun, 5 May 2024 07:03:07 -0400 Subject: [PATCH 27/31] Added poetry.lock and pyproject.toml --- poetry.lock | 621 +++++++++++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 19 ++ 2 files changed, 640 insertions(+) create mode 100644 poetry.lock create mode 100644 pyproject.toml diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..d1ac8b6 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,621 @@ +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. + +[[package]] +name = "aiohttp" +version = "3.9.5" +description = "Async http client/server framework (asyncio)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "aiohttp-3.9.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fcde4c397f673fdec23e6b05ebf8d4751314fa7c24f93334bf1f1364c1c69ac7"}, + {file = "aiohttp-3.9.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5d6b3f1fabe465e819aed2c421a6743d8debbde79b6a8600739300630a01bf2c"}, + {file = "aiohttp-3.9.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6ae79c1bc12c34082d92bf9422764f799aee4746fd7a392db46b7fd357d4a17a"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d3ebb9e1316ec74277d19c5f482f98cc65a73ccd5430540d6d11682cd857430"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84dabd95154f43a2ea80deffec9cb44d2e301e38a0c9d331cc4aa0166fe28ae3"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8a02fbeca6f63cb1f0475c799679057fc9268b77075ab7cf3f1c600e81dd46b"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c26959ca7b75ff768e2776d8055bf9582a6267e24556bb7f7bd29e677932be72"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:714d4e5231fed4ba2762ed489b4aec07b2b9953cf4ee31e9871caac895a839c0"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e7a6a8354f1b62e15d48e04350f13e726fa08b62c3d7b8401c0a1314f02e3558"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c413016880e03e69d166efb5a1a95d40f83d5a3a648d16486592c49ffb76d0db"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ff84aeb864e0fac81f676be9f4685f0527b660f1efdc40dcede3c251ef1e867f"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ad7f2919d7dac062f24d6f5fe95d401597fbb015a25771f85e692d043c9d7832"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:702e2c7c187c1a498a4e2b03155d52658fdd6fda882d3d7fbb891a5cf108bb10"}, + {file = "aiohttp-3.9.5-cp310-cp310-win32.whl", hash = "sha256:67c3119f5ddc7261d47163ed86d760ddf0e625cd6246b4ed852e82159617b5fb"}, + {file = "aiohttp-3.9.5-cp310-cp310-win_amd64.whl", hash = "sha256:471f0ef53ccedec9995287f02caf0c068732f026455f07db3f01a46e49d76bbb"}, + {file = "aiohttp-3.9.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e0ae53e33ee7476dd3d1132f932eeb39bf6125083820049d06edcdca4381f342"}, + {file = "aiohttp-3.9.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c088c4d70d21f8ca5c0b8b5403fe84a7bc8e024161febdd4ef04575ef35d474d"}, + {file = "aiohttp-3.9.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:639d0042b7670222f33b0028de6b4e2fad6451462ce7df2af8aee37dcac55424"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f26383adb94da5e7fb388d441bf09c61e5e35f455a3217bfd790c6b6bc64b2ee"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66331d00fb28dc90aa606d9a54304af76b335ae204d1836f65797d6fe27f1ca2"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ff550491f5492ab5ed3533e76b8567f4b37bd2995e780a1f46bca2024223233"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f22eb3a6c1080d862befa0a89c380b4dafce29dc6cd56083f630073d102eb595"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a81b1143d42b66ffc40a441379387076243ef7b51019204fd3ec36b9f69e77d6"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f64fd07515dad67f24b6ea4a66ae2876c01031de91c93075b8093f07c0a2d93d"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:93e22add827447d2e26d67c9ac0161756007f152fdc5210277d00a85f6c92323"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:55b39c8684a46e56ef8c8d24faf02de4a2b2ac60d26cee93bc595651ff545de9"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4715a9b778f4293b9f8ae7a0a7cef9829f02ff8d6277a39d7f40565c737d3771"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:afc52b8d969eff14e069a710057d15ab9ac17cd4b6753042c407dcea0e40bf75"}, + {file = "aiohttp-3.9.5-cp311-cp311-win32.whl", hash = "sha256:b3df71da99c98534be076196791adca8819761f0bf6e08e07fd7da25127150d6"}, + {file = "aiohttp-3.9.5-cp311-cp311-win_amd64.whl", hash = "sha256:88e311d98cc0bf45b62fc46c66753a83445f5ab20038bcc1b8a1cc05666f428a"}, + {file = "aiohttp-3.9.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:c7a4b7a6cf5b6eb11e109a9755fd4fda7d57395f8c575e166d363b9fc3ec4678"}, + {file = "aiohttp-3.9.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0a158704edf0abcac8ac371fbb54044f3270bdbc93e254a82b6c82be1ef08f3c"}, + {file = "aiohttp-3.9.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d153f652a687a8e95ad367a86a61e8d53d528b0530ef382ec5aaf533140ed00f"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82a6a97d9771cb48ae16979c3a3a9a18b600a8505b1115cfe354dfb2054468b4"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60cdbd56f4cad9f69c35eaac0fbbdf1f77b0ff9456cebd4902f3dd1cf096464c"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8676e8fd73141ded15ea586de0b7cda1542960a7b9ad89b2b06428e97125d4fa"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da00da442a0e31f1c69d26d224e1efd3a1ca5bcbf210978a2ca7426dfcae9f58"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18f634d540dd099c262e9f887c8bbacc959847cfe5da7a0e2e1cf3f14dbf2daf"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:320e8618eda64e19d11bdb3bd04ccc0a816c17eaecb7e4945d01deee2a22f95f"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:2faa61a904b83142747fc6a6d7ad8fccff898c849123030f8e75d5d967fd4a81"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:8c64a6dc3fe5db7b1b4d2b5cb84c4f677768bdc340611eca673afb7cf416ef5a"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:393c7aba2b55559ef7ab791c94b44f7482a07bf7640d17b341b79081f5e5cd1a"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c671dc117c2c21a1ca10c116cfcd6e3e44da7fcde37bf83b2be485ab377b25da"}, + {file = "aiohttp-3.9.5-cp312-cp312-win32.whl", hash = "sha256:5a7ee16aab26e76add4afc45e8f8206c95d1d75540f1039b84a03c3b3800dd59"}, + {file = "aiohttp-3.9.5-cp312-cp312-win_amd64.whl", hash = "sha256:5ca51eadbd67045396bc92a4345d1790b7301c14d1848feaac1d6a6c9289e888"}, + {file = "aiohttp-3.9.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:694d828b5c41255e54bc2dddb51a9f5150b4eefa9886e38b52605a05d96566e8"}, + {file = "aiohttp-3.9.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0605cc2c0088fcaae79f01c913a38611ad09ba68ff482402d3410bf59039bfb8"}, + {file = "aiohttp-3.9.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4558e5012ee03d2638c681e156461d37b7a113fe13970d438d95d10173d25f78"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dbc053ac75ccc63dc3a3cc547b98c7258ec35a215a92bd9f983e0aac95d3d5b"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4109adee842b90671f1b689901b948f347325045c15f46b39797ae1bf17019de"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6ea1a5b409a85477fd8e5ee6ad8f0e40bf2844c270955e09360418cfd09abac"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3c2890ca8c59ee683fd09adf32321a40fe1cf164e3387799efb2acebf090c11"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3916c8692dbd9d55c523374a3b8213e628424d19116ac4308e434dbf6d95bbdd"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8d1964eb7617907c792ca00b341b5ec3e01ae8c280825deadbbd678447b127e1"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d5ab8e1f6bee051a4bf6195e38a5c13e5e161cb7bad83d8854524798bd9fcd6e"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:52c27110f3862a1afbcb2af4281fc9fdc40327fa286c4625dfee247c3ba90156"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:7f64cbd44443e80094309875d4f9c71d0401e966d191c3d469cde4642bc2e031"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8b4f72fbb66279624bfe83fd5eb6aea0022dad8eec62b71e7bf63ee1caadeafe"}, + {file = "aiohttp-3.9.5-cp38-cp38-win32.whl", hash = "sha256:6380c039ec52866c06d69b5c7aad5478b24ed11696f0e72f6b807cfb261453da"}, + {file = "aiohttp-3.9.5-cp38-cp38-win_amd64.whl", hash = "sha256:da22dab31d7180f8c3ac7c7635f3bcd53808f374f6aa333fe0b0b9e14b01f91a"}, + {file = "aiohttp-3.9.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1732102949ff6087589408d76cd6dea656b93c896b011ecafff418c9661dc4ed"}, + {file = "aiohttp-3.9.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c6021d296318cb6f9414b48e6a439a7f5d1f665464da507e8ff640848ee2a58a"}, + {file = "aiohttp-3.9.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:239f975589a944eeb1bad26b8b140a59a3a320067fb3cd10b75c3092405a1372"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b7b30258348082826d274504fbc7c849959f1989d86c29bc355107accec6cfb"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd2adf5c87ff6d8b277814a28a535b59e20bfea40a101db6b3bdca7e9926bc24"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9a3d838441bebcf5cf442700e3963f58b5c33f015341f9ea86dcd7d503c07e2"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e3a1ae66e3d0c17cf65c08968a5ee3180c5a95920ec2731f53343fac9bad106"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c69e77370cce2d6df5d12b4e12bdcca60c47ba13d1cbbc8645dd005a20b738b"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0cbf56238f4bbf49dab8c2dc2e6b1b68502b1e88d335bea59b3f5b9f4c001475"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d1469f228cd9ffddd396d9948b8c9cd8022b6d1bf1e40c6f25b0fb90b4f893ed"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:45731330e754f5811c314901cebdf19dd776a44b31927fa4b4dbecab9e457b0c"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:3fcb4046d2904378e3aeea1df51f697b0467f2aac55d232c87ba162709478c46"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8cf142aa6c1a751fcb364158fd710b8a9be874b81889c2bd13aa8893197455e2"}, + {file = "aiohttp-3.9.5-cp39-cp39-win32.whl", hash = "sha256:7b179eea70833c8dee51ec42f3b4097bd6370892fa93f510f76762105568cf09"}, + {file = "aiohttp-3.9.5-cp39-cp39-win_amd64.whl", hash = "sha256:38d80498e2e169bc61418ff36170e0aad0cd268da8b38a17c4cf29d254a8b3f1"}, + {file = "aiohttp-3.9.5.tar.gz", hash = "sha256:edea7d15772ceeb29db4aff55e482d4bcfb6ae160ce144f2682de02f6d693551"}, +] + +[package.dependencies] +aiosignal = ">=1.1.2" +attrs = ">=17.3.0" +frozenlist = ">=1.1.1" +multidict = ">=4.5,<7.0" +yarl = ">=1.0,<2.0" + +[package.extras] +speedups = ["Brotli", "aiodns", "brotlicffi"] + +[[package]] +name = "aiosignal" +version = "1.3.1" +description = "aiosignal: a list of registered asynchronous callbacks" +optional = false +python-versions = ">=3.7" +files = [ + {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"}, + {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"}, +] + +[package.dependencies] +frozenlist = ">=1.1.0" + +[[package]] +name = "asqlite" +version = "2.0.0a0" +description = "A simple and easy to use async wrapper for sqlite3." +optional = false +python-versions = ">=3.8.0" +files = [] +develop = false + +[package.source] +type = "git" +url = "https://github.com/Rapptz/asqlite/" +reference = "HEAD" +resolved_reference = "fcd8ce0672562e440f99eb4b7a56eba16f6abf4e" + +[[package]] +name = "astunparse" +version = "1.6.3" +description = "An AST unparser for Python" +optional = false +python-versions = "*" +files = [ + {file = "astunparse-1.6.3-py2.py3-none-any.whl", hash = "sha256:c2652417f2c8b5bb325c885ae329bdf3f86424075c4fd1a128674bc6fba4b8e8"}, + {file = "astunparse-1.6.3.tar.gz", hash = "sha256:5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872"}, +] + +[package.dependencies] +six = ">=1.6.1,<2.0" +wheel = ">=0.23.0,<1.0" + +[[package]] +name = "attrs" +version = "23.2.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.7" +files = [ + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, +] + +[package.extras] +cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] +dev = ["attrs[tests]", "pre-commit"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] +tests = ["attrs[tests-no-zope]", "zope-interface"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] + +[[package]] +name = "braceexpand" +version = "0.1.7" +description = "Bash-style brace expansion for Python" +optional = false +python-versions = "*" +files = [ + {file = "braceexpand-0.1.7-py2.py3-none-any.whl", hash = "sha256:91332d53de7828103dcae5773fb43bc34950b0c8160e35e0f44c4427a3b85014"}, + {file = "braceexpand-0.1.7.tar.gz", hash = "sha256:e6e539bd20eaea53547472ff94f4fb5c3d3bf9d0a89388c4b56663aba765f705"}, +] + +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +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 = "discord.py" +version = "2.4.0a5015+g71358b8d" +description = "A Python wrapper for the Discord API" +optional = false +python-versions = ">=3.8.0" +files = [] +develop = false + +[package.dependencies] +aiohttp = ">=3.7.4,<4" + +[package.extras] +docs = ["sphinx (==4.4.0)", "sphinx-inline-tabs (==2023.4.21)", "sphinxcontrib-applehelp (==1.0.4)", "sphinxcontrib-devhelp (==1.0.2)", "sphinxcontrib-htmlhelp (==2.0.1)", "sphinxcontrib-jsmath (==1.0.1)", "sphinxcontrib-qthelp (==1.0.3)", "sphinxcontrib-serializinghtml (==1.1.5)", "sphinxcontrib-trio (==1.1.2)", "sphinxcontrib-websupport (==1.2.4)", "typing-extensions (>=4.3,<5)"] +speed = ["Brotli", "aiodns (>=1.1)", "cchardet (==2.1.7)", "orjson (>=3.5.4)"] +test = ["coverage[toml]", "pytest", "pytest-asyncio", "pytest-cov", "pytest-mock", "typing-extensions (>=4.3,<5)", "tzdata"] +voice = ["PyNaCl (>=1.3.0,<1.6)"] + +[package.source] +type = "git" +url = "https://github.com/Rapptz/discord.py" +reference = "HEAD" +resolved_reference = "71358b8dcea1923558fb0e51f641d5881e825bf4" + +[[package]] +name = "frozenlist" +version = "1.4.1" +description = "A list-like structure which implements collections.abc.MutableSequence" +optional = false +python-versions = ">=3.8" +files = [ + {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"}, + {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"}, + {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"}, + {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"}, + {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"}, + {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"}, + {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"}, + {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"}, + {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"}, + {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"}, + {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"}, + {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"}, + {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"}, + {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"}, + {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, +] + +[[package]] +name = "idna" +version = "3.7" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, +] + +[[package]] +name = "import-expression" +version = "1.1.4" +description = "Parses a superset of Python allowing for inline module import expressions" +optional = false +python-versions = "*" +files = [ + {file = "import_expression-1.1.4-py3-none-any.whl", hash = "sha256:292099910a4dcc65ba562377cd2265487ba573dd63d73bdee5deec36ca49555b"}, + {file = "import_expression-1.1.4.tar.gz", hash = "sha256:06086a6ab3bfa528b1c478e633d6adf2b3a990e31440f6401b0f3ea12b0659a9"}, +] + +[package.dependencies] +astunparse = ">=1.6.3,<2.0.0" + +[package.extras] +test = ["pytest", "pytest-cov"] + +[[package]] +name = "jishaku" +version = "2.5.2a500+g5189eaf.master" +description = "A discord.py extension including useful tools for bot development and debugging." +optional = false +python-versions = ">=3.8.0" +files = [] +develop = false + +[package.dependencies] +braceexpand = ">=0.1.7" +click = ">=8.1.7" +"discord.py" = ">=2.3.2" +import_expression = ">=1.1.4,<2.0.0" +tabulate = ">=0.9.0" +typing-extensions = ">=4.3,<5" + +[package.extras] +docs = ["Sphinx (>=4.4.0)", "sphinxcontrib_trio (>=1.1.2)"] +procinfo = ["psutil (>=5.9.5)"] +profiling = ["line-profiler (>=4.1.1)"] +publish = ["Jinja2 (>=3.1.2)"] +test = ["coverage (>=7.3.2)", "flake8 (>=6.1.0)", "isort (>=5.12.0)", "pylint (>=3.0.1)", "pytest (>=7.4.2)", "pytest-asyncio (>=0.21.0)", "pytest-cov (>=4.1.0)", "pytest-mock (>=3.11.1)"] +voice = ["discord.py[voice] (>=2.3.2)", "yt-dlp (>=2023.10.13)"] + +[package.source] +type = "git" +url = "https://github.com/Gorialis/jishaku.git" +reference = "HEAD" +resolved_reference = "5189eafb7417e580f203d14e43243186aa199a50" + +[[package]] +name = "multidict" +version = "6.0.5" +description = "multidict implementation" +optional = false +python-versions = ">=3.7" +files = [ + {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:228b644ae063c10e7f324ab1ab6b548bdf6f8b47f3ec234fef1093bc2735e5f9"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:896ebdcf62683551312c30e20614305f53125750803b614e9e6ce74a96232604"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:411bf8515f3be9813d06004cac41ccf7d1cd46dfe233705933dd163b60e37600"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d147090048129ce3c453f0292e7697d333db95e52616b3793922945804a433c"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:215ed703caf15f578dca76ee6f6b21b7603791ae090fbf1ef9d865571039ade5"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c6390cf87ff6234643428991b7359b5f59cc15155695deb4eda5c777d2b880f"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fd81c4ebdb4f214161be351eb5bcf385426bf023041da2fd9e60681f3cebae"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3cc2ad10255f903656017363cd59436f2111443a76f996584d1077e43ee51182"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6939c95381e003f54cd4c5516740faba40cf5ad3eeff460c3ad1d3e0ea2549bf"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:220dd781e3f7af2c2c1053da9fa96d9cf3072ca58f057f4c5adaaa1cab8fc442"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:766c8f7511df26d9f11cd3a8be623e59cca73d44643abab3f8c8c07620524e4a"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:fe5d7785250541f7f5019ab9cba2c71169dc7d74d0f45253f8313f436458a4ef"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c1c1496e73051918fcd4f58ff2e0f2f3066d1c76a0c6aeffd9b45d53243702cc"}, + {file = "multidict-6.0.5-cp310-cp310-win32.whl", hash = "sha256:7afcdd1fc07befad18ec4523a782cde4e93e0a2bf71239894b8d61ee578c1319"}, + {file = "multidict-6.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:99f60d34c048c5c2fabc766108c103612344c46e35d4ed9ae0673d33c8fb26e8"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f285e862d2f153a70586579c15c44656f888806ed0e5b56b64489afe4a2dbfba"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:53689bb4e102200a4fafa9de9c7c3c212ab40a7ab2c8e474491914d2305f187e"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:612d1156111ae11d14afaf3a0669ebf6c170dbb735e510a7438ffe2369a847fd"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7be7047bd08accdb7487737631d25735c9a04327911de89ff1b26b81745bd4e3"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de170c7b4fe6859beb8926e84f7d7d6c693dfe8e27372ce3b76f01c46e489fcf"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04bde7a7b3de05732a4eb39c94574db1ec99abb56162d6c520ad26f83267de29"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85f67aed7bb647f93e7520633d8f51d3cbc6ab96957c71272b286b2f30dc70ed"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425bf820055005bfc8aa9a0b99ccb52cc2f4070153e34b701acc98d201693733"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d3eb1ceec286eba8220c26f3b0096cf189aea7057b6e7b7a2e60ed36b373b77f"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7901c05ead4b3fb75113fb1dd33eb1253c6d3ee37ce93305acd9d38e0b5f21a4"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e0e79d91e71b9867c73323a3444724d496c037e578a0e1755ae159ba14f4f3d1"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:29bfeb0dff5cb5fdab2023a7a9947b3b4af63e9c47cae2a10ad58394b517fddc"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e030047e85cbcedbfc073f71836d62dd5dadfbe7531cae27789ff66bc551bd5e"}, + {file = "multidict-6.0.5-cp311-cp311-win32.whl", hash = "sha256:2f4848aa3baa109e6ab81fe2006c77ed4d3cd1e0ac2c1fbddb7b1277c168788c"}, + {file = "multidict-6.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:2faa5ae9376faba05f630d7e5e6be05be22913782b927b19d12b8145968a85ea"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:51d035609b86722963404f711db441cf7134f1889107fb171a970c9701f92e1e"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cbebcd5bcaf1eaf302617c114aa67569dd3f090dd0ce8ba9e35e9985b41ac35b"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ffc42c922dbfddb4a4c3b438eb056828719f07608af27d163191cb3e3aa6cc5"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ceb3b7e6a0135e092de86110c5a74e46bda4bd4fbfeeb3a3bcec79c0f861e450"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79660376075cfd4b2c80f295528aa6beb2058fd289f4c9252f986751a4cd0496"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4428b29611e989719874670fd152b6625500ad6c686d464e99f5aaeeaca175a"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d84a5c3a5f7ce6db1f999fb9438f686bc2e09d38143f2d93d8406ed2dd6b9226"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76c0de87358b192de7ea9649beb392f107dcad9ad27276324c24c91774ca5271"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:79a6d2ba910adb2cbafc95dad936f8b9386e77c84c35bc0add315b856d7c3abb"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:92d16a3e275e38293623ebf639c471d3e03bb20b8ebb845237e0d3664914caef"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:fb616be3538599e797a2017cccca78e354c767165e8858ab5116813146041a24"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:14c2976aa9038c2629efa2c148022ed5eb4cb939e15ec7aace7ca932f48f9ba6"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:435a0984199d81ca178b9ae2c26ec3d49692d20ee29bc4c11a2a8d4514c67eda"}, + {file = "multidict-6.0.5-cp312-cp312-win32.whl", hash = "sha256:9fe7b0653ba3d9d65cbe7698cca585bf0f8c83dbbcc710db9c90f478e175f2d5"}, + {file = "multidict-6.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:01265f5e40f5a17f8241d52656ed27192be03bfa8764d88e8220141d1e4b3556"}, + {file = "multidict-6.0.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:19fe01cea168585ba0f678cad6f58133db2aa14eccaf22f88e4a6dccadfad8b3"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf7a982604375a8d49b6cc1b781c1747f243d91b81035a9b43a2126c04766f5"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:107c0cdefe028703fb5dafe640a409cb146d44a6ae201e55b35a4af8e95457dd"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:403c0911cd5d5791605808b942c88a8155c2592e05332d2bf78f18697a5fa15e"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aeaf541ddbad8311a87dd695ed9642401131ea39ad7bc8cf3ef3967fd093b626"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4972624066095e52b569e02b5ca97dbd7a7ddd4294bf4e7247d52635630dd83"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d946b0a9eb8aaa590df1fe082cee553ceab173e6cb5b03239716338629c50c7a"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b55358304d7a73d7bdf5de62494aaf70bd33015831ffd98bc498b433dfe5b10c"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:a3145cb08d8625b2d3fee1b2d596a8766352979c9bffe5d7833e0503d0f0b5e5"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d65f25da8e248202bd47445cec78e0025c0fe7582b23ec69c3b27a640dd7a8e3"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c9bf56195c6bbd293340ea82eafd0071cb3d450c703d2c93afb89f93b8386ccc"}, + {file = "multidict-6.0.5-cp37-cp37m-win32.whl", hash = "sha256:69db76c09796b313331bb7048229e3bee7928eb62bab5e071e9f7fcc4879caee"}, + {file = "multidict-6.0.5-cp37-cp37m-win_amd64.whl", hash = "sha256:fce28b3c8a81b6b36dfac9feb1de115bab619b3c13905b419ec71d03a3fc1423"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76f067f5121dcecf0d63a67f29080b26c43c71a98b10c701b0677e4a065fbd54"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b82cc8ace10ab5bd93235dfaab2021c70637005e1ac787031f4d1da63d493c1d"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5cb241881eefd96b46f89b1a056187ea8e9ba14ab88ba632e68d7a2ecb7aadf7"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e94e6912639a02ce173341ff62cc1201232ab86b8a8fcc05572741a5dc7d93"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09a892e4a9fb47331da06948690ae38eaa2426de97b4ccbfafbdcbe5c8f37ff8"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55205d03e8a598cfc688c71ca8ea5f66447164efff8869517f175ea632c7cb7b"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37b15024f864916b4951adb95d3a80c9431299080341ab9544ed148091b53f50"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2a1dee728b52b33eebff5072817176c172050d44d67befd681609b4746e1c2e"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:edd08e6f2f1a390bf137080507e44ccc086353c8e98c657e666c017718561b89"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:60d698e8179a42ec85172d12f50b1668254628425a6bd611aba022257cac1386"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3d25f19500588cbc47dc19081d78131c32637c25804df8414463ec908631e453"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4cc0ef8b962ac7a5e62b9e826bd0cd5040e7d401bc45a6835910ed699037a461"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:eca2e9d0cc5a889850e9bbd68e98314ada174ff6ccd1129500103df7a94a7a44"}, + {file = "multidict-6.0.5-cp38-cp38-win32.whl", hash = "sha256:4a6a4f196f08c58c59e0b8ef8ec441d12aee4125a7d4f4fef000ccb22f8d7241"}, + {file = "multidict-6.0.5-cp38-cp38-win_amd64.whl", hash = "sha256:0275e35209c27a3f7951e1ce7aaf93ce0d163b28948444bec61dd7badc6d3f8c"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e7be68734bd8c9a513f2b0cfd508802d6609da068f40dc57d4e3494cefc92929"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1d9ea7a7e779d7a3561aade7d596649fbecfa5c08a7674b11b423783217933f9"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ea1456df2a27c73ce51120fa2f519f1bea2f4a03a917f4a43c8707cf4cbbae1a"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf590b134eb70629e350691ecca88eac3e3b8b3c86992042fb82e3cb1830d5e1"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c0631926c4f58e9a5ccce555ad7747d9a9f8b10619621f22f9635f069f6233e"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dce1c6912ab9ff5f179eaf6efe7365c1f425ed690b03341911bf4939ef2f3046"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0868d64af83169e4d4152ec612637a543f7a336e4a307b119e98042e852ad9c"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:141b43360bfd3bdd75f15ed811850763555a251e38b2405967f8e25fb43f7d40"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7df704ca8cf4a073334e0427ae2345323613e4df18cc224f647f251e5e75a527"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6214c5a5571802c33f80e6c84713b2c79e024995b9c5897f794b43e714daeec9"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:cd6c8fca38178e12c00418de737aef1261576bd1b6e8c6134d3e729a4e858b38"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e02021f87a5b6932fa6ce916ca004c4d441509d33bbdbeca70d05dff5e9d2479"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ebd8d160f91a764652d3e51ce0d2956b38efe37c9231cd82cfc0bed2e40b581c"}, + {file = "multidict-6.0.5-cp39-cp39-win32.whl", hash = "sha256:04da1bb8c8dbadf2a18a452639771951c662c5ad03aefe4884775454be322c9b"}, + {file = "multidict-6.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:d6f6d4f185481c9669b9447bf9d9cf3b95a0e9df9d169bbc17e363b7d5487755"}, + {file = "multidict-6.0.5-py3-none-any.whl", hash = "sha256:0d63c74e3d7ab26de115c49bffc92cc77ed23395303d496eae515d4204a625e7"}, + {file = "multidict-6.0.5.tar.gz", hash = "sha256:f7e301075edaf50500f0b341543c41194d8df3ae5caf4702f2095f3ca73dd8da"}, +] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + +[[package]] +name = "tabulate" +version = "0.9.0" +description = "Pretty-print tabular data" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f"}, + {file = "tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c"}, +] + +[package.extras] +widechars = ["wcwidth"] + +[[package]] +name = "typing-extensions" +version = "4.11.0" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, + {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, +] + +[[package]] +name = "wheel" +version = "0.43.0" +description = "A built-package format for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "wheel-0.43.0-py3-none-any.whl", hash = "sha256:55c570405f142630c6b9f72fe09d9b67cf1477fcf543ae5b8dcb1f5b7377da81"}, + {file = "wheel-0.43.0.tar.gz", hash = "sha256:465ef92c69fa5c5da2d1cf8ac40559a8c940886afcef87dcf14b9470862f1d85"}, +] + +[package.extras] +test = ["pytest (>=6.0.0)", "setuptools (>=65)"] + +[[package]] +name = "yarl" +version = "1.9.4" +description = "Yet another URL library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e"}, + {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2"}, + {file = "yarl-1.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541"}, + {file = "yarl-1.9.4-cp310-cp310-win32.whl", hash = "sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d"}, + {file = "yarl-1.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98"}, + {file = "yarl-1.9.4-cp311-cp311-win32.whl", hash = "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31"}, + {file = "yarl-1.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10"}, + {file = "yarl-1.9.4-cp312-cp312-win32.whl", hash = "sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7"}, + {file = "yarl-1.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984"}, + {file = "yarl-1.9.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434"}, + {file = "yarl-1.9.4-cp37-cp37m-win32.whl", hash = "sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749"}, + {file = "yarl-1.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3"}, + {file = "yarl-1.9.4-cp38-cp38-win32.whl", hash = "sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece"}, + {file = "yarl-1.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0"}, + {file = "yarl-1.9.4-cp39-cp39-win32.whl", hash = "sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575"}, + {file = "yarl-1.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15"}, + {file = "yarl-1.9.4-py3-none-any.whl", hash = "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad"}, + {file = "yarl-1.9.4.tar.gz", hash = "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf"}, +] + +[package.dependencies] +idna = ">=2.0" +multidict = ">=4.0" + +[metadata] +lock-version = "2.0" +python-versions = ">3.11" +content-hash = "14c71bdd70e3ba0231676538ba7bfadb1198b39f8ab3c0625e436e861af42f90" diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..83b1265 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,19 @@ +[tool.poetry] +name = "rtfm-bot" +version = "0.1.0" +description = "" +authors = ["JDBot "] +license = "MIT" +readme = "README.md" + +[tool.poetry.dependencies] +python = ">3.11" +jishaku = {git = "https://github.com/Gorialis/jishaku.git"} +asqlite = {git = "https://github.com/Rapptz/asqlite/"} + +[tool.poetry.group.dev.dependencies] +discord-py = {git = "https://github.com/Rapptz/discord.py"} + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" From 1be33bb4315478712177bfcecfe5a0705e96ce24 Mon Sep 17 00:00:00 2001 From: JDJG Date: Sun, 5 May 2024 07:10:45 -0400 Subject: [PATCH 28/31] updated poetry.lock --- poetry.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/poetry.lock b/poetry.lock index d1ac8b6..988a4f8 100644 --- a/poetry.lock +++ b/poetry.lock @@ -207,7 +207,7 @@ develop = false aiohttp = ">=3.7.4,<4" [package.extras] -docs = ["sphinx (==4.4.0)", "sphinx-inline-tabs (==2023.4.21)", "sphinxcontrib-applehelp (==1.0.4)", "sphinxcontrib-devhelp (==1.0.2)", "sphinxcontrib-htmlhelp (==2.0.1)", "sphinxcontrib-jsmath (==1.0.1)", "sphinxcontrib-qthelp (==1.0.3)", "sphinxcontrib-serializinghtml (==1.1.5)", "sphinxcontrib-trio (==1.1.2)", "sphinxcontrib-websupport (==1.2.4)", "typing-extensions (>=4.3,<5)"] +docs = ["sphinx (==4.4.0)", "sphinx-inline-tabs (==2023.4.21)", "sphinxcontrib-applehelp (==1.0.4)", "sphinxcontrib-devhelp (==1.0.2)", "sphinxcontrib-htmlhelp (==2.0.1)", "sphinxcontrib-jsmath (==1.0.1)", "sphinxcontrib-qthelp (==1.0.3)", "sphinxcontrib-serializinghtml (==1.1.5)", "sphinxcontrib-websupport (==1.2.4)", "sphinxcontrib_trio (==1.1.2)", "typing-extensions (>=4.3,<5)"] speed = ["Brotli", "aiodns (>=1.1)", "cchardet (==2.1.7)", "orjson (>=3.5.4)"] test = ["coverage[toml]", "pytest", "pytest-asyncio", "pytest-cov", "pytest-mock", "typing-extensions (>=4.3,<5)", "tzdata"] voice = ["PyNaCl (>=1.3.0,<1.6)"] From 3b5990b13fc2014c3a9c715f28b66095bf5ed2af Mon Sep 17 00:00:00 2001 From: JDJG Date: Sun, 5 May 2024 07:11:14 -0400 Subject: [PATCH 29/31] Update pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 83b1265..1c18406 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ license = "MIT" readme = "README.md" [tool.poetry.dependencies] -python = ">3.11" +python = ">=3.11" jishaku = {git = "https://github.com/Gorialis/jishaku.git"} asqlite = {git = "https://github.com/Rapptz/asqlite/"} From 0f0221789d44fae118f28665064c94ccae8c2765 Mon Sep 17 00:00:00 2001 From: JDJG Date: Sun, 5 May 2024 07:12:07 -0400 Subject: [PATCH 30/31] Updates rtfm_slash --- cogs/rtfm_slash.py | 1 - 1 file changed, 1 deletion(-) diff --git a/cogs/rtfm_slash.py b/cogs/rtfm_slash.py index f992bc5..f4e5f90 100644 --- a/cogs/rtfm_slash.py +++ b/cogs/rtfm_slash.py @@ -169,4 +169,3 @@ async def source(self, interaction: Interaction[RTFMBot]): async def setup(bot: RTFMBot) -> None: await bot.add_cog(RTFMSlash(bot)) - \ No newline at end of file From 80f0a9b76888409071600f6353d564a732a091cb Mon Sep 17 00:00:00 2001 From: JDJG Date: Sun, 5 May 2024 07:12:40 -0400 Subject: [PATCH 31/31] Updates a few files: --- utils/extra.py | 1 - utils/views.py | 5 ++--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/utils/extra.py b/utils/extra.py index 5056160..ed0a852 100644 --- a/utils/extra.py +++ b/utils/extra.py @@ -128,4 +128,3 @@ async def algolia_lookup(bot: RTFMBot, app_id: str, app_key: str, index: str, qu results.append(RtfmObject(value["anchor"], value["url"])) return results - \ No newline at end of file diff --git a/utils/views.py b/utils/views.py index bda03fe..422c7a7 100644 --- a/utils/views.py +++ b/utils/views.py @@ -29,8 +29,8 @@ def __init__(self, ctx, libraries, **kwargs): self.value = [o.url for o in libraries][0] self.ctx = ctx - self.add_item(RtfmSelects([discord.SelectOption(label=o.name, value=o.url, emoji=":mag:") for o in libraries])) - self.add_item(RtfmSelects([discord.SelectOption(label=o.name, value=o.url, emoji=":mag:") for o in libraries2])) + self.add_item(RtfmSelects([discord.SelectOption(label=o.name, value=o.url, emoji="🔍") for o in libraries])) + self.add_item(RtfmSelects([discord.SelectOption(label=o.name, value=o.url, emoji="🔍") for o in libraries2])) async def interaction_check(self, interaction: discord.Interaction): if self.ctx.author.id != interaction.user.id: @@ -46,4 +46,3 @@ async def on_timeout(self): item.disabled = True await self.message.edit(content="Here's the default...", view=self) - \ No newline at end of file