diff --git a/jarvis/client.py b/jarvis/client.py index fe6abef..377e15b 100644 --- a/jarvis/client.py +++ b/jarvis/client.py @@ -258,7 +258,7 @@ class Jarvis(Client): text=f"{ctx.author.user.username}#{ctx.author.discriminator} | {ctx.author.id}" ) if channel: - await channel.send(embed=embed) + await channel.send(embeds=embed) else: self.logger.warning( f"Activitylog channel no longer exists in {ctx.guild.name}, removing" @@ -295,7 +295,7 @@ class Jarvis(Client): ) embed.set_author(name=user.username, icon_url=user.avatar.url) embed.set_footer(text=f"{user.username}#{user.discriminator} | {user.id}") - await channel.send(embed=embed) + await channel.send(embeds=embed) async def process_verify(self, before: Member, after: Member) -> Embed: """Process user verification.""" @@ -413,7 +413,7 @@ class Jarvis(Client): embed = embed or await self.process_rolechange(before, after) embed = embed or await self.process_rename(before, after) if embed: - await channel.send(embed=embed) + await channel.send(embeds=embed) # Message async def autopurge(self, message: Message) -> None: @@ -486,7 +486,7 @@ class Jarvis(Client): user=message.author.id, ).commit() embed = warning_embed(message.author, "Sent an invite link") - await message.channel.send(embed=embed) + await message.channel.send(embeds=embed) async def massmention(self, message: Message) -> None: """Handle massmention events.""" @@ -518,7 +518,7 @@ class Jarvis(Client): user=message.author.id, ).commit() embed = warning_embed(message.author, "Mass Mention") - await message.channel.send(embed=embed) + await message.channel.send(embeds=embed) async def roleping(self, message: Message) -> None: """Handle roleping events.""" @@ -579,7 +579,7 @@ class Jarvis(Client): user=message.author.id, ).commit() embed = warning_embed(message.author, "Pinged a blocked role/user with a blocked role") - await message.channel.send(embed=embed) + await message.channel.send(embeds=embed) async def phishing(self, message: Message) -> None: """Check if the message contains any known phishing domains.""" @@ -599,7 +599,7 @@ class Jarvis(Client): user=message.author.id, ).commit() embed = warning_embed(message.author, "Phishing URL") - await message.channel.send(embed=embed) + await message.channel.send(embeds=embed) await message.delete() return True return False @@ -631,7 +631,7 @@ class Jarvis(Client): ).commit() reasons = ", ".join(item["not_safe_reasons"]) embed = warning_embed(message.author, reasons) - await message.channel.send(embed=embed) + await message.channel.send(embeds=embed) await message.delete() return True return False @@ -689,7 +689,7 @@ class Jarvis(Client): embed.set_footer( text=f"{after.author.username}#{after.author.discriminator} | {after.author.id}" ) - await channel.send(embed=embed) + await channel.send(embeds=embed) except Exception as e: self.logger.warning( f"Failed to process edit {before.guild.id}/{before.channel.id}/{before.id}: {e}" @@ -765,7 +765,7 @@ class Jarvis(Client): f"{message.author.id}" ) ) - await channel.send(embed=embed) + await channel.send(embeds=embed) except Exception as e: self.logger.warning( f"Failed to process edit {message.guild.id}/{message.channel.id}/{message.id}: {e}" @@ -799,30 +799,39 @@ class Jarvis(Client): note = Note( admin=context.author.id, content="Moderation case opened via message" ) - modlog = Modlog( - user=user.id, - admin=context.author.id, - guild=context.guild.id, - actions=[action], - notes=[note], + modlog = await Modlog.find_one( + q(user=user.id, guild=context.guild.id, open=True) ) - await modlog.commit() + if modlog: + self.logger.debug("User already has active case in guild") + await context.send( + f"User already has open case: {modlog.nanoid}", ephemeral=True + ) + else: + modlog = Modlog( + user=user.id, + admin=context.author.id, + guild=context.guild.id, + actions=[action], + notes=[note], + ) + await modlog.commit() - fields = ( - EmbedField(name="Admin", value=context.author.mention), - EmbedField(name="Opening Action", value=f"{name} {parent}"), - ) - embed = build_embed( - title="Moderation Case Opened", - description=f"Moderation case opened against {user.mention}", - fields=fields, - ) - embed.set_author( - name=user.username + "#" + user.discriminator, - icon_url=user.display_avatar.url, - ) + fields = ( + EmbedField(name="Admin", value=context.author.mention), + EmbedField(name="Opening Action", value=f"{name} {parent}"), + ) + embed = build_embed( + title="Moderation Case Opened", + description=f"Moderation case opened against {user.mention}", + fields=fields, + ) + embed.set_author( + name=user.username + "#" + user.discriminator, + icon_url=user.display_avatar.url, + ) - await context.message.edit(embed=embed) + await context.message.edit(embeds=embed) elif not user: self.logger.debug("User no longer in guild") await context.send("User no longer in guild", ephemeral=True) diff --git a/jarvis/cogs/admin/ban.py b/jarvis/cogs/admin/ban.py index 2cbe0c6..e0e9ed7 100644 --- a/jarvis/cogs/admin/ban.py +++ b/jarvis/cogs/admin/ban.py @@ -63,7 +63,7 @@ class BanCog(ModcaseCog): embed.set_thumbnail(url=user.avatar.url) embed.set_footer(text=f"{user.username}#{user.discriminator} | {user.id}") - await ctx.send(embed=embed) + await ctx.send(embeds=embed) async def discord_apply_unban(self, ctx: InteractionContext, user: User, reason: str) -> None: """Apply a Discord unban.""" @@ -89,7 +89,7 @@ class BanCog(ModcaseCog): ) embed.set_thumbnail(url=user.avatar.url) embed.set_footer(text=f"{user.username}#{user.discriminator} | {user.id}") - await ctx.send(embed=embed) + 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) diff --git a/jarvis/cogs/admin/kick.py b/jarvis/cogs/admin/kick.py index 820b777..0653a5d 100644 --- a/jarvis/cogs/admin/kick.py +++ b/jarvis/cogs/admin/kick.py @@ -34,6 +34,9 @@ class KickCog(ModcaseCog): if len(reason) > 100: await ctx.send("Reason must be < 100 characters", ephemeral=True) return + if not ctx.guild.fetch_member(user.id): + await ctx.send("User must be in guild", ephemeral=True) + return guild_name = ctx.guild.name embed = build_embed( @@ -50,7 +53,7 @@ class KickCog(ModcaseCog): send_failed = False try: - await user.send(embed=embed) + await user.send(embeds=embed) except Exception: send_failed = True try: @@ -77,4 +80,4 @@ class KickCog(ModcaseCog): guild=ctx.guild.id, ) await k.commit() - await ctx.send(embed=embed) + await ctx.send(embeds=embed) diff --git a/jarvis/cogs/admin/modcase.py b/jarvis/cogs/admin/modcase.py index 22a0bc6..039c531 100644 --- a/jarvis/cogs/admin/modcase.py +++ b/jarvis/cogs/admin/modcase.py @@ -227,7 +227,7 @@ class CaseCog(Extension): return embed = await self.get_summary_embed(case, ctx.guild) - await ctx.send(embed=embed) + 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) @@ -255,7 +255,7 @@ class CaseCog(Extension): await case.commit() embed = await self.get_summary_embed(case, ctx.guild) - await ctx.send(embed=embed) + 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) @@ -270,7 +270,7 @@ class CaseCog(Extension): await case.commit() embed = await self.get_summary_embed(case, ctx.guild) - await ctx.send(embed=embed) + 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) @@ -298,7 +298,7 @@ class CaseCog(Extension): await case.commit() embed = await self.get_summary_embed(case, ctx.guild) - await ctx.send(embed=embed) + 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) @@ -329,4 +329,4 @@ class CaseCog(Extension): await case.reload() embed = await self.get_summary_embed(case, ctx.guild) - await ctx.send(embed=embed) + await ctx.send(embeds=embed) diff --git a/jarvis/cogs/admin/mute.py b/jarvis/cogs/admin/mute.py index cbcfab3..74745a4 100644 --- a/jarvis/cogs/admin/mute.py +++ b/jarvis/cogs/admin/mute.py @@ -123,7 +123,7 @@ class MuteCog(ModcaseCog): return try: embed = await self._apply_timeout(ctx, ctx.target, reason, until) - await response.send(embed=embed) + await response.send(embeds=embed) except Forbidden: await response.send("Unable to mute this user", ephemeral=True) @@ -170,6 +170,9 @@ class MuteCog(ModcaseCog): if len(reason) > 100: await ctx.send("Reason must be < 100 characters", ephemeral=True) return + if not ctx.guild.fetch_member(user.id): + await ctx.send("User must be in guild", ephemeral=True) + return # Max 4 weeks (2419200 seconds) per API duration = time * scale @@ -180,7 +183,7 @@ class MuteCog(ModcaseCog): until = datetime.now(tz=timezone.utc) + timedelta(minutes=duration) try: embed = await self._apply_timeout(ctx, user, reason, until) - await ctx.send(embed=embed) + await ctx.send(embeds=embed) except Forbidden: await ctx.send("Unable to mute this user", ephemeral=True) @@ -212,4 +215,4 @@ class MuteCog(ModcaseCog): embed.set_author(name=user.display_name, icon_url=user.display_avatar.url) embed.set_thumbnail(url=user.display_avatar.url) embed.set_footer(text=f"{user.username}#{user.discriminator} | {user.id}") - await ctx.send(embed=embed) + await ctx.send(embeds=embed) diff --git a/jarvis/cogs/admin/warning.py b/jarvis/cogs/admin/warning.py index c118ee0..4b67104 100644 --- a/jarvis/cogs/admin/warning.py +++ b/jarvis/cogs/admin/warning.py @@ -66,7 +66,7 @@ class WarningCog(ModcaseCog): active=True, ).commit() embed = warning_embed(user, reason) - await ctx.send(embed=embed) + 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) diff --git a/jarvis/cogs/botutil.py b/jarvis/cogs/botutil.py index 96617ea..61a49f5 100644 --- a/jarvis/cogs/botutil.py +++ b/jarvis/cogs/botutil.py @@ -71,7 +71,7 @@ class BotutilCog(Extension): ) embed = build_embed(title="System Info", description="", fields=fields) embed.set_image(url=self.bot.user.avatar.url) - await ctx.send(embed=embed) + await ctx.send(embeds=embed) @prefixed_command(name="update") async def _update(self, ctx: PrefixedContext) -> None: @@ -105,14 +105,14 @@ class BotutilCog(Extension): self.logger.info("Updates applied") content = f"```ansi\n{capture.get()}\n```" if len(content) < 3000: - await ctx.reply(content, embed=embed) + await ctx.reply(content, embeds=embed) else: - await ctx.reply(f"Total Changes: {status.lines['total_lines']}", embed=embed) + await ctx.reply(f"Total Changes: {status.lines['total_lines']}", embeds=embed) else: embed = build_embed(title="Update Status", description="No changes applied", fields=[]) embed.set_thumbnail(url="https://dev.zevaryx.com/git.png") - await ctx.reply(embed=embed) + await ctx.reply(embeds=embed) def setup(bot: Client) -> None: diff --git a/jarvis/cogs/dbrand.py b/jarvis/cogs/dbrand.py index 9e0fbd0..c9e34d5 100644 --- a/jarvis/cogs/dbrand.py +++ b/jarvis/cogs/dbrand.py @@ -65,7 +65,7 @@ class DbrandCog(Extension): embed.set_author( name="dbrand", url=self.base_url, icon_url="https://dev.zevaryx.com/db_logo.png" ) - await ctx.send(embed=embed) + await ctx.send(embeds=embed) @db.subcommand( sub_cmd_name="contact", @@ -159,7 +159,7 @@ class DbrandCog(Extension): text="dbrand.com", icon_url="https://dev.zevaryx.com/db_logo.png", ) - await ctx.send(embed=embed) + await ctx.send(embeds=embed) elif not data["is_valid"]: embed = build_embed( title="Check Shipping Times", @@ -176,7 +176,7 @@ class DbrandCog(Extension): text="dbrand.com", icon_url="https://dev.zevaryx.com/db_logo.png", ) - await ctx.send(embed=embed) + await ctx.send(embeds=embed) elif not data["shipping_available"]: embed = build_embed( title="Shipping to {}".format(data["country"]), @@ -194,7 +194,7 @@ class DbrandCog(Extension): text="dbrand.com", icon_url="https://dev.zevaryx.com/db_logo.png", ) - await ctx.send(embed=embed) + await ctx.send(embeds=embed) def setup(bot: Client) -> None: diff --git a/jarvis/cogs/dev.py b/jarvis/cogs/dev.py index e5b173a..7675d7a 100644 --- a/jarvis/cogs/dev.py +++ b/jarvis/cogs/dev.py @@ -113,7 +113,7 @@ class DevCog(Extension): ] embed = build_embed(title=title, description=description, fields=fields) - await ctx.send(embed=embed) + await ctx.send(embeds=embed) @slash_command(name="uuid", description="Generate a UUID") @slash_option( @@ -229,7 +229,7 @@ class DevCog(Extension): EmbedField(name=mstr, value=f"`{encoded}`", inline=False), ] embed = build_embed(title="Decoded Data", description="", fields=fields) - await ctx.send(embed=embed) + await ctx.send(embeds=embed) @slash_command(name="decode", description="Decode some data") @slash_option( @@ -264,7 +264,7 @@ class DevCog(Extension): EmbedField(name=mstr, value=f"`{decoded}`", inline=False), ] embed = build_embed(title="Decoded Data", description="", fields=fields) - await ctx.send(embed=embed) + await ctx.send(embeds=embed) @slash_command(name="cloc", description="Get JARVIS lines of code") @cooldown(bucket=Buckets.CHANNEL, rate=1, interval=30) diff --git a/jarvis/cogs/gl.py b/jarvis/cogs/gl.py index 5539383..1b97585 100644 --- a/jarvis/cogs/gl.py +++ b/jarvis/cogs/gl.py @@ -104,7 +104,7 @@ class GitlabCog(Extension): embed.set_thumbnail( url="https://about.gitlab.com/images/press/logo/png/gitlab-icon-rgb.png" ) - await ctx.send(embed=embed) + await ctx.send(embeds=embed) @gl.subcommand( sub_cmd_name="milestone", @@ -158,7 +158,7 @@ class GitlabCog(Extension): embed.set_thumbnail( url="https://about.gitlab.com/images/press/logo/png/gitlab-icon-rgb.png" ) - await ctx.send(embed=embed) + await ctx.send(embeds=embed) @gl.subcommand( sub_cmd_name="mr", @@ -235,7 +235,7 @@ class GitlabCog(Extension): embed.set_thumbnail( url="https://about.gitlab.com/images/press/logo/png/gitlab-icon-rgb.png" ) - await ctx.send(embed=embed) + await ctx.send(embeds=embed) def build_embed_page(self, api_list: list, t_state: str, name: str) -> Embed: """Build an embed page for the paginator.""" @@ -462,7 +462,7 @@ class GitlabCog(Extension): fields=[], color="#00FFEE", ) - await resp.send(embed=embed) + await resp.send(embeds=embed) def setup(bot: Client) -> None: diff --git a/jarvis/cogs/image.py b/jarvis/cogs/image.py index 9a9ef4b..10d9b01 100644 --- a/jarvis/cogs/image.py +++ b/jarvis/cogs/image.py @@ -148,7 +148,7 @@ class ImageCog(Extension): embed = build_embed(title=filename, description="", fields=fields) embed.set_image(url="attachment://resized.png") await ctx.send( - embed=embed, + embeds=embed, file=File(file=bufio, file_name="resized.png"), ) diff --git a/jarvis/cogs/reddit.py b/jarvis/cogs/reddit.py index b69b4c1..9ecdf87 100644 --- a/jarvis/cogs/reddit.py +++ b/jarvis/cogs/reddit.py @@ -1,6 +1,7 @@ """JARVIS Reddit cog.""" import asyncio import logging +import re from typing import List, Optional from asyncpraw import Reddit @@ -28,6 +29,7 @@ from jarvis.utils import build_embed from jarvis.utils.permissions import admin_or_permissions DEFAULT_USER_AGENT = f"python:JARVIS:{const.__version__} (by u/zevaryx)" +sub_name = re.compile(r"\A[A-Za-z0-9][A-Za-z0-9_]{2,20}\Z") class RedditCog(Extension): @@ -135,8 +137,7 @@ class RedditCog(Extension): ) @check(admin_or_permissions(Permissions.MANAGE_GUILD)) async def _reddit_follow(self, ctx: InteractionContext, name: str, channel: GuildText) -> None: - name = name.replace("r/", "") - if len(name) > 20 or len(name) < 3: + if not sub_name.match(name): await ctx.send("Invalid Subreddit name", ephemeral=True) return @@ -248,12 +249,11 @@ class RedditCog(Extension): name="name", description="Subreddit name", opt_type=OptionTypes.STRING, required=True ) async def _subreddit_hot(self, ctx: InteractionContext, name: str) -> None: - await ctx.defer() - name = name.replace("r/", "") - if len(name) > 20 or len(name) < 3: + if not sub_name.match(name): await ctx.send("Invalid Subreddit name", ephemeral=True) return try: + await ctx.defer() subreddit = await self.api.subreddit(name) await subreddit.load() except (NotFound, Forbidden, Redirect) as e: @@ -300,12 +300,11 @@ class RedditCog(Extension): ], ) async def _subreddit_top(self, ctx: InteractionContext, name: str, time: str = "all") -> None: - await ctx.defer() - name = name.replace("r/", "") - if len(name) > 20 or len(name) < 3: + if not sub_name.match(name): await ctx.send("Invalid Subreddit name", ephemeral=True) return try: + await ctx.defer() subreddit = await self.api.subreddit(name) await subreddit.load() except (NotFound, Forbidden, Redirect) as e: @@ -340,12 +339,11 @@ class RedditCog(Extension): name="name", description="Subreddit name", opt_type=OptionTypes.STRING, required=True ) async def _subreddit_random(self, ctx: InteractionContext, name: str) -> None: - await ctx.defer() - name = name.replace("r/", "") - if len(name) > 20 or len(name) < 3: + if not sub_name.match(name): await ctx.send("Invalid Subreddit name", ephemeral=True) return try: + await ctx.defer() subreddit = await self.api.subreddit(name) await subreddit.load() except (NotFound, Forbidden, Redirect) as e: @@ -380,12 +378,11 @@ class RedditCog(Extension): name="name", description="Subreddit name", opt_type=OptionTypes.STRING, required=True ) async def _subreddit_rising(self, ctx: InteractionContext, name: str) -> None: - await ctx.defer() - name = name.replace("r/", "") - if len(name) > 20 or len(name) < 3: + if not sub_name.match(name): await ctx.send("Invalid Subreddit name", ephemeral=True) return try: + await ctx.defer() subreddit = await self.api.subreddit(name) await subreddit.load() except (NotFound, Forbidden, Redirect) as e: diff --git a/jarvis/cogs/remindme.py b/jarvis/cogs/remindme.py index 7ade813..9030a90 100644 --- a/jarvis/cogs/remindme.py +++ b/jarvis/cogs/remindme.py @@ -166,7 +166,7 @@ class RemindmeCog(Extension): ) embed.set_thumbnail(url=ctx.author.display_avatar.url) - await response.send(embed=embed, ephemeral=private) + await response.send(embeds=embed, ephemeral=private) async def get_reminders_embed( self, ctx: InteractionContext, reminders: List[Reminder] @@ -216,7 +216,7 @@ class RemindmeCog(Extension): embed = await self.get_reminders_embed(ctx, reminders) - await ctx.send(embed=embed) + await ctx.send(embeds=embed) @reminders.subcommand(sub_cmd_name="delete", sub_cmd_description="Delete a reminder") async def _delete(self, ctx: InteractionContext) -> None: @@ -246,7 +246,7 @@ class RemindmeCog(Extension): embed = await self.get_reminders_embed(ctx, reminders) message = await ctx.send( content=f"You have {len(reminders)} reminder(s) set:", - embed=embed, + embeds=embed, components=components, ) @@ -300,7 +300,7 @@ class RemindmeCog(Extension): await context.context.edit_origin( content=f"Deleted {len(context.context.values)} reminder(s)", components=components, - embed=embed, + embeds=embed, ) except asyncio.TimeoutError: for row in components: @@ -328,7 +328,7 @@ class RemindmeCog(Extension): ) embed.set_thumbnail(url=ctx.author.display_avatar) - await ctx.send(embed=embed, ephemeral=reminder.private) + await ctx.send(embeds=embed, ephemeral=reminder.private) if reminder.remind_at <= datetime.now(tz=timezone.utc) and not reminder.active: try: await reminder.delete() diff --git a/jarvis/cogs/rolegiver.py b/jarvis/cogs/rolegiver.py index ce61baf..cf818ed 100644 --- a/jarvis/cogs/rolegiver.py +++ b/jarvis/cogs/rolegiver.py @@ -93,7 +93,7 @@ class RolegiverCog(Extension): embed.set_footer(text=f"{ctx.author.username}#{ctx.author.discriminator} | {ctx.author.id}") - await ctx.send(embed=embed) + await ctx.send(embeds=embed) @rolegiver.subcommand(sub_cmd_name="remove", sub_cmd_description="Remove a role from rolegiver") @check(admin_or_permissions(Permissions.MANAGE_GUILD)) @@ -169,7 +169,7 @@ class RolegiverCog(Extension): await context.context.edit_origin( content=f"Removed {len(context.context.values)} role(s)", - embed=embed, + embeds=embed, components=components, ) except asyncio.TimeoutError: @@ -211,7 +211,7 @@ class RolegiverCog(Extension): embed.set_footer(text=f"{ctx.author.username}#{ctx.author.discriminator} | {ctx.author.id}") - await ctx.send(embed=embed) + await ctx.send(embeds=embed) role = SlashCommand(name="role", description="Get/Remove Rolegiver roles") @@ -284,7 +284,7 @@ class RolegiverCog(Extension): for component in row.components: component.disabled = True - await context.context.edit_origin(embed=embed, content="\u200b", components=components) + await context.context.edit_origin(embeds=embed, content="\u200b", components=components) except asyncio.TimeoutError: for row in components: for component in row.components: @@ -362,7 +362,7 @@ class RolegiverCog(Extension): for component in row.components: component.disabled = True - await context.context.edit_origin(embed=embed, components=components, content="\u200b") + await context.context.edit_origin(embeds=embed, components=components, content="\u200b") except asyncio.TimeoutError: for row in components: diff --git a/jarvis/cogs/settings.py b/jarvis/cogs/settings.py index 93eeb79..7595cfc 100644 --- a/jarvis/cogs/settings.py +++ b/jarvis/cogs/settings.py @@ -246,7 +246,7 @@ class SettingsCog(Extension): embed = build_embed(title="Current Settings", description="", fields=fields) - await ctx.send(embed=embed) + await ctx.send(embeds=embed) @settings.subcommand(sub_cmd_name="clear", sub_cmd_description="Clear all settings") @check(admin_or_permissions(Permissions.MANAGE_GUILD)) diff --git a/jarvis/cogs/starboard.py b/jarvis/cogs/starboard.py index b326a51..dc2aaad 100644 --- a/jarvis/cogs/starboard.py +++ b/jarvis/cogs/starboard.py @@ -218,7 +218,7 @@ class StarboardCog(Extension): if image_url: embed.set_image(url=image_url) - star = await starboard.send(embed=embed) + star = await starboard.send(embeds=embed) await Star( index=count, diff --git a/jarvis/cogs/temprole.py b/jarvis/cogs/temprole.py index 48bf8f1..d2a89a3 100644 --- a/jarvis/cogs/temprole.py +++ b/jarvis/cogs/temprole.py @@ -118,7 +118,7 @@ class TemproleCog(Extension): name=f"{user.username}#{user.discriminator}", icon_url=user.display_avatar.url ) - await ctx.send(embed=embed) + await ctx.send(embeds=embed) def setup(bot: Client) -> None: diff --git a/jarvis/cogs/util.py b/jarvis/cogs/util.py index aeae54d..d38ac79 100644 --- a/jarvis/cogs/util.py +++ b/jarvis/cogs/util.py @@ -67,7 +67,7 @@ class UtilCog(Extension): ) ) embed = build_embed(title=title, description=desc, fields=fields, color=color) - await ctx.send(embed=embed) + await ctx.send(embeds=embed) @slash_command( name="logo", @@ -132,7 +132,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) - await ctx.send(embed=embed) + await ctx.send(embeds=embed) @slash_command( name="roleinfo", @@ -180,7 +180,7 @@ class UtilCog(Extension): image_bytes.seek(0) color_show = File(image_bytes, file_name="color_show.png") - await ctx.send(embed=embed, file=color_show) + await ctx.send(embeds=embed, file=color_show) async def _userinfo(self, ctx: InteractionContext, user: User = None) -> None: await ctx.defer() @@ -222,7 +222,7 @@ class UtilCog(Extension): embed.set_thumbnail(url=user.display_avatar.url) embed.set_footer(text=f"ID: {user.id}") - await ctx.send(embed=embed) + await ctx.send(embeds=embed) @slash_command( name="userinfo", @@ -277,7 +277,7 @@ class UtilCog(Extension): embed.set_thumbnail(url=guild.icon.url) embed.set_footer(text=f"ID: {guild.id} | Server Created") - await ctx.send(embed=embed) + await ctx.send(embeds=embed) @slash_command( name="pw", @@ -372,7 +372,7 @@ class UtilCog(Extension): EmbedField(name="ISO8601", value=timestamp.isoformat()), ] embed = build_embed(title="Converted Time", description=f"`{string}`", fields=fields) - await ctx.send(embed=embed, ephemeral=private) + await ctx.send(embeds=embed, ephemeral=private) @slash_command(name="support", description="Got issues?") async def _support(self, ctx: InteractionContext) -> None: diff --git a/jarvis/utils/__init__.py b/jarvis/utils/__init__.py index 2bece3a..6352d00 100644 --- a/jarvis/utils/__init__.py +++ b/jarvis/utils/__init__.py @@ -36,9 +36,10 @@ def build_embed( def modlog_embed( member: Member, admin: Member, - log: AuditLogEntry, title: str, desc: str, + log: AuditLogEntry = None, + reason: str = None, ) -> Embed: """Get modlog embed.""" fields = [ @@ -47,8 +48,9 @@ def modlog_embed( value=f"{admin.mention} ({admin.username}#{admin.discriminator})", ), ] - if log.reason: - fields.append(EmbedField(name="Reason", value=log.reason, inline=False)) + if log and log.reason: + reason = reason or log.reason + fields.append(EmbedField(name="Reason", value=reason, inline=False)) embed = build_embed( title=title, description=desc, diff --git a/jarvis/utils/cogs.py b/jarvis/utils/cogs.py index 3794b1e..1dc30c8 100644 --- a/jarvis/utils/cogs.py +++ b/jarvis/utils/cogs.py @@ -7,11 +7,18 @@ from jarvis_core.db.models import Action, Ban, Kick, Modlog, Mute, Setting, Warn from naff import Client, Extension, InteractionContext from naff.models.discord.components import ActionRow, Button, ButtonStyles from naff.models.discord.embed import EmbedField +from naff.models.discord.user import Member from jarvis.utils import build_embed MODLOG_LOOKUP = {"Ban": Ban, "Kick": Kick, "Mute": Mute, "Warning": Warning} -IGNORE_COMMANDS = {"Ban": ["bans"], "Kick": [], "Mute": ["unmute"], "Warning": ["warnings"]} +IGNORE_COMMANDS = { + "Ban": ["bans", "unban"], + "Kick": [], + "Mute": ["unmute"], + "Warning": ["warnings"], +} +VERB_LOOKUP = {"Ban": "banned", "Kick": "kicked", "Mute": "muted", "Warning": "warned"} class ModcaseCog(Extension): @@ -36,6 +43,12 @@ class ModcaseCog(Extension): if not user and not ctx.target_id: self.logger.warning("Admin action %s missing user, exiting", name) return + + if isinstance(user, str): + user = await self.bot.fetch_user(user) + if not user: + self.logger.warning("User does not exist") + return if ctx.target_id: user = ctx.target coll = MODLOG_LOOKUP.get(name, None) @@ -67,7 +80,7 @@ class ModcaseCog(Extension): embed.set_author(name=ctx.guild.name, icon_url=ctx.guild.icon.url, url=guild_url) embed.set_thumbnail(url=ctx.guild.icon.url) try: - await user.send(embed=embed) + await user.send(embeds=embed) except Exception: self.logger.debug("User not warned of action due to closed DMs") @@ -78,6 +91,30 @@ class ModcaseCog(Extension): await modlog.commit() return + modlog = await Setting.find_one(q(guild=ctx.guild.id, setting="modlog")) + if not modlog: + return + + channel = await ctx.guild.fetch_channel(modlog.value) + if channel: + fields = ( + EmbedField(name="Action Type", value=name, inline=False), + EmbedField( + name="Reason", value=kwargs.get("reason", None) or "N/A", inline=False + ), + EmbedField(name="Admin", value=ctx.author.mention, inline=False), + ) + embed = build_embed( + title="Admin action taken", + description=f"Admin action has been taken against {user.mention}", + fields=fields, + ) + embed.set_author( + name=f"{user.username}#{user.discriminator}", icon_url=user.display_avatar.url + ) + embed.set_footer(text=f"User ID: {user.id}") + await channel.send(embeds=embed) + lookup_key = f"{user.id}|{ctx.guild.id}" async with self.bot.redis.lock("lock|" + lookup_key): @@ -85,10 +122,6 @@ class ModcaseCog(Extension): self.logger.debug(f"User {user.id} in {ctx.guild.id} already has pending case") return - modlog = await Setting.find_one(q(guild=ctx.guild.id, setting="modlog")) - if not modlog: - return - channel = await ctx.guild.fetch_channel(modlog.value) if not channel: self.logger.warn( @@ -102,16 +135,17 @@ class ModcaseCog(Extension): description=f"Would you like to open a moderation case for {user.mention}?", fields=[], ) - embed.set_author( - name=user.username + "#" + user.discriminator, icon_url=user.display_avatar.url - ) + avatar_url = user.avatar.url + if isinstance(user, Member): + avatar_url = user.display_avatar.url + 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"), ) ] - message = await channel.send(embed=embed, components=components) + message = await channel.send(embeds=embed, components=components) await self.bot.redis.set( lookup_key, f"{name.lower()}|{action.id}", ex=timedelta(days=7) diff --git a/poetry.lock b/poetry.lock index 59e1b34..394c909 100644 --- a/poetry.lock +++ b/poetry.lock @@ -251,6 +251,17 @@ calendars = ["convertdate", "hijri-converter", "convertdate"] fasttext = ["fasttext"] langdetect = ["langdetect"] +[[package]] +name = "discord-typings" +version = "0.4.0" +description = "Maintained typings of payloads that Discord sends" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +typing_extensions = ">=4,<5" + [[package]] name = "distro" version = "1.7.0" @@ -307,7 +318,7 @@ python-versions = ">=3.5" [[package]] name = "jarvis-core" -version = "0.10.1" +version = "0.10.2" description = "JARVIS core" category = "main" optional = false @@ -328,11 +339,11 @@ umongo = "^3.1.0" type = "git" url = "https://git.zevaryx.com/stark-industries/jarvis/jarvis-core.git" reference = "main" -resolved_reference = "06a6dd8434b42cd4df7ee073eedbe2a3430ab379" +resolved_reference = "7bb9b25f636fbcbea97e0924f2192a1e497258dd" [[package]] name = "jinxed" -version = "1.1.0" +version = "1.2.0" description = "Jinxed Terminal Library" category = "main" optional = false @@ -343,7 +354,7 @@ ansicon = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "jurigged" -version = "0.5.0" +version = "0.5.2" description = "Live update of Python functions" category = "main" optional = false @@ -353,26 +364,26 @@ python-versions = ">=3.8,<4.0" blessed = ">=1.17.12,<2.0.0" codefind = ">=0.1.3,<0.2.0" ovld = ">=0.3.1,<0.4.0" -watchdog = ">=1.0.2,<2.0.0" +watchdog = ">=1.0.2" [package.extras] develoop = ["giving (>=0.3.6,<0.4.0)", "rich (>=10.13.0,<11.0.0)", "hrepr (>=0.4.0,<0.5.0)"] [[package]] name = "marshmallow" -version = "3.15.0" +version = "3.16.0" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." category = "main" optional = false python-versions = ">=3.7" [package.dependencies] -packaging = "*" +packaging = ">=17.0" [package.extras] -dev = ["pytest", "pytz", "simplejson", "mypy (==0.940)", "flake8 (==4.0.1)", "flake8-bugbear (==22.1.11)", "pre-commit (>=2.4,<3.0)", "tox"] -docs = ["sphinx (==4.4.0)", "sphinx-issues (==3.0.1)", "alabaster (==0.7.12)", "sphinx-version-warning (==1.1.2)", "autodocsumm (==0.2.7)"] -lint = ["mypy (==0.940)", "flake8 (==4.0.1)", "flake8-bugbear (==22.1.11)", "pre-commit (>=2.4,<3.0)"] +dev = ["pytest", "pytz", "simplejson", "mypy (==0.960)", "flake8 (==4.0.1)", "flake8-bugbear (==22.4.25)", "pre-commit (>=2.4,<3.0)", "tox"] +docs = ["sphinx (==4.5.0)", "sphinx-issues (==3.0.1)", "alabaster (==0.7.12)", "sphinx-version-warning (==1.1.2)", "autodocsumm (==0.2.8)"] +lint = ["mypy (==0.960)", "flake8 (==4.0.1)", "flake8-bugbear (==22.4.25)", "pre-commit (>=2.4,<3.0)"] tests = ["pytest", "pytz", "simplejson"] [[package]] @@ -408,6 +419,25 @@ category = "main" optional = false python-versions = ">=3.7" +[[package]] +name = "naff" +version = "1.0.0" +description = "Not another freaking fork" +category = "main" +optional = false +python-versions = ">=3.10" + +[package.dependencies] +aiohttp = "*" +attrs = "*" +discord-typings = "*" +tomli = "*" + +[package.extras] +all = ["PyNaCl (>=1.5.0,<1.6)", "cchardet", "aiodns", "orjson", "brotli"] +speedup = ["cchardet", "aiodns", "orjson", "brotli"] +voice = ["PyNaCl (>=1.5.0,<1.6)"] + [[package]] name = "nanoid" version = "2.0.0" @@ -418,7 +448,7 @@ python-versions = "*" [[package]] name = "numpy" -version = "1.22.3" +version = "1.22.4" description = "NumPy is the fundamental package for array computing with Python." category = "main" optional = false @@ -492,11 +522,11 @@ python-versions = ">=3.10" aiohttp = {version = "3.8.1", markers = "python_version >= \"3.6\""} aiosignal = {version = "1.2.0", markers = "python_version >= \"3.6\""} async-timeout = {version = "4.0.2", markers = "python_version >= \"3.6\""} -attrs = {version = "21.4.0", markers = "python_version >= \"3.6\" and python_full_version < \"3.0.0\" or python_full_version >= \"3.5.0\" and python_version >= \"3.6\""} +attrs = {version = "21.4.0", markers = "python_version >= \"3.6\""} certifi = {version = "2021.10.8", markers = "python_version >= \"2.7\" and python_full_version < \"3.0.0\" or python_full_version >= \"3.6.0\""} -charset-normalizer = {version = "2.0.12", markers = "python_full_version >= \"3.6.0\" and python_version >= \"3.6\""} +charset-normalizer = {version = "2.0.12", markers = "python_full_version >= \"3.6.0\""} frozenlist = {version = "1.3.0", markers = "python_version >= \"3.7\""} -idna = {version = "3.3", markers = "python_version >= \"3.6\" and python_full_version < \"3.0.0\" or python_full_version >= \"3.6.0\" and python_version >= \"3.6\""} +idna = {version = "3.3", markers = "python_full_version >= \"3.6.0\""} multidict = {version = "6.0.2", markers = "python_version >= \"3.7\""} pycryptodome = {version = "3.14.1", markers = "python_version >= \"2.7\" and python_full_version < \"3.0.0\" or python_full_version >= \"3.5.0\""} requests = {version = "2.27.1", markers = "python_version >= \"2.7\" and python_full_version < \"3.0.0\" or python_full_version >= \"3.6.0\""} @@ -505,7 +535,7 @@ yarl = {version = "1.7.2", markers = "python_version >= \"3.6\""} [[package]] name = "pillow" -version = "9.1.0" +version = "9.1.1" description = "Python Imaging Library (Fork)" category = "main" optional = false @@ -525,14 +555,14 @@ python-versions = ">=3.7" [[package]] name = "psutil" -version = "5.9.0" +version = "5.9.1" description = "Cross-platform lib for process and system monitoring in Python." category = "main" optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [package.extras] -test = ["ipaddress", "mock", "unittest2", "enum34", "pywin32", "wmi"] +test = ["ipaddress", "mock", "enum34", "pywin32", "wmi"] [[package]] name = "pycryptodome" @@ -570,7 +600,7 @@ zstd = ["zstandard"] [[package]] name = "pyparsing" -version = "3.0.8" +version = "3.0.9" description = "pyparsing module - Classes and methods to define and execute parsing grammars" category = "main" optional = false @@ -592,7 +622,7 @@ six = ">=1.5" [[package]] name = "python-gitlab" -version = "3.4.0" +version = "3.5.0" description = "Interact with GitLab API" category = "main" optional = false @@ -687,7 +717,7 @@ requests = ">=2.0.1,<3.0.0" [[package]] name = "rich" -version = "12.3.0" +version = "12.4.4" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" category = "main" optional = false @@ -702,7 +732,7 @@ jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"] [[package]] name = "rook" -version = "0.1.171" +version = "0.1.175" description = "Rook is a Python package for on the fly debugging and data extraction for application in production" category = "main" optional = false @@ -736,9 +766,17 @@ category = "main" optional = false python-versions = ">=3.6" +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +category = "main" +optional = false +python-versions = ">=3.7" + [[package]] name = "tweepy" -version = "4.8.0" +version = "4.10.0" description = "Twitter library for Python" category = "main" optional = false @@ -750,8 +788,8 @@ requests = ">=2.27.0,<3" requests-oauthlib = ">=1.2.0,<2" [package.extras] -async = ["aiohttp (>=3.7.3,<4)"] -dev = ["coveralls (>=2.1.0)", "tox (>=3.14.0)"] +async = ["aiohttp (>=3.7.3,<4)", "async-lru (>=1.0.3,<2)"] +dev = ["coverage (>=4.4.2)", "coveralls (>=2.1.0)", "tox (>=3.21.0)"] socks = ["requests[socks] (>=2.27.0,<3)"] test = ["vcrpy (>=1.10.3)"] @@ -843,14 +881,14 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "watchdog" -version = "1.0.2" +version = "2.1.8" description = "Filesystem events monitoring" category = "main" optional = false python-versions = ">=3.6" [package.extras] -watchmedo = ["PyYAML (>=3.10)", "argh (>=0.24.1)"] +watchmedo = ["PyYAML (>=3.10)"] [[package]] name = "wcwidth" @@ -888,7 +926,7 @@ multidict = ">=4.0" [metadata] lock-version = "1.1" python-versions = "^3.10" -content-hash = "8bb2b59de1ccb8f5e5588ae3ac600e7fb6d7f638224c9cc24228f79e666aec63" +content-hash = "b59817a834a97d4cd983be281913fdb695599762a854c13105e91b3ef5a8f21a" [metadata.files] aiofile = [ @@ -1054,6 +1092,10 @@ dateparser = [ {file = "dateparser-1.1.1-py2.py3-none-any.whl", hash = "sha256:9600874312ff28a41f96ec7ccdc73be1d1c44435719da47fea3339d55ff5a628"}, {file = "dateparser-1.1.1.tar.gz", hash = "sha256:038196b1f12c7397e38aad3d61588833257f6f552baa63a1499e6987fa8d42d9"}, ] +discord-typings = [ + {file = "discord-typings-0.4.0.tar.gz", hash = "sha256:66bce666194e8f006914f788f940265c009cce9b63f9a8ce2bc7931d3d3ef11c"}, + {file = "discord_typings-0.4.0-py3-none-any.whl", hash = "sha256:a390b614cbcbd82af083660c12e46536b4b790ac026f8d43bdd11c8953837ca0"}, +] distro = [ {file = "distro-1.7.0-py3-none-any.whl", hash = "sha256:d596311d707e692c2160c37807f83e3820c5d539d5a83e87cfb6babd8ba3a06b"}, {file = "distro-1.7.0.tar.gz", hash = "sha256:151aeccf60c216402932b52e40ee477a939f8d58898927378a02abbe852c1c39"}, @@ -1137,16 +1179,16 @@ idna = [ ] jarvis-core = [] jinxed = [ - {file = "jinxed-1.1.0-py2.py3-none-any.whl", hash = "sha256:6a61ccf963c16aa885304f27e6e5693783676897cea0c7f223270c8b8e78baf8"}, - {file = "jinxed-1.1.0.tar.gz", hash = "sha256:d8f1731f134e9e6b04d95095845ae6c10eb15cb223a5f0cabdea87d4a279c305"}, + {file = "jinxed-1.2.0-py2.py3-none-any.whl", hash = "sha256:cfc2b2e4e3b4326954d546ba6d6b9a7a796ddcb0aef8d03161d005177eb0d48b"}, + {file = "jinxed-1.2.0.tar.gz", hash = "sha256:032acda92d5c57cd216033cbbd53de731e6ed50deb63eb4781336ca55f72cda5"}, ] jurigged = [ - {file = "jurigged-0.5.0-py3-none-any.whl", hash = "sha256:28d86ca6d97669bc183773f7537e59f50fdd36e7637092fc2451b91bcc935d62"}, - {file = "jurigged-0.5.0.tar.gz", hash = "sha256:f23c3536b1654d2618d6e6b34f0752acf377c1b35283889d3a28663a7b1f72cb"}, + {file = "jurigged-0.5.2-py3-none-any.whl", hash = "sha256:410ff6199c659108dace9179507342883fe2fffec1966fd19709f9d59fd69e24"}, + {file = "jurigged-0.5.2.tar.gz", hash = "sha256:de1d4daeb99c0299eaa86f691d35cb1eab3bfa836cfe9a3551a56f3829479e3b"}, ] marshmallow = [ - {file = "marshmallow-3.15.0-py3-none-any.whl", hash = "sha256:ff79885ed43b579782f48c251d262e062bce49c65c52412458769a4fb57ac30f"}, - {file = "marshmallow-3.15.0.tar.gz", hash = "sha256:2aaaab4f01ef4f5a011a21319af9fce17ab13bf28a026d1252adab0e035648d5"}, + {file = "marshmallow-3.16.0-py3-none-any.whl", hash = "sha256:53a1e0ee69f79e1f3e80d17393b25cfc917eda52f859e8183b4af72c3390c1f1"}, + {file = "marshmallow-3.16.0.tar.gz", hash = "sha256:a762c1d8b2bcb0e5c8e964850d03f9f3bffd6a12b626f3c14b9d6b1841999af5"}, ] mongoengine = [ {file = "mongoengine-0.23.1-py3-none-any.whl", hash = "sha256:3d1c8b9f5d43144bd726a3f01e58d2831c6fb112960a4a60b3a26fa85e026ab3"}, @@ -1217,31 +1259,37 @@ multidict = [ {file = "multidict-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:4bae31803d708f6f15fd98be6a6ac0b6958fcf68fda3c77a048a4f9073704aae"}, {file = "multidict-6.0.2.tar.gz", hash = "sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013"}, ] +naff = [ + {file = "naff-1.0.0-py3-none-any.whl", hash = "sha256:9a46e127c9d2f3bb882ea0d7f8ac5b18c3798f303218eda4d64a1824bcdf3d6f"}, + {file = "naff-1.0.0.tar.gz", hash = "sha256:c7c96ad9fef9f59278db837c13c3e104eb4eaa436ef97bfb193c54db6efa52cc"}, +] nanoid = [ {file = "nanoid-2.0.0-py3-none-any.whl", hash = "sha256:90aefa650e328cffb0893bbd4c236cfd44c48bc1f2d0b525ecc53c3187b653bb"}, {file = "nanoid-2.0.0.tar.gz", hash = "sha256:5a80cad5e9c6e9ae3a41fa2fb34ae189f7cb420b2a5d8f82bd9d23466e4efa68"}, ] numpy = [ - {file = "numpy-1.22.3-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:92bfa69cfbdf7dfc3040978ad09a48091143cffb778ec3b03fa170c494118d75"}, - {file = "numpy-1.22.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8251ed96f38b47b4295b1ae51631de7ffa8260b5b087808ef09a39a9d66c97ab"}, - {file = "numpy-1.22.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48a3aecd3b997bf452a2dedb11f4e79bc5bfd21a1d4cc760e703c31d57c84b3e"}, - {file = "numpy-1.22.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3bae1a2ed00e90b3ba5f7bd0a7c7999b55d609e0c54ceb2b076a25e345fa9f4"}, - {file = "numpy-1.22.3-cp310-cp310-win32.whl", hash = "sha256:f950f8845b480cffe522913d35567e29dd381b0dc7e4ce6a4a9f9156417d2430"}, - {file = "numpy-1.22.3-cp310-cp310-win_amd64.whl", hash = "sha256:08d9b008d0156c70dc392bb3ab3abb6e7a711383c3247b410b39962263576cd4"}, - {file = "numpy-1.22.3-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:201b4d0552831f7250a08d3b38de0d989d6f6e4658b709a02a73c524ccc6ffce"}, - {file = "numpy-1.22.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f8c1f39caad2c896bc0018f699882b345b2a63708008be29b1f355ebf6f933fe"}, - {file = "numpy-1.22.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:568dfd16224abddafb1cbcce2ff14f522abe037268514dd7e42c6776a1c3f8e5"}, - {file = "numpy-1.22.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ca688e1b9b95d80250bca34b11a05e389b1420d00e87a0d12dc45f131f704a1"}, - {file = "numpy-1.22.3-cp38-cp38-win32.whl", hash = "sha256:e7927a589df200c5e23c57970bafbd0cd322459aa7b1ff73b7c2e84d6e3eae62"}, - {file = "numpy-1.22.3-cp38-cp38-win_amd64.whl", hash = "sha256:07a8c89a04997625236c5ecb7afe35a02af3896c8aa01890a849913a2309c676"}, - {file = "numpy-1.22.3-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:2c10a93606e0b4b95c9b04b77dc349b398fdfbda382d2a39ba5a822f669a0123"}, - {file = "numpy-1.22.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fade0d4f4d292b6f39951b6836d7a3c7ef5b2347f3c420cd9820a1d90d794802"}, - {file = "numpy-1.22.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bfb1bb598e8229c2d5d48db1860bcf4311337864ea3efdbe1171fb0c5da515d"}, - {file = "numpy-1.22.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97098b95aa4e418529099c26558eeb8486e66bd1e53a6b606d684d0c3616b168"}, - {file = "numpy-1.22.3-cp39-cp39-win32.whl", hash = "sha256:fdf3c08bce27132395d3c3ba1503cac12e17282358cb4bddc25cc46b0aca07aa"}, - {file = "numpy-1.22.3-cp39-cp39-win_amd64.whl", hash = "sha256:639b54cdf6aa4f82fe37ebf70401bbb74b8508fddcf4797f9fe59615b8c5813a"}, - {file = "numpy-1.22.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c34ea7e9d13a70bf2ab64a2532fe149a9aced424cd05a2c4ba662fd989e3e45f"}, - {file = "numpy-1.22.3.zip", hash = "sha256:dbc7601a3b7472d559dc7b933b18b4b66f9aa7452c120e87dfb33d02008c8a18"}, + {file = "numpy-1.22.4-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:ba9ead61dfb5d971d77b6c131a9dbee62294a932bf6a356e48c75ae684e635b3"}, + {file = "numpy-1.22.4-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:1ce7ab2053e36c0a71e7a13a7475bd3b1f54750b4b433adc96313e127b870887"}, + {file = "numpy-1.22.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7228ad13744f63575b3a972d7ee4fd61815b2879998e70930d4ccf9ec721dce0"}, + {file = "numpy-1.22.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:43a8ca7391b626b4c4fe20aefe79fec683279e31e7c79716863b4b25021e0e74"}, + {file = "numpy-1.22.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a911e317e8c826ea632205e63ed8507e0dc877dcdc49744584dfc363df9ca08c"}, + {file = "numpy-1.22.4-cp310-cp310-win32.whl", hash = "sha256:9ce7df0abeabe7fbd8ccbf343dc0db72f68549856b863ae3dd580255d009648e"}, + {file = "numpy-1.22.4-cp310-cp310-win_amd64.whl", hash = "sha256:3e1ffa4748168e1cc8d3cde93f006fe92b5421396221a02f2274aab6ac83b077"}, + {file = "numpy-1.22.4-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:59d55e634968b8f77d3fd674a3cf0b96e85147cd6556ec64ade018f27e9479e1"}, + {file = "numpy-1.22.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c1d937820db6e43bec43e8d016b9b3165dcb42892ea9f106c70fb13d430ffe72"}, + {file = "numpy-1.22.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4c5d5eb2ec8da0b4f50c9a843393971f31f1d60be87e0fb0917a49133d257d6"}, + {file = "numpy-1.22.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64f56fc53a2d18b1924abd15745e30d82a5782b2cab3429aceecc6875bd5add0"}, + {file = "numpy-1.22.4-cp38-cp38-win32.whl", hash = "sha256:fb7a980c81dd932381f8228a426df8aeb70d59bbcda2af075b627bbc50207cba"}, + {file = "numpy-1.22.4-cp38-cp38-win_amd64.whl", hash = "sha256:e96d7f3096a36c8754207ab89d4b3282ba7b49ea140e4973591852c77d09eb76"}, + {file = "numpy-1.22.4-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:4c6036521f11a731ce0648f10c18ae66d7143865f19f7299943c985cdc95afb5"}, + {file = "numpy-1.22.4-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:b89bf9b94b3d624e7bb480344e91f68c1c6c75f026ed6755955117de00917a7c"}, + {file = "numpy-1.22.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2d487e06ecbf1dc2f18e7efce82ded4f705f4bd0cd02677ffccfb39e5c284c7e"}, + {file = "numpy-1.22.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3eb268dbd5cfaffd9448113539e44e2dd1c5ca9ce25576f7c04a5453edc26fa"}, + {file = "numpy-1.22.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37431a77ceb9307c28382c9773da9f306435135fae6b80b62a11c53cfedd8802"}, + {file = "numpy-1.22.4-cp39-cp39-win32.whl", hash = "sha256:cc7f00008eb7d3f2489fca6f334ec19ca63e31371be28fd5dad955b16ec285bd"}, + {file = "numpy-1.22.4-cp39-cp39-win_amd64.whl", hash = "sha256:f0725df166cf4785c0bc4cbfb320203182b1ecd30fee6e541c8752a92df6aa32"}, + {file = "numpy-1.22.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0791fbd1e43bf74b3502133207e378901272f3c156c4df4954cad833b1380207"}, + {file = "numpy-1.22.4.zip", hash = "sha256:425b390e4619f58d8526b3dcf656dde069133ae5c240229821f01b5f44ea07af"}, ] oauthlib = [ {file = "oauthlib-3.2.0-py3-none-any.whl", hash = "sha256:6db33440354787f9b7f3a6dbd4febf5d0f93758354060e802f6c06cb493022fe"}, @@ -1303,44 +1351,44 @@ pastypy = [ {file = "pastypy-1.0.2.tar.gz", hash = "sha256:81e0c4a65ec40c85d62685627b64d26397304ac91d68ddc80f833974504c13b8"}, ] pillow = [ - {file = "Pillow-9.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:af79d3fde1fc2e33561166d62e3b63f0cc3e47b5a3a2e5fea40d4917754734ea"}, - {file = "Pillow-9.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:55dd1cf09a1fd7c7b78425967aacae9b0d70125f7d3ab973fadc7b5abc3de652"}, - {file = "Pillow-9.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:66822d01e82506a19407d1afc104c3fcea3b81d5eb11485e593ad6b8492f995a"}, - {file = "Pillow-9.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5eaf3b42df2bcda61c53a742ee2c6e63f777d0e085bbc6b2ab7ed57deb13db7"}, - {file = "Pillow-9.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01ce45deec9df310cbbee11104bae1a2a43308dd9c317f99235b6d3080ddd66e"}, - {file = "Pillow-9.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:aea7ce61328e15943d7b9eaca87e81f7c62ff90f669116f857262e9da4057ba3"}, - {file = "Pillow-9.1.0-cp310-cp310-win32.whl", hash = "sha256:7a053bd4d65a3294b153bdd7724dce864a1d548416a5ef61f6d03bf149205160"}, - {file = "Pillow-9.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:97bda660702a856c2c9e12ec26fc6d187631ddfd896ff685814ab21ef0597033"}, - {file = "Pillow-9.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:21dee8466b42912335151d24c1665fcf44dc2ee47e021d233a40c3ca5adae59c"}, - {file = "Pillow-9.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b6d4050b208c8ff886fd3db6690bf04f9a48749d78b41b7a5bf24c236ab0165"}, - {file = "Pillow-9.1.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5cfca31ab4c13552a0f354c87fbd7f162a4fafd25e6b521bba93a57fe6a3700a"}, - {file = "Pillow-9.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed742214068efa95e9844c2d9129e209ed63f61baa4d54dbf4cf8b5e2d30ccf2"}, - {file = "Pillow-9.1.0-cp37-cp37m-win32.whl", hash = "sha256:c9efef876c21788366ea1f50ecb39d5d6f65febe25ad1d4c0b8dff98843ac244"}, - {file = "Pillow-9.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:de344bcf6e2463bb25179d74d6e7989e375f906bcec8cb86edb8b12acbc7dfef"}, - {file = "Pillow-9.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:17869489de2fce6c36690a0c721bd3db176194af5f39249c1ac56d0bb0fcc512"}, - {file = "Pillow-9.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:25023a6209a4d7c42154073144608c9a71d3512b648a2f5d4465182cb93d3477"}, - {file = "Pillow-9.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8782189c796eff29dbb37dd87afa4ad4d40fc90b2742704f94812851b725964b"}, - {file = "Pillow-9.1.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:463acf531f5d0925ca55904fa668bb3461c3ef6bc779e1d6d8a488092bdee378"}, - {file = "Pillow-9.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f42364485bfdab19c1373b5cd62f7c5ab7cc052e19644862ec8f15bb8af289e"}, - {file = "Pillow-9.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3fddcdb619ba04491e8f771636583a7cc5a5051cd193ff1aa1ee8616d2a692c5"}, - {file = "Pillow-9.1.0-cp38-cp38-win32.whl", hash = "sha256:4fe29a070de394e449fd88ebe1624d1e2d7ddeed4c12e0b31624561b58948d9a"}, - {file = "Pillow-9.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:c24f718f9dd73bb2b31a6201e6db5ea4a61fdd1d1c200f43ee585fc6dcd21b34"}, - {file = "Pillow-9.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fb89397013cf302f282f0fc998bb7abf11d49dcff72c8ecb320f76ea6e2c5717"}, - {file = "Pillow-9.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c870193cce4b76713a2b29be5d8327c8ccbe0d4a49bc22968aa1e680930f5581"}, - {file = "Pillow-9.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69e5ddc609230d4408277af135c5b5c8fe7a54b2bdb8ad7c5100b86b3aab04c6"}, - {file = "Pillow-9.1.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35be4a9f65441d9982240e6966c1eaa1c654c4e5e931eaf580130409e31804d4"}, - {file = "Pillow-9.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82283af99c1c3a5ba1da44c67296d5aad19f11c535b551a5ae55328a317ce331"}, - {file = "Pillow-9.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a325ac71914c5c043fa50441b36606e64a10cd262de12f7a179620f579752ff8"}, - {file = "Pillow-9.1.0-cp39-cp39-win32.whl", hash = "sha256:a598d8830f6ef5501002ae85c7dbfcd9c27cc4efc02a1989369303ba85573e58"}, - {file = "Pillow-9.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:0c51cb9edac8a5abd069fd0758ac0a8bfe52c261ee0e330f363548aca6893595"}, - {file = "Pillow-9.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a336a4f74baf67e26f3acc4d61c913e378e931817cd1e2ef4dfb79d3e051b481"}, - {file = "Pillow-9.1.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb1b89b11256b5b6cad5e7593f9061ac4624f7651f7a8eb4dfa37caa1dfaa4d0"}, - {file = "Pillow-9.1.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:255c9d69754a4c90b0ee484967fc8818c7ff8311c6dddcc43a4340e10cd1636a"}, - {file = "Pillow-9.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5a3ecc026ea0e14d0ad7cd990ea7f48bfcb3eb4271034657dc9d06933c6629a7"}, - {file = "Pillow-9.1.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5b0ff59785d93b3437c3703e3c64c178aabada51dea2a7f2c5eccf1bcf565a3"}, - {file = "Pillow-9.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7110ec1701b0bf8df569a7592a196c9d07c764a0a74f65471ea56816f10e2c8"}, - {file = "Pillow-9.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8d79c6f468215d1a8415aa53d9868a6b40c4682165b8cb62a221b1baa47db458"}, - {file = "Pillow-9.1.0.tar.gz", hash = "sha256:f401ed2bbb155e1ade150ccc63db1a4f6c1909d3d378f7d1235a44e90d75fb97"}, + {file = "Pillow-9.1.1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:42dfefbef90eb67c10c45a73a9bc1599d4dac920f7dfcbf4ec6b80cb620757fe"}, + {file = "Pillow-9.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ffde4c6fabb52891d81606411cbfaf77756e3b561b566efd270b3ed3791fde4e"}, + {file = "Pillow-9.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c857532c719fb30fafabd2371ce9b7031812ff3889d75273827633bca0c4602"}, + {file = "Pillow-9.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:59789a7d06c742e9d13b883d5e3569188c16acb02eeed2510fd3bfdbc1bd1530"}, + {file = "Pillow-9.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d45dbe4b21a9679c3e8b3f7f4f42a45a7d3ddff8a4a16109dff0e1da30a35b2"}, + {file = "Pillow-9.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e9ed59d1b6ee837f4515b9584f3d26cf0388b742a11ecdae0d9237a94505d03a"}, + {file = "Pillow-9.1.1-cp310-cp310-win32.whl", hash = "sha256:b3fe2ff1e1715d4475d7e2c3e8dabd7c025f4410f79513b4ff2de3d51ce0fa9c"}, + {file = "Pillow-9.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:5b650dbbc0969a4e226d98a0b440c2f07a850896aed9266b6fedc0f7e7834108"}, + {file = "Pillow-9.1.1-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:0b4d5ad2cd3a1f0d1df882d926b37dbb2ab6c823ae21d041b46910c8f8cd844b"}, + {file = "Pillow-9.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9370d6744d379f2de5d7fa95cdbd3a4d92f0b0ef29609b4b1687f16bc197063d"}, + {file = "Pillow-9.1.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b761727ed7d593e49671d1827044b942dd2f4caae6e51bab144d4accf8244a84"}, + {file = "Pillow-9.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a66fe50386162df2da701b3722781cbe90ce043e7d53c1fd6bd801bca6b48d4"}, + {file = "Pillow-9.1.1-cp37-cp37m-win32.whl", hash = "sha256:2b291cab8a888658d72b575a03e340509b6b050b62db1f5539dd5cd18fd50578"}, + {file = "Pillow-9.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:1d4331aeb12f6b3791911a6da82de72257a99ad99726ed6b63f481c0184b6fb9"}, + {file = "Pillow-9.1.1-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8844217cdf66eabe39567118f229e275f0727e9195635a15e0e4b9227458daaf"}, + {file = "Pillow-9.1.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b6617221ff08fbd3b7a811950b5c3f9367f6e941b86259843eab77c8e3d2b56b"}, + {file = "Pillow-9.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20d514c989fa28e73a5adbddd7a171afa5824710d0ab06d4e1234195d2a2e546"}, + {file = "Pillow-9.1.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:088df396b047477dd1bbc7de6e22f58400dae2f21310d9e2ec2933b2ef7dfa4f"}, + {file = "Pillow-9.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53c27bd452e0f1bc4bfed07ceb235663a1df7c74df08e37fd6b03eb89454946a"}, + {file = "Pillow-9.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3f6c1716c473ebd1649663bf3b42702d0d53e27af8b64642be0dd3598c761fb1"}, + {file = "Pillow-9.1.1-cp38-cp38-win32.whl", hash = "sha256:c67db410508b9de9c4694c57ed754b65a460e4812126e87f5052ecf23a011a54"}, + {file = "Pillow-9.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:f054b020c4d7e9786ae0404278ea318768eb123403b18453e28e47cdb7a0a4bf"}, + {file = "Pillow-9.1.1-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:c17770a62a71718a74b7548098a74cd6880be16bcfff5f937f900ead90ca8e92"}, + {file = "Pillow-9.1.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3f6a6034140e9e17e9abc175fc7a266a6e63652028e157750bd98e804a8ed9a"}, + {file = "Pillow-9.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f372d0f08eff1475ef426344efe42493f71f377ec52237bf153c5713de987251"}, + {file = "Pillow-9.1.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09e67ef6e430f90caa093528bd758b0616f8165e57ed8d8ce014ae32df6a831d"}, + {file = "Pillow-9.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66daa16952d5bf0c9d5389c5e9df562922a59bd16d77e2a276e575d32e38afd1"}, + {file = "Pillow-9.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d78ca526a559fb84faaaf84da2dd4addef5edb109db8b81677c0bb1aad342601"}, + {file = "Pillow-9.1.1-cp39-cp39-win32.whl", hash = "sha256:55e74faf8359ddda43fee01bffbc5bd99d96ea508d8a08c527099e84eb708f45"}, + {file = "Pillow-9.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:7c150dbbb4a94ea4825d1e5f2c5501af7141ea95825fadd7829f9b11c97aaf6c"}, + {file = "Pillow-9.1.1-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:769a7f131a2f43752455cc72f9f7a093c3ff3856bf976c5fb53a59d0ccc704f6"}, + {file = "Pillow-9.1.1-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:488f3383cf5159907d48d32957ac6f9ea85ccdcc296c14eca1a4e396ecc32098"}, + {file = "Pillow-9.1.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b525a356680022b0af53385944026d3486fc8c013638cf9900eb87c866afb4c"}, + {file = "Pillow-9.1.1-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:6e760cf01259a1c0a50f3c845f9cad1af30577fd8b670339b1659c6d0e7a41dd"}, + {file = "Pillow-9.1.1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4165205a13b16a29e1ac57efeee6be2dfd5b5408122d59ef2145bc3239fa340"}, + {file = "Pillow-9.1.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:937a54e5694684f74dcbf6e24cc453bfc5b33940216ddd8f4cd8f0f79167f765"}, + {file = "Pillow-9.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:baf3be0b9446a4083cc0c5bb9f9c964034be5374b5bc09757be89f5d2fa247b8"}, + {file = "Pillow-9.1.1.tar.gz", hash = "sha256:7502539939b53d7565f3d11d87c78e7ec900d3c72945d4ee0e2f250d598309a0"}, ] protobuf = [ {file = "protobuf-3.20.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3cc797c9d15d7689ed507b165cd05913acb992d78b379f6014e013f9ecb20996"}, @@ -1369,38 +1417,38 @@ protobuf = [ {file = "protobuf-3.20.1.tar.gz", hash = "sha256:adc31566d027f45efe3f44eeb5b1f329da43891634d61c75a5944e9be6dd42c9"}, ] psutil = [ - {file = "psutil-5.9.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:55ce319452e3d139e25d6c3f85a1acf12d1607ddedea5e35fb47a552c051161b"}, - {file = "psutil-5.9.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:7336292a13a80eb93c21f36bde4328aa748a04b68c13d01dfddd67fc13fd0618"}, - {file = "psutil-5.9.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:cb8d10461c1ceee0c25a64f2dd54872b70b89c26419e147a05a10b753ad36ec2"}, - {file = "psutil-5.9.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:7641300de73e4909e5d148e90cc3142fb890079e1525a840cf0dfd39195239fd"}, - {file = "psutil-5.9.0-cp27-none-win32.whl", hash = "sha256:ea42d747c5f71b5ccaa6897b216a7dadb9f52c72a0fe2b872ef7d3e1eacf3ba3"}, - {file = "psutil-5.9.0-cp27-none-win_amd64.whl", hash = "sha256:ef216cc9feb60634bda2f341a9559ac594e2eeaadd0ba187a4c2eb5b5d40b91c"}, - {file = "psutil-5.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90a58b9fcae2dbfe4ba852b57bd4a1dded6b990a33d6428c7614b7d48eccb492"}, - {file = "psutil-5.9.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff0d41f8b3e9ebb6b6110057e40019a432e96aae2008951121ba4e56040b84f3"}, - {file = "psutil-5.9.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:742c34fff804f34f62659279ed5c5b723bb0195e9d7bd9907591de9f8f6558e2"}, - {file = "psutil-5.9.0-cp310-cp310-win32.whl", hash = "sha256:8293942e4ce0c5689821f65ce6522ce4786d02af57f13c0195b40e1edb1db61d"}, - {file = "psutil-5.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:9b51917c1af3fa35a3f2dabd7ba96a2a4f19df3dec911da73875e1edaf22a40b"}, - {file = "psutil-5.9.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e9805fed4f2a81de98ae5fe38b75a74c6e6ad2df8a5c479594c7629a1fe35f56"}, - {file = "psutil-5.9.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c51f1af02334e4b516ec221ee26b8fdf105032418ca5a5ab9737e8c87dafe203"}, - {file = "psutil-5.9.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32acf55cb9a8cbfb29167cd005951df81b567099295291bcfd1027365b36591d"}, - {file = "psutil-5.9.0-cp36-cp36m-win32.whl", hash = "sha256:e5c783d0b1ad6ca8a5d3e7b680468c9c926b804be83a3a8e95141b05c39c9f64"}, - {file = "psutil-5.9.0-cp36-cp36m-win_amd64.whl", hash = "sha256:d62a2796e08dd024b8179bd441cb714e0f81226c352c802fca0fd3f89eeacd94"}, - {file = "psutil-5.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3d00a664e31921009a84367266b35ba0aac04a2a6cad09c550a89041034d19a0"}, - {file = "psutil-5.9.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7779be4025c540d1d65a2de3f30caeacc49ae7a2152108adeaf42c7534a115ce"}, - {file = "psutil-5.9.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:072664401ae6e7c1bfb878c65d7282d4b4391f1bc9a56d5e03b5a490403271b5"}, - {file = "psutil-5.9.0-cp37-cp37m-win32.whl", hash = "sha256:df2c8bd48fb83a8408c8390b143c6a6fa10cb1a674ca664954de193fdcab36a9"}, - {file = "psutil-5.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1d7b433519b9a38192dfda962dd8f44446668c009833e1429a52424624f408b4"}, - {file = "psutil-5.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c3400cae15bdb449d518545cbd5b649117de54e3596ded84aacabfbb3297ead2"}, - {file = "psutil-5.9.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2237f35c4bbae932ee98902a08050a27821f8f6dfa880a47195e5993af4702d"}, - {file = "psutil-5.9.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1070a9b287846a21a5d572d6dddd369517510b68710fca56b0e9e02fd24bed9a"}, - {file = "psutil-5.9.0-cp38-cp38-win32.whl", hash = "sha256:76cebf84aac1d6da5b63df11fe0d377b46b7b500d892284068bacccf12f20666"}, - {file = "psutil-5.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:3151a58f0fbd8942ba94f7c31c7e6b310d2989f4da74fcbf28b934374e9bf841"}, - {file = "psutil-5.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:539e429da49c5d27d5a58e3563886057f8fc3868a5547b4f1876d9c0f007bccf"}, - {file = "psutil-5.9.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58c7d923dc209225600aec73aa2c4ae8ea33b1ab31bc11ef8a5933b027476f07"}, - {file = "psutil-5.9.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3611e87eea393f779a35b192b46a164b1d01167c9d323dda9b1e527ea69d697d"}, - {file = "psutil-5.9.0-cp39-cp39-win32.whl", hash = "sha256:4e2fb92e3aeae3ec3b7b66c528981fd327fb93fd906a77215200404444ec1845"}, - {file = "psutil-5.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:7d190ee2eaef7831163f254dc58f6d2e2a22e27382b936aab51c835fc080c3d3"}, - {file = "psutil-5.9.0.tar.gz", hash = "sha256:869842dbd66bb80c3217158e629d6fceaecc3a3166d3d1faee515b05dd26ca25"}, + {file = "psutil-5.9.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:799759d809c31aab5fe4579e50addf84565e71c1dc9f1c31258f159ff70d3f87"}, + {file = "psutil-5.9.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:9272167b5f5fbfe16945be3db475b3ce8d792386907e673a209da686176552af"}, + {file = "psutil-5.9.1-cp27-cp27m-win32.whl", hash = "sha256:0904727e0b0a038830b019551cf3204dd48ef5c6868adc776e06e93d615fc5fc"}, + {file = "psutil-5.9.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e7e10454cb1ab62cc6ce776e1c135a64045a11ec4c6d254d3f7689c16eb3efd2"}, + {file = "psutil-5.9.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:56960b9e8edcca1456f8c86a196f0c3d8e3e361320071c93378d41445ffd28b0"}, + {file = "psutil-5.9.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:44d1826150d49ffd62035785a9e2c56afcea66e55b43b8b630d7706276e87f22"}, + {file = "psutil-5.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c7be9d7f5b0d206f0bbc3794b8e16fb7dbc53ec9e40bbe8787c6f2d38efcf6c9"}, + {file = "psutil-5.9.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd9246e4cdd5b554a2ddd97c157e292ac11ef3e7af25ac56b08b455c829dca8"}, + {file = "psutil-5.9.1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29a442e25fab1f4d05e2655bb1b8ab6887981838d22effa2396d584b740194de"}, + {file = "psutil-5.9.1-cp310-cp310-win32.whl", hash = "sha256:20b27771b077dcaa0de1de3ad52d22538fe101f9946d6dc7869e6f694f079329"}, + {file = "psutil-5.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:58678bbadae12e0db55186dc58f2888839228ac9f41cc7848853539b70490021"}, + {file = "psutil-5.9.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:3a76ad658641172d9c6e593de6fe248ddde825b5866464c3b2ee26c35da9d237"}, + {file = "psutil-5.9.1-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a6a11e48cb93a5fa606306493f439b4aa7c56cb03fc9ace7f6bfa21aaf07c453"}, + {file = "psutil-5.9.1-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:068935df39055bf27a29824b95c801c7a5130f118b806eee663cad28dca97685"}, + {file = "psutil-5.9.1-cp36-cp36m-win32.whl", hash = "sha256:0f15a19a05f39a09327345bc279c1ba4a8cfb0172cc0d3c7f7d16c813b2e7d36"}, + {file = "psutil-5.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:db417f0865f90bdc07fa30e1aadc69b6f4cad7f86324b02aa842034efe8d8c4d"}, + {file = "psutil-5.9.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:91c7ff2a40c373d0cc9121d54bc5f31c4fa09c346528e6a08d1845bce5771ffc"}, + {file = "psutil-5.9.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fea896b54f3a4ae6f790ac1d017101252c93f6fe075d0e7571543510f11d2676"}, + {file = "psutil-5.9.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3054e923204b8e9c23a55b23b6df73a8089ae1d075cb0bf711d3e9da1724ded4"}, + {file = "psutil-5.9.1-cp37-cp37m-win32.whl", hash = "sha256:d2d006286fbcb60f0b391741f520862e9b69f4019b4d738a2a45728c7e952f1b"}, + {file = "psutil-5.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:b14ee12da9338f5e5b3a3ef7ca58b3cba30f5b66f7662159762932e6d0b8f680"}, + {file = "psutil-5.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:19f36c16012ba9cfc742604df189f2f28d2720e23ff7d1e81602dbe066be9fd1"}, + {file = "psutil-5.9.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:944c4b4b82dc4a1b805329c980f270f170fdc9945464223f2ec8e57563139cf4"}, + {file = "psutil-5.9.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b6750a73a9c4a4e689490ccb862d53c7b976a2a35c4e1846d049dcc3f17d83b"}, + {file = "psutil-5.9.1-cp38-cp38-win32.whl", hash = "sha256:a8746bfe4e8f659528c5c7e9af5090c5a7d252f32b2e859c584ef7d8efb1e689"}, + {file = "psutil-5.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:79c9108d9aa7fa6fba6e668b61b82facc067a6b81517cab34d07a84aa89f3df0"}, + {file = "psutil-5.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:28976df6c64ddd6320d281128817f32c29b539a52bdae5e192537bc338a9ec81"}, + {file = "psutil-5.9.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b88f75005586131276634027f4219d06e0561292be8bd6bc7f2f00bdabd63c4e"}, + {file = "psutil-5.9.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:645bd4f7bb5b8633803e0b6746ff1628724668681a434482546887d22c7a9537"}, + {file = "psutil-5.9.1-cp39-cp39-win32.whl", hash = "sha256:32c52611756096ae91f5d1499fe6c53b86f4a9ada147ee42db4991ba1520e574"}, + {file = "psutil-5.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:f65f9a46d984b8cd9b3750c2bdb419b2996895b005aefa6cbaba9a143b1ce2c5"}, + {file = "psutil-5.9.1.tar.gz", hash = "sha256:57f1819b5d9e95cdfb0c881a8a5b7d542ed0b7c522d575706a80bedc848c8954"}, ] pycryptodome = [ {file = "pycryptodome-3.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:75a3a364fee153e77ed889c957f6f94ec6d234b82e7195b117180dcc9fc16f96"}, @@ -1548,16 +1596,16 @@ pymongo = [ {file = "pymongo-3.12.3.tar.gz", hash = "sha256:0a89cadc0062a5e53664dde043f6c097172b8c1c5f0094490095282ff9995a5f"}, ] pyparsing = [ - {file = "pyparsing-3.0.8-py3-none-any.whl", hash = "sha256:ef7b523f6356f763771559412c0d7134753f037822dad1b16945b7b846f7ad06"}, - {file = "pyparsing-3.0.8.tar.gz", hash = "sha256:7bf433498c016c4314268d95df76c81b842a4cb2b276fa3312cfb1e1d85f6954"}, + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, ] python-dateutil = [ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, ] python-gitlab = [ - {file = "python-gitlab-3.4.0.tar.gz", hash = "sha256:6180b81ee2f265ad8d8412956a1740b4d3ceca7b28ae2f707dfe62375fed0082"}, - {file = "python_gitlab-3.4.0-py3-none-any.whl", hash = "sha256:251b63f0589d51f854516948c84e9eb8df26e1e9dea595cf86b43f17c43007dd"}, + {file = "python-gitlab-3.5.0.tar.gz", hash = "sha256:29ae7fb9b8c9aeb2e6e19bd2fd04867e93ecd7af719978ce68fac0cf116ab30d"}, + {file = "python_gitlab-3.5.0-py3-none-any.whl", hash = "sha256:73b5aa6502efa557ee1a51227cceb0243fac5529627da34f08c5f265bf50417c"}, ] pytz = [ {file = "pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"}, @@ -1691,30 +1739,30 @@ requests-toolbelt = [ {file = "requests_toolbelt-0.9.1-py2.py3-none-any.whl", hash = "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f"}, ] rich = [ - {file = "rich-12.3.0-py3-none-any.whl", hash = "sha256:0eb63013630c6ee1237e0e395d51cb23513de6b5531235e33889e8842bdf3a6f"}, - {file = "rich-12.3.0.tar.gz", hash = "sha256:7e8700cda776337036a712ff0495b04052fb5f957c7dfb8df997f88350044b64"}, + {file = "rich-12.4.4-py3-none-any.whl", hash = "sha256:d2bbd99c320a2532ac71ff6a3164867884357da3e3301f0240090c5d2fdac7ec"}, + {file = "rich-12.4.4.tar.gz", hash = "sha256:4c586de507202505346f3e32d1363eb9ed6932f0c2f63184dea88983ff4971e2"}, ] rook = [ - {file = "rook-0.1.171-cp27-cp27m-macosx_10_11_x86_64.whl", hash = "sha256:290ee068d18992fa5c27ebdb5c8745853c682cb44f26bedf858d323832ec8b74"}, - {file = "rook-0.1.171-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:96bd8983ad478f50ca22c524ec20fe095945f85c027b4d316ba46e844976bc35"}, - {file = "rook-0.1.171-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:f36b614a85325cfd41e8e4a75ae29e4d7b91aac5981c0c1c4c36452e183e234e"}, - {file = "rook-0.1.171-cp310-cp310-macosx_10_11_x86_64.whl", hash = "sha256:b2d530a77fa1ebb59b15f7efbe810101fdbf7a10851a355c898ddedbfdafb513"}, - {file = "rook-0.1.171-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9a8f4a998c5e8c03dc5a844b9831d916d8e7b79e704600f8d91b2886ef0fe62a"}, - {file = "rook-0.1.171-cp35-cp35m-macosx_10_11_x86_64.whl", hash = "sha256:01fa10624a6c773ba8b71d9cd397fd37425ca484f0e64f15a9ee6b3214351cdb"}, - {file = "rook-0.1.171-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:91db652819b6f6f99a5789bbd840cc46036a54908202492926ff62fbbaf9dcc5"}, - {file = "rook-0.1.171-cp36-cp36m-macosx_10_11_x86_64.whl", hash = "sha256:d3770f3cc4626e56718d7c998024ca6cc75e240b82269b924b488e3d3f73e20c"}, - {file = "rook-0.1.171-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3c7e20ecb27ceec33e4ca4efa4c77664d13ff47f64d176eabf81d97a481c8ed4"}, - {file = "rook-0.1.171-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:aacdb2aea2ca559ce3d93eddea9da70d12b10d8b710c049a52781d88dc2e3b6f"}, - {file = "rook-0.1.171-cp37-cp37m-macosx_10_11_x86_64.whl", hash = "sha256:6add21f04e3c28242638483cf34830fc931c61aac4bf47a88197f04273835e1f"}, - {file = "rook-0.1.171-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f8d478bda592fcc20fb73334fa24630cf2467c1faca81a1004908fc581d987b3"}, - {file = "rook-0.1.171-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a30e32da91b29629fc279990cdb952d6a7cd4945fbafafd7ad88fd71cf9fa624"}, - {file = "rook-0.1.171-cp38-cp38-macosx_10_11_x86_64.whl", hash = "sha256:d87f98c6f059571c40bcb395480cb10a33872e96c1520e8ea98d4703003c148c"}, - {file = "rook-0.1.171-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4474484145b6b4676fc51634dd979376caea7b5722694ec38132ba0e545c85ae"}, - {file = "rook-0.1.171-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:332f572df6a96f6e33e07d0354dfabade1d46a0aeb1aa54e25841bc1fd4239d2"}, - {file = "rook-0.1.171-cp39-cp39-macosx_10_11_x86_64.whl", hash = "sha256:b56ee99de3598a4dc76b25a66b09967f45bbab9c9dec3b6c91b03d4eed1cad7a"}, - {file = "rook-0.1.171-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6bc2dc7a329c7bcac29cae88ed486aba8452437456ee515b3e0ffcb1a1c8dfc9"}, - {file = "rook-0.1.171-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:2e9b96ab66de7616f6e65ad3f30f2bd442ee966a639faef3afcc740c16ed6c00"}, - {file = "rook-0.1.171.tar.gz", hash = "sha256:3ede95c8461546fd0baac2618397458ab7ddbbcb3f56e925fe21a871c70376c9"}, + {file = "rook-0.1.175-cp27-cp27m-macosx_10_11_x86_64.whl", hash = "sha256:e815c1986ff1d1a61d183320c2e5757140954004cb6a4c04f7a60c7db22a61d0"}, + {file = "rook-0.1.175-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3475061338ddabf91b07bf54a3baadc696002a4856e167ebdfc426adaea04237"}, + {file = "rook-0.1.175-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:17d0bb492b04b3ecc1e1bf155ce68b33da202aa4bc11e7d755556093ea5379bf"}, + {file = "rook-0.1.175-cp310-cp310-macosx_10_11_x86_64.whl", hash = "sha256:a1e9c228be3a12ad95b1f252f52c3fdf437dc7514632419d09a869e2fd75aea0"}, + {file = "rook-0.1.175-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4eaa6ed65b898119de15c66dd57bf0918cc12e9165ca73acdc850a62837230e2"}, + {file = "rook-0.1.175-cp35-cp35m-macosx_10_11_x86_64.whl", hash = "sha256:f2a2651c81cbbc401325d16de9bf45c1d0e30fd7cf4cb6e5812aef583501493b"}, + {file = "rook-0.1.175-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0fb349e843025cd09fcdc1427b580e5639760dafb455b47559199d8ec6751744"}, + {file = "rook-0.1.175-cp36-cp36m-macosx_10_11_x86_64.whl", hash = "sha256:db0090b048fb19406a172676fe4cba9c6ab75af3f8a5c286f753be0a0baa1967"}, + {file = "rook-0.1.175-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:488cf082f4815f806af0cd8ed384605a5d1694138776789ef437e922082c0f0d"}, + {file = "rook-0.1.175-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:f987ac013af99f10083a98b82cbc2ba26a2af73b567296837cbf686cc39269d7"}, + {file = "rook-0.1.175-cp37-cp37m-macosx_10_11_x86_64.whl", hash = "sha256:a8950cb043d732222478e74809ce1b68d4f650919f41261ba42decd082c392a4"}, + {file = "rook-0.1.175-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8880d0f759a5af4fca1d2243cf3e065600840641330ce710c6bbc2ab4b6c4a38"}, + {file = "rook-0.1.175-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:96dd16e6ad8c6da907520f60deca45d60283e17a65e0ef6cc051a4ff8c828097"}, + {file = "rook-0.1.175-cp38-cp38-macosx_10_11_x86_64.whl", hash = "sha256:dff624670aaf43cb6df468201cb52a6ee2e79d00e4bb671749fd80376bc89085"}, + {file = "rook-0.1.175-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fcb5906c46b30ddae20250a71891c1f6f3e0d8b535a69a4fc288608865c72456"}, + {file = "rook-0.1.175-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7e15ccda31c4e3fae973c39e775147205bc1e27c23e514716a397572f9e7a0e7"}, + {file = "rook-0.1.175-cp39-cp39-macosx_10_11_x86_64.whl", hash = "sha256:95035278a1571852488bf629e2000fcf816ab06249abff1474200b132e422987"}, + {file = "rook-0.1.175-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3daaed3d5a518fb661e635a3c2b0cf4365c75dcd79a21f66404bd3835bf47958"}, + {file = "rook-0.1.175-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:eb2783d654093f9e8fa2508dd5ee29c9fff90ccb075ac06359b103dc849a18db"}, + {file = "rook-0.1.175.tar.gz", hash = "sha256:b6d92298bfd170c8ff0e4b13ba870079f44644386e12c08244e182421b471004"}, ] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, @@ -1724,9 +1772,13 @@ smmap = [ {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, ] +tomli = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] tweepy = [ - {file = "tweepy-4.8.0-py2.py3-none-any.whl", hash = "sha256:f281bb53ab3ba999ff5e3d743d92d3ed543ee5551c7250948f9e56190ec7a43e"}, - {file = "tweepy-4.8.0.tar.gz", hash = "sha256:8ba5774ac1663b09e5fce1b030daf076f2c9b3ddbf2e7e7ea0bae762e3b1fe3e"}, + {file = "tweepy-4.10.0-py3-none-any.whl", hash = "sha256:f0abbd234a588e572f880f99a094ac321217ff3eade6c0eca118ed6db8e2cf0a"}, + {file = "tweepy-4.10.0.tar.gz", hash = "sha256:7f92574920c2f233663fff154745fc2bb0d10aedc23617379a912d8e4fefa399"}, ] typing-extensions = [ {file = "typing_extensions-4.2.0-py3-none-any.whl", hash = "sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708"}, @@ -1757,23 +1809,31 @@ urllib3 = [ {file = "urllib3-1.26.8.tar.gz", hash = "sha256:0e7c33d9a63e7ddfcb86780aac87befc2fbddf46c58dbb487e0855f7ceec283c"}, ] watchdog = [ - {file = "watchdog-1.0.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e2a531e71be7b5cc3499ae2d1494d51b6a26684bcc7c3146f63c810c00e8a3cc"}, - {file = "watchdog-1.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e7c73edef48f4ceeebb987317a67e0080e5c9228601ff67b3c4062fa020403c7"}, - {file = "watchdog-1.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:85e6574395aa6c1e14e0f030d9d7f35c2340a6cf95d5671354ce876ac3ffdd4d"}, - {file = "watchdog-1.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:27d9b4666938d5d40afdcdf2c751781e9ce36320788b70208d0f87f7401caf93"}, - {file = "watchdog-1.0.2-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2f1ade0d0802503fda4340374d333408831cff23da66d7e711e279ba50fe6c4a"}, - {file = "watchdog-1.0.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:f1d0e878fd69129d0d68b87cee5d9543f20d8018e82998efb79f7e412d42154a"}, - {file = "watchdog-1.0.2-py3-none-manylinux2014_aarch64.whl", hash = "sha256:d948ad9ab9aba705f9836625b32e965b9ae607284811cd98334423f659ea537a"}, - {file = "watchdog-1.0.2-py3-none-manylinux2014_armv7l.whl", hash = "sha256:101532b8db506559e52a9b5d75a308729b3f68264d930670e6155c976d0e52a0"}, - {file = "watchdog-1.0.2-py3-none-manylinux2014_i686.whl", hash = "sha256:b1d723852ce90a14abf0ec0ca9e80689d9509ee4c9ee27163118d87b564a12ac"}, - {file = "watchdog-1.0.2-py3-none-manylinux2014_ppc64.whl", hash = "sha256:68744de2003a5ea2dfbb104f9a74192cf381334a9e2c0ed2bbe1581828d50b61"}, - {file = "watchdog-1.0.2-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:602dbd9498592eacc42e0632c19781c3df1728ef9cbab555fab6778effc29eeb"}, - {file = "watchdog-1.0.2-py3-none-manylinux2014_s390x.whl", hash = "sha256:016b01495b9c55b5d4126ed8ae75d93ea0d99377084107c33162df52887cee18"}, - {file = "watchdog-1.0.2-py3-none-manylinux2014_x86_64.whl", hash = "sha256:5f1f3b65142175366ba94c64d8d4c8f4015825e0beaacee1c301823266b47b9b"}, - {file = "watchdog-1.0.2-py3-none-win32.whl", hash = "sha256:57f05e55aa603c3b053eed7e679f0a83873c540255b88d58c6223c7493833bac"}, - {file = "watchdog-1.0.2-py3-none-win_amd64.whl", hash = "sha256:f84146f7864339c8addf2c2b9903271df21d18d2c721e9a77f779493234a82b5"}, - {file = "watchdog-1.0.2-py3-none-win_ia64.whl", hash = "sha256:ee21aeebe6b3e51e4ba64564c94cee8dbe7438b9cb60f0bb350c4fa70d1b52c2"}, - {file = "watchdog-1.0.2.tar.gz", hash = "sha256:376cbc2a35c0392b0fe7ff16fbc1b303fd99d4dd9911ab5581ee9d69adc88982"}, + {file = "watchdog-2.1.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:676263bee67b165f16b05abc52acc7a94feac5b5ab2449b491f1a97638a79277"}, + {file = "watchdog-2.1.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:aa68d2d9a89d686fae99d28a6edf3b18595e78f5adf4f5c18fbfda549ac0f20c"}, + {file = "watchdog-2.1.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5e2e51c53666850c3ecffe9d265fc5d7351db644de17b15e9c685dd3cdcd6f97"}, + {file = "watchdog-2.1.8-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7721ac736170b191c50806f43357407138c6748e4eb3e69b071397f7f7aaeedd"}, + {file = "watchdog-2.1.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ce7376aed3da5fd777483fe5ebc8475a440c6d18f23998024f832134b2938e7b"}, + {file = "watchdog-2.1.8-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f9ee4c6bf3a1b2ed6be90a2d78f3f4bbd8105b6390c04a86eb48ed67bbfa0b0b"}, + {file = "watchdog-2.1.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:68dbe75e0fa1ba4d73ab3f8e67b21770fbed0651d32ce515cd38919a26873266"}, + {file = "watchdog-2.1.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0c520009b8cce79099237d810aaa19bc920941c268578436b62013b2f0102320"}, + {file = "watchdog-2.1.8-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:efcc8cbc1b43902571b3dce7ef53003f5b97fe4f275fe0489565fc6e2ebe3314"}, + {file = "watchdog-2.1.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:746e4c197ec1083581bb1f64d07d1136accf03437badb5ff8fcb862565c193b2"}, + {file = "watchdog-2.1.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1ae17b6be788fb8e4d8753d8d599de948f0275a232416e16436363c682c6f850"}, + {file = "watchdog-2.1.8-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ddde157dc1447d8130cb5b8df102fad845916fe4335e3d3c3f44c16565becbb7"}, + {file = "watchdog-2.1.8-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4978db33fc0934c92013ee163a9db158ec216099b69fce5aec790aba704da412"}, + {file = "watchdog-2.1.8-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b962de4d7d92ff78fb2dbc6a0cb292a679dea879a0eb5568911484d56545b153"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_aarch64.whl", hash = "sha256:1e5d0fdfaa265c29dc12621913a76ae99656cf7587d03950dfeb3595e5a26102"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_armv7l.whl", hash = "sha256:036ed15f7cd656351bf4e17244447be0a09a61aaa92014332d50719fc5973bc0"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_i686.whl", hash = "sha256:2962628a8777650703e8f6f2593065884c602df7bae95759b2df267bd89b2ef5"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_ppc64.whl", hash = "sha256:156ec3a94695ea68cfb83454b98754af6e276031ba1ae7ae724dc6bf8973b92a"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:47598fe6713fc1fee86b1ca85c9cbe77e9b72d002d6adeab9c3b608f8a5ead10"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_s390x.whl", hash = "sha256:fed4de6e45a4f16e4046ea00917b4fe1700b97244e5d114f594b4a1b9de6bed8"}, + {file = "watchdog-2.1.8-py3-none-manylinux2014_x86_64.whl", hash = "sha256:24dedcc3ce75e150f2a1d704661f6879764461a481ba15a57dc80543de46021c"}, + {file = "watchdog-2.1.8-py3-none-win32.whl", hash = "sha256:6ddf67bc9f413791072e3afb466e46cc72c6799ba73dea18439b412e8f2e3257"}, + {file = "watchdog-2.1.8-py3-none-win_amd64.whl", hash = "sha256:88ef3e8640ef0a64b7ad7394b0f23384f58ac19dd759da7eaa9bc04b2898943f"}, + {file = "watchdog-2.1.8-py3-none-win_ia64.whl", hash = "sha256:0fb60c7d31474b21acba54079ce9ff0136411183e9a591369417cddb1d7d00d7"}, + {file = "watchdog-2.1.8.tar.gz", hash = "sha256:6d03149126864abd32715d4e9267d2754cede25a69052901399356ad3bc5ecff"}, ] wcwidth = [ {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, diff --git a/pyproject.toml b/pyproject.toml index 3895875..547ac40 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [tool.poetry] name = "jarvis" version = "2.0.2" -description = "J.A.R.V.I.S. admin bot" +description = "JARVIS admin bot" authors = ["Zevaryx "] [tool.poetry.dependencies] @@ -26,6 +26,7 @@ rook = "^0.1.170" rich = "^12.3.0" jurigged = "^0.5.0" aioredis = "^2.0.1" +naff = "^1.0.0" [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/requirements.txt b/requirements.txt index bcc7f22..2375165 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,12 +1,76 @@ -discord-py>=1.7, <2 -discord-py-slash-command>=3.0.1, <4 -dpy-slash-button-paginator>=1.0.0, <2 -GitPython>=3.1, <4 -mongoengine>=0.23, <1 -opencv-python>=4.5, <5 -Pillow>=8.2.0, <9 -psutil>=5.8, <6 -pymongo>=3.12.0, <4 -python-gitlab>=2.9.0, <3 -PyYaml>=5.4, <6 -ulid-py>=1.1.0, <2 +aiofile==3.7.4 +aiofiles==0.6.0 ; python_version >= "3.6" +aiohttp==3.8.1 +aioredis==2.0.1 +aiosignal==1.2.0 ; python_version >= "3.10" +aiosqlite==0.17.0 ; python_version >= "3.6" +ansicon==1.89.0 ; python_version >= "3.8" and python_version < "4.0" and platform_system == "Windows" +async-generator==1.10 ; python_version >= "3.6" +async-timeout==4.0.2 ; python_version >= "3.6" +asyncio-extras==1.3.2 ; python_version >= "3.6" +asyncpraw==7.5.0 +asyncprawcore==2.3.0 ; python_version >= "3.6" +attrs==21.4.0 ; python_version >= "3.10" +blessed==1.19.1 ; python_version >= "3.8" and python_version < "4.0" +caio==0.9.5 ; python_version >= "3.5" and python_version < "4" +certifi==2021.10.8 +charset-normalizer==2.0.12 ; python_version >= "3.10" +codefind==0.1.3 ; python_version >= "3.8" and python_version < "4.0" +commonmark==0.9.1 ; python_version >= "3.10" and python_full_version < "4.0.0" +dateparser==1.1.1 +discord-typings==0.4.0 ; python_version >= "3.10" +distro==1.7.0 ; python_version >= "3.6" +frozenlist==1.3.0 ; python_version >= "3.10" +funcsigs==1.0.2 +gitdb==4.0.9 ; python_version >= "3.7" +gitpython==3.1.27 +idna==3.3 ; python_version >= "3.10" +jarvis-core @ git+https://git.zevaryx.com/stark-industries/jarvis/jarvis-core.git@main +jinxed==1.2.0 ; python_version >= "3.8" and python_version < "4.0" and platform_system == "Windows" +jurigged==0.5.2 +marshmallow==3.16.0 ; python_version >= "3.10" and python_version < "4.0" +mongoengine==0.23.1 +motor==2.5.1 ; python_version >= "3.10" and python_version < "4.0" +multidict==6.0.2 ; python_version >= "3.10" +naff==1.0.0 +nanoid==2.0.0 ; python_version >= "3.10" and python_version < "4.0" +numpy==1.22.4 ; python_version >= "3.8" or python_version >= "3.8" and platform_system == "Darwin" and platform_machine == "arm64" or python_version >= "3.8" and platform_system == "Linux" and platform_machine == "aarch64" +oauthlib==3.2.0 ; python_version >= "3.7" +opencv-python==4.5.5.64 +orjson==3.6.8 +ovld==0.3.2 ; python_version >= "3.8" and python_version < "4.0" +packaging==21.3 ; python_version >= "3.10" and python_version < "4.0" +pastypy==1.0.2 +pillow==9.1.1 +protobuf==3.20.1 ; python_version >= "3.7" +psutil==5.9.1 +pycryptodome==3.14.1 ; python_version >= "3.10" +pygments==2.12.0 ; python_version >= "3.10" and python_full_version < "4.0.0" +pymongo==3.12.3 ; python_version >= "3.10" and python_version < "4.0" or python_version >= "3.6" +pyparsing==3.0.9 ; python_version >= "3.10" and python_version < "4.0" +python-dateutil==2.8.2 ; python_version >= "3.5" +python-gitlab==3.5.0 +pytz==2022.1 ; python_version >= "3.10" and python_version < "4.0" or python_version >= "3.5" +pytz-deprecation-shim==0.1.0.post0 ; python_full_version >= "3.6.0" +pyyaml==6.0 +regex==2022.3.2 ; python_version >= "3.6" +requests==2.27.1 ; python_full_version >= "3.6.0" +requests-oauthlib==1.3.1 ; python_version >= "3.7" +requests-toolbelt==0.9.1 ; python_full_version >= "3.7.0" +rich==12.4.4 +rook==0.1.175 +six==1.16.0 ; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" or python_version >= "3.8" and python_version < "4.0" +smmap==5.0.0 ; python_version >= "3.7" +tomli==2.0.1 ; python_version >= "3.10" +tweepy==4.10.0 +typing-extensions==4.2.0 ; python_version >= "3.7" +tzdata==2022.1 ; python_version >= "3.6" +tzlocal==4.2 ; python_version >= "3.6" +ulid-py==1.1.0 +umongo==3.1.0 ; python_version >= "3.10" and python_version < "4.0" +update-checker==0.18.0 ; python_version >= "3.6" +urllib3==1.26.8 ; python_version >= "3.10" and python_version < "4" +watchdog==2.1.8 ; python_version >= "3.8" and python_version < "4.0" +wcwidth==0.2.5 ; python_version >= "3.8" and python_version < "4.0" +websocket-client==1.3.2 ; python_version >= "3.7" +yarl==1.7.2 ; python_version >= "3.6"