From bfd078e50c9013faa61f82003db0da49197327f6 Mon Sep 17 00:00:00 2001 From: penguinboi Date: Mon, 6 Jul 2026 17:47:23 -0400 Subject: [PATCH 1/2] Switch from ruff to black --- .github/workflows/grace.yml | 6 +++--- bot/extensions/bookmark_cog.py | 1 - bot/extensions/extension_cog.py | 1 - bot/extensions/fun_cog.py | 3 ++- bot/extensions/thank_cog.py | 9 ++------- bot/extensions/threads_cog.py | 6 ++---- bot/extensions/welcome_cog.py | 2 +- bot/extensions/wikipedia_cog.py | 4 +++- bot/grace.py | 4 +++- bot/models/extensions/fun/answer.py | 1 - bot/models/extensions/language/trigger.py | 1 - bot/models/extensions/thank.py | 1 - bot/services/github_service.py | 1 - lib/config_required.py | 1 - lib/fields.py | 1 - pyproject.toml | 6 ++++-- 16 files changed, 20 insertions(+), 28 deletions(-) diff --git a/.github/workflows/grace.yml b/.github/workflows/grace.yml index 4bc4c0e..bce6fe1 100644 --- a/.github/workflows/grace.yml +++ b/.github/workflows/grace.yml @@ -27,12 +27,12 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install flake8 pytest + pip install pytest pip install .[dev] - - name: Lint with ruff + - name: Check formatting with black run: | - ruff check --preview + black --check . - name: Generate config file run: | diff --git a/bot/extensions/bookmark_cog.py b/bot/extensions/bookmark_cog.py index 6f9cdc3..cfcad54 100644 --- a/bot/extensions/bookmark_cog.py +++ b/bot/extensions/bookmark_cog.py @@ -1,4 +1,3 @@ - from discord import Embed, File, Interaction, Message from discord.app_commands import ContextMenu from discord.ext.commands import Cog diff --git a/bot/extensions/extension_cog.py b/bot/extensions/extension_cog.py index 443603e..3d983af 100644 --- a/bot/extensions/extension_cog.py +++ b/bot/extensions/extension_cog.py @@ -1,4 +1,3 @@ - from discord import Embed from discord.app_commands import Choice, autocomplete from discord.ext.commands import ( diff --git a/bot/extensions/fun_cog.py b/bot/extensions/fun_cog.py index 6e0eac4..fa07e2e 100644 --- a/bot/extensions/fun_cog.py +++ b/bot/extensions/fun_cog.py @@ -82,7 +82,8 @@ async def quote_command(self, ctx: Context) -> None: :type ctx: Context """ response = await asyncio.to_thread( - get, "https://api.forismatic.com/api/1.0/?method=getQuote&format=json&lang=en" + get, + "https://api.forismatic.com/api/1.0/?method=getQuote&format=json&lang=en", ) if response.ok: diff --git a/bot/extensions/thank_cog.py b/bot/extensions/thank_cog.py index 81fb725..aad291a 100644 --- a/bot/extensions/thank_cog.py +++ b/bot/extensions/thank_cog.py @@ -1,4 +1,3 @@ - from discord import Embed, Member from discord.ext.commands import BucketType, Cog, Context, cooldown, hybrid_group @@ -89,16 +88,12 @@ async def thank_leaderboard(self, ctx: Context, *, top: int = 10) -> None: for position, helper in enumerate(helpers): member = await self.bot.fetch_user(helper.member_id) - leaderboard_embed.description += ( - f"{position + 1}. **{member.display_name}**: **{helper.rank}** with {helper.count} thank(s).\n" - ) + leaderboard_embed.description += f"{position + 1}. **{member.display_name}**: **{helper.rank}** with {helper.count} thank(s).\n" await ctx.reply(embed=leaderboard_embed, ephemeral=True) @thank_group.command(name="rank", description="Shows your current thank rank.") - async def thank_rank( - self, ctx: Context, *, member: Member | None = None - ) -> None: + async def thank_rank(self, ctx: Context, *, member: Member | None = None) -> None: """Show the current rank of the member who issue this command. :param ctx: The context of the command invocation. diff --git a/bot/extensions/threads_cog.py b/bot/extensions/threads_cog.py index f796a46..e5ecc8e 100644 --- a/bot/extensions/threads_cog.py +++ b/bot/extensions/threads_cog.py @@ -202,16 +202,14 @@ async def post_thread(self, thread: Thread): color=self.bot.default_color, title=thread.title, description=thread.content, - timestamp=datetime.now(tz=UTC) + timestamp=datetime.now(tz=UTC), ) if channel: message = await channel.send(content=content, embed=embed) new_discord_thread = await message.create_thread(name=thread.title) - if old_discord_thread := self.bot.get_channel( - thread.latest_thread_id - ): + if old_discord_thread := self.bot.get_channel(thread.latest_thread_id): await old_discord_thread.send(new_discord_thread.jump_url) await old_discord_thread.edit(archived=True, locked=True) diff --git a/bot/extensions/welcome_cog.py b/bot/extensions/welcome_cog.py index e11a90b..bdffef0 100644 --- a/bot/extensions/welcome_cog.py +++ b/bot/extensions/welcome_cog.py @@ -42,7 +42,7 @@ def matrix_section(self) -> str: return self.__build_section( [], "### Join our Matrix Server!\n" - "You can also join our [matrix server]()\n" + "You can also join our [matrix server]()\n", ) def get_welcome_message(self, member: Member) -> str: diff --git a/bot/extensions/wikipedia_cog.py b/bot/extensions/wikipedia_cog.py index 9f150ea..ce328da 100644 --- a/bot/extensions/wikipedia_cog.py +++ b/bot/extensions/wikipedia_cog.py @@ -23,7 +23,9 @@ def search_results(search: str) -> list[Any]: :rtype: list """ url_encode: str = quote_plus(search) - base_url: str = f"https://en.wikipedia.org/w/api.php?action=opensearch&format=json&limit=3&namespace=0&search={url_encode}" + base_url: str = ( + f"https://en.wikipedia.org/w/api.php?action=opensearch&format=json&limit=3&namespace=0&search={url_encode}" + ) request = Request(base_url, headers={"User-Agent": USER_AGENT}) with urlopen(request) as url: diff --git a/bot/grace.py b/bot/grace.py index 8e83322..7172177 100644 --- a/bot/grace.py +++ b/bot/grace.py @@ -36,7 +36,9 @@ async def load_extensions(self): extension = Extension.where(module_name=module).first() if not extension: - logger.warning(f"{module} is not registered. Registering the extension.") + logger.warning( + f"{module} is not registered. Registering the extension." + ) extension = Extension.create(module_name=module) if not extension.should_be_loaded(): diff --git a/bot/models/extensions/fun/answer.py b/bot/models/extensions/fun/answer.py index d23685c..2afffdd 100644 --- a/bot/models/extensions/fun/answer.py +++ b/bot/models/extensions/fun/answer.py @@ -1,4 +1,3 @@ - from grace.model import Field, Model diff --git a/bot/models/extensions/language/trigger.py b/bot/models/extensions/language/trigger.py index ce5f841..2f307a3 100644 --- a/bot/models/extensions/language/trigger.py +++ b/bot/models/extensions/language/trigger.py @@ -1,4 +1,3 @@ - from emoji import emojize from grace.model import Field, Model, Relationship diff --git a/bot/models/extensions/thank.py b/bot/models/extensions/thank.py index e2e40a7..be79437 100644 --- a/bot/models/extensions/thank.py +++ b/bot/models/extensions/thank.py @@ -1,4 +1,3 @@ - from grace.model import Field, Model diff --git a/bot/services/github_service.py b/bot/services/github_service.py index 6d9d0c8..597e36e 100644 --- a/bot/services/github_service.py +++ b/bot/services/github_service.py @@ -1,4 +1,3 @@ - from github import Github, Organization from github.Repository import Repository diff --git a/lib/config_required.py b/lib/config_required.py index a36474e..25befea 100644 --- a/lib/config_required.py +++ b/lib/config_required.py @@ -14,7 +14,6 @@ class ConfigRequiredError(DisabledCommand): """ - class MissingRequiredConfigError(ConfigRequiredError): """Exception raised when a required configuration is missing. diff --git a/lib/fields.py b/lib/fields.py index 17839a6..f672b4a 100644 --- a/lib/fields.py +++ b/lib/fields.py @@ -1,4 +1,3 @@ - from sqlalchemy import Column from sqlalchemy.types import Integer, TypeDecorator from sqlmodel import Field diff --git a/pyproject.toml b/pyproject.toml index 28140b1..11be2c1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,9 +33,8 @@ dependencies = [ dev = [ "pytest", "pytest-asyncio", - "flake8", "mypy", - "ruff==0.15.12", + "black==26.5.1", "freezegun", ] @@ -47,3 +46,6 @@ Documentation = "https://github.com/Code-Society-Lab/grace/wiki" [tool.setuptools.packages.find] include = ["*"] + +[tool.black] +target-version = ["py312"] From 38fb06036985c051a34ce7c90953b942cb23937a Mon Sep 17 00:00:00 2001 From: penguinboi Date: Mon, 6 Jul 2026 17:51:11 -0400 Subject: [PATCH 2/2] Adjusted contributing guideline to include black --- docs/CONTRIBUTING.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index bafbc32..37cbaa2 100755 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -119,6 +119,7 @@ You should always review your own PR first. #### How to self review my code? - Confirm that the changes meet the user experience and goals of the bot. - Ensure that your code is **clean** and follows Python's [PEP-0008](https://www.python.org/dev/peps/pep-0008/). +- Format your code with [black](https://black.readthedocs.io/en/stable/) by running `black .` (this is checked in CI with `black --check .`). - Verify your code for grammar and spelling mistakes (The code and the text must be in **English**). - Test your changes to ensure there's no bugs.