diff --git a/jarvis/__init__.py b/jarvis/__init__.py index 7ffcdad..20b4da5 100644 --- a/jarvis/__init__.py +++ b/jarvis/__init__.py @@ -4,6 +4,7 @@ from functools import partial from typing import Any import jurigged +from statipy.db import init_db from interactions import Intents from jarvis_core.db import connect from jarvis_core.log import get_logger @@ -65,12 +66,14 @@ async def run() -> None: logger.addHandler(file_handler) # Configure client - intents = Intents.DEFAULT | Intents.MESSAGES | Intents.GUILD_MEMBERS | Intents.GUILD_MESSAGE_CONTENT + intents = Intents.DEFAULT | Intents.MESSAGES | Intents.GUILD_MEMBERS | Intents.GUILD_MESSAGES redis_config = jconfig.redis.copy() redis_host = redis_config.pop("host") redis = await aioredis.from_url(redis_host, decode_responses=True, **redis_config) + await init_db(**jconfig.mongo["connect"]) + jarvis = Jarvis( intents=intents, sync_interactions=jconfig.sync, @@ -99,8 +102,9 @@ async def run() -> None: for extension in get_extensions(cogs_path): jarvis.load_extension(extension) logger.debug("Loaded %s", extension) - logger.debug("Loading nafftrack") - jarvis.load_extension("nafftrack.extension") + + logger.debug("Loading statipy") + jarvis.load_extension("statipy.ext") jarvis.max_messages = jconfig.max_messages logger.debug("Running JARVIS") diff --git a/jarvis/client/__init__.py b/jarvis/client/__init__.py index c46ed93..980877f 100644 --- a/jarvis/client/__init__.py +++ b/jarvis/client/__init__.py @@ -6,6 +6,7 @@ from interactions import Client from interactions.ext.prefixed_commands.context import PrefixedContext from interactions.models.internal.context import BaseContext, InteractionContext from jarvis_core.util.ansi import Fore, Format, fmt +from statipy import StatipyClient from jarvis.client.errors import ErrorMixin from jarvis.client.events import EventMixin @@ -19,7 +20,7 @@ VAL_FMT = fmt(Fore.WHITE) CMD_FMT = fmt(Fore.GREEN, Format.BOLD) -class Jarvis(Client, ErrorMixin, EventMixin, TaskMixin): +class Jarvis(StatipyClient, ErrorMixin, EventMixin, TaskMixin): def __init__(self, redis: "aioredis.Redis", *args, **kwargs): # noqa: ANN002 ANN003 super().__init__(*args, **kwargs) self.redis = redis diff --git a/jarvis/client/errors.py b/jarvis/client/errors.py index 37f97e0..fba1ba8 100644 --- a/jarvis/client/errors.py +++ b/jarvis/client/errors.py @@ -18,7 +18,7 @@ DEFAULT_SITE = "https://paste.zevs.me" ERROR_MSG = """ Command Information: Guild: {guild_name} - Name: {invoked_name} + Name: {invoke_target} Args: {arg_str} @@ -74,7 +74,7 @@ class ErrorMixin: full_message = ERROR_MSG.format( guild_name=ctx.guild.name, error_time=error_time, - invoked_name=name, + invoke_target=name, arg_str=arg_str, callback_args=callback_args, callback_kwargs=callback_kwargs, diff --git a/jarvis/client/events/__init__.py b/jarvis/client/events/__init__.py index 7548a46..e84ffae 100644 --- a/jarvis/client/events/__init__.py +++ b/jarvis/client/events/__init__.py @@ -2,6 +2,7 @@ import asyncio from aiohttp import ClientSession +from beanie.operators import Set from interactions import listen from interactions.ext.prefixed_commands.context import PrefixedContext from interactions.models.discord.channel import DMChannel @@ -11,12 +12,12 @@ from interactions.models.internal.context import BaseContext, InteractionContext from jarvis_core.db import q from jarvis_core.db.models import Reminder, Setting from jarvis_core.util.ansi import RESET, Fore, Format, fmt +from statipy.db import StaticStat from jarvis import const from jarvis.client.events.components import ComponentEventMixin from jarvis.client.events.member import MemberEventMixin from jarvis.client.events.message import MessageEventMixin -from jarvis.tracking import jarvis_info from jarvis.utils import build_embed KEY_FMT = fmt(Fore.GRAY) @@ -27,9 +28,11 @@ CMD_FMT = fmt(Fore.GREEN, Format.BOLD) class EventMixin(MemberEventMixin, MessageEventMixin, ComponentEventMixin): async def _chunk_all(self) -> None: """Chunk all guilds.""" - for guild in self.guilds: - self.logger.debug(f"Chunking guild {guild.name} <{guild.id}>") - await guild.chunk_guild() + self.logger.warn("Deprecated function, nothing will happen") + # for guild in self.guilds: + # if not guild.chunked.is_set(): + # self.logger.debug(f"Chunking guild {guild.name} <{guild.id}>") + # await guild.chunk_guild() async def _sync_domains(self) -> None: self.logger.debug("Loading phishing domains") @@ -42,7 +45,20 @@ class EventMixin(MemberEventMixin, MessageEventMixin, ComponentEventMixin): @listen() async def on_startup(self) -> None: """NAFF on_startup override. Prometheus info generated here.""" - jarvis_info.info({"version": const.__version__}) + await StaticStat.find_one(StaticStat.name == "jarvis_version", StaticStat.client_id == self.user.id).upsert( + Set( + { + StaticStat.client_name: self.client_name, + StaticStat.value: const.__version__, + } + ), + on_insert=StaticStat( + name="jarvis_version", + client_id=self.user.id, + client_name=self.client_name, + value=const.__version__, + ), + ) try: if not self.synced: await self._sync_domains() diff --git a/jarvis/client/events/message.py b/jarvis/client/events/message.py index 72ef468..3eec546 100644 --- a/jarvis/client/events/message.py +++ b/jarvis/client/events/message.py @@ -3,13 +3,14 @@ import re from datetime import datetime, timedelta, timezone from aiohttp import ClientSession +from beanie.operators import Inc, Set from interactions import listen from interactions.api.events.discord import MessageCreate, MessageDelete, MessageUpdate from interactions.client.utils.misc_utils import find_all from interactions.models.discord.channel import DMChannel, GuildText from interactions.models.discord.components import ActionRow, Button from interactions.models.discord.embed import EmbedField -from interactions.models.discord.enums import ButtonStyles, Permissions +from interactions.models.discord.enums import ButtonStyle, Permissions from interactions.models.discord.message import Message from interactions.models.discord.user import Member from jarvis_core.db import q @@ -24,11 +25,12 @@ from jarvis_core.db.models import ( Warning, ) from jarvis_core.filters import invites, url +from statipy.db import Stat from jarvis.branding import get_command_color from jarvis.embeds.admin import warning_embed -from jarvis.tracking import malicious_tracker, warnings_tracker from jarvis.utils import build_embed +from jarvis.tracking import WarningMetadata class MessageEventMixin: @@ -99,8 +101,16 @@ class MessageEventMixin: reason="Sent an invite link", user=message.author.id, ).commit() - tracker = warnings_tracker.labels(guild_id=message.guild.id, guild_name=message.guild.name) - tracker.inc() + md = WarningMetadata( + client_id=self.user.id, + client_name=self.client_name, + name="warning", + type="invite", + guild_id=message.guild.id, + guild_name=message.guild.name, + value=1, + ) + await Stat(meta=md).insert() embed = warning_embed(message.author, "Sent an invite link", self.user) try: await message.channel.send(embeds=embed) @@ -123,8 +133,16 @@ class MessageEventMixin: reason="Sent a message with a filtered word", user=message.author.id, ).commit() - tracker = warnings_tracker.labels(guild_id=message.guild.id, guild_name=message.guild.name) - tracker.inc() + md = WarningMetadata( + client_id=self.user.id, + client_name=self.client_name, + name="warning", + type="filter", + guild_id=message.guild.id, + guild_name=message.guild.name, + value=1, + ) + await Stat(meta=md).insert() embed = warning_embed(message.author, "Sent a message with a filtered word", self.user) try: await message.reply(embeds=embed) @@ -169,8 +187,16 @@ class MessageEventMixin: reason="Mass Mention", user=message.author.id, ).commit() - tracker = warnings_tracker.labels(guild_id=message.guild.id, guild_name=message.guild.name) - tracker.inc() + md = WarningMetadata( + client_id=self.user.id, + client_name=self.client_name, + name="warning", + type="massmention", + guild_id=message.guild.id, + guild_name=message.guild.name, + value=1, + ) + await Stat(meta=md).insert() embed = warning_embed(message.author, "Mass Mention", self.user) try: await message.channel.send(embeds=embed) @@ -233,8 +259,16 @@ class MessageEventMixin: reason="Pinged a blocked role/user with a blocked role", user=message.author.id, ).commit() - tracker = warnings_tracker.labels(guild_id=message.guild.id, guild_name=message.guild.name) - tracker.inc() + md = WarningMetadata( + client_id=self.user.id, + client_name=self.client_name, + name="warning", + type="roleping", + guild_id=message.guild.id, + guild_name=message.guild.name, + value=1, + ) + await Stat(meta=md).insert() embed = warning_embed(message.author, "Pinged a blocked role/user with a blocked role", self.user) try: await message.channel.send(embeds=embed) @@ -261,8 +295,16 @@ class MessageEventMixin: reason="Phishing URL", user=message.author.id, ).commit() - tracker = warnings_tracker.labels(guild_id=message.guild.id, guild_name=message.guild.name) - tracker.inc() + md = WarningMetadata( + client_id=self.user.id, + client_name=self.client_name, + name="warning", + type="phishing", + guild_id=message.guild.id, + guild_name=message.guild.name, + value=1, + ) + await Stat(meta=md).insert() embed = warning_embed(message.author, "Phishing URL", self.user) try: await message.channel.send(embeds=embed) @@ -272,8 +314,6 @@ class MessageEventMixin: await message.delete() except Exception: self.logger.warn("Failed to delete malicious message") - tracker = malicious_tracker.labels(guild_id=message.guild.id, guild_name=message.guild.name) - tracker.inc() if not pl or not pl.confirmed: if not pl: @@ -286,8 +326,8 @@ class MessageEventMixin: fields=[EmbedField(name="URL", value=m)], ) - valid_button = Button(style=ButtonStyles.GREEN, emoji="✔️", custom_id=f"pl|valid|{pl.id}") - invalid_button = Button(style=ButtonStyles.RED, emoji="✖️", custom_id=f"pl|invalid|{pl.id}") + valid_button = Button(style=ButtonStyle.GREEN, emoji="✔️", custom_id=f"pl|valid|{pl.id}") + invalid_button = Button(style=ButtonStyle.RED, emoji="✖️", custom_id=f"pl|invalid|{pl.id}") channel = await self.fetch_channel(1026918337554423868) @@ -331,8 +371,16 @@ class MessageEventMixin: reason="Unsafe URL", user=message.author.id, ).commit() - tracker = warnings_tracker.labels(guild_id=message.guild.id, guild_name=message.guild.name) - tracker.inc() + md = WarningMetadata( + client_id=self.user.id, + client_name=self.client_name, + name="warning", + type="malicious", + guild_id=message.guild.id, + guild_name=message.guild.name, + value=1, + ) + await Stat(meta=md).insert() reasons = ", ".join(f"{m['source']}: {m['type']}" for m in data["matches"]) embed = warning_embed(message.author, reasons, self.user) try: @@ -343,8 +391,6 @@ class MessageEventMixin: await message.delete() except Exception: self.logger.warn("Failed to delete malicious message") - tracker = malicious_tracker.labels(guild_id=message.guild.id, guild_name=message.guild.name) - tracker.inc() if not pl or not pl.confirmed: if not pl: @@ -357,8 +403,8 @@ class MessageEventMixin: fields=[EmbedField(name="URL", value=m)], ) - valid_button = Button(style=ButtonStyles.GREEN, emoji="✔️", custom_id=f"pl|valid|{pl.id}") - invalid_button = Button(style=ButtonStyles.RED, emoji="✖️", custom_id=f"pl|invalid|{pl.id}") + valid_button = Button(style=ButtonStyle.GREEN, emoji="✔️", custom_id=f"pl|valid|{pl.id}") + invalid_button = Button(style=ButtonStyle.RED, emoji="✖️", custom_id=f"pl|invalid|{pl.id}") channel = await self.fetch_channel(1026918337554423868) diff --git a/jarvis/cogs/core/admin/autoreact.py b/jarvis/cogs/core/admin/autoreact.py index fe903a0..c7edcb6 100644 --- a/jarvis/cogs/core/admin/autoreact.py +++ b/jarvis/cogs/core/admin/autoreact.py @@ -7,7 +7,7 @@ from interactions import Client, Extension, InteractionContext, Permissions from interactions.client.utils.misc_utils import find from interactions.models.discord.channel import GuildText from interactions.models.internal.application_commands import ( - OptionTypes, + OptionType, SlashCommand, slash_option, ) @@ -81,11 +81,11 @@ class AutoReactCog(Extension): @slash_option( name="channel", description="Autoreact channel to add emote to", - opt_type=OptionTypes.CHANNEL, + opt_type=OptionType.CHANNEL, required=True, ) - @slash_option(name="thread", description="Create a thread?", opt_type=OptionTypes.BOOLEAN, required=False) - @slash_option(name="emote", description="Emote to add", opt_type=OptionTypes.STRING, required=False) + @slash_option(name="thread", description="Create a thread?", opt_type=OptionType.BOOLEAN, required=False) + @slash_option(name="emote", description="Emote to add", opt_type=OptionType.STRING, required=False) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) async def _autoreact_add( self, ctx: InteractionContext, channel: GuildText, thread: bool = True, emote: str = None @@ -138,13 +138,13 @@ class AutoReactCog(Extension): @slash_option( name="channel", description="Autoreact channel to remove emote from", - opt_type=OptionTypes.CHANNEL, + opt_type=OptionType.CHANNEL, required=True, ) @slash_option( name="emote", description="Emote to remove (use all to delete)", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, ) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) @@ -179,7 +179,7 @@ class AutoReactCog(Extension): @slash_option( name="channel", description="Channel to remove autoreact from", - opt_type=OptionTypes.CHANNEL, + opt_type=OptionType.CHANNEL, required=True, ) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) @@ -197,7 +197,7 @@ class AutoReactCog(Extension): @slash_option( name="channel", description="Autoreact channel to list", - opt_type=OptionTypes.CHANNEL, + opt_type=OptionType.CHANNEL, required=True, ) async def _autoreact_list(self, ctx: InteractionContext, channel: GuildText) -> None: diff --git a/jarvis/cogs/core/admin/ban.py b/jarvis/cogs/core/admin/ban.py index 2b6ed0f..35d7bc6 100644 --- a/jarvis/cogs/core/admin/ban.py +++ b/jarvis/cogs/core/admin/ban.py @@ -8,7 +8,7 @@ from interactions.ext.paginators import Paginator from interactions.models.discord.embed import EmbedField from interactions.models.discord.user import User from interactions.models.internal.application_commands import ( - OptionTypes, + OptionType, SlashCommand, SlashCommandChoice, slash_command, @@ -84,12 +84,12 @@ class BanCog(ModcaseCog): await ctx.send(embeds=embed) @slash_command(name="ban", description="Ban a user") - @slash_option(name="user", description="User to ban", opt_type=OptionTypes.USER, required=True) - @slash_option(name="reason", description="Ban reason", opt_type=OptionTypes.STRING, required=True) + @slash_option(name="user", description="User to ban", opt_type=OptionType.USER, required=True) + @slash_option(name="reason", description="Ban reason", opt_type=OptionType.STRING, required=True) @slash_option( name="btype", description="Ban type", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, choices=[ SlashCommandChoice(name="Permanent", value="perm"), @@ -100,13 +100,13 @@ class BanCog(ModcaseCog): @slash_option( name="duration", description="Temp ban duration in hours", - opt_type=OptionTypes.INTEGER, + opt_type=OptionType.INTEGER, required=False, ) @slash_option( name="delete_history", description="Delete message history, format: 1w 3d 7h 5m 20s", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=False, ) @check(admin_or_permissions(Permissions.BAN_MEMBERS)) @@ -197,8 +197,8 @@ class BanCog(ModcaseCog): await ctx.guild.unban(user, reason="Ban was softban") @slash_command(name="unban", description="Unban a user") - @slash_option(name="user", description="User to unban", opt_type=OptionTypes.STRING, required=True) - @slash_option(name="reason", description="Unban reason", opt_type=OptionTypes.STRING, required=True) + @slash_option(name="user", description="User to unban", opt_type=OptionType.STRING, required=True) + @slash_option(name="reason", description="Unban reason", opt_type=OptionType.STRING, required=True) @check(admin_or_permissions(Permissions.BAN_MEMBERS)) async def _unban( self, @@ -288,7 +288,7 @@ class BanCog(ModcaseCog): @slash_option( name="btype", description="Ban type", - opt_type=OptionTypes.INTEGER, + opt_type=OptionType.INTEGER, required=False, choices=[ SlashCommandChoice(name="All", value=0), @@ -300,7 +300,7 @@ class BanCog(ModcaseCog): @slash_option( name="active", description="Active bans", - opt_type=OptionTypes.BOOLEAN, + opt_type=OptionType.BOOLEAN, required=False, ) @check(admin_or_permissions(Permissions.BAN_MEMBERS)) diff --git a/jarvis/cogs/core/admin/filters.py b/jarvis/cogs/core/admin/filters.py index 59ff2f8..9f6bdc5 100644 --- a/jarvis/cogs/core/admin/filters.py +++ b/jarvis/cogs/core/admin/filters.py @@ -13,7 +13,7 @@ from interactions import ( ) from interactions.models.discord.modal import InputText, Modal, TextStyles from interactions.models.internal.application_commands import ( - OptionTypes, + OptionType, SlashCommand, slash_option, ) @@ -88,7 +88,7 @@ class FilterCog(Extension): filter_ = SlashCommand(name="filter", description="Manage keyword filters") @filter_.subcommand(sub_cmd_name="create", sub_cmd_description="Create a new filter") - @slash_option(name="name", description="Name of new filter", required=True, opt_type=OptionTypes.STRING) + @slash_option(name="name", description="Name of new filter", required=True, opt_type=OptionType.STRING) @check(admin_or_permissions(Permissions.MANAGE_MESSAGES)) async def _filter_create(self, ctx: InteractionContext, name: str) -> None: return await self._edit_filter(ctx, name) @@ -98,7 +98,7 @@ class FilterCog(Extension): name="name", description="Filter to edit", autocomplete=True, - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, ) @check(admin_or_permissions(Permissions.MANAGE_MESSAGES)) @@ -110,7 +110,7 @@ class FilterCog(Extension): name="name", description="Filter to view", autocomplete=True, - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, ) async def _filter_view(self, ctx: InteractionContext, name: str) -> None: @@ -128,7 +128,7 @@ class FilterCog(Extension): name="name", description="Filter to delete", autocomplete=True, - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, ) @check(admin_or_permissions(Permissions.MANAGE_MESSAGES)) diff --git a/jarvis/cogs/core/admin/kick.py b/jarvis/cogs/core/admin/kick.py index d68c9c4..ba6ce5b 100644 --- a/jarvis/cogs/core/admin/kick.py +++ b/jarvis/cogs/core/admin/kick.py @@ -2,7 +2,7 @@ from interactions import InteractionContext, Permissions from interactions.models.discord.user import User from interactions.models.internal.application_commands import ( - OptionTypes, + OptionType, slash_command, slash_option, ) @@ -18,8 +18,8 @@ class KickCog(ModcaseCog): """JARVIS KickCog.""" @slash_command(name="kick", description="Kick a user") - @slash_option(name="user", description="User to kick", opt_type=OptionTypes.USER, required=True) - @slash_option(name="reason", description="Kick reason", opt_type=OptionTypes.STRING, required=True) + @slash_option(name="user", description="User to kick", opt_type=OptionType.USER, required=True) + @slash_option(name="reason", description="Kick reason", opt_type=OptionType.STRING, required=True) @check(admin_or_permissions(Permissions.BAN_MEMBERS)) async def _kick(self, ctx: InteractionContext, user: User, reason: str) -> None: if not user or user == ctx.author: diff --git a/jarvis/cogs/core/admin/lock.py b/jarvis/cogs/core/admin/lock.py index 2857b20..02cd0bf 100644 --- a/jarvis/cogs/core/admin/lock.py +++ b/jarvis/cogs/core/admin/lock.py @@ -7,7 +7,7 @@ from interactions.client.utils.misc_utils import get from interactions.models.discord.channel import GuildText, GuildVoice from interactions.models.discord.enums import Permissions from interactions.models.internal.application_commands import ( - OptionTypes, + OptionType, slash_command, slash_option, ) @@ -89,7 +89,7 @@ class LockCog(Extension): @slash_option( name="channel", description="Channel to unlock", - opt_type=OptionTypes.CHANNEL, + opt_type=OptionType.CHANNEL, required=False, ) @check(admin_or_permissions(Permissions.MANAGE_CHANNELS)) diff --git a/jarvis/cogs/core/admin/lockdown.py b/jarvis/cogs/core/admin/lockdown.py index 8d20c8e..141def1 100644 --- a/jarvis/cogs/core/admin/lockdown.py +++ b/jarvis/cogs/core/admin/lockdown.py @@ -8,7 +8,7 @@ from interactions.models.discord.enums import Permissions from interactions.models.discord.guild import Guild from interactions.models.discord.user import Member from interactions.models.internal.application_commands import ( - OptionTypes, + OptionType, SlashCommand, slash_option, ) @@ -108,11 +108,11 @@ class LockdownCog(Extension): sub_cmd_name="start", sub_cmd_description="Lockdown the server", ) - @slash_option(name="reason", description="Lockdown reason", opt_type=OptionTypes.STRING, required=True) + @slash_option(name="reason", description="Lockdown reason", opt_type=OptionType.STRING, required=True) @slash_option( name="duration", description="Duration in minutes", - opt_type=OptionTypes.INTEGER, + opt_type=OptionType.INTEGER, required=False, ) @check(admin_or_permissions(Permissions.MANAGE_CHANNELS)) diff --git a/jarvis/cogs/core/admin/modcase.py b/jarvis/cogs/core/admin/modcase.py index 44eea03..1b8e226 100644 --- a/jarvis/cogs/core/admin/modcase.py +++ b/jarvis/cogs/core/admin/modcase.py @@ -6,7 +6,7 @@ from interactions.ext.paginators import Paginator from interactions.models.discord.embed import Embed, EmbedField from interactions.models.discord.user import Member from interactions.models.internal.application_commands import ( - OptionTypes, + OptionType, SlashCommand, slash_option, ) @@ -184,13 +184,13 @@ class CaseCog(Extension): @slash_option( name="user", description="User to filter cases to", - opt_type=OptionTypes.USER, + opt_type=OptionType.USER, required=False, ) @slash_option( name="closed", description="Include closed cases", - opt_type=OptionTypes.BOOLEAN, + opt_type=OptionType.BOOLEAN, required=False, ) @check(admin_or_permissions(Permissions.BAN_MEMBERS)) @@ -214,7 +214,7 @@ class CaseCog(Extension): show = case.group(name="show", description="Show information about a specific case") @show.subcommand(sub_cmd_name="summary", sub_cmd_description="Summarize a specific case") - @slash_option(name="cid", description="Case ID", opt_type=OptionTypes.STRING, required=True) + @slash_option(name="cid", description="Case ID", opt_type=OptionType.STRING, required=True) @check(admin_or_permissions(Permissions.BAN_MEMBERS)) async def _case_show_summary(self, ctx: InteractionContext, cid: str) -> None: case = await Modlog.find_one(q(guild=ctx.guild.id, nanoid=cid)) @@ -226,7 +226,7 @@ class CaseCog(Extension): await ctx.send(embeds=embed) @show.subcommand(sub_cmd_name="actions", sub_cmd_description="Get case actions") - @slash_option(name="cid", description="Case ID", opt_type=OptionTypes.STRING, required=True) + @slash_option(name="cid", description="Case ID", opt_type=OptionType.STRING, required=True) @check(admin_or_permissions(Permissions.BAN_MEMBERS)) async def _case_show_actions(self, ctx: InteractionContext, cid: str) -> None: case = await Modlog.find_one(q(guild=ctx.guild.id, nanoid=cid)) @@ -239,7 +239,7 @@ class CaseCog(Extension): await paginator.send(ctx) @case.subcommand(sub_cmd_name="close", sub_cmd_description="Show a specific case") - @slash_option(name="cid", description="Case ID", opt_type=OptionTypes.STRING, required=True) + @slash_option(name="cid", description="Case ID", opt_type=OptionType.STRING, required=True) @check(admin_or_permissions(Permissions.BAN_MEMBERS)) async def _case_close(self, ctx: InteractionContext, cid: str) -> None: case = await Modlog.find_one(q(guild=ctx.guild.id, nanoid=cid)) @@ -254,7 +254,7 @@ class CaseCog(Extension): await ctx.send(embeds=embed) @case.subcommand(sub_cmd_name="repoen", sub_cmd_description="Reopen a specific case") - @slash_option(name="cid", description="Case ID", opt_type=OptionTypes.STRING, required=True) + @slash_option(name="cid", description="Case ID", opt_type=OptionType.STRING, required=True) @check(admin_or_permissions(Permissions.BAN_MEMBERS)) async def _case_reopen(self, ctx: InteractionContext, cid: str) -> None: case = await Modlog.find_one(q(guild=ctx.guild.id, nanoid=cid)) @@ -269,8 +269,8 @@ class CaseCog(Extension): await ctx.send(embeds=embed) @case.subcommand(sub_cmd_name="note", sub_cmd_description="Add a note to a specific case") - @slash_option(name="cid", description="Case ID", opt_type=OptionTypes.STRING, required=True) - @slash_option(name="note", description="Note to add", opt_type=OptionTypes.STRING, required=True) + @slash_option(name="cid", description="Case ID", opt_type=OptionType.STRING, required=True) + @slash_option(name="note", description="Note to add", opt_type=OptionType.STRING, required=True) @check(admin_or_permissions(Permissions.BAN_MEMBERS)) async def _case_note(self, ctx: InteractionContext, cid: str, note: str) -> None: case = await Modlog.find_one(q(guild=ctx.guild.id, nanoid=cid)) @@ -295,8 +295,8 @@ class CaseCog(Extension): await ctx.send(embeds=embed) @case.subcommand(sub_cmd_name="new", sub_cmd_description="Open a new case") - @slash_option(name="user", description="Target user", opt_type=OptionTypes.USER, required=True) - @slash_option(name="note", description="Note to add", opt_type=OptionTypes.STRING, required=True) + @slash_option(name="user", description="Target user", opt_type=OptionType.USER, required=True) + @slash_option(name="note", description="Note to add", opt_type=OptionType.STRING, required=True) @check(admin_or_permissions(Permissions.BAN_MEMBERS)) async def _case_new(self, ctx: InteractionContext, user: Member, note: str) -> None: case = await Modlog.find_one(q(guild=ctx.guild.id, user=user.id, open=True)) diff --git a/jarvis/cogs/core/admin/mute.py b/jarvis/cogs/core/admin/mute.py index 902df30..76d19f2 100644 --- a/jarvis/cogs/core/admin/mute.py +++ b/jarvis/cogs/core/admin/mute.py @@ -9,8 +9,8 @@ from interactions.client.errors import Forbidden from interactions.models.discord.modal import InputText, Modal, TextStyles from interactions.models.discord.user import Member from interactions.models.internal.application_commands import ( - CommandTypes, - OptionTypes, + CommandType, + OptionType, SlashCommandChoice, context_menu, slash_command, @@ -41,7 +41,7 @@ class MuteCog(ModcaseCog): return mute_embed(user=user, admin=ctx.author, reason=reason, guild=ctx.guild) - @context_menu(name="Mute User", context_type=CommandTypes.USER) + @context_menu(name="Mute User", context_type=CommandType.USER) @check(admin_or_permissions(Permissions.MUTE_MEMBERS, Permissions.BAN_MEMBERS, Permissions.KICK_MEMBERS)) async def _timeout_cm(self, ctx: InteractionContext) -> None: modal = Modal( @@ -103,23 +103,23 @@ class MuteCog(ModcaseCog): await response.send("Unable to mute this user", ephemeral=True) @slash_command(name="mute", description="Mute a user") - @slash_option(name="user", description="User to mute", opt_type=OptionTypes.USER, required=True) + @slash_option(name="user", description="User to mute", opt_type=OptionType.USER, required=True) @slash_option( name="reason", description="Reason for mute", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, ) @slash_option( name="time", description="Duration of mute, default 1", - opt_type=OptionTypes.INTEGER, + opt_type=OptionType.INTEGER, required=False, ) @slash_option( name="scale", description="Time scale, default Hour(s)", - opt_type=OptionTypes.INTEGER, + opt_type=OptionType.INTEGER, required=False, choices=[ SlashCommandChoice(name="Minute(s)", value=1), @@ -159,8 +159,8 @@ class MuteCog(ModcaseCog): await ctx.send("Unable to mute this user", ephemeral=True) @slash_command(name="unmute", description="Unmute a user") - @slash_option(name="user", description="User to unmute", opt_type=OptionTypes.USER, required=True) - @slash_option(name="reason", description="Reason for unmute", opt_type=OptionTypes.STRING, required=True) + @slash_option(name="user", description="User to unmute", opt_type=OptionType.USER, required=True) + @slash_option(name="reason", description="Reason for unmute", opt_type=OptionType.STRING, required=True) @check(admin_or_permissions(Permissions.MUTE_MEMBERS, Permissions.BAN_MEMBERS, Permissions.KICK_MEMBERS)) async def _unmute(self, ctx: InteractionContext, user: Member, reason: str) -> None: if ( diff --git a/jarvis/cogs/core/admin/purge.py b/jarvis/cogs/core/admin/purge.py index 2fe3bd9..c5ea83f 100644 --- a/jarvis/cogs/core/admin/purge.py +++ b/jarvis/cogs/core/admin/purge.py @@ -4,7 +4,7 @@ import logging from interactions import Client, Extension, InteractionContext, Permissions from interactions.models.discord.channel import GuildText from interactions.models.internal.application_commands import ( - OptionTypes, + OptionType, slash_command, slash_option, ) @@ -26,7 +26,7 @@ class PurgeCog(Extension): @slash_option( name="amount", description="Amount of messages to purge, default 10", - opt_type=OptionTypes.INTEGER, + opt_type=OptionType.INTEGER, required=False, ) @check(admin_or_permissions(Permissions.MANAGE_MESSAGES)) @@ -51,13 +51,13 @@ class PurgeCog(Extension): @slash_option( name="channel", description="Channel to autopurge", - opt_type=OptionTypes.CHANNEL, + opt_type=OptionType.CHANNEL, required=True, ) @slash_option( name="delay", description="Seconds to keep message before purge, default 30", - opt_type=OptionTypes.INTEGER, + opt_type=OptionType.INTEGER, required=False, ) @check(admin_or_permissions(Permissions.MANAGE_MESSAGES)) @@ -90,7 +90,7 @@ class PurgeCog(Extension): @slash_option( name="channel", description="Channel to remove from autopurge", - opt_type=OptionTypes.CHANNEL, + opt_type=OptionType.CHANNEL, required=True, ) @check(admin_or_permissions(Permissions.MANAGE_MESSAGES)) @@ -110,13 +110,13 @@ class PurgeCog(Extension): @slash_option( name="channel", description="Channel to update", - opt_type=OptionTypes.CHANNEL, + opt_type=OptionType.CHANNEL, required=True, ) @slash_option( name="delay", description="New time to save", - opt_type=OptionTypes.INTEGER, + opt_type=OptionType.INTEGER, required=True, ) @check(admin_or_permissions(Permissions.MANAGE_MESSAGES)) diff --git a/jarvis/cogs/core/admin/roleping.py b/jarvis/cogs/core/admin/roleping.py index 5490c62..2ddb2c6 100644 --- a/jarvis/cogs/core/admin/roleping.py +++ b/jarvis/cogs/core/admin/roleping.py @@ -8,7 +8,7 @@ from interactions.models.discord.embed import EmbedField from interactions.models.discord.role import Role from interactions.models.discord.user import Member from interactions.models.internal.application_commands import ( - OptionTypes, + OptionType, SlashCommand, slash_option, ) @@ -33,7 +33,7 @@ class RolepingCog(Extension): sub_cmd_name="add", sub_cmd_description="Add a role to roleping", ) - @slash_option(name="role", description="Role to add", opt_type=OptionTypes.ROLE, required=True) + @slash_option(name="role", description="Role to add", opt_type=OptionType.ROLE, required=True) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) async def _roleping_add(self, ctx: InteractionContext, role: Role) -> None: roleping = await Roleping.find_one(q(guild=ctx.guild.id, role=role.id)) @@ -55,7 +55,7 @@ class RolepingCog(Extension): await ctx.send(f"Role `{role.name}` added to roleping.") @roleping.subcommand(sub_cmd_name="remove", sub_cmd_description="Remove a role") - @slash_option(name="role", description="Role to remove", opt_type=OptionTypes.ROLE, required=True) + @slash_option(name="role", description="Role to remove", opt_type=OptionType.ROLE, required=True) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) async def _roleping_remove(self, ctx: InteractionContext, role: Role) -> None: roleping = await Roleping.find_one(q(guild=ctx.guild.id, role=role.id)) @@ -133,8 +133,8 @@ class RolepingCog(Extension): sub_cmd_name="user", sub_cmd_description="Add a user as a bypass to a roleping", ) - @slash_option(name="bypass", description="User to add", opt_type=OptionTypes.USER, required=True) - @slash_option(name="role", description="Rolepinged role", opt_type=OptionTypes.ROLE, required=True) + @slash_option(name="bypass", description="User to add", opt_type=OptionType.USER, required=True) + @slash_option(name="role", description="Rolepinged role", opt_type=OptionType.ROLE, required=True) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) async def _roleping_bypass_user(self, ctx: InteractionContext, bypass: Member, role: Role) -> None: roleping = await Roleping.find_one(q(guild=ctx.guild.id, role=role.id)) @@ -170,8 +170,8 @@ class RolepingCog(Extension): sub_cmd_name="role", sub_cmd_description="Add a role as a bypass to roleping", ) - @slash_option(name="bypass", description="Role to add", opt_type=OptionTypes.ROLE, required=True) - @slash_option(name="role", description="Rolepinged role", opt_type=OptionTypes.ROLE, required=True) + @slash_option(name="bypass", description="Role to add", opt_type=OptionType.ROLE, required=True) + @slash_option(name="role", description="Rolepinged role", opt_type=OptionType.ROLE, required=True) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) async def _roleping_bypass_role(self, ctx: InteractionContext, bypass: Role, role: Role) -> None: if bypass.id == ctx.guild.id: @@ -203,8 +203,8 @@ class RolepingCog(Extension): sub_cmd_name="user", sub_cmd_description="Remove a bypass from a roleping (restoring it)", ) - @slash_option(name="bypass", description="User to remove", opt_type=OptionTypes.USER, required=True) - @slash_option(name="role", description="Rolepinged role", opt_type=OptionTypes.ROLE, required=True) + @slash_option(name="bypass", description="User to remove", opt_type=OptionType.USER, required=True) + @slash_option(name="role", description="Rolepinged role", opt_type=OptionType.ROLE, required=True) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) async def _roleping_restore_user(self, ctx: InteractionContext, bypass: Member, role: Role) -> None: roleping: Roleping = await Roleping.find_one(q(guild=ctx.guild.id, role=role.id)) @@ -224,8 +224,8 @@ class RolepingCog(Extension): sub_cmd_name="role", sub_cmd_description="Remove a bypass from a roleping (restoring it)", ) - @slash_option(name="bypass", description="Role to remove", opt_type=OptionTypes.ROLE, required=True) - @slash_option(name="role", description="Rolepinged role", opt_type=OptionTypes.ROLE, required=True) + @slash_option(name="bypass", description="Role to remove", opt_type=OptionType.ROLE, required=True) + @slash_option(name="role", description="Rolepinged role", opt_type=OptionType.ROLE, required=True) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) async def _roleping_restore_role(self, ctx: InteractionContext, bypass: Role, role: Role) -> None: roleping: Roleping = await Roleping.find_one(q(guild=ctx.guild.id, role=role.id)) diff --git a/jarvis/cogs/core/admin/settings.py b/jarvis/cogs/core/admin/settings.py index 6e1d9de..a2268fb 100644 --- a/jarvis/cogs/core/admin/settings.py +++ b/jarvis/cogs/core/admin/settings.py @@ -5,12 +5,12 @@ from typing import Any from interactions import AutocompleteContext, Client, Extension, InteractionContext from interactions.models.discord.channel import GuildText -from interactions.models.discord.components import ActionRow, Button, ButtonStyles +from interactions.models.discord.components import ActionRow, Button, ButtonStyle from interactions.models.discord.embed import EmbedField from interactions.models.discord.enums import Permissions from interactions.models.discord.role import Role from interactions.models.internal.application_commands import ( - OptionTypes, + OptionType, SlashCommand, slash_option, ) @@ -55,7 +55,7 @@ class SettingsCog(Extension): sub_cmd_name="modlog", sub_cmd_description="Set Moglod channel", ) - @slash_option(name="channel", description="ModLog Channel", opt_type=OptionTypes.CHANNEL, required=True) + @slash_option(name="channel", description="ModLog Channel", opt_type=OptionType.CHANNEL, required=True) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) async def _set_modlog(self, ctx: InteractionContext, channel: GuildText) -> None: if not isinstance(channel, GuildText): @@ -71,7 +71,7 @@ class SettingsCog(Extension): @slash_option( name="channel", description="Activitylog Channel", - opt_type=OptionTypes.CHANNEL, + opt_type=OptionType.CHANNEL, required=True, ) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) @@ -86,7 +86,7 @@ class SettingsCog(Extension): @slash_option( name="amount", description="Amount of mentions (0 to disable)", - opt_type=OptionTypes.INTEGER, + opt_type=OptionType.INTEGER, required=True, ) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) @@ -96,7 +96,7 @@ class SettingsCog(Extension): await ctx.send(f"Settings applied. New massmention limit is {amount}") @set_.subcommand(sub_cmd_name="verified", sub_cmd_description="Set verified role") - @slash_option(name="role", description="Verified role", opt_type=OptionTypes.ROLE, required=True) + @slash_option(name="role", description="Verified role", opt_type=OptionType.ROLE, required=True) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) async def _set_verified(self, ctx: InteractionContext, role: Role) -> None: if role.id == ctx.guild.id: @@ -113,7 +113,7 @@ class SettingsCog(Extension): await ctx.send(f"Settings applied. New verified role is `{role.name}`") @set_.subcommand(sub_cmd_name="unverified", sub_cmd_description="Set unverified role") - @slash_option(name="role", description="Unverified role", opt_type=OptionTypes.ROLE, required=True) + @slash_option(name="role", description="Unverified role", opt_type=OptionType.ROLE, required=True) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) async def _set_unverified(self, ctx: InteractionContext, role: Role) -> None: if role.id == ctx.guild.id: @@ -130,7 +130,7 @@ class SettingsCog(Extension): await ctx.send(f"Settings applied. New unverified role is `{role.name}`") @set_.subcommand(sub_cmd_name="noinvite", sub_cmd_description="Set if invite deletion should happen") - @slash_option(name="active", description="Active?", opt_type=OptionTypes.BOOLEAN, required=True) + @slash_option(name="active", description="Active?", opt_type=OptionType.BOOLEAN, required=True) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) async def _set_invitedel(self, ctx: InteractionContext, active: bool) -> None: await ctx.defer() @@ -138,7 +138,7 @@ class SettingsCog(Extension): await ctx.send(f"Settings applied. Automatic invite active: {active}") @set_.subcommand(sub_cmd_name="notify", sub_cmd_description="Notify users of admin action?") - @slash_option(name="active", description="Notify?", opt_type=OptionTypes.BOOLEAN, required=True) + @slash_option(name="active", description="Notify?", opt_type=OptionType.BOOLEAN, required=True) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) async def _set_notify(self, ctx: InteractionContext, active: bool) -> None: await ctx.defer() @@ -146,7 +146,7 @@ class SettingsCog(Extension): await ctx.send(f"Settings applied. Notifications active: {active}") @set_.subcommand(sub_cmd_name="log_ignore", sub_cmd_description="Ignore a channel for ActivityLog") - @slash_option(name="channel", description="Channel to ignore", opt_type=OptionTypes.CHANNEL, required=True) + @slash_option(name="channel", description="Channel to ignore", opt_type=OptionType.CHANNEL, required=True) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) async def _add_log_ignore(self, ctx: InteractionContext, channel: GuildText) -> None: if not isinstance(channel, GuildText): @@ -224,7 +224,7 @@ class SettingsCog(Extension): @slash_option( name="channel", description="Channel to stop ignoring", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, autocomplete=True, ) @@ -293,8 +293,8 @@ class SettingsCog(Extension): async def _clear(self, ctx: InteractionContext) -> None: components = [ ActionRow( - Button(style=ButtonStyles.RED, emoji="✖️", custom_id=f"{ctx.guild.id}|set_clear|no"), - Button(style=ButtonStyles.GREEN, emoji="✔️", custom_id=f"{ctx.guild.id}|set_clear|yes"), + Button(style=ButtonStyle.RED, emoji="✖️", custom_id=f"{ctx.guild.id}|set_clear|no"), + Button(style=ButtonStyle.GREEN, emoji="✔️", custom_id=f"{ctx.guild.id}|set_clear|yes"), ) ] message = await ctx.send("***Are you sure?***", components=components) diff --git a/jarvis/cogs/core/admin/temprole.py b/jarvis/cogs/core/admin/temprole.py index 3a977f2..d70d935 100644 --- a/jarvis/cogs/core/admin/temprole.py +++ b/jarvis/cogs/core/admin/temprole.py @@ -7,11 +7,11 @@ from dateparser_data.settings import default_parsers from interactions import Client, Extension, InteractionContext, Permissions from interactions.models.discord.components import Button from interactions.models.discord.embed import EmbedField -from interactions.models.discord.enums import ButtonStyles +from interactions.models.discord.enums import ButtonStyle from interactions.models.discord.role import Role from interactions.models.discord.user import Member from interactions.models.internal.application_commands import ( - OptionTypes, + OptionType, slash_command, slash_option, ) @@ -30,18 +30,18 @@ class TemproleCog(Extension): self.logger = logging.getLogger(__name__) @slash_command(name="temprole", description="Give a user a temporary role") - @slash_option(name="user", description="User to grant role", opt_type=OptionTypes.USER, required=True) - @slash_option(name="role", description="Role to grant", opt_type=OptionTypes.ROLE, required=True) + @slash_option(name="user", description="User to grant role", opt_type=OptionType.USER, required=True) + @slash_option(name="role", description="Role to grant", opt_type=OptionType.ROLE, required=True) @slash_option( name="duration", description="Duration of temp role (i.e. 2 hours)", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, ) @slash_option( name="reason", description="Reason for temporary role", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=False, ) @check(admin_or_permissions(Permissions.MANAGE_ROLES)) @@ -109,5 +109,5 @@ class TemproleCog(Extension): fields=fields, ) embed.set_author(name=f"{user.username}#{user.discriminator}", icon_url=user.display_avatar.url) - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(embeds=embed, components=components) diff --git a/jarvis/cogs/core/admin/verify.py b/jarvis/cogs/core/admin/verify.py index f7f99bf..745e71b 100644 --- a/jarvis/cogs/core/admin/verify.py +++ b/jarvis/cogs/core/admin/verify.py @@ -4,7 +4,7 @@ import logging from random import randint from interactions import Client, Extension, InteractionContext -from interactions.models.discord.components import Button, ButtonStyles, spread_to_rows +from interactions.models.discord.components import Button, ButtonStyle, spread_to_rows from interactions.models.internal.application_commands import slash_command from interactions.models.internal.command import cooldown from interactions.models.internal.cooldowns import Buckets @@ -19,7 +19,7 @@ def create_layout() -> list: for i in range(3): label = "YES" if i == yes else "NO" id = f"no_{i}" if not i == yes else "yes" - color = ButtonStyles.GREEN if i == yes else ButtonStyles.RED + color = ButtonStyle.GREEN if i == yes else ButtonStyle.RED buttons.append( Button( style=color, diff --git a/jarvis/cogs/core/admin/warning.py b/jarvis/cogs/core/admin/warning.py index 910fa36..9c4782e 100644 --- a/jarvis/cogs/core/admin/warning.py +++ b/jarvis/cogs/core/admin/warning.py @@ -7,7 +7,7 @@ from interactions.ext.paginators import Paginator from interactions.models.discord.embed import EmbedField from interactions.models.discord.user import Member from interactions.models.internal.application_commands import ( - OptionTypes, + OptionType, slash_command, slash_option, ) @@ -25,17 +25,17 @@ class WarningCog(ModcaseCog): """JARVIS WarningCog.""" @slash_command(name="warn", description="Warn a user") - @slash_option(name="user", description="User to warn", opt_type=OptionTypes.USER, required=True) + @slash_option(name="user", description="User to warn", opt_type=OptionType.USER, required=True) @slash_option( name="reason", description="Reason for warning", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, ) @slash_option( name="duration", description="Duration of warning in hours, default 24", - opt_type=OptionTypes.INTEGER, + opt_type=OptionType.INTEGER, required=False, ) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) @@ -67,11 +67,11 @@ class WarningCog(ModcaseCog): await ctx.send(embeds=embed) @slash_command(name="warnings", description="Get count of user warnings") - @slash_option(name="user", description="User to view", opt_type=OptionTypes.USER, required=True) + @slash_option(name="user", description="User to view", opt_type=OptionType.USER, required=True) @slash_option( name="active", description="View active only", - opt_type=OptionTypes.BOOLEAN, + opt_type=OptionType.BOOLEAN, required=False, ) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) diff --git a/jarvis/cogs/core/botutil.py b/jarvis/cogs/core/botutil.py index 3dca3fd..f1c225b 100644 --- a/jarvis/cogs/core/botutil.py +++ b/jarvis/cogs/core/botutil.py @@ -11,7 +11,7 @@ from interactions.ext.prefixed_commands.command import prefixed_command from interactions.ext.prefixed_commands.context import PrefixedContext from interactions.models.discord.components import Button from interactions.models.discord.embed import EmbedField -from interactions.models.discord.enums import ButtonStyles +from interactions.models.discord.enums import ButtonStyle from interactions.models.discord.file import File from rich.console import Console @@ -86,7 +86,7 @@ class BotutilCog(Extension): ) embed = build_embed(title="System Info", description="", fields=fields) embed.set_image(url=self.bot.user.avatar.url) - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(embeds=embed, components=components) @prefixed_command(name="update") @@ -118,7 +118,7 @@ class BotutilCog(Extension): self.logger.info("Updates applied") content = f"```ansi\n{capture.get()}\n```" - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") if len(content) < 3000: await ctx.reply(content, embeds=embed, components=components) else: @@ -131,7 +131,7 @@ class BotutilCog(Extension): else: embed = build_embed(title="Update Status", description="No changes applied", fields=[]) embed.set_thumbnail(url="https://dev.zevaryx.com/git.png") - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.reply(embeds=embed, components=components) diff --git a/jarvis/cogs/core/remindme.py b/jarvis/cogs/core/remindme.py index e41c3f5..ad0b84b 100644 --- a/jarvis/cogs/core/remindme.py +++ b/jarvis/cogs/core/remindme.py @@ -11,10 +11,10 @@ from interactions import AutocompleteContext, Client, Extension, InteractionCont from interactions.models.discord.channel import GuildChannel from interactions.models.discord.components import ActionRow, Button from interactions.models.discord.embed import Embed, EmbedField -from interactions.models.discord.enums import ButtonStyles +from interactions.models.discord.enums import ButtonStyle from interactions.models.discord.modal import InputText, Modal, TextStyles from interactions.models.internal.application_commands import ( - OptionTypes, + OptionType, SlashCommand, slash_option, ) @@ -45,7 +45,7 @@ class RemindmeCog(Extension): @slash_option( name="private", description="Send as DM?", - opt_type=OptionTypes.BOOLEAN, + opt_type=OptionType.BOOLEAN, required=False, ) async def _remindme( @@ -159,10 +159,10 @@ class RemindmeCog(Extension): icon_url=ctx.author.display_avatar.url, ) embed.set_thumbnail(url=ctx.author.display_avatar.url) - delete_button = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + delete_button = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") components = [delete_button] if not r.guild == ctx.author.id: - copy_button = Button(style=ButtonStyles.GREEN, emoji="📋", custom_id=f"copy|rme|{r.id}") + copy_button = Button(style=ButtonStyle.GREEN, emoji="📋", custom_id=f"copy|rme|{r.id}") components.append(copy_button) private = private if private is not None else False components = [ActionRow(*components)] @@ -211,14 +211,14 @@ class RemindmeCog(Extension): return embed = await self.get_reminders_embed(ctx, reminders) - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(embeds=embed, components=components) @reminders.subcommand(sub_cmd_name="delete", sub_cmd_description="Delete a reminder") @slash_option( name="content", description="Content of the reminder", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, autocomplete=True, ) @@ -244,7 +244,7 @@ class RemindmeCog(Extension): ) embed.set_thumbnail(url=ctx.author.display_avatar.url) - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") try: await reminder.delete() except Exception: @@ -258,7 +258,7 @@ class RemindmeCog(Extension): @slash_option( name="content", description="Content of the reminder", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, autocomplete=True, ) @@ -283,7 +283,7 @@ class RemindmeCog(Extension): ) embed.set_thumbnail(url=ctx.author.display_avatar.url) - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(embeds=embed, ephemeral=reminder.private, components=components) if reminder.remind_at <= datetime.now(tz=timezone.utc) and not reminder.active: try: diff --git a/jarvis/cogs/core/socials/reddit.py b/jarvis/cogs/core/socials/reddit.py index 8f112d6..feb58c2 100644 --- a/jarvis/cogs/core/socials/reddit.py +++ b/jarvis/cogs/core/socials/reddit.py @@ -10,7 +10,7 @@ from asyncpraw.models.reddit.submission import Subreddit as Sub from asyncprawcore.exceptions import Forbidden, NotFound, Redirect from interactions import Client, Extension, InteractionContext, Permissions from interactions.client.utils.misc_utils import get -from interactions.models.discord.channel import ChannelTypes, GuildText +from interactions.models.discord.channel import ChannelType, GuildText from interactions.models.discord.components import ( ActionRow, StringSelectMenu, @@ -18,7 +18,7 @@ from interactions.models.discord.components import ( ) from interactions.models.discord.embed import Embed, EmbedField from interactions.models.internal.application_commands import ( - OptionTypes, + OptionType, SlashCommand, SlashCommandChoice, slash_option, @@ -143,14 +143,14 @@ class RedditCog(Extension): @slash_option( name="name", description="Redditor name", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, ) @slash_option( name="channel", description="Channel to post to", - opt_type=OptionTypes.CHANNEL, - channel_types=[ChannelTypes.GUILD_TEXT], + opt_type=OptionType.CHANNEL, + channel_types=[ChannelType.GUILD_TEXT], required=True, ) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) @@ -255,14 +255,14 @@ class RedditCog(Extension): @slash_option( name="name", description="Subreddit display name", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, ) @slash_option( name="channel", description="Channel to post to", - opt_type=OptionTypes.CHANNEL, - channel_types=[ChannelTypes.GUILD_TEXT], + opt_type=OptionType.CHANNEL, + channel_types=[ChannelType.GUILD_TEXT], required=True, ) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) @@ -371,7 +371,7 @@ class RedditCog(Extension): await message.edit(components=components) @reddit.subcommand(sub_cmd_name="hot", sub_cmd_description="Get the hot post of a subreddit") - @slash_option(name="name", description="Subreddit name", opt_type=OptionTypes.STRING, required=True) + @slash_option(name="name", description="Subreddit name", opt_type=OptionType.STRING, required=True) async def _subreddit_hot(self, ctx: InteractionContext, name: str) -> None: if not sub_name.match(name): await ctx.send("Invalid Subreddit name", ephemeral=True) @@ -404,11 +404,11 @@ class RedditCog(Extension): await ctx.send(embeds=embeds) @reddit.subcommand(sub_cmd_name="top", sub_cmd_description="Get the top post of a subreddit") - @slash_option(name="name", description="Subreddit name", opt_type=OptionTypes.STRING, required=True) + @slash_option(name="name", description="Subreddit name", opt_type=OptionType.STRING, required=True) @slash_option( name="time", description="Top time", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=False, choices=[ SlashCommandChoice(name="All", value="all"), @@ -451,7 +451,7 @@ class RedditCog(Extension): await ctx.send(embeds=embeds) @reddit.subcommand(sub_cmd_name="random", sub_cmd_description="Get a random post of a subreddit") - @slash_option(name="name", description="Subreddit name", opt_type=OptionTypes.STRING, required=True) + @slash_option(name="name", description="Subreddit name", opt_type=OptionType.STRING, required=True) async def _subreddit_random(self, ctx: InteractionContext, name: str) -> None: if not sub_name.match(name): await ctx.send("Invalid Subreddit name", ephemeral=True) @@ -484,7 +484,7 @@ class RedditCog(Extension): await ctx.send(embeds=embeds) @reddit.subcommand(sub_cmd_name="rising", sub_cmd_description="Get a rising post of a subreddit") - @slash_option(name="name", description="Subreddit name", opt_type=OptionTypes.STRING, required=True) + @slash_option(name="name", description="Subreddit name", opt_type=OptionType.STRING, required=True) async def _subreddit_rising(self, ctx: InteractionContext, name: str) -> None: if not sub_name.match(name): await ctx.send("Invalid Subreddit name", ephemeral=True) @@ -517,7 +517,7 @@ class RedditCog(Extension): await ctx.send(embeds=embeds) @reddit.subcommand(sub_cmd_name="post", sub_cmd_description="Get a specific submission") - @slash_option(name="sid", description="Submission ID", opt_type=OptionTypes.STRING, required=True) + @slash_option(name="sid", description="Submission ID", opt_type=OptionType.STRING, required=True) async def _reddit_post(self, ctx: InteractionContext, sid: str) -> None: await ctx.defer() try: @@ -541,7 +541,7 @@ class RedditCog(Extension): await ctx.send(embeds=embeds) @reddit.subcommand(sub_cmd_name="dm_nsfw", sub_cmd_description="DM NSFW posts if channel isn't NSFW") - @slash_option(name="dm", description="Send DM?", opt_type=OptionTypes.BOOLEAN, required=True) + @slash_option(name="dm", description="Send DM?", opt_type=OptionType.BOOLEAN, required=True) async def _reddit_dm(self, ctx: InteractionContext, dm: bool) -> None: setting = await UserSetting.find_one(q(user=ctx.author.id, type="reddit", setting="dm_nsfw")) if not setting: diff --git a/jarvis/cogs/core/socials/twitter.py b/jarvis/cogs/core/socials/twitter.py index f902efd..42e3d9a 100644 --- a/jarvis/cogs/core/socials/twitter.py +++ b/jarvis/cogs/core/socials/twitter.py @@ -12,7 +12,7 @@ from interactions.models.discord.components import ( StringSelectOption, ) from interactions.models.internal.application_commands import ( - OptionTypes, + OptionType, SlashCommand, slash_option, ) @@ -45,17 +45,17 @@ class TwitterCog(Extension): sub_cmd_name="follow", sub_cmd_description="Follow a Twitter acount", ) - @slash_option(name="handle", description="Twitter account", opt_type=OptionTypes.STRING, required=True) + @slash_option(name="handle", description="Twitter account", opt_type=OptionType.STRING, required=True) @slash_option( name="channel", description="Channel to post tweets to", - opt_type=OptionTypes.CHANNEL, + opt_type=OptionType.CHANNEL, required=True, ) @slash_option( name="retweets", description="Mirror re-tweets?", - opt_type=OptionTypes.BOOLEAN, + opt_type=OptionType.BOOLEAN, required=False, ) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) @@ -171,7 +171,7 @@ class TwitterCog(Extension): @slash_option( name="retweets", description="Mirror re-tweets?", - opt_type=OptionTypes.BOOLEAN, + opt_type=OptionType.BOOLEAN, required=False, ) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) diff --git a/jarvis/cogs/core/util.py b/jarvis/cogs/core/util.py index 9bb6171..73a43ae 100644 --- a/jarvis/cogs/core/util.py +++ b/jarvis/cogs/core/util.py @@ -9,19 +9,19 @@ from io import BytesIO import numpy as np from dateparser import parse -from interactions import Client, Extension, InteractionContext +from interactions import Client, Extension, SlashContext from interactions import __version__ as ipyv from interactions.models.discord.channel import GuildCategory, GuildText, GuildVoice from interactions.models.discord.components import Button from interactions.models.discord.embed import EmbedField -from interactions.models.discord.enums import ButtonStyles +from interactions.models.discord.enums import ButtonStyle from interactions.models.discord.file import File from interactions.models.discord.guild import Guild from interactions.models.discord.role import Role from interactions.models.discord.user import User from interactions.models.internal.application_commands import ( - CommandTypes, - OptionTypes, + CommandType, + OptionType, SlashCommand, SlashCommandChoice, context_menu, @@ -55,7 +55,7 @@ class UtilCog(Extension): bot = SlashCommand(name="bot", description="Bot commands") @bot.subcommand(sub_cmd_name="sex", sub_cmd_description="Have sex with JARVIS") - async def _sex(self, ctx: InteractionContext) -> None: + async def _sex(self, ctx: SlashContext) -> None: if ctx.author.id == 264072583987593217: await ctx.send("Oh fuck no, go fuck yourself") elif ctx.author.id == 840031256201003008: @@ -71,13 +71,15 @@ class UtilCog(Extension): @bot.subcommand(sub_cmd_name="status", sub_cmd_description="Retrieve JARVIS status") @cooldown(bucket=Buckets.CHANNEL, rate=1, interval=30) - async def _status(self, ctx: InteractionContext) -> None: + async def _status(self, ctx: SlashContext) -> None: + self.bot.logger.debug("Entered bot status") title = "JARVIS Status" desc = ( f"All systems online" f"\nConnected to **{len(self.bot.guilds)}** guilds" f"\nListening for **{len(self.bot.application_commands)}** commands" ) + self.bot.logger.debug("Description made") color = "#3498db" fields = [] uptime = int(self.bot.start_time.timestamp()) @@ -92,13 +94,14 @@ class UtilCog(Extension): fields.append( EmbedField(name="interactions", value=f"[{ipyv}](https://interactionspy.readthedocs.io)", inline=True) ) + self.bot.logger.debug("Getting repo information") repo_url = f"https://git.zevaryx.com/stark-industries/jarvis/jarvis-bot/-/tree/{get_repo_hash()}" fields.append(EmbedField(name="Git Hash", value=f"[{get_repo_hash()[:7]}]({repo_url})", inline=True)) fields.append(EmbedField(name="Online Since", value=f"", inline=False)) num_domains = len(self.bot.phishing_domains) fields.append(EmbedField(name="Phishing Protection", value=f"Detecting {num_domains} phishing domains")) embed = build_embed(title=title, description=desc, fields=fields, color=color) - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(embeds=embed, components=components) @bot.subcommand( @@ -106,18 +109,18 @@ class UtilCog(Extension): sub_cmd_description="Get the current logo", ) @cooldown(bucket=Buckets.CHANNEL, rate=1, interval=30) - async def _logo(self, ctx: InteractionContext) -> None: + async def _logo(self, ctx: SlashContext) -> None: with BytesIO() as image_bytes: JARVIS_LOGO.save(image_bytes, "PNG") image_bytes.seek(0) logo = File(image_bytes, file_name="logo.png") - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(file=logo, components=components) rc = SlashCommand(name="rc", description="Robot Camo emoji commands") @rc.subcommand(sub_cmd_name="hk", sub_cmd_description="Robot Camo HK416") - async def _rchk(self, ctx: InteractionContext) -> None: + async def _rchk(self, ctx: SlashContext) -> None: await ctx.send(content=hk, ephemeral=True) @rc.subcommand( @@ -127,10 +130,10 @@ class UtilCog(Extension): @slash_option( name="text", description="Text to camo-ify", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, ) - async def _rcauto(self, ctx: InteractionContext, text: str) -> None: + async def _rcauto(self, ctx: SlashContext, text: str) -> None: to_send = "" if len(text) == 1 and not re.match(r"^[A-Z0-9-()$@!?^'#. ]$", text.upper()): await ctx.send("Please use ASCII characters.", ephemeral=True) @@ -148,7 +151,7 @@ class UtilCog(Extension): else: await ctx.send(to_send, ephemeral=True) - async def _avatar(self, ctx: InteractionContext, user: User = None) -> None: + async def _avatar(self, ctx: SlashContext, user: User = None) -> None: if not user: user = ctx.author @@ -157,7 +160,7 @@ class UtilCog(Extension): embed = build_embed(title="Avatar", description="", fields=[], color="#00FFEE") embed.set_image(url=avatar) embed.set_author(name=f"{user.username}#{user.discriminator}", icon_url=avatar) - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(embeds=embed, components=components) @slash_command( @@ -167,10 +170,10 @@ class UtilCog(Extension): @slash_option( name="role", description="Role to get info of", - opt_type=OptionTypes.ROLE, + opt_type=OptionType.ROLE, required=True, ) - async def _roleinfo(self, ctx: InteractionContext, role: Role) -> None: + async def _roleinfo(self, ctx: SlashContext, role: Role) -> None: fields = [ EmbedField(name="ID", value=str(role.id), inline=True), EmbedField(name="Name", value=role.mention, inline=True), @@ -205,25 +208,25 @@ class UtilCog(Extension): im.save(image_bytes, "PNG") image_bytes.seek(0) color_show = File(image_bytes, file_name="color_show.png") - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(embeds=embed, file=color_show, components=components) @slash_command(name="avatar", description="Get a user avatar") @slash_option( name="user", description="User to view avatar of", - opt_type=OptionTypes.USER, + opt_type=OptionType.USER, required=False, ) @cooldown(bucket=Buckets.USER, rate=1, interval=5) - async def _avatar_slash(self, ctx: InteractionContext, user: User = None) -> None: + async def _avatar_slash(self, ctx: SlashContext, user: User = None) -> None: await self._avatar(ctx, user) - @context_menu(name="Avatar", context_type=CommandTypes.USER) - async def _avatar_menu(self, ctx: InteractionContext) -> None: + @context_menu(name="Avatar", context_type=CommandType.USER) + async def _avatar_menu(self, ctx: SlashContext) -> None: await self._avatar(ctx, ctx.target) - async def _userinfo(self, ctx: InteractionContext, user: User = None) -> None: + async def _userinfo(self, ctx: SlashContext, user: User = None) -> None: await ctx.defer() if not user: user = ctx.author @@ -271,12 +274,12 @@ class UtilCog(Extension): ) embed.set_thumbnail(url=user.display_avatar.url) embed.set_footer(text=f"ID: {user.id}") - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(embeds=embed, components=components) @slash_command(name="lmgtfy", description="Let me Google that for you") - @slash_option(name="search", description="What to search", opt_type=OptionTypes.STRING, required=True) - async def _lmgtfy(self, ctx: InteractionContext, search: str) -> None: + @slash_option(name="search", description="What to search", opt_type=OptionType.STRING, required=True) + async def _lmgtfy(self, ctx: SlashContext, search: str) -> None: url = "https://letmegooglethat.com/?q=" + urllib.parse.quote_plus(search) await ctx.send(url) @@ -287,18 +290,18 @@ class UtilCog(Extension): @slash_option( name="user", description="User to get info of", - opt_type=OptionTypes.USER, + opt_type=OptionType.USER, required=False, ) - async def _userinfo_slsh(self, ctx: InteractionContext, user: User = None) -> None: + async def _userinfo_slsh(self, ctx: SlashContext, user: User = None) -> None: await self._userinfo(ctx, user) - @context_menu(name="User Info", context_type=CommandTypes.USER) - async def _userinfo_menu(self, ctx: InteractionContext) -> None: + @context_menu(name="User Info", context_type=CommandType.USER) + async def _userinfo_menu(self, ctx: SlashContext) -> None: await self._userinfo(ctx, ctx.target) @slash_command(name="serverinfo", description="Get server info") - async def _server_info(self, ctx: InteractionContext) -> None: + async def _server_info(self, ctx: SlashContext) -> None: guild: Guild = ctx.guild owner = await guild.fetch_owner() @@ -332,7 +335,7 @@ class UtilCog(Extension): embed.set_author(name=guild.name, icon_url=guild.icon.url) embed.set_thumbnail(url=guild.icon.url) embed.set_footer(text=f"ID: {guild.id} | Server Created") - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(embeds=embed, components=components) @slash_command( @@ -344,13 +347,13 @@ class UtilCog(Extension): @slash_option( name="length", description="Password length (default 32)", - opt_type=OptionTypes.INTEGER, + opt_type=OptionType.INTEGER, required=False, ) @slash_option( name="chars", description="Characters to include (default last option)", - opt_type=OptionTypes.INTEGER, + opt_type=OptionType.INTEGER, required=False, choices=[ SlashCommandChoice(name="A-Za-z", value=0), @@ -360,7 +363,7 @@ class UtilCog(Extension): ], ) @cooldown(bucket=Buckets.USER, rate=1, interval=15) - async def _pw_gen(self, ctx: InteractionContext, length: int = 32, chars: int = 3) -> None: + async def _pw_gen(self, ctx: SlashContext, length: int = 32, chars: int = 3) -> None: if length > 256: await ctx.send("Please limit password to 256 characters", ephemeral=True) return @@ -381,8 +384,8 @@ class UtilCog(Extension): ) @slash_command(name="pigpen", description="Encode a string into pigpen") - @slash_option(name="text", description="Text to encode", opt_type=OptionTypes.STRING, required=True) - async def _pigpen(self, ctx: InteractionContext, text: str) -> None: + @slash_option(name="text", description="Text to encode", opt_type=OptionType.STRING, required=True) + async def _pigpen(self, ctx: SlashContext, text: str) -> None: outp = "`" for c in text: c = c.lower() @@ -397,9 +400,9 @@ class UtilCog(Extension): await ctx.send(outp[:2000]) @slash_command(name="timestamp", description="Convert a datetime or timestamp into it's counterpart") - @slash_option(name="string", description="String to convert", opt_type=OptionTypes.STRING, required=True) - @slash_option(name="private", description="Respond quietly?", opt_type=OptionTypes.BOOLEAN, required=False) - async def _timestamp(self, ctx: InteractionContext, string: str, private: bool = False) -> None: + @slash_option(name="string", description="String to convert", opt_type=OptionType.STRING, required=True) + @slash_option(name="private", description="Respond quietly?", opt_type=OptionType.BOOLEAN, required=False) + async def _timestamp(self, ctx: SlashContext, string: str, private: bool = False) -> None: timestamp = parse(string) if not timestamp: await ctx.send("Valid time not found, try again", ephemeral=True) @@ -420,11 +423,11 @@ class UtilCog(Extension): EmbedField(name="ISO8601", value=timestamp.isoformat()), ] embed = build_embed(title="Converted Time", description=f"`{string}`", fields=fields) - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(embeds=embed, ephemeral=private, components=components) @bot.subcommand(sub_cmd_name="support", sub_cmd_description="Got issues?") - async def _support(self, ctx: InteractionContext) -> None: + async def _support(self, ctx: SlashContext) -> None: await ctx.send( f""" Run into issues with {self.bot.user.mention}? Please report them here! @@ -436,7 +439,7 @@ We'll help as best we can with whatever issues you encounter. ) @bot.subcommand(sub_cmd_name="privacy_terms", sub_cmd_description="View Privacy and Terms of Use") - async def _privacy_terms(self, ctx: InteractionContext) -> None: + async def _privacy_terms(self, ctx: SlashContext) -> None: await ctx.send( """ View the privacy statement here: https://s.zevs.me/jarvis-privacy diff --git a/jarvis/cogs/extra/calc.py b/jarvis/cogs/extra/calc.py index 736cc58..ac1c1d9 100644 --- a/jarvis/cogs/extra/calc.py +++ b/jarvis/cogs/extra/calc.py @@ -6,9 +6,9 @@ from calculator import calculate from interactions import AutocompleteContext, Client, Extension, InteractionContext from interactions.models.discord.components import Button from interactions.models.discord.embed import Embed, EmbedField -from interactions.models.discord.enums import ButtonStyles +from interactions.models.discord.enums import ButtonStyle from interactions.models.internal.application_commands import ( - OptionTypes, + OptionType, SlashCommand, SlashCommandChoice, slash_option, @@ -76,13 +76,13 @@ class CalcCog(Extension): calc = SlashCommand(name="calc", description="Calculate some things") @calc.subcommand(sub_cmd_name="math", sub_cmd_description="Do a basic math calculation") - @slash_option(name="expression", description="Expression to calculate", required=True, opt_type=OptionTypes.STRING) + @slash_option(name="expression", description="Expression to calculate", required=True, opt_type=OptionType.STRING) async def _calc_math(self, ctx: InteractionContext, expression: str) -> None: if expression == "The answer to life, the universe, and everything": fields = (EmbedField(name="Expression", value=f"`{expression}`"), EmbedField(name="Result", value=str(42))) embed = build_embed(title="Calculator", description=None, fields=fields) - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(embeds=embed, components=components) return try: @@ -97,18 +97,18 @@ class CalcCog(Extension): fields = (EmbedField(name="Expression", value=f"`{expression}`"), EmbedField(name="Result", value=str(value))) embed = build_embed(title="Calculator", description=None, fields=fields) - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(embeds=embed, components=components) convert = calc.group(name="convert", description="Conversion helpers") @convert.subcommand(sub_cmd_name="temperature", sub_cmd_description="Convert between temperatures") - @slash_option(name="value", description="Value to convert", required=True, opt_type=OptionTypes.NUMBER) + @slash_option(name="value", description="Value to convert", required=True, opt_type=OptionType.NUMBER) @slash_option( - name="from_unit", description="From unit", required=True, opt_type=OptionTypes.INTEGER, choices=TEMP_CHOICES + name="from_unit", description="From unit", required=True, opt_type=OptionType.INTEGER, choices=TEMP_CHOICES ) @slash_option( - name="to_unit", description="To unit", required=True, opt_type=OptionTypes.INTEGER, choices=TEMP_CHOICES + name="to_unit", description="To unit", required=True, opt_type=OptionType.INTEGER, choices=TEMP_CHOICES ) async def _calc_convert_temperature( self, ctx: InteractionContext, value: int, from_unit: int, to_unit: int @@ -139,23 +139,23 @@ class CalcCog(Extension): description=f"°{TEMP_LOOKUP.get(from_unit)} -> °{TEMP_LOOKUP.get(to_unit)}", fields=fields, ) - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(embeds=embed, components=components) @convert.subcommand(sub_cmd_name="currency", sub_cmd_description="Convert currency based on current rates") - @slash_option(name="value", description="Value of starting currency", required=True, opt_type=OptionTypes.NUMBER) + @slash_option(name="value", description="Value of starting currency", required=True, opt_type=OptionType.NUMBER) @slash_option( name="from_currency", description="Currency to convert from", required=True, - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, autocomplete=True, ) @slash_option( name="to_currency", description="Currency to convert to", required=True, - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, autocomplete=True, ) async def _calc_convert_currency( @@ -174,180 +174,180 @@ class CalcCog(Extension): ) embed = build_embed(title="Conversion", description=f"{from_currency} -> {to_currency}", fields=fields) - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(embeds=embed, components=components) async def _convert(self, ctx: InteractionContext, from_: str, to: str, value: int) -> Embed: - *_, which = ctx.invoked_name.split(" ") + *_, which = ctx.invoke_target.split(" ") which = getattr(units, which.capitalize(), None) ratio = which.get_rate(from_, to) converted = value / ratio fields = (EmbedField(name=from_, value=f"{value:0.2f}"), EmbedField(name=to, value=f"{converted:0.2f}")) embed = build_embed(title="Conversion", description=f"{from_} -> {to}", fields=fields) - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(embeds=embed, components=components) @convert.subcommand(sub_cmd_name="angle", sub_cmd_description="Convert angles") - @slash_option(name="value", description="Angle to convert", opt_type=OptionTypes.NUMBER, required=True) + @slash_option(name="value", description="Angle to convert", opt_type=OptionType.NUMBER, required=True) @slash_option( name="from_unit", description="Units to convert from", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, autocomplete=True, ) @slash_option( - name="to_unit", description="Units to convert to", opt_type=OptionTypes.STRING, required=True, autocomplete=True + name="to_unit", description="Units to convert to", opt_type=OptionType.STRING, required=True, autocomplete=True ) async def _calc_convert_angle(self, ctx: InteractionContext, value: int, from_unit: str, to_unit: str) -> None: await self._convert(ctx, from_unit, to_unit, value) @convert.subcommand(sub_cmd_name="area", sub_cmd_description="Convert areas") - @slash_option(name="value", description="Area to convert", opt_type=OptionTypes.NUMBER, required=True) + @slash_option(name="value", description="Area to convert", opt_type=OptionType.NUMBER, required=True) @slash_option( name="from_unit", description="Units to convert from", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, autocomplete=True, ) @slash_option( - name="to_unit", description="Units to convert to", opt_type=OptionTypes.STRING, required=True, autocomplete=True + name="to_unit", description="Units to convert to", opt_type=OptionType.STRING, required=True, autocomplete=True ) async def _calc_convert_area(self, ctx: InteractionContext, value: int, from_unit: str, to_unit: str) -> None: await self._convert(ctx, from_unit, to_unit, value) @convert.subcommand(sub_cmd_name="data", sub_cmd_description="Convert data sizes") - @slash_option(name="value", description="Data size to convert", opt_type=OptionTypes.NUMBER, required=True) + @slash_option(name="value", description="Data size to convert", opt_type=OptionType.NUMBER, required=True) @slash_option( name="from_unit", description="Units to convert from", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, autocomplete=True, ) @slash_option( - name="to_unit", description="Units to convert to", opt_type=OptionTypes.STRING, required=True, autocomplete=True + name="to_unit", description="Units to convert to", opt_type=OptionType.STRING, required=True, autocomplete=True ) async def _calc_convert_data(self, ctx: InteractionContext, value: int, from_unit: str, to_unit: str) -> None: await self._convert(ctx, from_unit, to_unit, value) @convert.subcommand(sub_cmd_name="energy", sub_cmd_description="Convert energy") - @slash_option(name="value", description="Energy to convert", opt_type=OptionTypes.NUMBER, required=True) + @slash_option(name="value", description="Energy to convert", opt_type=OptionType.NUMBER, required=True) @slash_option( name="from_unit", description="Units to convert from", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, autocomplete=True, ) @slash_option( - name="to_unit", description="Units to convert to", opt_type=OptionTypes.STRING, required=True, autocomplete=True + name="to_unit", description="Units to convert to", opt_type=OptionType.STRING, required=True, autocomplete=True ) async def _calc_convert_energy(self, ctx: InteractionContext, value: int, from_unit: str, to_unit: str) -> None: await self._convert(ctx, from_unit, to_unit, value) @convert.subcommand(sub_cmd_name="length", sub_cmd_description="Convert lengths") - @slash_option(name="value", description="Length to convert", opt_type=OptionTypes.NUMBER, required=True) + @slash_option(name="value", description="Length to convert", opt_type=OptionType.NUMBER, required=True) @slash_option( name="from_unit", description="Units to convert from", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, autocomplete=True, ) @slash_option( - name="to_unit", description="Units to convert to", opt_type=OptionTypes.STRING, required=True, autocomplete=True + name="to_unit", description="Units to convert to", opt_type=OptionType.STRING, required=True, autocomplete=True ) async def _calc_convert_length(self, ctx: InteractionContext, value: int, from_unit: str, to_unit: str) -> None: await self._convert(ctx, from_unit, to_unit, value) @convert.subcommand(sub_cmd_name="power", sub_cmd_description="Convert powers") - @slash_option(name="value", description="Power to convert", opt_type=OptionTypes.NUMBER, required=True) + @slash_option(name="value", description="Power to convert", opt_type=OptionType.NUMBER, required=True) @slash_option( name="from_unit", description="Units to convert from", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, autocomplete=True, ) @slash_option( - name="to_unit", description="Units to convert to", opt_type=OptionTypes.STRING, required=True, autocomplete=True + name="to_unit", description="Units to convert to", opt_type=OptionType.STRING, required=True, autocomplete=True ) async def _calc_convert_power(self, ctx: InteractionContext, value: int, from_unit: str, to_unit: str) -> None: await self._convert(ctx, from_unit, to_unit, value) @convert.subcommand(sub_cmd_name="pressure", sub_cmd_description="Convert pressures") - @slash_option(name="value", description="Pressure to convert", opt_type=OptionTypes.NUMBER, required=True) + @slash_option(name="value", description="Pressure to convert", opt_type=OptionType.NUMBER, required=True) @slash_option( name="from_unit", description="Units to convert from", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, autocomplete=True, ) @slash_option( - name="to_unit", description="Units to convert to", opt_type=OptionTypes.STRING, required=True, autocomplete=True + name="to_unit", description="Units to convert to", opt_type=OptionType.STRING, required=True, autocomplete=True ) async def _calc_convert_pressure(self, ctx: InteractionContext, value: int, from_unit: str, to_unit: str) -> None: await self._convert(ctx, from_unit, to_unit, value) @convert.subcommand(sub_cmd_name="speed", sub_cmd_description="Convert speeds") - @slash_option(name="value", description="Speed to convert", opt_type=OptionTypes.NUMBER, required=True) + @slash_option(name="value", description="Speed to convert", opt_type=OptionType.NUMBER, required=True) @slash_option( name="from_unit", description="Units to convert from", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, autocomplete=True, ) @slash_option( - name="to_unit", description="Units to convert to", opt_type=OptionTypes.STRING, required=True, autocomplete=True + name="to_unit", description="Units to convert to", opt_type=OptionType.STRING, required=True, autocomplete=True ) async def _calc_convert_speed(self, ctx: InteractionContext, value: int, from_unit: str, to_unit: str) -> None: await self._convert(ctx, from_unit, to_unit, value) @convert.subcommand(sub_cmd_name="time", sub_cmd_description="Convert times") - @slash_option(name="value", description="Time to convert", opt_type=OptionTypes.NUMBER, required=True) + @slash_option(name="value", description="Time to convert", opt_type=OptionType.NUMBER, required=True) @slash_option( name="from_unit", description="Units to convert from", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, autocomplete=True, ) @slash_option( - name="to_unit", description="Units to convert to", opt_type=OptionTypes.STRING, required=True, autocomplete=True + name="to_unit", description="Units to convert to", opt_type=OptionType.STRING, required=True, autocomplete=True ) async def _calc_convert_time(self, ctx: InteractionContext, value: int, from_unit: str, to_unit: str) -> None: await self._convert(ctx, from_unit, to_unit, value) @convert.subcommand(sub_cmd_name="volume", sub_cmd_description="Convert volumes") - @slash_option(name="value", description="Volume to convert", opt_type=OptionTypes.NUMBER, required=True) + @slash_option(name="value", description="Volume to convert", opt_type=OptionType.NUMBER, required=True) @slash_option( name="from_unit", description="Units to convert from", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, autocomplete=True, ) @slash_option( - name="to_unit", description="Units to convert to", opt_type=OptionTypes.STRING, required=True, autocomplete=True + name="to_unit", description="Units to convert to", opt_type=OptionType.STRING, required=True, autocomplete=True ) async def _calc_convert_volume(self, ctx: InteractionContext, value: int, from_unit: str, to_unit: str) -> None: await self._convert(ctx, from_unit, to_unit, value) @convert.subcommand(sub_cmd_name="weight", sub_cmd_description="Convert weights") - @slash_option(name="value", description="Weight to convert", opt_type=OptionTypes.NUMBER, required=True) + @slash_option(name="value", description="Weight to convert", opt_type=OptionType.NUMBER, required=True) @slash_option( name="from_unit", description="Units to convert from", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, autocomplete=True, ) @slash_option( - name="to_unit", description="Units to convert to", opt_type=OptionTypes.STRING, required=True, autocomplete=True + name="to_unit", description="Units to convert to", opt_type=OptionType.STRING, required=True, autocomplete=True ) async def _calc_convert_weight(self, ctx: InteractionContext, value: int, from_unit: str, to_unit: str) -> None: await self._convert(ctx, from_unit, to_unit, value) @@ -370,12 +370,10 @@ class CalcCog(Extension): @_calc_convert_time.autocomplete("from_unit") @_calc_convert_volume.autocomplete("from_unit") @_calc_convert_weight.autocomplete("from_unit") - async def _autocomplete_from_unit( - self, ctx: AutocompleteContext, from_unit: str, to_unit: str = None, value: int = 0 - ) -> None: - *_, which = ctx.invoked_name.split(" ") + async def _autocomplete_from_unit(self, ctx: AutocompleteContext) -> None: + *_, which = ctx.invoke_target.split(" ") which = getattr(units, which.capitalize(), None) - await ctx.send(choices=self._unit_autocomplete(which, from_unit)) + await ctx.send(choices=self._unit_autocomplete(which, ctx.input_text)) @_calc_convert_angle.autocomplete("to_unit") @_calc_convert_area.autocomplete("to_unit") @@ -388,12 +386,10 @@ class CalcCog(Extension): @_calc_convert_time.autocomplete("to_unit") @_calc_convert_volume.autocomplete("to_unit") @_calc_convert_weight.autocomplete("to_unit") - async def _autocomplete_to_unit( - self, ctx: AutocompleteContext, from_unit: str, to_unit: str = None, value: int = 0 - ) -> None: - *_, which = ctx.invoked_name.split(" ") + async def _autocomplete_to_unit(self, ctx: AutocompleteContext) -> None: + *_, which = ctx.invoke_target.split(" ") which = getattr(units, which.capitalize(), None) - await ctx.send(choices=self._unit_autocomplete(which, to_unit)) + await ctx.send(choices=self._unit_autocomplete(which, ctx.input_text)) def _currency_autocomplete(self, currency: str) -> list[dict[str, str]]: results = process.extract(currency, CURRENCIES, limit=25) @@ -402,16 +398,12 @@ class CalcCog(Extension): return [{"name": r[0], "value": r[0]} for r in results] @_calc_convert_currency.autocomplete("from_currency") - async def _autocomplete_from_currency( - self, ctx: AutocompleteContext, from_currency: str = None, to_currency: str = None, value: int = 0 - ) -> None: - await ctx.send(choices=self._currency_autocomplete(from_currency)) + async def _autocomplete_from_currency(self, ctx: AutocompleteContext) -> None: + await ctx.send(choices=self._currency_autocomplete(ctx.input_text)) @_calc_convert_currency.autocomplete("to_currency") - async def _autocomplete_to_currency( - self, ctx: AutocompleteContext, from_currency: str = None, to_currency: str = None, value: int = 0 - ) -> None: - await ctx.send(choices=self._currency_autocomplete(to_currency)) + async def _autocomplete_to_currency(self, ctx: AutocompleteContext) -> None: + await ctx.send(choices=self._currency_autocomplete(ctx.input_text)) def setup(bot: Client) -> None: diff --git a/jarvis/cogs/extra/dev.py b/jarvis/cogs/extra/dev.py index a23cc30..55180c1 100644 --- a/jarvis/cogs/extra/dev.py +++ b/jarvis/cogs/extra/dev.py @@ -15,11 +15,11 @@ from bson import ObjectId from interactions import Client, Extension, InteractionContext from interactions.models.discord.components import Button from interactions.models.discord.embed import EmbedField -from interactions.models.discord.enums import ButtonStyles +from interactions.models.discord.enums import ButtonStyle from interactions.models.discord.file import File from interactions.models.discord.message import Attachment from interactions.models.internal.application_commands import ( - OptionTypes, + OptionType, SlashCommand, SlashCommandChoice, slash_option, @@ -64,17 +64,17 @@ class DevCog(Extension): @slash_option( name="method", description="Hash method", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, choices=[SlashCommandChoice(name=x, value=x) for x in supported_hashes], ) @slash_option( name="data", description="Data to hash", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=False, ) - @slash_option(name="attach", description="File to hash", opt_type=OptionTypes.ATTACHMENT, required=False) + @slash_option(name="attach", description="File to hash", opt_type=OptionType.ATTACHMENT, required=False) @cooldown(bucket=Buckets.USER, rate=1, interval=2) async def _hash(self, ctx: InteractionContext, method: str, data: str = None, attach: Attachment = None) -> None: if not data and not attach: @@ -117,21 +117,21 @@ class DevCog(Extension): ] embed = build_embed(title=title, description=description, fields=fields) - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(embeds=embed, components=components) @dev.subcommand(sub_cmd_name="uuid", sub_cmd_description="Generate a UUID") @slash_option( name="version", description="UUID version", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, choices=[SlashCommandChoice(name=x, value=x) for x in ["3", "4", "5"]], ) @slash_option( name="data", description="Data for UUID version 3,5", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=False, ) async def _uuid(self, ctx: InteractionContext, version: str, data: str = None) -> None: @@ -173,7 +173,7 @@ class DevCog(Extension): sub_cmd_name="uuid2ulid", sub_cmd_description="Convert a UUID to a ULID", ) - @slash_option(name="uuid", description="UUID to convert", opt_type=OptionTypes.STRING, required=True) + @slash_option(name="uuid", description="UUID to convert", opt_type=OptionType.STRING, required=True) @cooldown(bucket=Buckets.USER, rate=1, interval=2) async def _uuid2ulid(self, ctx: InteractionContext, uuid: str) -> None: if UUID_VERIFY.match(uuid): @@ -186,7 +186,7 @@ class DevCog(Extension): sub_cmd_name="ulid2uuid", sub_cmd_description="Convert a ULID to a UUID", ) - @slash_option(name="ulid", description="ULID to convert", opt_type=OptionTypes.STRING, required=True) + @slash_option(name="ulid", description="ULID to convert", opt_type=OptionType.STRING, required=True) @cooldown(bucket=Buckets.USER, rate=1, interval=2) async def _ulid2uuid(self, ctx: InteractionContext, ulid: str) -> None: if ULID_VERIFY.match(ulid): @@ -201,14 +201,14 @@ class DevCog(Extension): @slash_option( name="method", description="Encode method", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, choices=[SlashCommandChoice(name=x, value=x) for x in base64_methods], ) @slash_option( name="data", description="Data to encode", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, ) async def _encode(self, ctx: InteractionContext, method: str, data: str) -> None: @@ -230,21 +230,21 @@ class DevCog(Extension): EmbedField(name=mstr, value=f"`{encoded}`", inline=False), ] embed = build_embed(title="Encoded Data", description="", fields=fields) - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(embeds=embed, components=components) @dev.subcommand(sub_cmd_name="decode", sub_cmd_description="Decode some data") @slash_option( name="method", description="Decode method", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, choices=[SlashCommandChoice(name=x, value=x) for x in base64_methods], ) @slash_option( name="data", description="Data to decode", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, ) async def _decode(self, ctx: InteractionContext, method: str, data: str) -> None: @@ -266,7 +266,7 @@ class DevCog(Extension): EmbedField(name=mstr, value=f"`{decoded}`", inline=False), ] embed = build_embed(title="Decoded Data", description="", fields=fields) - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(embeds=embed, components=components) @dev.subcommand(sub_cmd_name="cloc", sub_cmd_description="Get JARVIS lines of code") diff --git a/jarvis/cogs/extra/image.py b/jarvis/cogs/extra/image.py index 1789977..6c996d5 100644 --- a/jarvis/cogs/extra/image.py +++ b/jarvis/cogs/extra/image.py @@ -9,11 +9,11 @@ import numpy as np from interactions import Client, Extension, InteractionContext from interactions.models.discord.components import Button from interactions.models.discord.embed import EmbedField -from interactions.models.discord.enums import ButtonStyles +from interactions.models.discord.enums import ButtonStyle from interactions.models.discord.file import File from interactions.models.discord.message import Attachment from interactions.models.internal.application_commands import ( - OptionTypes, + OptionType, SlashCommand, slash_option, ) @@ -46,19 +46,19 @@ class ImageCog(Extension): @slash_option( name="target", description="Target size, i.e. 200KB", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, ) @slash_option( name="attachment", description="Image to resize", - opt_type=OptionTypes.ATTACHMENT, + opt_type=OptionType.ATTACHMENT, required=False, ) @slash_option( name="url", description="URL to download and resize", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=False, ) async def _resize( @@ -149,7 +149,7 @@ class ImageCog(Extension): ] embed = build_embed(title=filename, description="", fields=fields) embed.set_image(url="attachment://resized.png") - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(embeds=embed, file=File(file=bufio, file_name="resized.png"), components=components) diff --git a/jarvis/cogs/extra/pinboard.py b/jarvis/cogs/extra/pinboard.py index eb682ba..e8e5a43 100644 --- a/jarvis/cogs/extra/pinboard.py +++ b/jarvis/cogs/extra/pinboard.py @@ -11,11 +11,11 @@ from interactions.models.discord.components import ( StringSelectMenu, StringSelectOption, ) -from interactions.models.discord.enums import ButtonStyles +from interactions.models.discord.enums import ButtonStyle from interactions.models.discord.message import Message from interactions.models.internal.application_commands import ( - CommandTypes, - OptionTypes, + CommandType, + OptionType, SlashCommand, context_menu, slash_option, @@ -75,7 +75,7 @@ class PinboardCog(Extension): @slash_option( name="channel", description="Pinboard channel", - opt_type=OptionTypes.CHANNEL, + opt_type=OptionType.CHANNEL, required=True, ) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) @@ -111,7 +111,7 @@ class PinboardCog(Extension): @slash_option( name="channel", description="Pinboard channel", - opt_type=OptionTypes.CHANNEL, + opt_type=OptionType.CHANNEL, required=True, ) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) @@ -233,7 +233,7 @@ class PinboardCog(Extension): embed.set_footer(text=ctx.guild.name + " | " + channel.name) if image_url: embed.set_image(url=image_url) - star_components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + star_components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") star = await starboard.send(embeds=embed, components=star_components) await Star( @@ -254,7 +254,7 @@ class PinboardCog(Extension): components=components, ) - @context_menu(name="Pin Message", context_type=CommandTypes.MESSAGE) + @context_menu(name="Pin Message", context_type=CommandType.MESSAGE) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) async def _star_message(self, ctx: InteractionContext) -> None: await self._star_add(ctx, message=str(ctx.target_id)) diff --git a/jarvis/cogs/extra/rolegiver.py b/jarvis/cogs/extra/rolegiver.py index c9fc155..342eddd 100644 --- a/jarvis/cogs/extra/rolegiver.py +++ b/jarvis/cogs/extra/rolegiver.py @@ -19,10 +19,10 @@ from interactions.models.discord.components import ( StringSelectOption, ) from interactions.models.discord.embed import EmbedField -from interactions.models.discord.enums import ButtonStyles +from interactions.models.discord.enums import ButtonStyle from interactions.models.discord.role import Role from interactions.models.internal.application_commands import ( - OptionTypes, + OptionType, SlashCommand, slash_option, ) @@ -53,13 +53,18 @@ class RolegiverCog(Extension): if not guild: await rolegiver.delete() continue - role = await guild.fetch_role(rolegiver.role) - if not role: - await rolegiver.delete() - continue - if guild.id not in self.cache: - self.cache[guild.id] = {} - self.cache[guild.id][role.name] = role.id + roles = [] + for role in rolegiver.roles: + role = await guild.fetch_role(role) + if role: + roles.append(role.id) + else: + continue + if guild.id not in self.cache: + self.cache[guild.id] = {} + self.cache[guild.id][role.name] = role.id + rolegiver.roles = roles + await rolegiver.commit() rolegiver = SlashCommand(name="rolegiver", description="Allow users to choose their own roles") @@ -67,7 +72,7 @@ class RolegiverCog(Extension): sub_cmd_name="add", sub_cmd_description="Add a role to rolegiver", ) - @slash_option(name="role", description="Role to add", opt_type=OptionTypes.ROLE, required=True) + @slash_option(name="role", description="Role to add", opt_type=OptionType.ROLE, required=True) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) async def _rolegiver_add(self, ctx: InteractionContext, role: Role) -> None: if role.id == ctx.guild.id: @@ -120,7 +125,7 @@ class RolegiverCog(Extension): embed.set_thumbnail(url=ctx.guild.icon.url) embed.set_footer(text=f"{ctx.author.username}#{ctx.author.discriminator} | {ctx.author.id}") - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(embeds=embed, components=components) if ctx.guild.id not in self.cache: @@ -131,7 +136,7 @@ class RolegiverCog(Extension): @slash_option( name="role", description="Name of role to add", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, autocomplete=True, ) @@ -212,7 +217,7 @@ class RolegiverCog(Extension): embed.set_thumbnail(url=ctx.guild.icon.url) embed.set_footer(text=f"{ctx.author.username}#{ctx.author.discriminator} | {ctx.author.id}") - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(embeds=embed, components=components) @rolegiver.subcommand(sub_cmd_name="get", sub_cmd_description="Get a role") diff --git a/jarvis/cogs/extra/tags.py b/jarvis/cogs/extra/tags.py index 4e9df91..f72523e 100644 --- a/jarvis/cogs/extra/tags.py +++ b/jarvis/cogs/extra/tags.py @@ -7,10 +7,10 @@ from typing import Dict, List from interactions import AutocompleteContext, Client, Extension, InteractionContext from interactions.models.discord.components import Button from interactions.models.discord.embed import EmbedField -from interactions.models.discord.enums import ButtonStyles, Permissions +from interactions.models.discord.enums import ButtonStyle, Permissions from interactions.models.discord.modal import InputText, Modal, TextStyles from interactions.models.internal.application_commands import ( - OptionTypes, + OptionType, SlashCommand, slash_option, ) @@ -39,7 +39,7 @@ class TagCog(Extension): name="name", description="Tag to get", autocomplete=True, - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, ) async def _get(self, ctx: InteractionContext, name: str) -> None: @@ -125,7 +125,7 @@ class TagCog(Extension): icon_url=ctx.author.display_avatar.url, ) - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await response.send(embeds=embed, components=components) if ctx.guild.id not in self.cache: @@ -136,7 +136,7 @@ class TagCog(Extension): @slash_option( name="name", description="Tag name", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, autocomplete=True, required=True, ) @@ -225,7 +225,7 @@ class TagCog(Extension): name=ctx.author.username + "#" + ctx.author.discriminator, icon_url=ctx.author.display_avatar.url, ) - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await response.send(embeds=embed, components=components) if tag.name not in self.cache[ctx.guild.id]: self.cache[ctx.guild.id].remove(old_name) @@ -235,7 +235,7 @@ class TagCog(Extension): @slash_option( name="name", description="Tag name", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, autocomplete=True, ) @@ -259,7 +259,7 @@ class TagCog(Extension): @slash_option( name="name", description="Tag name", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, autocomplete=True, ) @@ -302,7 +302,7 @@ class TagCog(Extension): name=f"{username}#{discrim}" if username else "Unknown User", icon_url=url, ) - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(embeds=embed, components=components) @tag.subcommand(sub_cmd_name="list", sub_cmd_description="List tag names") @@ -310,7 +310,7 @@ class TagCog(Extension): tags = await Tag.find(q(guild=ctx.guild.id)).to_list(None) names = "\n".join(f"`{t.name}`" for t in tags) embed = build_embed(title="All Tags", description=names, fields=[]) - components = Button(style=ButtonStyles.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") + components = Button(style=ButtonStyle.DANGER, emoji="🗑️", custom_id=f"delete|{ctx.author.id}") await ctx.send(embeds=embed, components=components) @_get.autocomplete("name") diff --git a/jarvis/cogs/unique/ctc2.py b/jarvis/cogs/unique/ctc2.py index 922218e..c8a4940 100644 --- a/jarvis/cogs/unique/ctc2.py +++ b/jarvis/cogs/unique/ctc2.py @@ -5,11 +5,11 @@ import re import aiohttp from interactions import Client, Extension, InteractionContext from interactions.ext.paginators import Paginator -from interactions.models.discord.components import ActionRow, Button, ButtonStyles +from interactions.models.discord.components import ActionRow, Button, ButtonStyle from interactions.models.discord.embed import EmbedField from interactions.models.discord.user import Member, User from interactions.models.internal.application_commands import ( - OptionTypes, + OptionType, SlashCommand, slash_option, ) @@ -46,14 +46,14 @@ class CTCCog(Extension): @ctc2.subcommand(sub_cmd_name="about") @cooldown(bucket=Buckets.USER, rate=1, interval=30) async def _about(self, ctx: InteractionContext) -> None: - components = [ActionRow(Button(style=ButtonStyles.URL, url="https://completethecode.com", label="More Info"))] + components = [ActionRow(Button(style=ButtonStyle.URL, url="https://completethecode.com", label="More Info"))] await ctx.send("See https://completethecode.com for more information", components=components) @ctc2.subcommand( sub_cmd_name="pw", sub_cmd_description="Guess a password for https://completethecodetwo.cards", ) - @slash_option(name="guess", description="Guess a password", opt_type=OptionTypes.STRING, required=True) + @slash_option(name="guess", description="Guess a password", opt_type=OptionType.STRING, required=True) @cooldown(bucket=Buckets.USER, rate=1, interval=2) async def _pw(self, ctx: InteractionContext, guess: str) -> None: if len(guess) > 800: diff --git a/jarvis/cogs/unique/dbrand.py b/jarvis/cogs/unique/dbrand.py index ee4eaca..1817d83 100644 --- a/jarvis/cogs/unique/dbrand.py +++ b/jarvis/cogs/unique/dbrand.py @@ -9,7 +9,7 @@ from interactions import Client, Extension, InteractionContext from interactions.client.utils import find from interactions.models.discord.embed import EmbedField from interactions.models.internal.application_commands import ( - OptionTypes, + OptionType, SlashCommand, slash_option, ) @@ -204,7 +204,7 @@ class DbrandCog(Extension): @slash_option( name="search", description="Country search query (2 character code, country name, flag emoji)", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=True, ) @cooldown(bucket=Buckets.USER, rate=1, interval=2) diff --git a/jarvis/cogs/unique/gl.py b/jarvis/cogs/unique/gl.py index 6658224..86bd6de 100644 --- a/jarvis/cogs/unique/gl.py +++ b/jarvis/cogs/unique/gl.py @@ -10,7 +10,7 @@ from interactions.models.discord.embed import Embed, EmbedField from interactions.models.discord.modal import InputText, Modal, TextStyles from interactions.models.discord.user import Member from interactions.models.internal.application_commands import ( - OptionTypes, + OptionType, SlashCommand, SlashCommandChoice, slash_command, @@ -40,7 +40,7 @@ class GitlabCog(Extension): sub_cmd_name="issue", sub_cmd_description="Get an issue from GitLab", ) - @slash_option(name="id", description="Issue ID", opt_type=OptionTypes.INTEGER, required=True) + @slash_option(name="id", description="Issue ID", opt_type=OptionType.INTEGER, required=True) async def _issue(self, ctx: InteractionContext, id: int) -> None: try: issue = self.project.issues.get(int(id)) @@ -102,7 +102,7 @@ class GitlabCog(Extension): sub_cmd_name="milestone", sub_cmd_description="Get a milestone from GitLab", ) - @slash_option(name="id", description="Milestone ID", opt_type=OptionTypes.INTEGER, required=True) + @slash_option(name="id", description="Milestone ID", opt_type=OptionType.INTEGER, required=True) async def _milestone(self, ctx: InteractionContext, id: int) -> None: try: milestone = self.project.milestones.get(int(id)) @@ -150,7 +150,7 @@ class GitlabCog(Extension): sub_cmd_name="mr", sub_cmd_description="Get a merge request from GitLab", ) - @slash_option(name="id", description="Merge Request ID", opt_type=OptionTypes.INTEGER, required=True) + @slash_option(name="id", description="Merge Request ID", opt_type=OptionType.INTEGER, required=True) async def _mergerequest(self, ctx: InteractionContext, id: int) -> None: try: mr = self.project.mergerequests.get(int(id)) @@ -251,7 +251,7 @@ class GitlabCog(Extension): @slash_option( name="state", description="State of issues to get", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=False, choices=[ SlashCommandChoice(name="Open", value="opened"), @@ -305,7 +305,7 @@ class GitlabCog(Extension): @slash_option( name="state", description="State of merge requests to get", - opt_type=OptionTypes.STRING, + opt_type=OptionType.STRING, required=False, choices=[ SlashCommandChoice(name="Open", value="opened"), @@ -391,7 +391,7 @@ class GitlabCog(Extension): @slash_option( name="user", description="Credit someone else for this issue", - opt_type=OptionTypes.USER, + opt_type=OptionType.USER, required=False, ) async def _open_issue(self, ctx: InteractionContext, user: Member = None) -> None: diff --git a/jarvis/tracking.py b/jarvis/tracking.py index 08effc4..966189e 100644 --- a/jarvis/tracking.py +++ b/jarvis/tracking.py @@ -1,14 +1,5 @@ -"""JARVIS Prometheus extra tracking.""" -from prometheus_client import Counter, Info +from statipy.db import GuildMetadata -malicious_tracker = Counter( - "jarvis_malicious_blocked", - "Amount of malicious messages blocked", - labelnames=["guild_id", "guild_name"], -) -warnings_tracker = Counter( - "jarvis_warnings", "Amount of warnings given out", labelnames=["guild_id", "guild_name"] -) - -jarvis_info = Info("jarvis", "Jarvis version") +class WarningMetadata(GuildMetadata): + type: str diff --git a/jarvis/utils/cogs.py b/jarvis/utils/cogs.py index 3d8b6f7..3d3f45e 100644 --- a/jarvis/utils/cogs.py +++ b/jarvis/utils/cogs.py @@ -3,13 +3,14 @@ import logging from datetime import timedelta from interactions import Client, Extension, InteractionContext -from interactions.models.discord.components import ActionRow, Button, ButtonStyles +from interactions.models.discord.components import ActionRow, Button, ButtonStyle from interactions.models.discord.embed import EmbedField from interactions.models.discord.user import Member from jarvis_core.db import q from jarvis_core.db.models import Action, Ban, Kick, Modlog, Mute, Setting, Warning +from statipy.db import Stat -from jarvis.tracking import warnings_tracker +from jarvis.tracking import WarningMetadata from jarvis.utils import build_embed MODLOG_LOOKUP = {"Ban": Ban, "Kick": Kick, "Mute": Mute, "Warning": Warning} @@ -41,8 +42,16 @@ class ModcaseCog(Extension): if name in MODLOG_LOOKUP and ctx.invoke_target not in IGNORE_COMMANDS[name]: if name == "Warning": - tracker = warnings_tracker.labels(guild_id=ctx.guild.id, guild_name=ctx.guild.name) - tracker.inc() + md = WarningMetadata( + client_id=self.user.id, + client_name=self.client_name, + name="warning", + type="manual", + guild_id=message.guild.id, + guild_name=message.guild.name, + value=1, + ) + await Stat(meta=md).insert() user = kwargs.pop("user", None) if not user and not ctx.target_id: self.logger.warning("Admin action %s missing user, exiting", name) @@ -141,8 +150,8 @@ class ModcaseCog(Extension): embed.set_author(name=user.username + "#" + user.discriminator, icon_url=avatar_url) components = [ ActionRow( - Button(style=ButtonStyles.RED, emoji="✖️", custom_id="modcase|no"), - Button(style=ButtonStyles.GREEN, emoji="✔️", custom_id="modcase|yes"), + Button(style=ButtonStyle.RED, emoji="✖️", custom_id="modcase|no"), + Button(style=ButtonStyle.GREEN, emoji="✔️", custom_id="modcase|yes"), ) ] message = await channel.send(embeds=embed, components=components) diff --git a/poetry.lock b/poetry.lock index 859d629..b21fd38 100644 --- a/poetry.lock +++ b/poetry.lock @@ -31,106 +31,106 @@ files = [ [[package]] name = "aiohttp" -version = "3.8.3" +version = "3.8.4" description = "Async http client/server framework (asyncio)" category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "aiohttp-3.8.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ba71c9b4dcbb16212f334126cc3d8beb6af377f6703d9dc2d9fb3874fd667ee9"}, - {file = "aiohttp-3.8.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d24b8bb40d5c61ef2d9b6a8f4528c2f17f1c5d2d31fed62ec860f6006142e83e"}, - {file = "aiohttp-3.8.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f88df3a83cf9df566f171adba39d5bd52814ac0b94778d2448652fc77f9eb491"}, - {file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b97decbb3372d4b69e4d4c8117f44632551c692bb1361b356a02b97b69e18a62"}, - {file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:309aa21c1d54b8ef0723181d430347d7452daaff93e8e2363db8e75c72c2fb2d"}, - {file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ad5383a67514e8e76906a06741febd9126fc7c7ff0f599d6fcce3e82b80d026f"}, - {file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20acae4f268317bb975671e375493dbdbc67cddb5f6c71eebdb85b34444ac46b"}, - {file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:05a3c31c6d7cd08c149e50dc7aa2568317f5844acd745621983380597f027a18"}, - {file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d6f76310355e9fae637c3162936e9504b4767d5c52ca268331e2756e54fd4ca5"}, - {file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:256deb4b29fe5e47893fa32e1de2d73c3afe7407738bd3c63829874661d4822d"}, - {file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:5c59fcd80b9049b49acd29bd3598cada4afc8d8d69bd4160cd613246912535d7"}, - {file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:059a91e88f2c00fe40aed9031b3606c3f311414f86a90d696dd982e7aec48142"}, - {file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2feebbb6074cdbd1ac276dbd737b40e890a1361b3cc30b74ac2f5e24aab41f7b"}, - {file = "aiohttp-3.8.3-cp310-cp310-win32.whl", hash = "sha256:5bf651afd22d5f0c4be16cf39d0482ea494f5c88f03e75e5fef3a85177fecdeb"}, - {file = "aiohttp-3.8.3-cp310-cp310-win_amd64.whl", hash = "sha256:653acc3880459f82a65e27bd6526e47ddf19e643457d36a2250b85b41a564715"}, - {file = "aiohttp-3.8.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:86fc24e58ecb32aee09f864cb11bb91bc4c1086615001647dbfc4dc8c32f4008"}, - {file = "aiohttp-3.8.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:75e14eac916f024305db517e00a9252714fce0abcb10ad327fb6dcdc0d060f1d"}, - {file = "aiohttp-3.8.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d1fde0f44029e02d02d3993ad55ce93ead9bb9b15c6b7ccd580f90bd7e3de476"}, - {file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ab94426ddb1ecc6a0b601d832d5d9d421820989b8caa929114811369673235c"}, - {file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:89d2e02167fa95172c017732ed7725bc8523c598757f08d13c5acca308e1a061"}, - {file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:02f9a2c72fc95d59b881cf38a4b2be9381b9527f9d328771e90f72ac76f31ad8"}, - {file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c7149272fb5834fc186328e2c1fa01dda3e1fa940ce18fded6d412e8f2cf76d"}, - {file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:512bd5ab136b8dc0ffe3fdf2dfb0c4b4f49c8577f6cae55dca862cd37a4564e2"}, - {file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7018ecc5fe97027214556afbc7c502fbd718d0740e87eb1217b17efd05b3d276"}, - {file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:88c70ed9da9963d5496d38320160e8eb7e5f1886f9290475a881db12f351ab5d"}, - {file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:da22885266bbfb3f78218dc40205fed2671909fbd0720aedba39b4515c038091"}, - {file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:e65bc19919c910127c06759a63747ebe14f386cda573d95bcc62b427ca1afc73"}, - {file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:08c78317e950e0762c2983f4dd58dc5e6c9ff75c8a0efeae299d363d439c8e34"}, - {file = "aiohttp-3.8.3-cp311-cp311-win32.whl", hash = "sha256:45d88b016c849d74ebc6f2b6e8bc17cabf26e7e40c0661ddd8fae4c00f015697"}, - {file = "aiohttp-3.8.3-cp311-cp311-win_amd64.whl", hash = "sha256:96372fc29471646b9b106ee918c8eeb4cca423fcbf9a34daa1b93767a88a2290"}, - {file = "aiohttp-3.8.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c971bf3786b5fad82ce5ad570dc6ee420f5b12527157929e830f51c55dc8af77"}, - {file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff25f48fc8e623d95eca0670b8cc1469a83783c924a602e0fbd47363bb54aaca"}, - {file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e381581b37db1db7597b62a2e6b8b57c3deec95d93b6d6407c5b61ddc98aca6d"}, - {file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:db19d60d846283ee275d0416e2a23493f4e6b6028825b51290ac05afc87a6f97"}, - {file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25892c92bee6d9449ffac82c2fe257f3a6f297792cdb18ad784737d61e7a9a85"}, - {file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:398701865e7a9565d49189f6c90868efaca21be65c725fc87fc305906be915da"}, - {file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:4a4fbc769ea9b6bd97f4ad0b430a6807f92f0e5eb020f1e42ece59f3ecfc4585"}, - {file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:b29bfd650ed8e148f9c515474a6ef0ba1090b7a8faeee26b74a8ff3b33617502"}, - {file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:1e56b9cafcd6531bab5d9b2e890bb4937f4165109fe98e2b98ef0dcfcb06ee9d"}, - {file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:ec40170327d4a404b0d91855d41bfe1fe4b699222b2b93e3d833a27330a87a6d"}, - {file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:2df5f139233060578d8c2c975128fb231a89ca0a462b35d4b5fcf7c501ebdbe1"}, - {file = "aiohttp-3.8.3-cp36-cp36m-win32.whl", hash = "sha256:f973157ffeab5459eefe7b97a804987876dd0a55570b8fa56b4e1954bf11329b"}, - {file = "aiohttp-3.8.3-cp36-cp36m-win_amd64.whl", hash = "sha256:437399385f2abcd634865705bdc180c8314124b98299d54fe1d4c8990f2f9494"}, - {file = "aiohttp-3.8.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:09e28f572b21642128ef31f4e8372adb6888846f32fecb288c8b0457597ba61a"}, - {file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f3553510abdbec67c043ca85727396ceed1272eef029b050677046d3387be8d"}, - {file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e168a7560b7c61342ae0412997b069753f27ac4862ec7867eff74f0fe4ea2ad9"}, - {file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:db4c979b0b3e0fa7e9e69ecd11b2b3174c6963cebadeecfb7ad24532ffcdd11a"}, - {file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e164e0a98e92d06da343d17d4e9c4da4654f4a4588a20d6c73548a29f176abe2"}, - {file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8a78079d9a39ca9ca99a8b0ac2fdc0c4d25fc80c8a8a82e5c8211509c523363"}, - {file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:21b30885a63c3f4ff5b77a5d6caf008b037cb521a5f33eab445dc566f6d092cc"}, - {file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4b0f30372cef3fdc262f33d06e7b411cd59058ce9174ef159ad938c4a34a89da"}, - {file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:8135fa153a20d82ffb64f70a1b5c2738684afa197839b34cc3e3c72fa88d302c"}, - {file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:ad61a9639792fd790523ba072c0555cd6be5a0baf03a49a5dd8cfcf20d56df48"}, - {file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:978b046ca728073070e9abc074b6299ebf3501e8dee5e26efacb13cec2b2dea0"}, - {file = "aiohttp-3.8.3-cp37-cp37m-win32.whl", hash = "sha256:0d2c6d8c6872df4a6ec37d2ede71eff62395b9e337b4e18efd2177de883a5033"}, - {file = "aiohttp-3.8.3-cp37-cp37m-win_amd64.whl", hash = "sha256:21d69797eb951f155026651f7e9362877334508d39c2fc37bd04ff55b2007091"}, - {file = "aiohttp-3.8.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ca9af5f8f5812d475c5259393f52d712f6d5f0d7fdad9acdb1107dd9e3cb7eb"}, - {file = "aiohttp-3.8.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d90043c1882067f1bd26196d5d2db9aa6d268def3293ed5fb317e13c9413ea4"}, - {file = "aiohttp-3.8.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d737fc67b9a970f3234754974531dc9afeea11c70791dcb7db53b0cf81b79784"}, - {file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebf909ea0a3fc9596e40d55d8000702a85e27fd578ff41a5500f68f20fd32e6c"}, - {file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5835f258ca9f7c455493a57ee707b76d2d9634d84d5d7f62e77be984ea80b849"}, - {file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da37dcfbf4b7f45d80ee386a5f81122501ec75672f475da34784196690762f4b"}, - {file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87f44875f2804bc0511a69ce44a9595d5944837a62caecc8490bbdb0e18b1342"}, - {file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:527b3b87b24844ea7865284aabfab08eb0faf599b385b03c2aa91fc6edd6e4b6"}, - {file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d5ba88df9aa5e2f806650fcbeedbe4f6e8736e92fc0e73b0400538fd25a4dd96"}, - {file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e7b8813be97cab8cb52b1375f41f8e6804f6507fe4660152e8ca5c48f0436017"}, - {file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:2dea10edfa1a54098703cb7acaa665c07b4e7568472a47f4e64e6319d3821ccf"}, - {file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:713d22cd9643ba9025d33c4af43943c7a1eb8547729228de18d3e02e278472b6"}, - {file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2d252771fc85e0cf8da0b823157962d70639e63cb9b578b1dec9868dd1f4f937"}, - {file = "aiohttp-3.8.3-cp38-cp38-win32.whl", hash = "sha256:66bd5f950344fb2b3dbdd421aaa4e84f4411a1a13fca3aeb2bcbe667f80c9f76"}, - {file = "aiohttp-3.8.3-cp38-cp38-win_amd64.whl", hash = "sha256:84b14f36e85295fe69c6b9789b51a0903b774046d5f7df538176516c3e422446"}, - {file = "aiohttp-3.8.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16c121ba0b1ec2b44b73e3a8a171c4f999b33929cd2397124a8c7fcfc8cd9e06"}, - {file = "aiohttp-3.8.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8d6aaa4e7155afaf994d7924eb290abbe81a6905b303d8cb61310a2aba1c68ba"}, - {file = "aiohttp-3.8.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:43046a319664a04b146f81b40e1545d4c8ac7b7dd04c47e40bf09f65f2437346"}, - {file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:599418aaaf88a6d02a8c515e656f6faf3d10618d3dd95866eb4436520096c84b"}, - {file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:92a2964319d359f494f16011e23434f6f8ef0434acd3cf154a6b7bec511e2fb7"}, - {file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:73a4131962e6d91109bca6536416aa067cf6c4efb871975df734f8d2fd821b37"}, - {file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:598adde339d2cf7d67beaccda3f2ce7c57b3b412702f29c946708f69cf8222aa"}, - {file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:75880ed07be39beff1881d81e4a907cafb802f306efd6d2d15f2b3c69935f6fb"}, - {file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a0239da9fbafd9ff82fd67c16704a7d1bccf0d107a300e790587ad05547681c8"}, - {file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:4e3a23ec214e95c9fe85a58470b660efe6534b83e6cbe38b3ed52b053d7cb6ad"}, - {file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:47841407cc89a4b80b0c52276f3cc8138bbbfba4b179ee3acbd7d77ae33f7ac4"}, - {file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:54d107c89a3ebcd13228278d68f1436d3f33f2dd2af5415e3feaeb1156e1a62c"}, - {file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c37c5cce780349d4d51739ae682dec63573847a2a8dcb44381b174c3d9c8d403"}, - {file = "aiohttp-3.8.3-cp39-cp39-win32.whl", hash = "sha256:f178d2aadf0166be4df834c4953da2d7eef24719e8aec9a65289483eeea9d618"}, - {file = "aiohttp-3.8.3-cp39-cp39-win_amd64.whl", hash = "sha256:88e5be56c231981428f4f506c68b6a46fa25c4123a2e86d156c58a8369d31ab7"}, - {file = "aiohttp-3.8.3.tar.gz", hash = "sha256:3828fb41b7203176b82fe5d699e0d845435f2374750a44b480ea6b930f6be269"}, + {file = "aiohttp-3.8.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5ce45967538fb747370308d3145aa68a074bdecb4f3a300869590f725ced69c1"}, + {file = "aiohttp-3.8.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b744c33b6f14ca26b7544e8d8aadff6b765a80ad6164fb1a430bbadd593dfb1a"}, + {file = "aiohttp-3.8.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1a45865451439eb320784918617ba54b7a377e3501fb70402ab84d38c2cd891b"}, + {file = "aiohttp-3.8.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a86d42d7cba1cec432d47ab13b6637bee393a10f664c425ea7b305d1301ca1a3"}, + {file = "aiohttp-3.8.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee3c36df21b5714d49fc4580247947aa64bcbe2939d1b77b4c8dcb8f6c9faecc"}, + {file = "aiohttp-3.8.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:176a64b24c0935869d5bbc4c96e82f89f643bcdf08ec947701b9dbb3c956b7dd"}, + {file = "aiohttp-3.8.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c844fd628851c0bc309f3c801b3a3d58ce430b2ce5b359cd918a5a76d0b20cb5"}, + {file = "aiohttp-3.8.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5393fb786a9e23e4799fec788e7e735de18052f83682ce2dfcabaf1c00c2c08e"}, + {file = "aiohttp-3.8.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e4b09863aae0dc965c3ef36500d891a3ff495a2ea9ae9171e4519963c12ceefd"}, + {file = "aiohttp-3.8.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:adfbc22e87365a6e564c804c58fc44ff7727deea782d175c33602737b7feadb6"}, + {file = "aiohttp-3.8.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:147ae376f14b55f4f3c2b118b95be50a369b89b38a971e80a17c3fd623f280c9"}, + {file = "aiohttp-3.8.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:eafb3e874816ebe2a92f5e155f17260034c8c341dad1df25672fb710627c6949"}, + {file = "aiohttp-3.8.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c6cc15d58053c76eacac5fa9152d7d84b8d67b3fde92709195cb984cfb3475ea"}, + {file = "aiohttp-3.8.4-cp310-cp310-win32.whl", hash = "sha256:59f029a5f6e2d679296db7bee982bb3d20c088e52a2977e3175faf31d6fb75d1"}, + {file = "aiohttp-3.8.4-cp310-cp310-win_amd64.whl", hash = "sha256:fe7ba4a51f33ab275515f66b0a236bcde4fb5561498fe8f898d4e549b2e4509f"}, + {file = "aiohttp-3.8.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3d8ef1a630519a26d6760bc695842579cb09e373c5f227a21b67dc3eb16cfea4"}, + {file = "aiohttp-3.8.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b3f2e06a512e94722886c0827bee9807c86a9f698fac6b3aee841fab49bbfb4"}, + {file = "aiohttp-3.8.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a80464982d41b1fbfe3154e440ba4904b71c1a53e9cd584098cd41efdb188ef"}, + {file = "aiohttp-3.8.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b631e26df63e52f7cce0cce6507b7a7f1bc9b0c501fcde69742130b32e8782f"}, + {file = "aiohttp-3.8.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f43255086fe25e36fd5ed8f2ee47477408a73ef00e804cb2b5cba4bf2ac7f5e"}, + {file = "aiohttp-3.8.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4d347a172f866cd1d93126d9b239fcbe682acb39b48ee0873c73c933dd23bd0f"}, + {file = "aiohttp-3.8.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3fec6a4cb5551721cdd70473eb009d90935b4063acc5f40905d40ecfea23e05"}, + {file = "aiohttp-3.8.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80a37fe8f7c1e6ce8f2d9c411676e4bc633a8462844e38f46156d07a7d401654"}, + {file = "aiohttp-3.8.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d1e6a862b76f34395a985b3cd39a0d949ca80a70b6ebdea37d3ab39ceea6698a"}, + {file = "aiohttp-3.8.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cd468460eefef601ece4428d3cf4562459157c0f6523db89365202c31b6daebb"}, + {file = "aiohttp-3.8.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:618c901dd3aad4ace71dfa0f5e82e88b46ef57e3239fc7027773cb6d4ed53531"}, + {file = "aiohttp-3.8.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:652b1bff4f15f6287550b4670546a2947f2a4575b6c6dff7760eafb22eacbf0b"}, + {file = "aiohttp-3.8.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80575ba9377c5171407a06d0196b2310b679dc752d02a1fcaa2bc20b235dbf24"}, + {file = "aiohttp-3.8.4-cp311-cp311-win32.whl", hash = "sha256:bbcf1a76cf6f6dacf2c7f4d2ebd411438c275faa1dc0c68e46eb84eebd05dd7d"}, + {file = "aiohttp-3.8.4-cp311-cp311-win_amd64.whl", hash = "sha256:6e74dd54f7239fcffe07913ff8b964e28b712f09846e20de78676ce2a3dc0bfc"}, + {file = "aiohttp-3.8.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:880e15bb6dad90549b43f796b391cfffd7af373f4646784795e20d92606b7a51"}, + {file = "aiohttp-3.8.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb96fa6b56bb536c42d6a4a87dfca570ff8e52de2d63cabebfd6fb67049c34b6"}, + {file = "aiohttp-3.8.4-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a6cadebe132e90cefa77e45f2d2f1a4b2ce5c6b1bfc1656c1ddafcfe4ba8131"}, + {file = "aiohttp-3.8.4-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f352b62b45dff37b55ddd7b9c0c8672c4dd2eb9c0f9c11d395075a84e2c40f75"}, + {file = "aiohttp-3.8.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ab43061a0c81198d88f39aaf90dae9a7744620978f7ef3e3708339b8ed2ef01"}, + {file = "aiohttp-3.8.4-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9cb1565a7ad52e096a6988e2ee0397f72fe056dadf75d17fa6b5aebaea05622"}, + {file = "aiohttp-3.8.4-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:1b3ea7edd2d24538959c1c1abf97c744d879d4e541d38305f9bd7d9b10c9ec41"}, + {file = "aiohttp-3.8.4-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:7c7837fe8037e96b6dd5cfcf47263c1620a9d332a87ec06a6ca4564e56bd0f36"}, + {file = "aiohttp-3.8.4-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:3b90467ebc3d9fa5b0f9b6489dfb2c304a1db7b9946fa92aa76a831b9d587e99"}, + {file = "aiohttp-3.8.4-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:cab9401de3ea52b4b4c6971db5fb5c999bd4260898af972bf23de1c6b5dd9d71"}, + {file = "aiohttp-3.8.4-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d1f9282c5f2b5e241034a009779e7b2a1aa045f667ff521e7948ea9b56e0c5ff"}, + {file = "aiohttp-3.8.4-cp36-cp36m-win32.whl", hash = "sha256:5e14f25765a578a0a634d5f0cd1e2c3f53964553a00347998dfdf96b8137f777"}, + {file = "aiohttp-3.8.4-cp36-cp36m-win_amd64.whl", hash = "sha256:4c745b109057e7e5f1848c689ee4fb3a016c8d4d92da52b312f8a509f83aa05e"}, + {file = "aiohttp-3.8.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:aede4df4eeb926c8fa70de46c340a1bc2c6079e1c40ccf7b0eae1313ffd33519"}, + {file = "aiohttp-3.8.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ddaae3f3d32fc2cb4c53fab020b69a05c8ab1f02e0e59665c6f7a0d3a5be54f"}, + {file = "aiohttp-3.8.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4eb3b82ca349cf6fadcdc7abcc8b3a50ab74a62e9113ab7a8ebc268aad35bb9"}, + {file = "aiohttp-3.8.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bcb89336efa095ea21b30f9e686763f2be4478f1b0a616969551982c4ee4c3b"}, + {file = "aiohttp-3.8.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c08e8ed6fa3d477e501ec9db169bfac8140e830aa372d77e4a43084d8dd91ab"}, + {file = "aiohttp-3.8.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c6cd05ea06daca6ad6a4ca3ba7fe7dc5b5de063ff4daec6170ec0f9979f6c332"}, + {file = "aiohttp-3.8.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7a00a9ed8d6e725b55ef98b1b35c88013245f35f68b1b12c5cd4100dddac333"}, + {file = "aiohttp-3.8.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:de04b491d0e5007ee1b63a309956eaed959a49f5bb4e84b26c8f5d49de140fa9"}, + {file = "aiohttp-3.8.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:40653609b3bf50611356e6b6554e3a331f6879fa7116f3959b20e3528783e699"}, + {file = "aiohttp-3.8.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dbf3a08a06b3f433013c143ebd72c15cac33d2914b8ea4bea7ac2c23578815d6"}, + {file = "aiohttp-3.8.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:854f422ac44af92bfe172d8e73229c270dc09b96535e8a548f99c84f82dde241"}, + {file = "aiohttp-3.8.4-cp37-cp37m-win32.whl", hash = "sha256:aeb29c84bb53a84b1a81c6c09d24cf33bb8432cc5c39979021cc0f98c1292a1a"}, + {file = "aiohttp-3.8.4-cp37-cp37m-win_amd64.whl", hash = "sha256:db3fc6120bce9f446d13b1b834ea5b15341ca9ff3f335e4a951a6ead31105480"}, + {file = "aiohttp-3.8.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fabb87dd8850ef0f7fe2b366d44b77d7e6fa2ea87861ab3844da99291e81e60f"}, + {file = "aiohttp-3.8.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:91f6d540163f90bbaef9387e65f18f73ffd7c79f5225ac3d3f61df7b0d01ad15"}, + {file = "aiohttp-3.8.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d265f09a75a79a788237d7f9054f929ced2e69eb0bb79de3798c468d8a90f945"}, + {file = "aiohttp-3.8.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d89efa095ca7d442a6d0cbc755f9e08190ba40069b235c9886a8763b03785da"}, + {file = "aiohttp-3.8.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4dac314662f4e2aa5009977b652d9b8db7121b46c38f2073bfeed9f4049732cd"}, + {file = "aiohttp-3.8.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe11310ae1e4cd560035598c3f29d86cef39a83d244c7466f95c27ae04850f10"}, + {file = "aiohttp-3.8.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ddb2a2026c3f6a68c3998a6c47ab6795e4127315d2e35a09997da21865757f8"}, + {file = "aiohttp-3.8.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e75b89ac3bd27d2d043b234aa7b734c38ba1b0e43f07787130a0ecac1e12228a"}, + {file = "aiohttp-3.8.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6e601588f2b502c93c30cd5a45bfc665faaf37bbe835b7cfd461753068232074"}, + {file = "aiohttp-3.8.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a5d794d1ae64e7753e405ba58e08fcfa73e3fad93ef9b7e31112ef3c9a0efb52"}, + {file = "aiohttp-3.8.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:a1f4689c9a1462f3df0a1f7e797791cd6b124ddbee2b570d34e7f38ade0e2c71"}, + {file = "aiohttp-3.8.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:3032dcb1c35bc330134a5b8a5d4f68c1a87252dfc6e1262c65a7e30e62298275"}, + {file = "aiohttp-3.8.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8189c56eb0ddbb95bfadb8f60ea1b22fcfa659396ea36f6adcc521213cd7b44d"}, + {file = "aiohttp-3.8.4-cp38-cp38-win32.whl", hash = "sha256:33587f26dcee66efb2fff3c177547bd0449ab7edf1b73a7f5dea1e38609a0c54"}, + {file = "aiohttp-3.8.4-cp38-cp38-win_amd64.whl", hash = "sha256:e595432ac259af2d4630008bf638873d69346372d38255774c0e286951e8b79f"}, + {file = "aiohttp-3.8.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5a7bdf9e57126dc345b683c3632e8ba317c31d2a41acd5800c10640387d193ed"}, + {file = "aiohttp-3.8.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:22f6eab15b6db242499a16de87939a342f5a950ad0abaf1532038e2ce7d31567"}, + {file = "aiohttp-3.8.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7235604476a76ef249bd64cb8274ed24ccf6995c4a8b51a237005ee7a57e8643"}, + {file = "aiohttp-3.8.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea9eb976ffdd79d0e893869cfe179a8f60f152d42cb64622fca418cd9b18dc2a"}, + {file = "aiohttp-3.8.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:92c0cea74a2a81c4c76b62ea1cac163ecb20fb3ba3a75c909b9fa71b4ad493cf"}, + {file = "aiohttp-3.8.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:493f5bc2f8307286b7799c6d899d388bbaa7dfa6c4caf4f97ef7521b9cb13719"}, + {file = "aiohttp-3.8.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a63f03189a6fa7c900226e3ef5ba4d3bd047e18f445e69adbd65af433add5a2"}, + {file = "aiohttp-3.8.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10c8cefcff98fd9168cdd86c4da8b84baaa90bf2da2269c6161984e6737bf23e"}, + {file = "aiohttp-3.8.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bca5f24726e2919de94f047739d0a4fc01372801a3672708260546aa2601bf57"}, + {file = "aiohttp-3.8.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:03baa76b730e4e15a45f81dfe29a8d910314143414e528737f8589ec60cf7391"}, + {file = "aiohttp-3.8.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:8c29c77cc57e40f84acef9bfb904373a4e89a4e8b74e71aa8075c021ec9078c2"}, + {file = "aiohttp-3.8.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:03543dcf98a6619254b409be2d22b51f21ec66272be4ebda7b04e6412e4b2e14"}, + {file = "aiohttp-3.8.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:17b79c2963db82086229012cff93ea55196ed31f6493bb1ccd2c62f1724324e4"}, + {file = "aiohttp-3.8.4-cp39-cp39-win32.whl", hash = "sha256:34ce9f93a4a68d1272d26030655dd1b58ff727b3ed2a33d80ec433561b03d67a"}, + {file = "aiohttp-3.8.4-cp39-cp39-win_amd64.whl", hash = "sha256:41a86a69bb63bb2fc3dc9ad5ea9f10f1c9c8e282b471931be0268ddd09430b04"}, + {file = "aiohttp-3.8.4.tar.gz", hash = "sha256:bf2e1a9162c1e441bf805a1fd166e249d574ca04e03b34f97e2928769e91ab5c"}, ] [package.dependencies] aiosignal = ">=1.1.2" async-timeout = ">=4.0.0a3,<5.0" attrs = ">=17.3.0" -charset-normalizer = ">=2.0,<3.0" +charset-normalizer = ">=2.0,<4.0" frozenlist = ">=1.1.1" multidict = ">=4.5,<7.0" yarl = ">=1.0,<2.0" @@ -254,14 +254,14 @@ test = ["pytest", "pytest-asyncio", "pytest-cov"] [[package]] name = "asyncpraw" -version = "7.6.1" +version = "7.7.0" description = "Async PRAW, an abbreviation for \"Asynchronous Python Reddit API Wrapper\", is a python package that allows for simple access to Reddit's API." category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "asyncpraw-7.6.1-py3-none-any.whl", hash = "sha256:b7a424d9357ff5991de71341ddf8d0f133b0b28cbc7f65e20e4e399e334e0d2b"}, - {file = "asyncpraw-7.6.1.tar.gz", hash = "sha256:17567c517afa06bb33996a01632ee7f1d733307fd2820ed982da9bfb13adb98a"}, + {file = "asyncpraw-7.7.0-py3-none-any.whl", hash = "sha256:e73fdaf3663eaf91f00c58a14340131076e841f38e01152ce18bdf050d8b5b92"}, + {file = "asyncpraw-7.7.0.tar.gz", hash = "sha256:1e598d587a9ff8e3c95140fa799ee37b3f08b16f4c717e29738378b2f1c272ef"}, ] [package.dependencies] @@ -274,10 +274,10 @@ update-checker = ">=0.18" [package.extras] ci = ["coveralls"] -dev = ["asynctest (>=0.13.0)", "mock (>=0.8)", "packaging", "pre-commit", "pytest (>=7.2.0,<7.3.0)", "pytest-asyncio", "pytest-vcr", "sphinx", "sphinx-rtd-dark-mode", "sphinx-rtd-theme", "sphinxcontrib-trio", "testfixtures (>4.13.2,<7)", "vcrpy (>=4.1.1)"] +dev = ["asynctest (>=0.13.0,<0.14.0)", "mock (>=4.0.0,<5.0.0)", "packaging", "pre-commit", "pytest (>=7.0.0,<8.0.0)", "pytest-asyncio (>=0.18.0,<0.19.0)", "pytest-vcr (>=1.0.0,<2.0.0)", "sphinx", "sphinx-rtd-dark-mode", "sphinx-rtd-theme", "sphinxcontrib-trio", "testfixtures (>=6.0.0,<7.0.0)", "vcrpy (>=4.0.0,<5.0.0)"] lint = ["pre-commit", "sphinx", "sphinx-rtd-dark-mode", "sphinx-rtd-theme", "sphinxcontrib-trio"] readthedocs = ["sphinx", "sphinx-rtd-dark-mode", "sphinx-rtd-theme", "sphinxcontrib-trio"] -test = ["asynctest (>=0.13.0)", "mock (>=0.8)", "pytest (>=7.2.0,<7.3.0)", "pytest-asyncio", "pytest-vcr", "testfixtures (>4.13.2,<7)", "vcrpy (>=4.1.1)"] +test = ["asynctest (>=0.13.0,<0.14.0)", "mock (>=4.0.0,<5.0.0)", "pytest (>=7.0.0,<8.0.0)", "pytest-asyncio (>=0.18.0,<0.19.0)", "pytest-vcr (>=1.0.0,<2.0.0)", "testfixtures (>=6.0.0,<7.0.0)", "vcrpy (>=4.0.0,<5.0.0)"] [[package]] name = "asyncprawcore" @@ -320,16 +320,35 @@ docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib- tests = ["attrs[tests-no-zope]", "zope.interface"] tests-no-zope = ["cloudpickle", "cloudpickle", "hypothesis", "hypothesis", "mypy (>=0.971,<0.990)", "mypy (>=0.971,<0.990)", "pympler", "pympler", "pytest (>=4.3.0)", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-mypy-plugins", "pytest-xdist[psutil]", "pytest-xdist[psutil]"] +[[package]] +name = "beanie" +version = "1.17.0" +description = "Asynchronous Python ODM for MongoDB" +category = "main" +optional = false +python-versions = ">=3.7,<4.0" +files = [ + {file = "beanie-1.17.0-py3-none-any.whl", hash = "sha256:a0711775051c72324fc4555120355da9a3c081d41db14ddaa8e9f368303436ef"}, + {file = "beanie-1.17.0.tar.gz", hash = "sha256:5f758785ce813838a0f25e171957afb6e70fa142dda937531427e0a530d03c64"}, +] + +[package.dependencies] +click = ">=7" +lazy-model = ">=0.0.3" +motor = ">=2.5,<4.0" +pydantic = ">=1.10.0" +toml = "*" + [[package]] name = "beautifulsoup4" -version = "4.11.1" +version = "4.11.2" description = "Screen-scraping library" category = "main" optional = false python-versions = ">=3.6.0" files = [ - {file = "beautifulsoup4-4.11.1-py3-none-any.whl", hash = "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30"}, - {file = "beautifulsoup4-4.11.1.tar.gz", hash = "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693"}, + {file = "beautifulsoup4-4.11.2-py3-none-any.whl", hash = "sha256:0e79446b10b3ecb499c1556f7e228a53e64a2bfcebd455f370d8927cb5b59e39"}, + {file = "beautifulsoup4-4.11.2.tar.gz", hash = "sha256:bc4bdda6717de5a2987436fb8d72f45dc90dd856bdfd512a1314ce90349a0106"}, ] [package.dependencies] @@ -376,14 +395,14 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "blessed" -version = "1.19.1" +version = "1.20.0" description = "Easy, practical library for making terminal apps, by providing an elegant, well-documented interface to Colors, Keyboard input, and screen Positioning capabilities." category = "main" optional = false python-versions = ">=2.7" files = [ - {file = "blessed-1.19.1-py2.py3-none-any.whl", hash = "sha256:63b8554ae2e0e7f43749b6715c734cc8f3883010a809bf16790102563e6cf25b"}, - {file = "blessed-1.19.1.tar.gz", hash = "sha256:9a0d099695bf621d4680dd6c73f6ad547f6a3442fbdbe80c4b1daa1edbc492fc"}, + {file = "blessed-1.20.0-py2.py3-none-any.whl", hash = "sha256:0c542922586a265e699188e52d5f5ac5ec0dd517e5a1041d90d2bbf23f906058"}, + {file = "blessed-1.20.0.tar.gz", hash = "sha256:2cdd67f8746e048f00df47a2880f4d6acbcdb399031b604e34ba8f71d5787680"}, ] [package.dependencies] @@ -393,33 +412,37 @@ wcwidth = ">=0.1.4" [[package]] name = "caio" -version = "0.9.11" +version = "0.9.12" description = "Asynchronous file IO for Linux MacOS or Windows." category = "main" optional = false python-versions = ">=3.7, <4" files = [ - {file = "caio-0.9.11-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:3b9b2f1d94876ee3544b78d8a33e0c0091b79fe4bdc8cc00b64d4d9c59385195"}, - {file = "caio-0.9.11-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a3adc061b2005e3e3e83066b5e9ac9966634ff65db5b60abe3bf1ec7f2c7903"}, - {file = "caio-0.9.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a5c0d2d7d437c13ef72061acf0f4f878ae17642b73bd1d8a5594b9c7398f98e"}, - {file = "caio-0.9.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b9856bcb2f523e9ac2e00e75f3bd110a927b9ed0569a9d13c029d4b3aa8a79e4"}, - {file = "caio-0.9.11-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58e184d33e94962acbc9f4e8ff9b993ca6f78794de9018a2c3060cb2c190398e"}, - {file = "caio-0.9.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19255def9e395768573f002e9d01c3eaabbf6f4dda68a1c56a0862403da1faa6"}, - {file = "caio-0.9.11-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:8157587b6ee340d7510c7e37b6f5f1223ec363154b38b43b718c7cc6b77d58c2"}, - {file = "caio-0.9.11-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e81dd50f9b53db5214469f3b953bb16cfb96c05f08f334c7aaf0d9096c37689"}, - {file = "caio-0.9.11-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7dcd1f63e50b6a175750bf1fd92734b0a9a53108ee14afa72971b64da1d701e5"}, - {file = "caio-0.9.11-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:e02e0c241b6dc19be0f85ece23ff6861907ef1cc6a8923a81345887a79f29300"}, - {file = "caio-0.9.11-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22ad87a94b2062151ef78c613711c97ddcebba7399ece39e4fd88728853137d2"}, - {file = "caio-0.9.11-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf65276487232bca415f62699298601537b558d8fd11b038633e555c45d0e82f"}, - {file = "caio-0.9.11-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:2086d65b157d39b0f070a3e6dfbca970c69d15547dfa9ef346506f4da968e960"}, - {file = "caio-0.9.11-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:510f01f71361d31ce8938f691e96a7a1306c29e0475aa59a77300a61b6f0732a"}, - {file = "caio-0.9.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e35124be09f9f26a420c279bbabb5ef0626ce0edff3e5b445e6102855453d63"}, - {file = "caio-0.9.11-py3-none-any.whl", hash = "sha256:287f7a598d8497588f0f0578eb90343b0c9ff3803b57c24e58f54793333132bf"}, - {file = "caio-0.9.11.tar.gz", hash = "sha256:33ca49789bf2d55bc3f5def36784c4624fbf16b78e9c299a2c7f6f22ac084aa6"}, + {file = "caio-0.9.12-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df395e7e1c2025b3f32dbeff20a8b6491959fac8fbd5a9c2d452bf1f5c0ca2bf"}, + {file = "caio-0.9.12-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:acd31b7828c6683bc46e467a32359f08c686d4c25a7e645c029a07c36685fea7"}, + {file = "caio-0.9.12-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0b7ffb561ca5c24e7f080aaa73ebb143ae659bd69645a748b332762c389349f"}, + {file = "caio-0.9.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6285d772ae3a55e758b1bd3bc34f095757e4af45dcc30a183becf9bbdead8ced"}, + {file = "caio-0.9.12-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:18df0caecfaa90ab9ac84ff71975fcf2342554b6f65ef69049337204b8b5af42"}, + {file = "caio-0.9.12-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e569b83e9b41d12e094190d0e1a546610829a65609f429a1845e3250d4c5804"}, + {file = "caio-0.9.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7833f81f58e76a3585ff59813e63fa278731c8d26fefe52ae12e783d38c8faea"}, + {file = "caio-0.9.12-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:aa1dab77aca0b2672b9a364f14a03e764c5d811c0ae1395f661a2b8f6723f958"}, + {file = "caio-0.9.12-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f366c595eda130a184f372d458d647b0ac879a46e872757648d4e29b6cea12ad"}, + {file = "caio-0.9.12-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2759fe1957d0effb3bc38b3508b20fa37610bff9005f3926f570e6c06e901567"}, + {file = "caio-0.9.12-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e65060717e27c702cd76a90be33250cae46be32a3009781ce382c8675fa7551"}, + {file = "caio-0.9.12-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:a8204c6a7ea3c96057abba3da1690190b3cae0c3f03d81e9b5e3c99978b5bb6e"}, + {file = "caio-0.9.12-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:820bb3ef23ce0d4096f822a8fea97ff2c239dd0351fa588801d2de627df9ab98"}, + {file = "caio-0.9.12-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa9a27973a03c777934decd577be577a61a188bee72272b3dc37a7cbc5eedf91"}, + {file = "caio-0.9.12-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d6b424644ac37ce84f9dd99757d29e7cff01018d3b31f8ec0a38f2d5216165c"}, + {file = "caio-0.9.12-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:15192a28e054cd591489af82f4b1093f15338eb201a2399a337461ff0bbd9fc9"}, + {file = "caio-0.9.12-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:55317d2c90479a58108cfbd6816b85e584e61c48b42269c55f69cf4443857068"}, + {file = "caio-0.9.12-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b18318d04cad7ef985fc2fb86d43f866ba34c1ee3445385f2370d6f843c05c69"}, + {file = "caio-0.9.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:73c20d8fc7dfb140b7d57e69e6f17e1637d2ac4a9ebe0f5f8c94b56f87c5c087"}, + {file = "caio-0.9.12-py3-none-any.whl", hash = "sha256:b81b3271478e91f18e7ac1f3e4f914ba0924364857ba8e27f03b9d0aea915ca8"}, + {file = "caio-0.9.12.tar.gz", hash = "sha256:d2be553738dd793f8a01a60316f2c5284fbf152219241c0c67ca05f650a37a37"}, ] [package.extras] -develop = ["aiomisc", "pytest", "pytest-cov"] +develop = ["aiomisc-pytest", "pytest", "pytest-cov"] [[package]] name = "calculator" @@ -463,19 +486,89 @@ files = [ [[package]] name = "charset-normalizer" -version = "2.1.1" +version = "3.1.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false -python-versions = ">=3.6.0" +python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, - {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, + {file = "charset-normalizer-3.1.0.tar.gz", hash = "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-win32.whl", hash = "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-win32.whl", hash = "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-win32.whl", hash = "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-win32.whl", hash = "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-win32.whl", hash = "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b"}, + {file = "charset_normalizer-3.1.0-py3-none-any.whl", hash = "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d"}, ] -[package.extras] -unicode-backport = ["unicodedata2"] - [[package]] name = "click" version = "8.1.3" @@ -532,14 +625,14 @@ test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"] [[package]] name = "dateparser" -version = "1.1.4" +version = "1.1.7" description = "Date parsing library designed to parse dates from HTML pages" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "dateparser-1.1.4-py2.py3-none-any.whl", hash = "sha256:4431159799b63d8acec5d7d844c5e06edf3d1b0eb2bda6d4cac87134ddddd01c"}, - {file = "dateparser-1.1.4.tar.gz", hash = "sha256:73ec6e44a133c54076ecf9f9dc0fbe3dd4831f154f977ff06f53114d57c5425e"}, + {file = "dateparser-1.1.7-py2.py3-none-any.whl", hash = "sha256:fbed8b738a24c9cd7f47c4f2089527926566fe539e1a06125eddba75917b1eef"}, + {file = "dateparser-1.1.7.tar.gz", hash = "sha256:ff047d9cffad4d3113ead8ec0faf8a7fc43bab7d853ac8715e071312b53c465a"}, ] [package.dependencies] @@ -582,22 +675,23 @@ files = [ [[package]] name = "dnspython" -version = "2.2.1" +version = "2.3.0" description = "DNS toolkit" category = "main" optional = false -python-versions = ">=3.6,<4.0" +python-versions = ">=3.7,<4.0" files = [ - {file = "dnspython-2.2.1-py3-none-any.whl", hash = "sha256:a851e51367fb93e9e1361732c1d60dab63eff98712e503ea7d92e6eccb109b4f"}, - {file = "dnspython-2.2.1.tar.gz", hash = "sha256:0f7569a4a6ff151958b64304071d370daa3243d15941a7beedf0c9fe5105603e"}, + {file = "dnspython-2.3.0-py3-none-any.whl", hash = "sha256:89141536394f909066cabd112e3e1a37e4e654db00a25308b0f130bc3152eb46"}, + {file = "dnspython-2.3.0.tar.gz", hash = "sha256:224e32b03eb46be70e12ef6d64e0be123a64e621ab4c0822ff6d450d52a540b9"}, ] [package.extras] curio = ["curio (>=1.2,<2.0)", "sniffio (>=1.1,<2.0)"] -dnssec = ["cryptography (>=2.6,<37.0)"] -doh = ["h2 (>=4.1.0)", "httpx (>=0.21.1)", "requests (>=2.23.0,<3.0.0)", "requests-toolbelt (>=0.9.1,<0.10.0)"] +dnssec = ["cryptography (>=2.6,<40.0)"] +doh = ["h2 (>=4.1.0)", "httpx (>=0.21.1)", "requests (>=2.23.0,<3.0.0)", "requests-toolbelt (>=0.9.1,<0.11.0)"] +doq = ["aioquic (>=0.9.20)"] idna = ["idna (>=2.1,<4.0)"] -trio = ["trio (>=0.14,<0.20)"] +trio = ["trio (>=0.14,<0.23)"] wmi = ["wmi (>=1.5.1,<2.0.0)"] [[package]] @@ -616,19 +710,19 @@ dev = ["coverage", "coveralls", "pytest"] [[package]] name = "filelock" -version = "3.9.0" +version = "3.10.0" description = "A platform independent file lock." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "filelock-3.9.0-py3-none-any.whl", hash = "sha256:f58d535af89bb9ad5cd4df046f741f8553a418c01a7856bf0d173bbc9f6bd16d"}, - {file = "filelock-3.9.0.tar.gz", hash = "sha256:7b319f24340b51f55a2bf7a12ac0755a9b03e718311dac567a0f4f7fabd2f5de"}, + {file = "filelock-3.10.0-py3-none-any.whl", hash = "sha256:e90b34656470756edf8b19656785c5fea73afa1953f3e1b0d645cef11cab3182"}, + {file = "filelock-3.10.0.tar.gz", hash = "sha256:3199fd0d3faea8b911be52b663dfccceb84c95949dd13179aa21436d1a79c4ce"}, ] [package.extras] -docs = ["furo (>=2022.12.7)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"] -testing = ["covdefaults (>=2.2.2)", "coverage (>=7.0.1)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-timeout (>=2.1)"] +docs = ["furo (>=2022.12.7)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.2.1)", "pytest (>=7.2.2)", "pytest-cov (>=4)", "pytest-timeout (>=2.1)"] [[package]] name = "frozenlist" @@ -731,41 +825,29 @@ smmap = ">=3.0.1,<6" [[package]] name = "gitpython" -version = "3.1.29" -description = "GitPython is a python library used to interact with Git repositories" +version = "3.1.31" +description = "GitPython is a Python library used to interact with Git repositories" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "GitPython-3.1.29-py3-none-any.whl", hash = "sha256:41eea0deec2deea139b459ac03656f0dd28fc4a3387240ec1d3c259a2c47850f"}, - {file = "GitPython-3.1.29.tar.gz", hash = "sha256:cc36bfc4a3f913e66805a28e84703e419d9c264c1077e537b54f0e1af85dbefd"}, + {file = "GitPython-3.1.31-py3-none-any.whl", hash = "sha256:f04893614f6aa713a60cbbe1e6a97403ef633103cdd0ef5eb6efe0deb98dbe8d"}, + {file = "GitPython-3.1.31.tar.gz", hash = "sha256:8ce3bcf69adfdf7c7d503e78fd3b1c492af782d58893b650adb2ac8912ddd573"}, ] [package.dependencies] gitdb = ">=4.0.1,<5" -[[package]] -name = "h11" -version = "0.14.0" -description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, -] - [[package]] name = "identify" -version = "2.5.11" +version = "2.5.20" description = "File identification library for Python" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "identify-2.5.11-py2.py3-none-any.whl", hash = "sha256:e7db36b772b188099616aaf2accbee122949d1c6a1bac4f38196720d6f9f06db"}, - {file = "identify-2.5.11.tar.gz", hash = "sha256:14b7076b29c99b1b0b8b08e96d448c7b877a9b07683cd8cfda2ea06af85ffa1c"}, + {file = "identify-2.5.20-py2.py3-none-any.whl", hash = "sha256:5dfef8a745ca4f2c95f27e9db74cb4c8b6d9916383988e8791f3595868f78a33"}, + {file = "identify-2.5.20.tar.gz", hash = "sha256:c8b288552bc5f05a08aff09af2f58e6976bf8ac87beb38498a0e3d98ba64eb18"}, ] [package.extras] @@ -785,14 +867,14 @@ files = [ [[package]] name = "importlib-metadata" -version = "5.2.0" +version = "6.0.0" description = "Read metadata from Python packages" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "importlib_metadata-5.2.0-py3-none-any.whl", hash = "sha256:0eafa39ba42bf225fc00e67f701d71f85aead9f878569caf13c3724f704b970f"}, - {file = "importlib_metadata-5.2.0.tar.gz", hash = "sha256:404d48d62bba0b7a77ff9d405efd91501bef2e67ff4ace0bed40a0cf28c3c7cd"}, + {file = "importlib_metadata-6.0.0-py3-none-any.whl", hash = "sha256:7efb448ec9a5e313a57655d35aa54cd3e01b7e1fbcf72dce1bf06119420f5bad"}, + {file = "importlib_metadata-6.0.0.tar.gz", hash = "sha256:e354bedeb60efa6affdcc8ae121b73544a7aa74156d047311948f6d711cd378d"}, ] [package.dependencies] @@ -822,14 +904,19 @@ mypy = ">0.930" tomli = "^2.0.1" [package.extras] -jurigged = ["jurigged (>=0.5.3,<0.6.0)"] -orjson = ["orjson (>=3.6.8,<4.0.0)"] +console = [] +docs = ["mkdocs-autorefs", "mkdocs-awesome-pages-plugin", "mkdocs-git-committers-plugin-2", "mkdocs-git-revision-date-localized-plugin", "mkdocs-material", "mkdocs-minify-plugin", "mkdocstrings-python"] +jurigged = [] +sentry = [] +speedup = ["Brotli", "aiodns", "faust-cchardet", "orjson", "uvloop"] +tests = ["pytest", "pytest-asyncio", "pytest-cov", "pytest-recording", "python-dotenv", "typeguard"] +voice = [] [package.source] type = "git" url = "https://github.com/interactions-py/interactions.py" reference = "5.x" -resolved_reference = "9b52fdbbce1eae14d974c192b56f9f94b8b53019" +resolved_reference = "316388be6d608e12e64c93af2cc1b03fc0acfa97" [[package]] name = "jarvis-core" @@ -875,14 +962,14 @@ ansicon = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "jurigged" -version = "0.5.3" +version = "0.5.5" description = "Live update of Python functions" category = "main" optional = false python-versions = ">=3.8,<4.0" files = [ - {file = "jurigged-0.5.3-py3-none-any.whl", hash = "sha256:355a9bddf42cae541e862796fb125827fc35573a982c6f35d3dc5621e59c91e3"}, - {file = "jurigged-0.5.3.tar.gz", hash = "sha256:47cf4e9f10455a39602caa447888c06adda962699c65f19d8c37509817341b5e"}, + {file = "jurigged-0.5.5-py3-none-any.whl", hash = "sha256:e850261631483494f6d788924f565d9cddea31f2fbaff4f8b222c49825cbec90"}, + {file = "jurigged-0.5.5.tar.gz", hash = "sha256:e3507407859e5b41d2ad0842c8880bded2261f8f4dc3db49a2ad1d7c5a36f82c"}, ] [package.dependencies] @@ -892,7 +979,22 @@ ovld = ">=0.3.1,<0.4.0" watchdog = ">=1.0.2" [package.extras] -develoop = ["giving (>=0.3.6,<0.4.0)", "hrepr (>=0.4.0,<0.5.0)", "rich (>=10.13.0,<11.0.0)"] +develoop = ["giving (>=0.4.1,<0.5.0)", "rich (>=10.13.0)"] + +[[package]] +name = "lazy-model" +version = "0.0.5" +description = "" +category = "main" +optional = false +python-versions = ">=3.7,<4.0" +files = [ + {file = "lazy-model-0.0.5.tar.gz", hash = "sha256:2d98f9dfe275012477555a439dceb56364793a0f266758d1a33267d68e8fbc76"}, + {file = "lazy_model-0.0.5-py3-none-any.whl", hash = "sha256:8b4fc5eac99029f84b11b21e81a6894911a475f25e53227b7e44833e62e26553"}, +] + +[package.dependencies] +pydantic = ">=1.9.0" [[package]] name = "levenshtein" @@ -1140,46 +1242,42 @@ files = [ [[package]] name = "mypy" -version = "0.991" +version = "1.1.1" description = "Optional static typing for Python" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "mypy-0.991-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7d17e0a9707d0772f4a7b878f04b4fd11f6f5bcb9b3813975a9b13c9332153ab"}, - {file = "mypy-0.991-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0714258640194d75677e86c786e80ccf294972cc76885d3ebbb560f11db0003d"}, - {file = "mypy-0.991-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c8f3be99e8a8bd403caa8c03be619544bc2c77a7093685dcf308c6b109426c6"}, - {file = "mypy-0.991-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc9ec663ed6c8f15f4ae9d3c04c989b744436c16d26580eaa760ae9dd5d662eb"}, - {file = "mypy-0.991-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4307270436fd7694b41f913eb09210faff27ea4979ecbcd849e57d2da2f65305"}, - {file = "mypy-0.991-cp310-cp310-win_amd64.whl", hash = "sha256:901c2c269c616e6cb0998b33d4adbb4a6af0ac4ce5cd078afd7bc95830e62c1c"}, - {file = "mypy-0.991-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d13674f3fb73805ba0c45eb6c0c3053d218aa1f7abead6e446d474529aafc372"}, - {file = "mypy-0.991-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c8cd4fb70e8584ca1ed5805cbc7c017a3d1a29fb450621089ffed3e99d1857f"}, - {file = "mypy-0.991-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:209ee89fbb0deed518605edddd234af80506aec932ad28d73c08f1400ef80a33"}, - {file = "mypy-0.991-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37bd02ebf9d10e05b00d71302d2c2e6ca333e6c2a8584a98c00e038db8121f05"}, - {file = "mypy-0.991-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:26efb2fcc6b67e4d5a55561f39176821d2adf88f2745ddc72751b7890f3194ad"}, - {file = "mypy-0.991-cp311-cp311-win_amd64.whl", hash = "sha256:3a700330b567114b673cf8ee7388e949f843b356a73b5ab22dd7cff4742a5297"}, - {file = "mypy-0.991-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1f7d1a520373e2272b10796c3ff721ea1a0712288cafaa95931e66aa15798813"}, - {file = "mypy-0.991-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:641411733b127c3e0dab94c45af15fea99e4468f99ac88b39efb1ad677da5711"}, - {file = "mypy-0.991-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3d80e36b7d7a9259b740be6d8d906221789b0d836201af4234093cae89ced0cd"}, - {file = "mypy-0.991-cp37-cp37m-win_amd64.whl", hash = "sha256:e62ebaad93be3ad1a828a11e90f0e76f15449371ffeecca4a0a0b9adc99abcef"}, - {file = "mypy-0.991-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b86ce2c1866a748c0f6faca5232059f881cda6dda2a893b9a8373353cfe3715a"}, - {file = "mypy-0.991-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac6e503823143464538efda0e8e356d871557ef60ccd38f8824a4257acc18d93"}, - {file = "mypy-0.991-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0cca5adf694af539aeaa6ac633a7afe9bbd760df9d31be55ab780b77ab5ae8bf"}, - {file = "mypy-0.991-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a12c56bf73cdab116df96e4ff39610b92a348cc99a1307e1da3c3768bbb5b135"}, - {file = "mypy-0.991-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:652b651d42f155033a1967739788c436491b577b6a44e4c39fb340d0ee7f0d70"}, - {file = "mypy-0.991-cp38-cp38-win_amd64.whl", hash = "sha256:4175593dc25d9da12f7de8de873a33f9b2b8bdb4e827a7cae952e5b1a342e243"}, - {file = "mypy-0.991-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:98e781cd35c0acf33eb0295e8b9c55cdbef64fcb35f6d3aa2186f289bed6e80d"}, - {file = "mypy-0.991-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6d7464bac72a85cb3491c7e92b5b62f3dcccb8af26826257760a552a5e244aa5"}, - {file = "mypy-0.991-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9166b3f81a10cdf9b49f2d594b21b31adadb3d5e9db9b834866c3258b695be3"}, - {file = "mypy-0.991-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8472f736a5bfb159a5e36740847808f6f5b659960115ff29c7cecec1741c648"}, - {file = "mypy-0.991-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e80e758243b97b618cdf22004beb09e8a2de1af481382e4d84bc52152d1c476"}, - {file = "mypy-0.991-cp39-cp39-win_amd64.whl", hash = "sha256:74e259b5c19f70d35fcc1ad3d56499065c601dfe94ff67ae48b85596b9ec1461"}, - {file = "mypy-0.991-py3-none-any.whl", hash = "sha256:de32edc9b0a7e67c2775e574cb061a537660e51210fbf6006b0b36ea695ae9bb"}, - {file = "mypy-0.991.tar.gz", hash = "sha256:3c0165ba8f354a6d9881809ef29f1a9318a236a6d81c690094c5df32107bde06"}, + {file = "mypy-1.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39c7119335be05630611ee798cc982623b9e8f0cff04a0b48dfc26100e0b97af"}, + {file = "mypy-1.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:61bf08362e93b6b12fad3eab68c4ea903a077b87c90ac06c11e3d7a09b56b9c1"}, + {file = "mypy-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbb19c9f662e41e474e0cff502b7064a7edc6764f5262b6cd91d698163196799"}, + {file = "mypy-1.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:315ac73cc1cce4771c27d426b7ea558fb4e2836f89cb0296cbe056894e3a1f78"}, + {file = "mypy-1.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:5cb14ff9919b7df3538590fc4d4c49a0f84392237cbf5f7a816b4161c061829e"}, + {file = "mypy-1.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:26cdd6a22b9b40b2fd71881a8a4f34b4d7914c679f154f43385ca878a8297389"}, + {file = "mypy-1.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5b5f81b40d94c785f288948c16e1f2da37203c6006546c5d947aab6f90aefef2"}, + {file = "mypy-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21b437be1c02712a605591e1ed1d858aba681757a1e55fe678a15c2244cd68a5"}, + {file = "mypy-1.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d809f88734f44a0d44959d795b1e6f64b2bbe0ea4d9cc4776aa588bb4229fc1c"}, + {file = "mypy-1.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:a380c041db500e1410bb5b16b3c1c35e61e773a5c3517926b81dfdab7582be54"}, + {file = "mypy-1.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b7c7b708fe9a871a96626d61912e3f4ddd365bf7f39128362bc50cbd74a634d5"}, + {file = "mypy-1.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1c10fa12df1232c936830839e2e935d090fc9ee315744ac33b8a32216b93707"}, + {file = "mypy-1.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0a28a76785bf57655a8ea5eb0540a15b0e781c807b5aa798bd463779988fa1d5"}, + {file = "mypy-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:ef6a01e563ec6a4940784c574d33f6ac1943864634517984471642908b30b6f7"}, + {file = "mypy-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d64c28e03ce40d5303450f547e07418c64c241669ab20610f273c9e6290b4b0b"}, + {file = "mypy-1.1.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:64cc3afb3e9e71a79d06e3ed24bb508a6d66f782aff7e56f628bf35ba2e0ba51"}, + {file = "mypy-1.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce61663faf7a8e5ec6f456857bfbcec2901fbdb3ad958b778403f63b9e606a1b"}, + {file = "mypy-1.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2b0c373d071593deefbcdd87ec8db91ea13bd8f1328d44947e88beae21e8d5e9"}, + {file = "mypy-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:2888ce4fe5aae5a673386fa232473014056967f3904f5abfcf6367b5af1f612a"}, + {file = "mypy-1.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:19ba15f9627a5723e522d007fe708007bae52b93faab00f95d72f03e1afa9598"}, + {file = "mypy-1.1.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:59bbd71e5c58eed2e992ce6523180e03c221dcd92b52f0e792f291d67b15a71c"}, + {file = "mypy-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9401e33814cec6aec8c03a9548e9385e0e228fc1b8b0a37b9ea21038e64cdd8a"}, + {file = "mypy-1.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4b398d8b1f4fba0e3c6463e02f8ad3346f71956b92287af22c9b12c3ec965a9f"}, + {file = "mypy-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:69b35d1dcb5707382810765ed34da9db47e7f95b3528334a3c999b0c90fe523f"}, + {file = "mypy-1.1.1-py3-none-any.whl", hash = "sha256:4e4e8b362cdf99ba00c2b218036002bdcdf1e0de085cdb296a49df03fb31dfc4"}, + {file = "mypy-1.1.1.tar.gz", hash = "sha256:ae9ceae0f5b9059f33dbc62dea087e942c0ccab4b7a003719cb70f9b8abfa32f"}, ] [package.dependencies] -mypy-extensions = ">=0.4.3" +mypy-extensions = ">=1.0.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} typing-extensions = ">=3.10" @@ -1191,65 +1289,16 @@ reports = ["lxml"] [[package]] name = "mypy-extensions" -version = "0.4.3" -description = "Experimental type system extensions for programs checked with the mypy typechecker." +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." category = "main" optional = false -python-versions = "*" +python-versions = ">=3.5" files = [ - {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, - {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, ] -[[package]] -name = "naff" -version = "2.1.0" -description = "Not another freaking fork" -category = "main" -optional = false -python-versions = ">=3.10" -files = [ - {file = "naff-2.1.0-py3-none-any.whl", hash = "sha256:e433683b62f1a151867a44c752cb8725e8505f99086b07765f66696fa553adf2"}, - {file = "naff-2.1.0.tar.gz", hash = "sha256:a58db2f56f6f5fc4fbefb354ce4d17a78080817ac8524ce6e74dedc54e1c850c"}, -] - -[package.dependencies] -aiohttp = "*" -attrs = ">=22.1.0" -discord-typings = ">=0.5.1" -emoji = "*" -tomli = "*" - -[package.extras] -all = ["Brotli", "PyNaCl (>=1.5.0,<1.6)", "aiodns", "jurigged", "orjson", "sentry-sdk"] -docs = ["Brotli", "PyNaCl (>=1.5.0,<1.6)", "aiodns", "jurigged", "mkdocs-autorefs", "mkdocs-awesome-pages-plugin", "mkdocs-git-committers-plugin-2", "mkdocs-git-revision-date-localized-plugin", "mkdocs-material", "mkdocs-minify-plugin", "mkdocstrings-python", "orjson", "sentry-sdk"] -jurigged = ["jurigged"] -sentry = ["sentry-sdk"] -speedup = ["Brotli", "aiodns", "orjson"] -tests = ["pytest", "pytest-asyncio", "pytest-cov", "pytest-recording", "python-dotenv", "typeguard"] -voice = ["PyNaCl (>=1.5.0,<1.6)"] - -[[package]] -name = "nafftrack" -version = "0.1.0" -description = "A stat tracker client for NAFF" -category = "main" -optional = false -python-versions = ">=3.10" -files = [] -develop = false - -[package.dependencies] -naff = {version = "^2.0.0", extras = ["orjson"]} -prometheus-client = "^0.14.1" -uvicorn = "^0.18.2" - -[package.source] -type = "git" -url = "https://github.com/zevaryx/nafftrack.git" -reference = "HEAD" -resolved_reference = "493e4824d034e7e27a5d9eae8684d1764344cc25" - [[package]] name = "nanoid" version = "2.0.0" @@ -1291,40 +1340,40 @@ setuptools = "*" [[package]] name = "numpy" -version = "1.24.1" +version = "1.24.2" description = "Fundamental package for array computing in Python" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "numpy-1.24.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:179a7ef0889ab769cc03573b6217f54c8bd8e16cef80aad369e1e8185f994cd7"}, - {file = "numpy-1.24.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b09804ff570b907da323b3d762e74432fb07955701b17b08ff1b5ebaa8cfe6a9"}, - {file = "numpy-1.24.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1b739841821968798947d3afcefd386fa56da0caf97722a5de53e07c4ccedc7"}, - {file = "numpy-1.24.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e3463e6ac25313462e04aea3fb8a0a30fb906d5d300f58b3bc2c23da6a15398"}, - {file = "numpy-1.24.1-cp310-cp310-win32.whl", hash = "sha256:b31da69ed0c18be8b77bfce48d234e55d040793cebb25398e2a7d84199fbc7e2"}, - {file = "numpy-1.24.1-cp310-cp310-win_amd64.whl", hash = "sha256:b07b40f5fb4fa034120a5796288f24c1fe0e0580bbfff99897ba6267af42def2"}, - {file = "numpy-1.24.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7094891dcf79ccc6bc2a1f30428fa5edb1e6fb955411ffff3401fb4ea93780a8"}, - {file = "numpy-1.24.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:28e418681372520c992805bb723e29d69d6b7aa411065f48216d8329d02ba032"}, - {file = "numpy-1.24.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e274f0f6c7efd0d577744f52032fdd24344f11c5ae668fe8d01aac0422611df1"}, - {file = "numpy-1.24.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0044f7d944ee882400890f9ae955220d29b33d809a038923d88e4e01d652acd9"}, - {file = "numpy-1.24.1-cp311-cp311-win32.whl", hash = "sha256:442feb5e5bada8408e8fcd43f3360b78683ff12a4444670a7d9e9824c1817d36"}, - {file = "numpy-1.24.1-cp311-cp311-win_amd64.whl", hash = "sha256:de92efa737875329b052982e37bd4371d52cabf469f83e7b8be9bb7752d67e51"}, - {file = "numpy-1.24.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b162ac10ca38850510caf8ea33f89edcb7b0bb0dfa5592d59909419986b72407"}, - {file = "numpy-1.24.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:26089487086f2648944f17adaa1a97ca6aee57f513ba5f1c0b7ebdabbe2b9954"}, - {file = "numpy-1.24.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:caf65a396c0d1f9809596be2e444e3bd4190d86d5c1ce21f5fc4be60a3bc5b36"}, - {file = "numpy-1.24.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0677a52f5d896e84414761531947c7a330d1adc07c3a4372262f25d84af7bf7"}, - {file = "numpy-1.24.1-cp38-cp38-win32.whl", hash = "sha256:dae46bed2cb79a58d6496ff6d8da1e3b95ba09afeca2e277628171ca99b99db1"}, - {file = "numpy-1.24.1-cp38-cp38-win_amd64.whl", hash = "sha256:6ec0c021cd9fe732e5bab6401adea5a409214ca5592cd92a114f7067febcba0c"}, - {file = "numpy-1.24.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:28bc9750ae1f75264ee0f10561709b1462d450a4808cd97c013046073ae64ab6"}, - {file = "numpy-1.24.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:84e789a085aabef2f36c0515f45e459f02f570c4b4c4c108ac1179c34d475ed7"}, - {file = "numpy-1.24.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e669fbdcdd1e945691079c2cae335f3e3a56554e06bbd45d7609a6cf568c700"}, - {file = "numpy-1.24.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef85cf1f693c88c1fd229ccd1055570cb41cdf4875873b7728b6301f12cd05bf"}, - {file = "numpy-1.24.1-cp39-cp39-win32.whl", hash = "sha256:87a118968fba001b248aac90e502c0b13606721b1343cdaddbc6e552e8dfb56f"}, - {file = "numpy-1.24.1-cp39-cp39-win_amd64.whl", hash = "sha256:ddc7ab52b322eb1e40521eb422c4e0a20716c271a306860979d450decbb51b8e"}, - {file = "numpy-1.24.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ed5fb71d79e771ec930566fae9c02626b939e37271ec285e9efaf1b5d4370e7d"}, - {file = "numpy-1.24.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad2925567f43643f51255220424c23d204024ed428afc5aad0f86f3ffc080086"}, - {file = "numpy-1.24.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:cfa1161c6ac8f92dea03d625c2d0c05e084668f4a06568b77a25a89111621566"}, - {file = "numpy-1.24.1.tar.gz", hash = "sha256:2386da9a471cc00a1f47845e27d916d5ec5346ae9696e01a8a34760858fe9dd2"}, + {file = "numpy-1.24.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eef70b4fc1e872ebddc38cddacc87c19a3709c0e3e5d20bf3954c147b1dd941d"}, + {file = "numpy-1.24.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e8d2859428712785e8a8b7d2b3ef0a1d1565892367b32f915c4a4df44d0e64f5"}, + {file = "numpy-1.24.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6524630f71631be2dabe0c541e7675db82651eb998496bbe16bc4f77f0772253"}, + {file = "numpy-1.24.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a51725a815a6188c662fb66fb32077709a9ca38053f0274640293a14fdd22978"}, + {file = "numpy-1.24.2-cp310-cp310-win32.whl", hash = "sha256:2620e8592136e073bd12ee4536149380695fbe9ebeae845b81237f986479ffc9"}, + {file = "numpy-1.24.2-cp310-cp310-win_amd64.whl", hash = "sha256:97cf27e51fa078078c649a51d7ade3c92d9e709ba2bfb97493007103c741f1d0"}, + {file = "numpy-1.24.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7de8fdde0003f4294655aa5d5f0a89c26b9f22c0a58790c38fae1ed392d44a5a"}, + {file = "numpy-1.24.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4173bde9fa2a005c2c6e2ea8ac1618e2ed2c1c6ec8a7657237854d42094123a0"}, + {file = "numpy-1.24.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4cecaed30dc14123020f77b03601559fff3e6cd0c048f8b5289f4eeabb0eb281"}, + {file = "numpy-1.24.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a23f8440561a633204a67fb44617ce2a299beecf3295f0d13c495518908e910"}, + {file = "numpy-1.24.2-cp311-cp311-win32.whl", hash = "sha256:e428c4fbfa085f947b536706a2fc349245d7baa8334f0c5723c56a10595f9b95"}, + {file = "numpy-1.24.2-cp311-cp311-win_amd64.whl", hash = "sha256:557d42778a6869c2162deb40ad82612645e21d79e11c1dc62c6e82a2220ffb04"}, + {file = "numpy-1.24.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d0a2db9d20117bf523dde15858398e7c0858aadca7c0f088ac0d6edd360e9ad2"}, + {file = "numpy-1.24.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c72a6b2f4af1adfe193f7beb91ddf708ff867a3f977ef2ec53c0ffb8283ab9f5"}, + {file = "numpy-1.24.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c29e6bd0ec49a44d7690ecb623a8eac5ab8a923bce0bea6293953992edf3a76a"}, + {file = "numpy-1.24.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2eabd64ddb96a1239791da78fa5f4e1693ae2dadc82a76bc76a14cbb2b966e96"}, + {file = "numpy-1.24.2-cp38-cp38-win32.whl", hash = "sha256:e3ab5d32784e843fc0dd3ab6dcafc67ef806e6b6828dc6af2f689be0eb4d781d"}, + {file = "numpy-1.24.2-cp38-cp38-win_amd64.whl", hash = "sha256:76807b4063f0002c8532cfeac47a3068a69561e9c8715efdad3c642eb27c0756"}, + {file = "numpy-1.24.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4199e7cfc307a778f72d293372736223e39ec9ac096ff0a2e64853b866a8e18a"}, + {file = "numpy-1.24.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:adbdce121896fd3a17a77ab0b0b5eedf05a9834a18699db6829a64e1dfccca7f"}, + {file = "numpy-1.24.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:889b2cc88b837d86eda1b17008ebeb679d82875022200c6e8e4ce6cf549b7acb"}, + {file = "numpy-1.24.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f64bb98ac59b3ea3bf74b02f13836eb2e24e48e0ab0145bbda646295769bd780"}, + {file = "numpy-1.24.2-cp39-cp39-win32.whl", hash = "sha256:63e45511ee4d9d976637d11e6c9864eae50e12dc9598f531c035265991910468"}, + {file = "numpy-1.24.2-cp39-cp39-win_amd64.whl", hash = "sha256:a77d3e1163a7770164404607b7ba3967fb49b24782a6ef85d9b5f54126cc39e5"}, + {file = "numpy-1.24.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:92011118955724465fb6853def593cf397b4a1367495e0b59a7e69d40c4eb71d"}, + {file = "numpy-1.24.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9006288bcf4895917d02583cf3411f98631275bc67cce355a7f39f8c14338fa"}, + {file = "numpy-1.24.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:150947adbdfeceec4e5926d956a06865c1c690f2fd902efede4ca6fe2e657c3f"}, + {file = "numpy-1.24.2.tar.gz", hash = "sha256:003a9f530e880cb2cd177cba1af7220b9aa42def9c4afc2a2fc3ee6be7eb2b22"}, ] [[package]] @@ -1346,81 +1395,83 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] [[package]] name = "opencv-python" -version = "4.6.0.66" +version = "4.7.0.72" description = "Wrapper package for OpenCV python bindings." category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "opencv-python-4.6.0.66.tar.gz", hash = "sha256:c5bfae41ad4031e66bb10ec4a0a2ffd3e514d092652781e8b1ac98d1b59f1158"}, - {file = "opencv_python-4.6.0.66-cp36-abi3-macosx_10_15_x86_64.whl", hash = "sha256:e6e448b62afc95c5b58f97e87ef84699e6607fe5c58730a03301c52496005cae"}, - {file = "opencv_python-4.6.0.66-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5af8ba35a4fcb8913ffb86e92403e9a656a4bff4a645d196987468f0f8947875"}, - {file = "opencv_python-4.6.0.66-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbdc84a9b4ea2cbae33861652d25093944b9959279200b7ae0badd32439f74de"}, - {file = "opencv_python-4.6.0.66-cp36-abi3-win32.whl", hash = "sha256:f482e78de6e7b0b060ff994ffd859bddc3f7f382bb2019ef157b0ea8ca8712f5"}, - {file = "opencv_python-4.6.0.66-cp36-abi3-win_amd64.whl", hash = "sha256:0dc82a3d8630c099d2f3ac1b1aabee164e8188db54a786abb7a4e27eba309440"}, - {file = "opencv_python-4.6.0.66-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:6e32af22e3202748bd233ed8f538741876191863882eba44e332d1a34993165b"}, + {file = "opencv-python-4.7.0.72.tar.gz", hash = "sha256:3424794a711f33284581f3c1e4b071cfc827d02b99d6fd9a35391f517c453306"}, + {file = "opencv_python-4.7.0.72-cp37-abi3-macosx_10_16_x86_64.whl", hash = "sha256:d4f8880440c433a0025d78804dda6901d1e8e541a561dda66892d90290aef881"}, + {file = "opencv_python-4.7.0.72-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:7a297e7651e22eb17c265ddbbc80e2ba2a8ff4f4a1696a67c45e5f5798245842"}, + {file = "opencv_python-4.7.0.72-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd08343654c6b88c5a8c25bf425f8025aed2e3189b4d7306b5861d32affaf737"}, + {file = "opencv_python-4.7.0.72-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ebfc0a3a2f57716e709028b992e4de7fd8752105d7a768531c4f434043c6f9ff"}, + {file = "opencv_python-4.7.0.72-cp37-abi3-win32.whl", hash = "sha256:eda115797b114fc16ca6f182b91c5d984f0015c19bec3145e55d33d708e9bae1"}, + {file = "opencv_python-4.7.0.72-cp37-abi3-win_amd64.whl", hash = "sha256:812af57553ec1c6709060c63f6b7e9ad07ddc0f592f3ccc6d00c71e0fe0e6376"}, ] [package.dependencies] numpy = [ - {version = ">=1.21.2", markers = "python_version >= \"3.10\" or python_version >= \"3.6\" and platform_system == \"Darwin\" and platform_machine == \"arm64\""}, + {version = ">=1.21.2", markers = "python_version >= \"3.10\""}, + {version = ">=1.21.4", markers = "python_version >= \"3.10\" and platform_system == \"Darwin\""}, + {version = ">=1.22.0", markers = "python_version >= \"3.11\""}, {version = ">=1.19.3", markers = "python_version >= \"3.6\" and platform_system == \"Linux\" and platform_machine == \"aarch64\" or python_version >= \"3.9\""}, - {version = ">=1.14.5", markers = "python_version >= \"3.7\""}, + {version = ">=1.17.0", markers = "python_version >= \"3.7\""}, {version = ">=1.17.3", markers = "python_version >= \"3.8\""}, ] [[package]] name = "orjson" -version = "3.8.3" +version = "3.8.7" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "orjson-3.8.3-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:6bf425bba42a8cee49d611ddd50b7fea9e87787e77bf90b2cb9742293f319480"}, - {file = "orjson-3.8.3-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:068febdc7e10655a68a381d2db714d0a90ce46dc81519a4962521a0af07697fb"}, - {file = "orjson-3.8.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d46241e63df2d39f4b7d44e2ff2becfb6646052b963afb1a99f4ef8c2a31aba0"}, - {file = "orjson-3.8.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:961bc1dcbc3a89b52e8979194b3043e7d28ffc979187e46ad23efa8ada612d04"}, - {file = "orjson-3.8.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65ea3336c2bda31bc938785b84283118dec52eb90a2946b140054873946f60a4"}, - {file = "orjson-3.8.3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:83891e9c3a172841f63cae75ff9ce78f12e4c2c5161baec7af725b1d71d4de21"}, - {file = "orjson-3.8.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4b587ec06ab7dd4fb5acf50af98314487b7d56d6e1a7f05d49d8367e0e0b23bc"}, - {file = "orjson-3.8.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:37196a7f2219508c6d944d7d5ea0000a226818787dadbbed309bfa6174f0402b"}, - {file = "orjson-3.8.3-cp310-none-win_amd64.whl", hash = "sha256:94bd4295fadea984b6284dc55f7d1ea828240057f3b6a1d8ec3fe4d1ea596964"}, - {file = "orjson-3.8.3-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:8fe6188ea2a1165280b4ff5fab92753b2007665804e8214be3d00d0b83b5764e"}, - {file = "orjson-3.8.3-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:d30d427a1a731157206ddb1e95620925298e4c7c3f93838f53bd19f6069be244"}, - {file = "orjson-3.8.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3497dde5c99dd616554f0dcb694b955a2dc3eb920fe36b150f88ce53e3be2a46"}, - {file = "orjson-3.8.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dc29ff612030f3c2e8d7c0bc6c74d18b76dde3726230d892524735498f29f4b2"}, - {file = "orjson-3.8.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1612e08b8254d359f9b72c4a4099d46cdc0f58b574da48472625a0e80222b6e"}, - {file = "orjson-3.8.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:54f3ef512876199d7dacd348a0fc53392c6be15bdf857b2d67fa1b089d561b98"}, - {file = "orjson-3.8.3-cp311-none-win_amd64.whl", hash = "sha256:a30503ee24fc3c59f768501d7a7ded5119a631c79033929a5035a4c91901eac7"}, - {file = "orjson-3.8.3-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:d746da1260bbe7cb06200813cc40482fb1b0595c4c09c3afffe34cfc408d0a4a"}, - {file = "orjson-3.8.3-cp37-cp37m-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:e570fdfa09b84cc7c42a3a6dd22dbd2177cb5f3798feefc430066b260886acae"}, - {file = "orjson-3.8.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca61e6c5a86efb49b790c8e331ff05db6d5ed773dfc9b58667ea3b260971cfb2"}, - {file = "orjson-3.8.3-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4cd0bb7e843ceba759e4d4cc2ca9243d1a878dac42cdcfc2295883fbd5bd2400"}, - {file = "orjson-3.8.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff96c61127550ae25caab325e1f4a4fba2740ca77f8e81640f1b8b575e95f784"}, - {file = "orjson-3.8.3-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:faf44a709f54cf490a27ccb0fb1cb5a99005c36ff7cb127d222306bf84f5493f"}, - {file = "orjson-3.8.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:194aef99db88b450b0005406f259ad07df545e6c9632f2a64c04986a0faf2c68"}, - {file = "orjson-3.8.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:aa57fe8b32750a64c816840444ec4d1e4310630ecd9d1d7b3db4b45d248b5585"}, - {file = "orjson-3.8.3-cp37-none-win_amd64.whl", hash = "sha256:dbd74d2d3d0b7ac8ca968c3be51d4cfbecec65c6d6f55dabe95e975c234d0338"}, - {file = "orjson-3.8.3-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:ef3b4c7931989eb973fbbcc38accf7711d607a2b0ed84817341878ec8effb9c5"}, - {file = "orjson-3.8.3-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:cf3dad7dbf65f78fefca0eb385d606844ea58a64fe908883a32768dfaee0b952"}, - {file = "orjson-3.8.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cbdfbd49d58cbaabfa88fcdf9e4f09487acca3d17f144648668ea6ae06cc3183"}, - {file = "orjson-3.8.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f06ef273d8d4101948ebc4262a485737bcfd440fb83dd4b125d3e5f4226117bc"}, - {file = "orjson-3.8.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75de90c34db99c42ee7608ff88320442d3ce17c258203139b5a8b0afb4a9b43b"}, - {file = "orjson-3.8.3-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:78d69020fa9cf28b363d2494e5f1f10210e8fecf49bf4a767fcffcce7b9d7f58"}, - {file = "orjson-3.8.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b70782258c73913eb6542c04b6556c841247eb92eeace5db2ee2e1d4cb6ffaa5"}, - {file = "orjson-3.8.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:989bf5980fc8aca43a9d0a50ea0a0eee81257e812aaceb1e9c0dbd0856fc5230"}, - {file = "orjson-3.8.3-cp38-none-win_amd64.whl", hash = "sha256:52540572c349179e2a7b6a7b98d6e9320e0333533af809359a95f7b57a61c506"}, - {file = "orjson-3.8.3-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:7f0ec0ca4e81492569057199e042607090ba48289c4f59f29bbc219282b8dc60"}, - {file = "orjson-3.8.3-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:b7018494a7a11bcd04da1173c3a38fa5a866f905c138326504552231824ac9c1"}, - {file = "orjson-3.8.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5870ced447a9fbeb5aeb90f362d9106b80a32f729a57b59c64684dbc9175e92"}, - {file = "orjson-3.8.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0459893746dc80dbfb262a24c08fdba2a737d44d26691e85f27b2223cac8075f"}, - {file = "orjson-3.8.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0379ad4c0246281f136a93ed357e342f24070c7055f00aeff9a69c2352e38d10"}, - {file = "orjson-3.8.3-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:3e9e54ff8c9253d7f01ebc5836a1308d0ebe8e5c2edee620867a49556a158484"}, - {file = "orjson-3.8.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f8ff793a3188c21e646219dc5e2c60a74dde25c26de3075f4c2e33cf25835340"}, - {file = "orjson-3.8.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4b0c13e05da5bc1a6b2e1d3b117cc669e2267ce0a131e94845056d506ef041c6"}, - {file = "orjson-3.8.3-cp39-none-win_amd64.whl", hash = "sha256:4fff44ca121329d62e48582850a247a487e968cfccd5527fab20bd5b650b78c3"}, - {file = "orjson-3.8.3.tar.gz", hash = "sha256:eda1534a5289168614f21422861cbfb1abb8a82d66c00a8ba823d863c0797178"}, + {file = "orjson-3.8.7-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:f98c82850b7b4b7e27785ca43706fa86c893cdb88d54576bbb9b0d9c1070e421"}, + {file = "orjson-3.8.7-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:1dee503c6c1a0659c5b46f5f39d9ca9d3657b11ca8bb4af8506086df416887d9"}, + {file = "orjson-3.8.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc4fa83831f42ce5c938f8cefc2e175fa1df6f661fdeaba3badf26d2b8cfcf73"}, + {file = "orjson-3.8.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9e432c6c9c8b97ad825276d5795286f7cc9689f377a97e3b7ecf14918413303f"}, + {file = "orjson-3.8.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee519964a5a0efb9633f38b1129fd242807c5c57162844efeeaab1c8de080051"}, + {file = "orjson-3.8.7-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:109b539ce5bf60a121454d008fa67c3b67e5a3249e47d277012645922cf74bd0"}, + {file = "orjson-3.8.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ad4d441fbde4133af6fee37f67dbf23181b9c537ecc317346ec8c3b4c8ec7705"}, + {file = "orjson-3.8.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:89dc786419e1ce2588345f58dd6a434e6728bce66b94989644234bcdbe39b603"}, + {file = "orjson-3.8.7-cp310-none-win_amd64.whl", hash = "sha256:697abde7350fb8076d44bcb6b4ab3ce415ae2b5a9bb91efc460e5ab0d96bb5d3"}, + {file = "orjson-3.8.7-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:1c19f47b35b9966a3abadf341b18ee4a860431bf2b00fd8d58906d51cf78aa70"}, + {file = "orjson-3.8.7-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:3ffaabb380cd0ee187b4fc362516df6bf739808130b1339445c7d8878fca36e7"}, + {file = "orjson-3.8.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d88837002c5a8af970745b8e0ca1b0fdb06aafbe7f1279e110d338ea19f3d23"}, + {file = "orjson-3.8.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff60187d1b7e0bfab376b6002b08c560b7de06c87cf3a8ac639ecf58f84c5f3b"}, + {file = "orjson-3.8.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0110970aed35dec293f30ed1e09f8604afd5d15c5ef83de7f6c427619b3ba47b"}, + {file = "orjson-3.8.7-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:51b275475d4e36118b65ad56f9764056a09d985c5d72e64579bf8816f1356a5e"}, + {file = "orjson-3.8.7-cp311-none-win_amd64.whl", hash = "sha256:63144d27735f3b60f079f247ac9a289d80dfe49a7f03880dfa0c0ba64d6491d5"}, + {file = "orjson-3.8.7-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:a16273d77db746bb1789a2bbfded81148a60743fd6f9d5185e02d92e3732fa18"}, + {file = "orjson-3.8.7-cp37-cp37m-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:5bb32259ea22cc9dd47a6fdc4b8f9f1e2f798fcf56c7c1122a7df0f4c5d33bf3"}, + {file = "orjson-3.8.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad02e9102d4ba67db30a136e631e32aeebd1dce26c9f5942a457b02df131c5d0"}, + {file = "orjson-3.8.7-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dbcfcec2b7ac52deb7be3685b551addc28ee8fa454ef41f8b714df6ba0e32a27"}, + {file = "orjson-3.8.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1a0e5504a5fc86083cc210c6946e8d61e13fe9f1d7a7bf81b42f7050a49d4fb"}, + {file = "orjson-3.8.7-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:7bd4fd37adb03b1f2a1012d43c9f95973a02164e131dfe3ff804d7e180af5653"}, + {file = "orjson-3.8.7-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:188ed9f9a781333ad802af54c55d5a48991e292239aef41bd663b6e314377eb8"}, + {file = "orjson-3.8.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:cc52f58c688cb10afd810280e450f56fbcb27f52c053463e625c8335c95db0dc"}, + {file = "orjson-3.8.7-cp37-none-win_amd64.whl", hash = "sha256:403c8c84ac8a02c40613b0493b74d5256379e65196d39399edbf2ed3169cbeb5"}, + {file = "orjson-3.8.7-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:7d6ac5f8a2a17095cd927c4d52abbb38af45918e0d3abd60fb50cfd49d71ae24"}, + {file = "orjson-3.8.7-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:0295a7bfd713fa89231fd0822c995c31fc2343c59a1d13aa1b8b6651335654f5"}, + {file = "orjson-3.8.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feb32aaaa34cf2f891eb793ad320d4bb6731328496ae59b6c9eb1b620c42b529"}, + {file = "orjson-3.8.7-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7a3ab1a473894e609b6f1d763838c6689ba2b97620c256a32c4d9f10595ac179"}, + {file = "orjson-3.8.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e8c430d82b532c5ab95634e034bbf6ca7432ffe175a3e63eadd493e00b3a555"}, + {file = "orjson-3.8.7-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:366cc75f7e09106f9dac95a675aef413367b284f25507d21e55bd7f45f445e80"}, + {file = "orjson-3.8.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:84d154d07e8b17d97e990d5d710b719a031738eb1687d8a05b9089f0564ff3e0"}, + {file = "orjson-3.8.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06180014afcfdc167ca984b312218aa62ce20093965c437c5f9166764cb65ef7"}, + {file = "orjson-3.8.7-cp38-none-win_amd64.whl", hash = "sha256:41244431ba13f2e6ef22b52c5cf0202d17954489f4a3c0505bd28d0e805c3546"}, + {file = "orjson-3.8.7-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:b20f29fa8371b8023f1791df035a2c3ccbd98baa429ac3114fc104768f7db6f8"}, + {file = "orjson-3.8.7-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:226bfc1da2f21ee74918cee2873ea9a0fec1a8830e533cb287d192d593e99d02"}, + {file = "orjson-3.8.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e75c11023ac29e29fd3e75038d0e8dd93f9ea24d7b9a5e871967a8921a88df24"}, + {file = "orjson-3.8.7-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:78604d3acfd7cd502f6381eea0c42281fe2b74755b334074ab3ebc0224100be1"}, + {file = "orjson-3.8.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7129a6847f0494aa1427167486ef6aea2e835ba05f6c627df522692ee228f65"}, + {file = "orjson-3.8.7-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:1a1a8f4980059f48483782c608145b0f74538c266e01c183d9bcd9f8b71dbada"}, + {file = "orjson-3.8.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d60304172a33705ce4bd25a6261ab84bed2dab0b3d3b79672ea16c7648af4832"}, + {file = "orjson-3.8.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4f733062d84389c32c0492e5a4929056fac217034a94523debe0430bcc602cda"}, + {file = "orjson-3.8.7-cp39-none-win_amd64.whl", hash = "sha256:010e2970ec9e826c332819e0da4b14b29b19641da0f1a6af4cec91629ef9b988"}, + {file = "orjson-3.8.7.tar.gz", hash = "sha256:8460c8810652dba59c38c80d27c325b5092d189308d8d4f3e688dbd8d4f3b2dc"}, ] [[package]] @@ -1437,14 +1488,14 @@ files = [ [[package]] name = "packaging" -version = "22.0" +version = "23.0" description = "Core utilities for Python packages" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-22.0-py3-none-any.whl", hash = "sha256:957e2148ba0e1a3b282772e791ef1d8083648bc131c8ab0c1feba110ce1146c3"}, - {file = "packaging-22.0.tar.gz", hash = "sha256:2198ec20bd4c017b8f9717e00f0c8714076fc2fd93816750ab48e2c41de2cfd3"}, + {file = "packaging-23.0-py3-none-any.whl", hash = "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2"}, + {file = "packaging-23.0.tar.gz", hash = "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97"}, ] [[package]] @@ -1515,106 +1566,122 @@ tomli = ">=2.0.1,<3.0.0" [[package]] name = "pathspec" -version = "0.10.3" +version = "0.11.1" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pathspec-0.10.3-py3-none-any.whl", hash = "sha256:3c95343af8b756205e2aba76e843ba9520a24dd84f68c22b9f93251507509dd6"}, - {file = "pathspec-0.10.3.tar.gz", hash = "sha256:56200de4077d9d0791465aa9095a01d421861e405b5096955051deefd697d6f6"}, + {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, + {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, ] [[package]] name = "pillow" -version = "9.3.0" +version = "9.4.0" description = "Python Imaging Library (Fork)" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "Pillow-9.3.0-1-cp37-cp37m-win32.whl", hash = "sha256:e6ea6b856a74d560d9326c0f5895ef8050126acfdc7ca08ad703eb0081e82b74"}, - {file = "Pillow-9.3.0-1-cp37-cp37m-win_amd64.whl", hash = "sha256:32a44128c4bdca7f31de5be641187367fe2a450ad83b833ef78910397db491aa"}, - {file = "Pillow-9.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:0b7257127d646ff8676ec8a15520013a698d1fdc48bc2a79ba4e53df792526f2"}, - {file = "Pillow-9.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b90f7616ea170e92820775ed47e136208e04c967271c9ef615b6fbd08d9af0e3"}, - {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68943d632f1f9e3dce98908e873b3a090f6cba1cbb1b892a9e8d97c938871fbe"}, - {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be55f8457cd1eac957af0c3f5ece7bc3f033f89b114ef30f710882717670b2a8"}, - {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d77adcd56a42d00cc1be30843d3426aa4e660cab4a61021dc84467123f7a00c"}, - {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:829f97c8e258593b9daa80638aee3789b7df9da5cf1336035016d76f03b8860c"}, - {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:801ec82e4188e935c7f5e22e006d01611d6b41661bba9fe45b60e7ac1a8f84de"}, - {file = "Pillow-9.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:871b72c3643e516db4ecf20efe735deb27fe30ca17800e661d769faab45a18d7"}, - {file = "Pillow-9.3.0-cp310-cp310-win32.whl", hash = "sha256:655a83b0058ba47c7c52e4e2df5ecf484c1b0b0349805896dd350cbc416bdd91"}, - {file = "Pillow-9.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:9f47eabcd2ded7698106b05c2c338672d16a6f2a485e74481f524e2a23c2794b"}, - {file = "Pillow-9.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:57751894f6618fd4308ed8e0c36c333e2f5469744c34729a27532b3db106ee20"}, - {file = "Pillow-9.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7db8b751ad307d7cf238f02101e8e36a128a6cb199326e867d1398067381bff4"}, - {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3033fbe1feb1b59394615a1cafaee85e49d01b51d54de0cbf6aa8e64182518a1"}, - {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22b012ea2d065fd163ca096f4e37e47cd8b59cf4b0fd47bfca6abb93df70b34c"}, - {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9a65733d103311331875c1dca05cb4606997fd33d6acfed695b1232ba1df193"}, - {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:502526a2cbfa431d9fc2a079bdd9061a2397b842bb6bc4239bb176da00993812"}, - {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:90fb88843d3902fe7c9586d439d1e8c05258f41da473952aa8b328d8b907498c"}, - {file = "Pillow-9.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:89dca0ce00a2b49024df6325925555d406b14aa3efc2f752dbb5940c52c56b11"}, - {file = "Pillow-9.3.0-cp311-cp311-win32.whl", hash = "sha256:3168434d303babf495d4ba58fc22d6604f6e2afb97adc6a423e917dab828939c"}, - {file = "Pillow-9.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:18498994b29e1cf86d505edcb7edbe814d133d2232d256db8c7a8ceb34d18cef"}, - {file = "Pillow-9.3.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:772a91fc0e03eaf922c63badeca75e91baa80fe2f5f87bdaed4280662aad25c9"}, - {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa4107d1b306cdf8953edde0534562607fe8811b6c4d9a486298ad31de733b2"}, - {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4012d06c846dc2b80651b120e2cdd787b013deb39c09f407727ba90015c684f"}, - {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77ec3e7be99629898c9a6d24a09de089fa5356ee408cdffffe62d67bb75fdd72"}, - {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:6c738585d7a9961d8c2821a1eb3dcb978d14e238be3d70f0a706f7fa9316946b"}, - {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:828989c45c245518065a110434246c44a56a8b2b2f6347d1409c787e6e4651ee"}, - {file = "Pillow-9.3.0-cp37-cp37m-win32.whl", hash = "sha256:82409ffe29d70fd733ff3c1025a602abb3e67405d41b9403b00b01debc4c9a29"}, - {file = "Pillow-9.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:41e0051336807468be450d52b8edd12ac60bebaa97fe10c8b660f116e50b30e4"}, - {file = "Pillow-9.3.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:b03ae6f1a1878233ac620c98f3459f79fd77c7e3c2b20d460284e1fb370557d4"}, - {file = "Pillow-9.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4390e9ce199fc1951fcfa65795f239a8a4944117b5935a9317fb320e7767b40f"}, - {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40e1ce476a7804b0fb74bcfa80b0a2206ea6a882938eaba917f7a0f004b42502"}, - {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0a06a052c5f37b4ed81c613a455a81f9a3a69429b4fd7bb913c3fa98abefc20"}, - {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03150abd92771742d4a8cd6f2fa6246d847dcd2e332a18d0c15cc75bf6703040"}, - {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:15c42fb9dea42465dfd902fb0ecf584b8848ceb28b41ee2b58f866411be33f07"}, - {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:51e0e543a33ed92db9f5ef69a0356e0b1a7a6b6a71b80df99f1d181ae5875636"}, - {file = "Pillow-9.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3dd6caf940756101205dffc5367babf288a30043d35f80936f9bfb37f8355b32"}, - {file = "Pillow-9.3.0-cp38-cp38-win32.whl", hash = "sha256:f1ff2ee69f10f13a9596480335f406dd1f70c3650349e2be67ca3139280cade0"}, - {file = "Pillow-9.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:276a5ca930c913f714e372b2591a22c4bd3b81a418c0f6635ba832daec1cbcfc"}, - {file = "Pillow-9.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:73bd195e43f3fadecfc50c682f5055ec32ee2c933243cafbfdec69ab1aa87cad"}, - {file = "Pillow-9.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1c7c8ae3864846fc95f4611c78129301e203aaa2af813b703c55d10cc1628535"}, - {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e0918e03aa0c72ea56edbb00d4d664294815aa11291a11504a377ea018330d3"}, - {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0915e734b33a474d76c28e07292f196cdf2a590a0d25bcc06e64e545f2d146c"}, - {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0372acb5d3598f36ec0914deed2a63f6bcdb7b606da04dc19a88d31bf0c05b"}, - {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:ad58d27a5b0262c0c19b47d54c5802db9b34d38bbf886665b626aff83c74bacd"}, - {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:97aabc5c50312afa5e0a2b07c17d4ac5e865b250986f8afe2b02d772567a380c"}, - {file = "Pillow-9.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9aaa107275d8527e9d6e7670b64aabaaa36e5b6bd71a1015ddd21da0d4e06448"}, - {file = "Pillow-9.3.0-cp39-cp39-win32.whl", hash = "sha256:bac18ab8d2d1e6b4ce25e3424f709aceef668347db8637c2296bcf41acb7cf48"}, - {file = "Pillow-9.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:b472b5ea442148d1c3e2209f20f1e0bb0eb556538690fa70b5e1f79fa0ba8dc2"}, - {file = "Pillow-9.3.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:ab388aaa3f6ce52ac1cb8e122c4bd46657c15905904b3120a6248b5b8b0bc228"}, - {file = "Pillow-9.3.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbb8e7f2abee51cef77673be97760abff1674ed32847ce04b4af90f610144c7b"}, - {file = "Pillow-9.3.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca31dd6014cb8b0b2db1e46081b0ca7d936f856da3b39744aef499db5d84d02"}, - {file = "Pillow-9.3.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c7025dce65566eb6e89f56c9509d4f628fddcedb131d9465cacd3d8bac337e7e"}, - {file = "Pillow-9.3.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ebf2029c1f464c59b8bdbe5143c79fa2045a581ac53679733d3a91d400ff9efb"}, - {file = "Pillow-9.3.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b59430236b8e58840a0dfb4099a0e8717ffb779c952426a69ae435ca1f57210c"}, - {file = "Pillow-9.3.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12ce4932caf2ddf3e41d17fc9c02d67126935a44b86df6a206cf0d7161548627"}, - {file = "Pillow-9.3.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae5331c23ce118c53b172fa64a4c037eb83c9165aba3a7ba9ddd3ec9fa64a699"}, - {file = "Pillow-9.3.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:0b07fffc13f474264c336298d1b4ce01d9c5a011415b79d4ee5527bb69ae6f65"}, - {file = "Pillow-9.3.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:073adb2ae23431d3b9bcbcff3fe698b62ed47211d0716b067385538a1b0f28b8"}, - {file = "Pillow-9.3.0.tar.gz", hash = "sha256:c935a22a557a560108d780f9a0fc426dd7459940dc54faa49d83249c8d3e760f"}, + {file = "Pillow-9.4.0-1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1b4b4e9dda4f4e4c4e6896f93e84a8f0bcca3b059de9ddf67dac3c334b1195e1"}, + {file = "Pillow-9.4.0-1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:fb5c1ad6bad98c57482236a21bf985ab0ef42bd51f7ad4e4538e89a997624e12"}, + {file = "Pillow-9.4.0-1-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:f0caf4a5dcf610d96c3bd32932bfac8aee61c96e60481c2a0ea58da435e25acd"}, + {file = "Pillow-9.4.0-1-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:3f4cc516e0b264c8d4ccd6b6cbc69a07c6d582d8337df79be1e15a5056b258c9"}, + {file = "Pillow-9.4.0-1-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b8c2f6eb0df979ee99433d8b3f6d193d9590f735cf12274c108bd954e30ca858"}, + {file = "Pillow-9.4.0-1-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b70756ec9417c34e097f987b4d8c510975216ad26ba6e57ccb53bc758f490dab"}, + {file = "Pillow-9.4.0-1-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:43521ce2c4b865d385e78579a082b6ad1166ebed2b1a2293c3be1d68dd7ca3b9"}, + {file = "Pillow-9.4.0-2-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:9d9a62576b68cd90f7075876f4e8444487db5eeea0e4df3ba298ee38a8d067b0"}, + {file = "Pillow-9.4.0-2-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:87708d78a14d56a990fbf4f9cb350b7d89ee8988705e58e39bdf4d82c149210f"}, + {file = "Pillow-9.4.0-2-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:8a2b5874d17e72dfb80d917213abd55d7e1ed2479f38f001f264f7ce7bae757c"}, + {file = "Pillow-9.4.0-2-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:83125753a60cfc8c412de5896d10a0a405e0bd88d0470ad82e0869ddf0cb3848"}, + {file = "Pillow-9.4.0-2-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:9e5f94742033898bfe84c93c831a6f552bb629448d4072dd312306bab3bd96f1"}, + {file = "Pillow-9.4.0-2-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:013016af6b3a12a2f40b704677f8b51f72cb007dac785a9933d5c86a72a7fe33"}, + {file = "Pillow-9.4.0-2-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:99d92d148dd03fd19d16175b6d355cc1b01faf80dae93c6c3eb4163709edc0a9"}, + {file = "Pillow-9.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:2968c58feca624bb6c8502f9564dd187d0e1389964898f5e9e1fbc8533169157"}, + {file = "Pillow-9.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c5c1362c14aee73f50143d74389b2c158707b4abce2cb055b7ad37ce60738d47"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd752c5ff1b4a870b7661234694f24b1d2b9076b8bf337321a814c612665f343"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a3049a10261d7f2b6514d35bbb7a4dfc3ece4c4de14ef5876c4b7a23a0e566d"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16a8df99701f9095bea8a6c4b3197da105df6f74e6176c5b410bc2df2fd29a57"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:94cdff45173b1919350601f82d61365e792895e3c3a3443cf99819e6fbf717a5"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:ed3e4b4e1e6de75fdc16d3259098de7c6571b1a6cc863b1a49e7d3d53e036070"}, + {file = "Pillow-9.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5b2f8a31bd43e0f18172d8ac82347c8f37ef3e0b414431157718aa234991b28"}, + {file = "Pillow-9.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:09b89ddc95c248ee788328528e6a2996e09eaccddeeb82a5356e92645733be35"}, + {file = "Pillow-9.4.0-cp310-cp310-win32.whl", hash = "sha256:f09598b416ba39a8f489c124447b007fe865f786a89dbfa48bb5cf395693132a"}, + {file = "Pillow-9.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:f6e78171be3fb7941f9910ea15b4b14ec27725865a73c15277bc39f5ca4f8391"}, + {file = "Pillow-9.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:3fa1284762aacca6dc97474ee9c16f83990b8eeb6697f2ba17140d54b453e133"}, + {file = "Pillow-9.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:eaef5d2de3c7e9b21f1e762f289d17b726c2239a42b11e25446abf82b26ac132"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4dfdae195335abb4e89cc9762b2edc524f3c6e80d647a9a81bf81e17e3fb6f0"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6abfb51a82e919e3933eb137e17c4ae9c0475a25508ea88993bb59faf82f3b35"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:451f10ef963918e65b8869e17d67db5e2f4ab40e716ee6ce7129b0cde2876eab"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:6663977496d616b618b6cfa43ec86e479ee62b942e1da76a2c3daa1c75933ef4"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:60e7da3a3ad1812c128750fc1bc14a7ceeb8d29f77e0a2356a8fb2aa8925287d"}, + {file = "Pillow-9.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:19005a8e58b7c1796bc0167862b1f54a64d3b44ee5d48152b06bb861458bc0f8"}, + {file = "Pillow-9.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f715c32e774a60a337b2bb8ad9839b4abf75b267a0f18806f6f4f5f1688c4b5a"}, + {file = "Pillow-9.4.0-cp311-cp311-win32.whl", hash = "sha256:b222090c455d6d1a64e6b7bb5f4035c4dff479e22455c9eaa1bdd4c75b52c80c"}, + {file = "Pillow-9.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:ba6612b6548220ff5e9df85261bddc811a057b0b465a1226b39bfb8550616aee"}, + {file = "Pillow-9.4.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:5f532a2ad4d174eb73494e7397988e22bf427f91acc8e6ebf5bb10597b49c493"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dd5a9c3091a0f414a963d427f920368e2b6a4c2f7527fdd82cde8ef0bc7a327"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef21af928e807f10bf4141cad4746eee692a0dd3ff56cfb25fce076ec3cc8abe"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:847b114580c5cc9ebaf216dd8c8dbc6b00a3b7ab0131e173d7120e6deade1f57"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:653d7fb2df65efefbcbf81ef5fe5e5be931f1ee4332c2893ca638c9b11a409c4"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:46f39cab8bbf4a384ba7cb0bc8bae7b7062b6a11cfac1ca4bc144dea90d4a9f5"}, + {file = "Pillow-9.4.0-cp37-cp37m-win32.whl", hash = "sha256:7ac7594397698f77bce84382929747130765f66406dc2cd8b4ab4da68ade4c6e"}, + {file = "Pillow-9.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:46c259e87199041583658457372a183636ae8cd56dbf3f0755e0f376a7f9d0e6"}, + {file = "Pillow-9.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:0e51f608da093e5d9038c592b5b575cadc12fd748af1479b5e858045fff955a9"}, + {file = "Pillow-9.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:765cb54c0b8724a7c12c55146ae4647e0274a839fb6de7bcba841e04298e1011"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:519e14e2c49fcf7616d6d2cfc5c70adae95682ae20f0395e9280db85e8d6c4df"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d197df5489004db87d90b918033edbeee0bd6df3848a204bca3ff0a903bef837"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0845adc64fe9886db00f5ab68c4a8cd933ab749a87747555cec1c95acea64b0b"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:e1339790c083c5a4de48f688b4841f18df839eb3c9584a770cbd818b33e26d5d"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:a96e6e23f2b79433390273eaf8cc94fec9c6370842e577ab10dabdcc7ea0a66b"}, + {file = "Pillow-9.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7cfc287da09f9d2a7ec146ee4d72d6ea1342e770d975e49a8621bf54eaa8f30f"}, + {file = "Pillow-9.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d7081c084ceb58278dd3cf81f836bc818978c0ccc770cbbb202125ddabec6628"}, + {file = "Pillow-9.4.0-cp38-cp38-win32.whl", hash = "sha256:df41112ccce5d47770a0c13651479fbcd8793f34232a2dd9faeccb75eb5d0d0d"}, + {file = "Pillow-9.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:7a21222644ab69ddd9967cfe6f2bb420b460dae4289c9d40ff9a4896e7c35c9a"}, + {file = "Pillow-9.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0f3269304c1a7ce82f1759c12ce731ef9b6e95b6df829dccd9fe42912cc48569"}, + {file = "Pillow-9.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cb362e3b0976dc994857391b776ddaa8c13c28a16f80ac6522c23d5257156bed"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2e0f87144fcbbe54297cae708c5e7f9da21a4646523456b00cc956bd4c65815"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:28676836c7796805914b76b1837a40f76827ee0d5398f72f7dcc634bae7c6264"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0884ba7b515163a1a05440a138adeb722b8a6ae2c2b33aea93ea3118dd3a899e"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:53dcb50fbdc3fb2c55431a9b30caeb2f7027fcd2aeb501459464f0214200a503"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:e8c5cf126889a4de385c02a2c3d3aba4b00f70234bfddae82a5eaa3ee6d5e3e6"}, + {file = "Pillow-9.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6c6b1389ed66cdd174d040105123a5a1bc91d0aa7059c7261d20e583b6d8cbd2"}, + {file = "Pillow-9.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0dd4c681b82214b36273c18ca7ee87065a50e013112eea7d78c7a1b89a739153"}, + {file = "Pillow-9.4.0-cp39-cp39-win32.whl", hash = "sha256:6d9dfb9959a3b0039ee06c1a1a90dc23bac3b430842dcb97908ddde05870601c"}, + {file = "Pillow-9.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:54614444887e0d3043557d9dbc697dbb16cfb5a35d672b7a0fcc1ed0cf1c600b"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b9b752ab91e78234941e44abdecc07f1f0d8f51fb62941d32995b8161f68cfe5"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3b56206244dc8711f7e8b7d6cad4663917cd5b2d950799425076681e8766286"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aabdab8ec1e7ca7f1434d042bf8b1e92056245fb179790dc97ed040361f16bfd"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:db74f5562c09953b2c5f8ec4b7dfd3f5421f31811e97d1dbc0a7c93d6e3a24df"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e9d7747847c53a16a729b6ee5e737cf170f7a16611c143d95aa60a109a59c336"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b52ff4f4e002f828ea6483faf4c4e8deea8d743cf801b74910243c58acc6eda3"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:575d8912dca808edd9acd6f7795199332696d3469665ef26163cd090fa1f8bfa"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c4ed2ff6760e98d262e0cc9c9a7f7b8a9f61aa4d47c58835cdaf7b0b8811bb"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e621b0246192d3b9cb1dc62c78cfa4c6f6d2ddc0ec207d43c0dedecb914f152a"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:8f127e7b028900421cad64f51f75c051b628db17fb00e099eb148761eed598c9"}, + {file = "Pillow-9.4.0.tar.gz", hash = "sha256:a1c2d7780448eb93fbcc3789bf3916aa5720d942e37945f4056680317f1cd23e"}, ] [package.extras] -docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinxext-opengraph"] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinxext-opengraph"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] [[package]] name = "platformdirs" -version = "2.6.2" +version = "3.1.1" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-2.6.2-py3-none-any.whl", hash = "sha256:83c8f6d04389165de7c9b6f0c682439697887bca0aa2f1c87ef1826be3584490"}, - {file = "platformdirs-2.6.2.tar.gz", hash = "sha256:e1fea1fe471b9ff8332e229df3cb7de4f53eeea4998d3b6bfff542115e998bd2"}, + {file = "platformdirs-3.1.1-py3-none-any.whl", hash = "sha256:e5986afb596e4bb5bde29a79ac9061aa955b94fca2399b7aaac4090860920dd8"}, + {file = "platformdirs-3.1.1.tar.gz", hash = "sha256:024996549ee88ec1a9aa99ff7f8fc819bb59e2c3477b410d90a16d32d6e707aa"}, ] [package.extras] -docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] +docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] [[package]] name = "pre-commit" @@ -1635,21 +1702,6 @@ nodeenv = ">=0.11.1" pyyaml = ">=5.1" virtualenv = ">=20.10.0" -[[package]] -name = "prometheus-client" -version = "0.14.1" -description = "Python client for the Prometheus monitoring system." -category = "main" -optional = false -python-versions = ">=3.6" -files = [ - {file = "prometheus_client-0.14.1-py3-none-any.whl", hash = "sha256:522fded625282822a89e2773452f42df14b5a8e84a86433e3f8a189c1d54dc01"}, - {file = "prometheus_client-0.14.1.tar.gz", hash = "sha256:5459c427624961076277fdc6dc50540e2bacb98eebde99886e59ec55ed92093a"}, -] - -[package.extras] -twisted = ["twisted"] - [[package]] name = "psutil" version = "5.9.4" @@ -1679,40 +1731,100 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] [[package]] name = "pycryptodome" -version = "3.16.0" +version = "3.17" description = "Cryptographic library for Python" category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - {file = "pycryptodome-3.16.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:e061311b02cefb17ea93d4a5eb1ad36dca4792037078b43e15a653a0a4478ead"}, - {file = "pycryptodome-3.16.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:dab9359cc295160ba96738ba4912c675181c84bfdf413e5c0621cf00b7deeeaa"}, - {file = "pycryptodome-3.16.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:0198fe96c22f7bc31e7a7c27a26b2cec5af3cf6075d577295f4850856c77af32"}, - {file = "pycryptodome-3.16.0-cp27-cp27m-manylinux2014_aarch64.whl", hash = "sha256:58172080cbfaee724067a3c017add6a1a3cc167bbc8478dc5f2e5f45fa658763"}, - {file = "pycryptodome-3.16.0-cp27-cp27m-win32.whl", hash = "sha256:4d950ed2a887905b3fa709b86be5a163e26e1b174703ed59d34eb6832f213222"}, - {file = "pycryptodome-3.16.0-cp27-cp27m-win_amd64.whl", hash = "sha256:c69e19afc734b2a17b9d78b7bcb544aabd5a52ff628e14283b6e9404d27d0517"}, - {file = "pycryptodome-3.16.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:1fc16c80a5da8231fd1f953a7b8dfeb415f68120248e8d68383c5c2c4b18708c"}, - {file = "pycryptodome-3.16.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:5df582f2112dd72331de7e567837e136a9629181a8ab69ef8949e4bc294a0b99"}, - {file = "pycryptodome-3.16.0-cp27-cp27mu-manylinux2014_aarch64.whl", hash = "sha256:2bf2a270906a02b7b255e1a0d7b3aea4f06b3983c51ddec1673c380e0dff5b30"}, - {file = "pycryptodome-3.16.0-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b12a88566a98617b1a34b4e5a805dff2da98d83fc74262aff3c3d724d0f525d6"}, - {file = "pycryptodome-3.16.0-cp35-abi3-manylinux2014_aarch64.whl", hash = "sha256:69adf32522b75968e1cbf25b5d83e87c04cd9a55610ce1e4a19012e58e7e4023"}, - {file = "pycryptodome-3.16.0-cp35-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d67a2d2fe344953e4572a7d30668cceb516b04287b8638170d562065e53ee2e0"}, - {file = "pycryptodome-3.16.0-cp35-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e750a21d8a265b1f9bfb1a28822995ea33511ba7db5e2b55f41fb30781d0d073"}, - {file = "pycryptodome-3.16.0-cp35-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:47c71a0347847b747ba1349767b16cde049bc36f21654eb09cc82306ef5fdcf8"}, - {file = "pycryptodome-3.16.0-cp35-abi3-musllinux_1_1_i686.whl", hash = "sha256:856ebf822d08d754af62c22e2b93626509a72773214f92db1551e2b68d9e2a1b"}, - {file = "pycryptodome-3.16.0-cp35-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6016269bb56caf0327f6d42e7bad1247e08b78407446dff562240c65f85d5a5e"}, - {file = "pycryptodome-3.16.0-cp35-abi3-win32.whl", hash = "sha256:1047ac2b9847ae84ea454e6e20db7dcb755a81c1b1631a879213d2b0ad835ff2"}, - {file = "pycryptodome-3.16.0-cp35-abi3-win_amd64.whl", hash = "sha256:13b3e610a2f8938c61a90b20625069ab7a77ccea20d65a9a0f926cc0cc1314b1"}, - {file = "pycryptodome-3.16.0-pp27-pypy_73-macosx_10_9_x86_64.whl", hash = "sha256:265bfcbbf20d58e6871ce695a7a08aac9b41a0553060d9c05363abd6f3391bdd"}, - {file = "pycryptodome-3.16.0-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:54d807314c66785c69cd25425933d4bd4c23547a593cdcf49d962fa3e0081336"}, - {file = "pycryptodome-3.16.0-pp27-pypy_73-win32.whl", hash = "sha256:63165fbdc247450017eb9ef04cfe15cb3a72ca48ffcc3a3b75b08c0340bf3647"}, - {file = "pycryptodome-3.16.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:95069fd9e2813668a2713a1efcc65cc26d2c7e741401ac46628f1ec957511f1b"}, - {file = "pycryptodome-3.16.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d1daec4d31bb00918e4e178297ac6ca6f86ec4c851ba584770533ece554d29e2"}, - {file = "pycryptodome-3.16.0-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:48d99869d58f3979d72f6fa0c50f48d16f14973bc4a3adb0ce3b8325fdd7e223"}, - {file = "pycryptodome-3.16.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:c82e3bc1e70dde153b0956bffe20a15715a1fe3e00bc23e88d6973eda4505944"}, - {file = "pycryptodome-3.16.0.tar.gz", hash = "sha256:0e45d2d852a66ecfb904f090c3f87dc0dfb89a499570abad8590f10d9cffb350"}, + {file = "pycryptodome-3.17-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:2c5631204ebcc7ae33d11c43037b2dafe25e2ab9c1de6448eb6502ac69c19a56"}, + {file = "pycryptodome-3.17-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:04779cc588ad8f13c80a060b0b1c9d1c203d051d8a43879117fe6b8aaf1cd3fa"}, + {file = "pycryptodome-3.17-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:f812d58c5af06d939b2baccdda614a3ffd80531a26e5faca2c9f8b1770b2b7af"}, + {file = "pycryptodome-3.17-cp27-cp27m-manylinux2014_aarch64.whl", hash = "sha256:9453b4e21e752df8737fdffac619e93c9f0ec55ead9a45df782055eb95ef37d9"}, + {file = "pycryptodome-3.17-cp27-cp27m-musllinux_1_1_aarch64.whl", hash = "sha256:121d61663267f73692e8bde5ec0d23c9146465a0d75cad75c34f75c752527b01"}, + {file = "pycryptodome-3.17-cp27-cp27m-win32.whl", hash = "sha256:ba2d4fcb844c6ba5df4bbfee9352ad5352c5ae939ac450e06cdceff653280450"}, + {file = "pycryptodome-3.17-cp27-cp27m-win_amd64.whl", hash = "sha256:87e2ca3aa557781447428c4b6c8c937f10ff215202ab40ece5c13a82555c10d6"}, + {file = "pycryptodome-3.17-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:f44c0d28716d950135ff21505f2c764498eda9d8806b7c78764165848aa419bc"}, + {file = "pycryptodome-3.17-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:5a790bc045003d89d42e3b9cb3cc938c8561a57a88aaa5691512e8540d1ae79c"}, + {file = "pycryptodome-3.17-cp27-cp27mu-manylinux2014_aarch64.whl", hash = "sha256:d086d46774e27b280e4cece8ab3d87299cf0d39063f00f1e9290d096adc5662a"}, + {file = "pycryptodome-3.17-cp27-cp27mu-musllinux_1_1_aarch64.whl", hash = "sha256:5587803d5b66dfd99e7caa31ed91fba0fdee3661c5d93684028ad6653fce725f"}, + {file = "pycryptodome-3.17-cp35-abi3-macosx_10_9_universal2.whl", hash = "sha256:e7debd9c439e7b84f53be3cf4ba8b75b3d0b6e6015212355d6daf44ac672e210"}, + {file = "pycryptodome-3.17-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ca1ceb6303be1282148f04ac21cebeebdb4152590842159877778f9cf1634f09"}, + {file = "pycryptodome-3.17-cp35-abi3-manylinux2014_aarch64.whl", hash = "sha256:dc22cc00f804485a3c2a7e2010d9f14a705555f67020eb083e833cabd5bd82e4"}, + {file = "pycryptodome-3.17-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80ea8333b6a5f2d9e856ff2293dba2e3e661197f90bf0f4d5a82a0a6bc83a626"}, + {file = "pycryptodome-3.17-cp35-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c133f6721fba313722a018392a91e3c69d3706ae723484841752559e71d69dc6"}, + {file = "pycryptodome-3.17-cp35-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:333306eaea01fde50a73c4619e25631e56c4c61bd0fb0a2346479e67e3d3a820"}, + {file = "pycryptodome-3.17-cp35-abi3-musllinux_1_1_i686.whl", hash = "sha256:1a30f51b990994491cec2d7d237924e5b6bd0d445da9337d77de384ad7f254f9"}, + {file = "pycryptodome-3.17-cp35-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:909e36a43fe4a8a3163e9c7fc103867825d14a2ecb852a63d3905250b308a4e5"}, + {file = "pycryptodome-3.17-cp35-abi3-win32.whl", hash = "sha256:a3228728a3808bc9f18c1797ec1179a0efb5068c817b2ffcf6bcd012494dffb2"}, + {file = "pycryptodome-3.17-cp35-abi3-win_amd64.whl", hash = "sha256:9ec565e89a6b400eca814f28d78a9ef3f15aea1df74d95b28b7720739b28f37f"}, + {file = "pycryptodome-3.17-pp27-pypy_73-macosx_10_9_x86_64.whl", hash = "sha256:e1819b67bcf6ca48341e9b03c2e45b1c891fa8eb1a8458482d14c2805c9616f2"}, + {file = "pycryptodome-3.17-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:f8e550caf52472ae9126953415e4fc554ab53049a5691c45b8816895c632e4d7"}, + {file = "pycryptodome-3.17-pp27-pypy_73-win32.whl", hash = "sha256:afbcdb0eda20a0e1d44e3a1ad6d4ec3c959210f4b48cabc0e387a282f4c7deb8"}, + {file = "pycryptodome-3.17-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a74f45aee8c5cc4d533e585e0e596e9f78521e1543a302870a27b0ae2106381e"}, + {file = "pycryptodome-3.17-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38bbd6717eac084408b4094174c0805bdbaba1f57fc250fd0309ae5ec9ed7e09"}, + {file = "pycryptodome-3.17-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f68d6c8ea2974a571cacb7014dbaada21063a0375318d88ac1f9300bc81e93c3"}, + {file = "pycryptodome-3.17-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8198f2b04c39d817b206ebe0db25a6653bb5f463c2319d6f6d9a80d012ac1e37"}, + {file = "pycryptodome-3.17-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3a232474cd89d3f51e4295abe248a8b95d0332d153bf46444e415409070aae1e"}, + {file = "pycryptodome-3.17-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4992ec965606054e8326e83db1c8654f0549cdb26fce1898dc1a20bc7684ec1c"}, + {file = "pycryptodome-3.17-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:53068e33c74f3b93a8158dacaa5d0f82d254a81b1002e0cd342be89fcb3433eb"}, + {file = "pycryptodome-3.17-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:74794a2e2896cd0cf56fdc9db61ef755fa812b4a4900fa46c49045663a92b8d0"}, + {file = "pycryptodome-3.17.tar.gz", hash = "sha256:bce2e2d8e82fcf972005652371a3e8731956a0c1fbb719cc897943b3695ad91b"}, ] +[[package]] +name = "pydantic" +version = "1.10.6" +description = "Data validation and settings management using python type hints" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pydantic-1.10.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f9289065611c48147c1dd1fd344e9d57ab45f1d99b0fb26c51f1cf72cd9bcd31"}, + {file = "pydantic-1.10.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8c32b6bba301490d9bb2bf5f631907803135e8085b6aa3e5fe5a770d46dd0160"}, + {file = "pydantic-1.10.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd9b9e98068fa1068edfc9eabde70a7132017bdd4f362f8b4fd0abed79c33083"}, + {file = "pydantic-1.10.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c84583b9df62522829cbc46e2b22e0ec11445625b5acd70c5681ce09c9b11c4"}, + {file = "pydantic-1.10.6-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:b41822064585fea56d0116aa431fbd5137ce69dfe837b599e310034171996084"}, + {file = "pydantic-1.10.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:61f1f08adfaa9cc02e0cbc94f478140385cbd52d5b3c5a657c2fceb15de8d1fb"}, + {file = "pydantic-1.10.6-cp310-cp310-win_amd64.whl", hash = "sha256:32937835e525d92c98a1512218db4eed9ddc8f4ee2a78382d77f54341972c0e7"}, + {file = "pydantic-1.10.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bbd5c531b22928e63d0cb1868dee76123456e1de2f1cb45879e9e7a3f3f1779b"}, + {file = "pydantic-1.10.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e277bd18339177daa62a294256869bbe84df1fb592be2716ec62627bb8d7c81d"}, + {file = "pydantic-1.10.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f15277d720aa57e173954d237628a8d304896364b9de745dcb722f584812c7"}, + {file = "pydantic-1.10.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b243b564cea2576725e77aeeda54e3e0229a168bc587d536cd69941e6797543d"}, + {file = "pydantic-1.10.6-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3ce13a558b484c9ae48a6a7c184b1ba0e5588c5525482681db418268e5f86186"}, + {file = "pydantic-1.10.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3ac1cd4deed871dfe0c5f63721e29debf03e2deefa41b3ed5eb5f5df287c7b70"}, + {file = "pydantic-1.10.6-cp311-cp311-win_amd64.whl", hash = "sha256:b1eb6610330a1dfba9ce142ada792f26bbef1255b75f538196a39e9e90388bf4"}, + {file = "pydantic-1.10.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4ca83739c1263a044ec8b79df4eefc34bbac87191f0a513d00dd47d46e307a65"}, + {file = "pydantic-1.10.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea4e2a7cb409951988e79a469f609bba998a576e6d7b9791ae5d1e0619e1c0f2"}, + {file = "pydantic-1.10.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:53de12b4608290992a943801d7756f18a37b7aee284b9ffa794ee8ea8153f8e2"}, + {file = "pydantic-1.10.6-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:60184e80aac3b56933c71c48d6181e630b0fbc61ae455a63322a66a23c14731a"}, + {file = "pydantic-1.10.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:415a3f719ce518e95a92effc7ee30118a25c3d032455d13e121e3840985f2efd"}, + {file = "pydantic-1.10.6-cp37-cp37m-win_amd64.whl", hash = "sha256:72cb30894a34d3a7ab6d959b45a70abac8a2a93b6480fc5a7bfbd9c935bdc4fb"}, + {file = "pydantic-1.10.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3091d2eaeda25391405e36c2fc2ed102b48bac4b384d42b2267310abae350ca6"}, + {file = "pydantic-1.10.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:751f008cd2afe812a781fd6aa2fb66c620ca2e1a13b6a2152b1ad51553cb4b77"}, + {file = "pydantic-1.10.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12e837fd320dd30bd625be1b101e3b62edc096a49835392dcf418f1a5ac2b832"}, + {file = "pydantic-1.10.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:587d92831d0115874d766b1f5fddcdde0c5b6c60f8c6111a394078ec227fca6d"}, + {file = "pydantic-1.10.6-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:476f6674303ae7965730a382a8e8d7fae18b8004b7b69a56c3d8fa93968aa21c"}, + {file = "pydantic-1.10.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3a2be0a0f32c83265fd71a45027201e1278beaa82ea88ea5b345eea6afa9ac7f"}, + {file = "pydantic-1.10.6-cp38-cp38-win_amd64.whl", hash = "sha256:0abd9c60eee6201b853b6c4be104edfba4f8f6c5f3623f8e1dba90634d63eb35"}, + {file = "pydantic-1.10.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6195ca908045054dd2d57eb9c39a5fe86409968b8040de8c2240186da0769da7"}, + {file = "pydantic-1.10.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:43cdeca8d30de9a897440e3fb8866f827c4c31f6c73838e3a01a14b03b067b1d"}, + {file = "pydantic-1.10.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c19eb5163167489cb1e0161ae9220dadd4fc609a42649e7e84a8fa8fff7a80f"}, + {file = "pydantic-1.10.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:012c99a9c0d18cfde7469aa1ebff922e24b0c706d03ead96940f5465f2c9cf62"}, + {file = "pydantic-1.10.6-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:528dcf7ec49fb5a84bf6fe346c1cc3c55b0e7603c2123881996ca3ad79db5bfc"}, + {file = "pydantic-1.10.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:163e79386c3547c49366e959d01e37fc30252285a70619ffc1b10ede4758250a"}, + {file = "pydantic-1.10.6-cp39-cp39-win_amd64.whl", hash = "sha256:189318051c3d57821f7233ecc94708767dd67687a614a4e8f92b4a020d4ffd06"}, + {file = "pydantic-1.10.6-py3-none-any.whl", hash = "sha256:acc6783751ac9c9bc4680379edd6d286468a1dc8d7d9906cd6f1186ed682b2b0"}, + {file = "pydantic-1.10.6.tar.gz", hash = "sha256:cf95adb0d1671fc38d8c43dd921ad5814a735e7d9b4d9e437c088002863854fd"}, +] + +[package.dependencies] +typing-extensions = ">=4.2.0" + +[package.extras] +dotenv = ["python-dotenv (>=0.10.4)"] +email = ["email-validator (>=1.0.3)"] + [[package]] name = "pyee" version = "8.2.2" @@ -1727,14 +1839,14 @@ files = [ [[package]] name = "pygments" -version = "2.13.0" +version = "2.14.0" description = "Pygments is a syntax highlighting package written in Python." category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "Pygments-2.13.0-py3-none-any.whl", hash = "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42"}, - {file = "Pygments-2.13.0.tar.gz", hash = "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1"}, + {file = "Pygments-2.14.0-py3-none-any.whl", hash = "sha256:fa7bd7bd2771287c0de303af8bfdfc731f51bd2c6a47ab69d117138893b82717"}, + {file = "Pygments-2.14.0.tar.gz", hash = "sha256:b3ed06a9e8ac9a9aae5a6f5dbe78a8a58655d17b43b93c078f094ddc476ae297"}, ] [package.extras] @@ -1873,14 +1985,14 @@ six = ">=1.5" [[package]] name = "python-dotenv" -version = "0.21.0" +version = "0.21.1" description = "Read key-value pairs from a .env file and set them as environment variables" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "python-dotenv-0.21.0.tar.gz", hash = "sha256:b77d08274639e3d34145dfa6c7008e66df0f04b7be7a75fd0d5292c191d79045"}, - {file = "python_dotenv-0.21.0-py3-none-any.whl", hash = "sha256:1684eb44636dd462b66c3ee016599815514527ad99965de77f43e0944634a7e5"}, + {file = "python-dotenv-0.21.1.tar.gz", hash = "sha256:1c93de8f636cde3ce377292818d0e440b6e45a82f215c3744979151fa8151c49"}, + {file = "python_dotenv-0.21.1-py3-none-any.whl", hash = "sha256:41e12e0318bebc859fcc4d97d4db8d20ad21721a6aa5047dd59f090391cb549a"}, ] [package.extras] @@ -1888,19 +2000,19 @@ cli = ["click (>=5.0)"] [[package]] name = "python-gitlab" -version = "3.12.0" +version = "3.13.0" description = "Interact with GitLab API" category = "main" optional = false python-versions = ">=3.7.0" files = [ - {file = "python-gitlab-3.12.0.tar.gz", hash = "sha256:567390c2b93690dae62ed9738bf9f221fa45c01378fdf896089dbf7c8a134fbd"}, - {file = "python_gitlab-3.12.0-py3-none-any.whl", hash = "sha256:a5eb36b49783fda34563376674d5251dbbdbd1abd23b287dadf82f67d861b2c1"}, + {file = "python-gitlab-3.13.0.tar.gz", hash = "sha256:ad502b72b5d1137f4af37d4a68ae20fe7d6c9778f67cbe2aec566f7995053c7d"}, + {file = "python_gitlab-3.13.0-py3-none-any.whl", hash = "sha256:85ae778d8953aba87ad4b78aef7fbb5dae053980d2c20ff200bea29799685743"}, ] [package.dependencies] requests = ">=2.25.0" -requests-toolbelt = ">=0.9.1" +requests-toolbelt = ">=0.10.1" [package.extras] autocompletion = ["argcomplete (>=1.10.0,<3)"] @@ -1923,14 +2035,14 @@ Levenshtein = "0.20.9" [[package]] name = "pytz" -version = "2022.7" +version = "2022.7.1" description = "World timezone definitions, modern and historical" category = "main" optional = false python-versions = "*" files = [ - {file = "pytz-2022.7-py2.py3-none-any.whl", hash = "sha256:93007def75ae22f7cd991c84e02d434876818661f8df9ad5df9e950ff4e52cfd"}, - {file = "pytz-2022.7.tar.gz", hash = "sha256:7ccfae7b4b2c067464a6733c6261673fdb8fd1be905460396b97a073e9fa683a"}, + {file = "pytz-2022.7.1-py2.py3-none-any.whl", hash = "sha256:78f4f37d8198e0627c5f1143240bb0206b8691d8d7ac6d78fee88b78733f8c4a"}, + {file = "pytz-2022.7.1.tar.gz", hash = "sha256:01a0681c4b9684a28304615eba55d1ab31ae00bf68ec157ec3708a8182dbbcd0"}, ] [[package]] @@ -2102,14 +2214,14 @@ full = ["numpy"] [[package]] name = "redis" -version = "4.4.0" +version = "4.5.1" description = "Python client for Redis database and key-value store" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "redis-4.4.0-py3-none-any.whl", hash = "sha256:cae3ee5d1f57d8caf534cd8764edf3163c77e073bdd74b6f54a87ffafdc5e7d9"}, - {file = "redis-4.4.0.tar.gz", hash = "sha256:7b8c87d19c45d3f1271b124858d2a5c13160c4e74d4835e28273400fa34d5228"}, + {file = "redis-4.5.1-py3-none-any.whl", hash = "sha256:5deb072d26e67d2be1712603bfb7947ec3431fb0eec9c578994052e33035af6d"}, + {file = "redis-4.5.1.tar.gz", hash = "sha256:1eec3741cda408d3a5f84b78d089c8b8d895f21b3b050988351e925faf202864"}, ] [package.dependencies] @@ -2219,19 +2331,19 @@ files = [ [[package]] name = "requests" -version = "2.28.1" +version = "2.28.2" description = "Python HTTP for Humans." category = "main" optional = false python-versions = ">=3.7, <4" files = [ - {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, - {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, + {file = "requests-2.28.2-py3-none-any.whl", hash = "sha256:64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa"}, + {file = "requests-2.28.2.tar.gz", hash = "sha256:98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf"}, ] [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = ">=2,<3" +charset-normalizer = ">=2,<4" idna = ">=2.5,<4" urllib3 = ">=1.21.1,<1.27" @@ -2294,18 +2406,18 @@ jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"] [[package]] name = "setuptools" -version = "65.6.3" +version = "67.6.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "setuptools-65.6.3-py3-none-any.whl", hash = "sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54"}, - {file = "setuptools-65.6.3.tar.gz", hash = "sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75"}, + {file = "setuptools-67.6.0-py3-none-any.whl", hash = "sha256:b78aaa36f6b90a074c1fa651168723acbf45d14cb1196b6f02c0fd07f17623b2"}, + {file = "setuptools-67.6.0.tar.gz", hash = "sha256:2ee892cd5f29f3373097f5a814697e397cf3ce313616df0af11231e2ad118077"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] @@ -2335,16 +2447,36 @@ files = [ [[package]] name = "soupsieve" -version = "2.3.2.post1" +version = "2.4" description = "A modern CSS selector implementation for Beautiful Soup." category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "soupsieve-2.3.2.post1-py3-none-any.whl", hash = "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759"}, - {file = "soupsieve-2.3.2.post1.tar.gz", hash = "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d"}, + {file = "soupsieve-2.4-py3-none-any.whl", hash = "sha256:49e5368c2cda80ee7e84da9dbe3e110b70a4575f196efb74e51b94549d921955"}, + {file = "soupsieve-2.4.tar.gz", hash = "sha256:e28dba9ca6c7c00173e34e4ba57448f0688bb681b7c5e8bf4971daafc093d69a"}, ] +[[package]] +name = "statipy" +version = "0.1.0" +description = "" +category = "main" +optional = false +python-versions = ">=3.10,<4" +files = [] +develop = false + +[package.dependencies] +beanie = "^1.17.0" +interactions = {git = "https://github.com/interactions-py/interactions.py", rev = "5.x"} + +[package.source] +type = "git" +url = "https://github.com/zevaryx/statipy" +reference = "main" +resolved_reference = "b73d7812e29e2dc8290b869bc94b029c7c1ec3e9" + [[package]] name = "thefuzz" version = "0.19.0" @@ -2367,6 +2499,18 @@ url = "https://github.com/zevaryx/thefuzz.git" reference = "master" resolved_reference = "e4ab69d3d44cc3dd67221cba53e6a614786b0d7c" +[[package]] +name = "toml" +version = "0.10.2" +description = "Python Library for Tom's Obvious, Minimal Language" +category = "main" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] + [[package]] name = "tomli" version = "2.0.1" @@ -2381,14 +2525,14 @@ files = [ [[package]] name = "tqdm" -version = "4.64.1" +version = "4.65.0" description = "Fast, Extensible Progress Meter" category = "main" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" +python-versions = ">=3.7" files = [ - {file = "tqdm-4.64.1-py2.py3-none-any.whl", hash = "sha256:6fee160d6ffcd1b1c68c65f14c829c22832bc401726335ce92c52d395944a6a1"}, - {file = "tqdm-4.64.1.tar.gz", hash = "sha256:5f4f682a004951c1b450bc753c710e9280c5746ce6ffedee253ddbcbf54cf1e4"}, + {file = "tqdm-4.65.0-py3-none-any.whl", hash = "sha256:c4f53a17fe37e132815abceec022631be8ffe1b9381c2e6e30aa70edc99e9671"}, + {file = "tqdm-4.65.0.tar.gz", hash = "sha256:1871fb68a86b8fb3b59ca4cdd3dcccbc7e6d613eeed31f4c332531977b89beb5"}, ] [package.dependencies] @@ -2402,14 +2546,14 @@ telegram = ["requests"] [[package]] name = "tweepy" -version = "4.12.1" +version = "4.13.0" description = "Twitter library for Python" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "tweepy-4.12.1-py3-none-any.whl", hash = "sha256:86d4f6738cbd5a57f86dff7ae0caf52f66004d5777626bf5da970aa8c8aa35df"}, - {file = "tweepy-4.12.1.tar.gz", hash = "sha256:5e4c5b5d22f9e5dd9678a708fae4e40e6eeb1a860a89891a5de3040d5f3da8fe"}, + {file = "tweepy-4.13.0-py3-none-any.whl", hash = "sha256:95207c41023b75a066b0b442a0a907acada610a3cfa09c4ccb5f2d9e522c33b5"}, + {file = "tweepy-4.13.0.tar.gz", hash = "sha256:097425335f9f6674826ba7e72b2247bbca39c9ca0a0bd82f30a38a5bef8c6c88"}, ] [package.dependencies] @@ -2418,7 +2562,7 @@ requests = ">=2.27.0,<3" requests-oauthlib = ">=1.2.0,<2" [package.extras] -async = ["aiohttp (>=3.7.3,<4)", "async-lru (>=1.0.3,<2)"] +async = ["aiohttp (>=3.7.3,<4)", "async-lru (>=1.0.3,<3)"] dev = ["coverage (>=4.4.2)", "coveralls (>=2.1.0)", "tox (>=3.21.0)"] docs = ["myst-parser (==0.15.2)", "readthedocs-sphinx-search (==0.1.1)", "sphinx (==4.2.0)", "sphinx-hoverxref (==0.7b1)", "sphinx-rtd-theme (==1.0.0)", "sphinx-tabs (==3.2.0)"] socks = ["requests[socks] (>=2.27.0,<3)"] @@ -2426,14 +2570,14 @@ test = ["vcrpy (>=1.10.3)"] [[package]] name = "typing-extensions" -version = "4.4.0" +version = "4.5.0" description = "Backported and Experimental Type Hints for Python 3.7+" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, - {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, + {file = "typing_extensions-4.5.0-py3-none-any.whl", hash = "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4"}, + {file = "typing_extensions-4.5.0.tar.gz", hash = "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb"}, ] [[package]] @@ -2523,14 +2667,14 @@ test = ["pytest (>=2.7.3)"] [[package]] name = "urllib3" -version = "1.26.13" +version = "1.26.15" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "urllib3-1.26.13-py2.py3-none-any.whl", hash = "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc"}, - {file = "urllib3-1.26.13.tar.gz", hash = "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"}, + {file = "urllib3-1.26.15-py2.py3-none-any.whl", hash = "sha256:aa751d169e23c7479ce47a0cb0da579e3ede798f994f5816a74e4f4500dcea42"}, + {file = "urllib3-1.26.15.tar.gz", hash = "sha256:8a388717b9476f934a21484e8c8e61875ab60644d29b9b39e11e4b9dc1c6b305"}, ] [package.extras] @@ -2538,82 +2682,63 @@ brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] -[[package]] -name = "uvicorn" -version = "0.18.3" -description = "The lightning-fast ASGI server." -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "uvicorn-0.18.3-py3-none-any.whl", hash = "sha256:0abd429ebb41e604ed8d2be6c60530de3408f250e8d2d84967d85ba9e86fe3af"}, - {file = "uvicorn-0.18.3.tar.gz", hash = "sha256:9a66e7c42a2a95222f76ec24a4b754c158261c4696e683b9dadc72b590e0311b"}, -] - -[package.dependencies] -click = ">=7.0" -h11 = ">=0.8" - -[package.extras] -standard = ["colorama (>=0.4)", "httptools (>=0.4.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.0)"] - [[package]] name = "virtualenv" -version = "20.17.1" +version = "20.21.0" description = "Virtual Python Environment builder" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "virtualenv-20.17.1-py3-none-any.whl", hash = "sha256:ce3b1684d6e1a20a3e5ed36795a97dfc6af29bc3970ca8dab93e11ac6094b3c4"}, - {file = "virtualenv-20.17.1.tar.gz", hash = "sha256:f8b927684efc6f1cc206c9db297a570ab9ad0e51c16fa9e45487d36d1905c058"}, + {file = "virtualenv-20.21.0-py3-none-any.whl", hash = "sha256:31712f8f2a17bd06234fa97fdf19609e789dd4e3e4bf108c3da71d710651adbc"}, + {file = "virtualenv-20.21.0.tar.gz", hash = "sha256:f50e3e60f990a0757c9b68333c9fdaa72d7188caa417f96af9e52407831a3b68"}, ] [package.dependencies] distlib = ">=0.3.6,<1" filelock = ">=3.4.1,<4" -platformdirs = ">=2.4,<3" +platformdirs = ">=2.4,<4" [package.extras] -docs = ["proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-argparse (>=0.3.2)", "sphinx-rtd-theme (>=1)", "towncrier (>=22.8)"] -testing = ["coverage (>=6.2)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=21.3)", "pytest (>=7.0.1)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.6.1)", "pytest-randomly (>=3.10.3)", "pytest-timeout (>=2.1)"] +docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=22.12)"] +test = ["covdefaults (>=2.2.2)", "coverage (>=7.1)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23)", "pytest (>=7.2.1)", "pytest-env (>=0.8.1)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.10)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)"] [[package]] name = "watchdog" -version = "2.2.0" +version = "2.3.1" description = "Filesystem events monitoring" category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "watchdog-2.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ed91c3ccfc23398e7aa9715abf679d5c163394b8cad994f34f156d57a7c163dc"}, - {file = "watchdog-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:76a2743402b794629a955d96ea2e240bd0e903aa26e02e93cd2d57b33900962b"}, - {file = "watchdog-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:920a4bda7daa47545c3201a3292e99300ba81ca26b7569575bd086c865889090"}, - {file = "watchdog-2.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ceaa9268d81205876bedb1069f9feab3eccddd4b90d9a45d06a0df592a04cae9"}, - {file = "watchdog-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1893d425ef4fb4f129ee8ef72226836619c2950dd0559bba022b0818c63a7b60"}, - {file = "watchdog-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9e99c1713e4436d2563f5828c8910e5ff25abd6ce999e75f15c15d81d41980b6"}, - {file = "watchdog-2.2.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:a5bd9e8656d07cae89ac464ee4bcb6f1b9cecbedc3bf1334683bed3d5afd39ba"}, - {file = "watchdog-2.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3a048865c828389cb06c0bebf8a883cec3ae58ad3e366bcc38c61d8455a3138f"}, - {file = "watchdog-2.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e722755d995035dd32177a9c633d158f2ec604f2a358b545bba5bed53ab25bca"}, - {file = "watchdog-2.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:af4b5c7ba60206759a1d99811b5938ca666ea9562a1052b410637bb96ff97512"}, - {file = "watchdog-2.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:619d63fa5be69f89ff3a93e165e602c08ed8da402ca42b99cd59a8ec115673e1"}, - {file = "watchdog-2.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1f2b0665c57358ce9786f06f5475bc083fea9d81ecc0efa4733fd0c320940a37"}, - {file = "watchdog-2.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:441024df19253bb108d3a8a5de7a186003d68564084576fecf7333a441271ef7"}, - {file = "watchdog-2.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1a410dd4d0adcc86b4c71d1317ba2ea2c92babaf5b83321e4bde2514525544d5"}, - {file = "watchdog-2.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:28704c71afdb79c3f215c90231e41c52b056ea880b6be6cee035c6149d658ed1"}, - {file = "watchdog-2.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2ac0bd7c206bb6df78ef9e8ad27cc1346f2b41b1fef610395607319cdab89bc1"}, - {file = "watchdog-2.2.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:27e49268735b3c27310883012ab3bd86ea0a96dcab90fe3feb682472e30c90f3"}, - {file = "watchdog-2.2.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:2af1a29fd14fc0a87fb6ed762d3e1ae5694dcde22372eebba50e9e5be47af03c"}, - {file = "watchdog-2.2.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:c7bd98813d34bfa9b464cf8122e7d4bec0a5a427399094d2c17dd5f70d59bc61"}, - {file = "watchdog-2.2.0-py3-none-manylinux2014_i686.whl", hash = "sha256:56fb3f40fc3deecf6e518303c7533f5e2a722e377b12507f6de891583f1b48aa"}, - {file = "watchdog-2.2.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:74535e955359d79d126885e642d3683616e6d9ab3aae0e7dcccd043bd5a3ff4f"}, - {file = "watchdog-2.2.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:cf05e6ff677b9655c6e9511d02e9cc55e730c4e430b7a54af9c28912294605a4"}, - {file = "watchdog-2.2.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:d6ae890798a3560688b441ef086bb66e87af6b400a92749a18b856a134fc0318"}, - {file = "watchdog-2.2.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:e5aed2a700a18c194c39c266900d41f3db0c1ebe6b8a0834b9995c835d2ca66e"}, - {file = "watchdog-2.2.0-py3-none-win32.whl", hash = "sha256:d0fb5f2b513556c2abb578c1066f5f467d729f2eb689bc2db0739daf81c6bb7e"}, - {file = "watchdog-2.2.0-py3-none-win_amd64.whl", hash = "sha256:1f8eca9d294a4f194ce9df0d97d19b5598f310950d3ac3dd6e8d25ae456d4c8a"}, - {file = "watchdog-2.2.0-py3-none-win_ia64.whl", hash = "sha256:ad0150536469fa4b693531e497ffe220d5b6cd76ad2eda474a5e641ee204bbb6"}, - {file = "watchdog-2.2.0.tar.gz", hash = "sha256:83cf8bc60d9c613b66a4c018051873d6273d9e45d040eed06d6a96241bd8ec01"}, + {file = "watchdog-2.3.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1f1200d4ec53b88bf04ab636f9133cb703eb19768a39351cee649de21a33697"}, + {file = "watchdog-2.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:564e7739abd4bd348aeafbf71cc006b6c0ccda3160c7053c4a53b67d14091d42"}, + {file = "watchdog-2.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:95ad708a9454050a46f741ba5e2f3468655ea22da1114e4c40b8cbdaca572565"}, + {file = "watchdog-2.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a073c91a6ef0dda488087669586768195c3080c66866144880f03445ca23ef16"}, + {file = "watchdog-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aa8b028750b43e80eea9946d01925168eeadb488dfdef1d82be4b1e28067f375"}, + {file = "watchdog-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:964fd236cd443933268ae49b59706569c8b741073dbfd7ca705492bae9d39aab"}, + {file = "watchdog-2.3.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:91fd146d723392b3e6eb1ac21f122fcce149a194a2ba0a82c5e4d0ee29cd954c"}, + {file = "watchdog-2.3.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:efe3252137392a471a2174d721e1037a0e6a5da7beb72a021e662b7000a9903f"}, + {file = "watchdog-2.3.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:85bf2263290591b7c5fa01140601b64c831be88084de41efbcba6ea289874f44"}, + {file = "watchdog-2.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8f2df370cd8e4e18499dd0bfdef476431bcc396108b97195d9448d90924e3131"}, + {file = "watchdog-2.3.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ea5d86d1bcf4a9d24610aa2f6f25492f441960cf04aed2bd9a97db439b643a7b"}, + {file = "watchdog-2.3.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6f5d0f7eac86807275eba40b577c671b306f6f335ba63a5c5a348da151aba0fc"}, + {file = "watchdog-2.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b848c71ef2b15d0ef02f69da8cc120d335cec0ed82a3fa7779e27a5a8527225"}, + {file = "watchdog-2.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0d9878be36d2b9271e3abaa6f4f051b363ff54dbbe7e7df1af3c920e4311ee43"}, + {file = "watchdog-2.3.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4cd61f98cb37143206818cb1786d2438626aa78d682a8f2ecee239055a9771d5"}, + {file = "watchdog-2.3.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3d2dbcf1acd96e7a9c9aefed201c47c8e311075105d94ce5e899f118155709fd"}, + {file = "watchdog-2.3.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:03f342a9432fe08107defbe8e405a2cb922c5d00c4c6c168c68b633c64ce6190"}, + {file = "watchdog-2.3.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7a596f9415a378d0339681efc08d2249e48975daae391d58f2e22a3673b977cf"}, + {file = "watchdog-2.3.1-py3-none-manylinux2014_armv7l.whl", hash = "sha256:0e1dd6d449267cc7d6935d7fe27ee0426af6ee16578eed93bacb1be9ff824d2d"}, + {file = "watchdog-2.3.1-py3-none-manylinux2014_i686.whl", hash = "sha256:7a1876f660e32027a1a46f8a0fa5747ad4fcf86cb451860eae61a26e102c8c79"}, + {file = "watchdog-2.3.1-py3-none-manylinux2014_ppc64.whl", hash = "sha256:2caf77ae137935c1466f8cefd4a3aec7017b6969f425d086e6a528241cba7256"}, + {file = "watchdog-2.3.1-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:53f3e95081280898d9e4fc51c5c69017715929e4eea1ab45801d5e903dd518ad"}, + {file = "watchdog-2.3.1-py3-none-manylinux2014_s390x.whl", hash = "sha256:9da7acb9af7e4a272089bd2af0171d23e0d6271385c51d4d9bde91fe918c53ed"}, + {file = "watchdog-2.3.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:8a4d484e846dcd75e96b96d80d80445302621be40e293bfdf34a631cab3b33dc"}, + {file = "watchdog-2.3.1-py3-none-win32.whl", hash = "sha256:a74155398434937ac2780fd257c045954de5b11b5c52fc844e2199ce3eecf4cf"}, + {file = "watchdog-2.3.1-py3-none-win_amd64.whl", hash = "sha256:5defe4f0918a2a1a4afbe4dbb967f743ac3a93d546ea4674567806375b024adb"}, + {file = "watchdog-2.3.1-py3-none-win_ia64.whl", hash = "sha256:4109cccf214b7e3462e8403ab1e5b17b302ecce6c103eb2fc3afa534a7f27b96"}, + {file = "watchdog-2.3.1.tar.gz", hash = "sha256:d9f9ed26ed22a9d331820a8432c3680707ea8b54121ddcc9dc7d9f2ceeb36906"}, ] [package.extras] @@ -2621,14 +2746,14 @@ watchmedo = ["PyYAML (>=3.10)"] [[package]] name = "wcwidth" -version = "0.2.5" +version = "0.2.6" description = "Measures the displayed width of unicode strings in a terminal" category = "main" optional = false python-versions = "*" files = [ - {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, - {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, + {file = "wcwidth-0.2.6-py2.py3-none-any.whl", hash = "sha256:795b138f6875577cd91bba52baf9e445cd5118fd32723b460e30a0af30ea230e"}, + {file = "wcwidth-0.2.6.tar.gz", hash = "sha256:a5220780a404dbe3353789870978e472cfe477761f06ee55077256e509b156d0"}, ] [[package]] @@ -2800,21 +2925,21 @@ multidict = ">=4.0" [[package]] name = "zipp" -version = "3.11.0" +version = "3.15.0" description = "Backport of pathlib-compatible object wrapper for zip files" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "zipp-3.11.0-py3-none-any.whl", hash = "sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa"}, - {file = "zipp-3.11.0.tar.gz", hash = "sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766"}, + {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"}, + {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] -testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [metadata] lock-version = "2.0" python-versions = ">=3.10,<4" -content-hash = "2736c78c53aa03d458adf66d72b1f2e45a35682a96439e9f5ff7b6f925e20c36" +content-hash = "973d2a4a3018b5b46a43a44e3d7f3c05b80b5b03a67cc77ccb75bb10194ff646" diff --git a/pyproject.toml b/pyproject.toml index 17da176..ef907d4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,9 +27,10 @@ nest-asyncio = "^1.5.5" thefuzz = {extras = ["speedup"], git = "https://github.com/zevaryx/thefuzz.git", rev = "master"} # Forked beautifulsoup4 = "^4.11.1" calculator = {git = "https://git.zevaryx.com/zevaryx/calculator.git"} # Mine -nafftrack = {git = "https://github.com/zevaryx/nafftrack.git"} # Contributed redis = "^4.4.0" interactions = {git = "https://github.com/interactions-py/interactions.py", rev = "5.x"} +statipy = {git = "https://github.com/zevaryx/statipy", rev = "main"} +beanie = "^1.17.0" [tool.poetry.dev-dependencies] black = {version = "^22.3.0", allow-prereleases = true}