From e2b5a245b5363d6e0fd4ffd58115a065289d01cc Mon Sep 17 00:00:00 2001 From: artie Date: Fri, 19 Apr 2024 22:47:25 +0200 Subject: [PATCH] rewrite project into a package structure --- artemis/__init__.py | 0 bot.py => artemis/bot.py | 21 +++++++++++---------- artemis/cogs/__init__.py | 3 +++ {cogs => artemis/cogs}/anime.py | 10 +++++----- {cogs => artemis/cogs}/events.py | 6 +++--- {cogs => artemis/cogs}/funhouse.py | 10 +++++----- {cogs => artemis/cogs}/language.py | 14 +++++++------- {cogs => artemis/cogs}/media.py | 16 ++++++++-------- {cogs => artemis/cogs}/meta.py | 8 ++++---- {cogs => artemis/cogs}/mod.py | 4 ++-- {cogs => artemis/cogs}/music.py | 8 ++++---- {cogs => artemis/cogs}/ocr.py | 12 ++++++------ {cogs => artemis/cogs}/owner.py | 10 +++++----- {cogs => artemis/cogs}/useful.py | 12 ++++++------ {utils => artemis/utils}/__init__.py | 0 {utils => artemis/utils}/anilist.py | 2 +- {utils => artemis/utils}/api.py | 4 ++-- {utils => artemis/utils}/catbox.py | 2 +- {utils => artemis/utils}/common.py | 4 ++-- {utils => artemis/utils}/config.py | 2 +- {utils => artemis/utils}/constants.py | 2 +- {utils => artemis/utils}/enigma2.py | 0 {utils => artemis/utils}/flags.py | 0 {utils => artemis/utils}/iso_639.py | 4 ++-- {utils => artemis/utils}/keyv.py | 0 {utils => artemis/utils}/notifiers.py | 2 +- {utils => artemis/utils}/reddit.py | 4 ++-- {utils => artemis/utils}/unogs.py | 2 +- {utils => artemis/utils}/views.py | 2 +- 29 files changed, 84 insertions(+), 80 deletions(-) create mode 100644 artemis/__init__.py rename bot.py => artemis/bot.py (93%) create mode 100644 artemis/cogs/__init__.py rename {cogs => artemis/cogs}/anime.py (96%) rename {cogs => artemis/cogs}/events.py (94%) rename {cogs => artemis/cogs}/funhouse.py (96%) rename {cogs => artemis/cogs}/language.py (99%) rename {cogs => artemis/cogs}/media.py (98%) rename {cogs => artemis/cogs}/meta.py (95%) rename {cogs => artemis/cogs}/mod.py (98%) rename {cogs => artemis/cogs}/music.py (98%) rename {cogs => artemis/cogs}/ocr.py (96%) rename {cogs => artemis/cogs}/owner.py (96%) rename {cogs => artemis/cogs}/useful.py (96%) rename {utils => artemis/utils}/__init__.py (100%) rename {utils => artemis/utils}/anilist.py (99%) rename {utils => artemis/utils}/api.py (97%) rename {utils => artemis/utils}/catbox.py (98%) rename {utils => artemis/utils}/common.py (99%) rename {utils => artemis/utils}/config.py (95%) rename {utils => artemis/utils}/constants.py (99%) rename {utils => artemis/utils}/enigma2.py (100%) rename {utils => artemis/utils}/flags.py (100%) rename {utils => artemis/utils}/iso_639.py (97%) rename {utils => artemis/utils}/keyv.py (100%) rename {utils => artemis/utils}/notifiers.py (99%) rename {utils => artemis/utils}/reddit.py (99%) rename {utils => artemis/utils}/unogs.py (99%) rename {utils => artemis/utils}/views.py (99%) diff --git a/artemis/__init__.py b/artemis/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bot.py b/artemis/bot.py similarity index 93% rename from bot.py rename to artemis/bot.py index ed269d4..16a0045 100644 --- a/bot.py +++ b/artemis/bot.py @@ -17,14 +17,16 @@ from discord import Webhook from discord.ext import commands from discord.ext.commands.cooldowns import BucketType -import utils -from utils import reddit -from utils.api import API -from utils.catbox import Catbox, Litterbox -from utils.common import read_json, ArtemisError -from utils.constants import TEMP_DIR -from utils.unogs import uNoGS -from utils import config +from .cogs import EXTENSIONS + +from . import utils +from .utils import reddit +from .utils.api import API +from .utils.catbox import Catbox, Litterbox +from .utils.common import read_json, ArtemisError +from .utils.constants import TEMP_DIR +from .utils.unogs import uNoGS +from .utils import config logging.basicConfig( @@ -118,8 +120,7 @@ class Artemis(commands.Bot): await self.load_extension("jishaku") - extensions = [e.name for e in iter_modules(["cogs"], prefix="cogs.")] - for extension in extensions: + for extension in EXTENSIONS: await self.load_extension(extension) async def close(self): diff --git a/artemis/cogs/__init__.py b/artemis/cogs/__init__.py new file mode 100644 index 0000000..e83970d --- /dev/null +++ b/artemis/cogs/__init__.py @@ -0,0 +1,3 @@ +from pkgutil import iter_modules + +EXTENSIONS = [module.name for module in iter_modules(__path__, f"{__package__}.")] diff --git a/cogs/anime.py b/artemis/cogs/anime.py similarity index 96% rename from cogs/anime.py rename to artemis/cogs/anime.py index d445083..296cfa9 100644 --- a/cogs/anime.py +++ b/artemis/cogs/anime.py @@ -16,13 +16,13 @@ from bs4 import BeautifulSoup from discord.ext import commands from discord.utils import format_dt -import utils -from utils.common import ArtemisError -from utils.anilist import build_anilist_embed, build_character_embed -from utils.views import DropdownView, ViewPages +from .. import utils +from ..utils.common import ArtemisError +from ..utils.anilist import build_anilist_embed, build_character_embed +from ..utils.views import DropdownView, ViewPages if TYPE_CHECKING: - from bot import Artemis + from ..bot import Artemis watching_query = """query ($userId: Int, $type: MediaType) { diff --git a/cogs/events.py b/artemis/cogs/events.py similarity index 94% rename from cogs/events.py rename to artemis/cogs/events.py index a13c394..8a55ecb 100644 --- a/cogs/events.py +++ b/artemis/cogs/events.py @@ -11,11 +11,11 @@ from typing import TYPE_CHECKING import discord from discord.ext import commands -from utils import config -from utils.constants import RIP_EMOJIS, TEEHEE_EMOJIS +from ..utils import config +from ..utils.constants import RIP_EMOJIS, TEEHEE_EMOJIS if TYPE_CHECKING: - from bot import Artemis + from ..bot import Artemis log = logging.getLogger("artemis") cmd_log = logging.getLogger("commands") diff --git a/cogs/funhouse.py b/artemis/cogs/funhouse.py similarity index 96% rename from cogs/funhouse.py rename to artemis/cogs/funhouse.py index f4df413..56b72ab 100644 --- a/cogs/funhouse.py +++ b/artemis/cogs/funhouse.py @@ -13,13 +13,13 @@ import pendulum from bs4 import BeautifulSoup from discord.ext import commands -import utils -from utils import config -from utils.common import ArtemisError, read_json, trim -from utils.views import DropdownView, ViewPages +from .. import utils +from ..utils import config +from ..utils.common import ArtemisError, read_json, trim +from ..utils.views import DropdownView, ViewPages if TYPE_CHECKING: - from bot import Artemis + from ..bot import Artemis class Pokemon(TypedDict): diff --git a/cogs/language.py b/artemis/cogs/language.py similarity index 99% rename from cogs/language.py rename to artemis/cogs/language.py index 78973d8..87b173b 100644 --- a/cogs/language.py +++ b/artemis/cogs/language.py @@ -17,22 +17,22 @@ from discord import app_commands from discord.ext import commands from wiktionaryparser import WiktionaryParser -import utils -from utils import iso_639 -from utils.common import ( +from .. import utils +from ..utils import iso_639 +from ..utils.common import ( ArtemisError, Stopwatch, read_json, ) -from utils.constants import ( +from ..utils.constants import ( GT_LANGUAGES_EXTRAS, WIKT_LANGUAGES, ) -from utils.flags import TranslateFlags, TTSFlags, WiktionaryFlags -from utils.views import ViewPages +from ..utils.flags import TranslateFlags, TTSFlags, WiktionaryFlags +from ..utils.views import ViewPages if TYPE_CHECKING: - from bot import Artemis + from ..bot import Artemis # Mod aiogoogletrans GT_LANGUAGES.update(GT_LANGUAGES_EXTRAS) diff --git a/cogs/media.py b/artemis/cogs/media.py similarity index 98% rename from cogs/media.py rename to artemis/cogs/media.py index b4c57a0..93bb764 100644 --- a/cogs/media.py +++ b/artemis/cogs/media.py @@ -21,16 +21,16 @@ from PIL import Image from pycaption import SRTWriter, WebVTTReader from yt_dlp.utils import parse_duration -import utils -from utils.common import ArtemisError -from utils.constants import MAX_DISCORD_SIZE, MAX_LITTERBOX_SIZE, TEMP_DIR -from utils.catbox import CatboxError -from utils.flags import DLFlags -from utils.iso_639 import get_language_name -from utils.views import DropdownView +from .. import utils +from ..utils.common import ArtemisError +from ..utils.constants import MAX_DISCORD_SIZE, MAX_LITTERBOX_SIZE, TEMP_DIR +from ..utils.catbox import CatboxError +from ..utils.flags import DLFlags +from ..utils.iso_639 import get_language_name +from ..utils.views import DropdownView if TYPE_CHECKING: - from bot import Artemis + from ..bot import Artemis yt_dlp.utils.bug_reports_message = lambda: "" diff --git a/cogs/meta.py b/artemis/cogs/meta.py similarity index 95% rename from cogs/meta.py rename to artemis/cogs/meta.py index 7f72631..cd0b258 100644 --- a/cogs/meta.py +++ b/artemis/cogs/meta.py @@ -15,12 +15,12 @@ from discord.ext import commands from discord.utils import format_dt, snowflake_time from humanize import naturalsize -import utils -from utils.common import ArtemisError -from utils.views import BaseView +from .. import utils +from ..utils.common import ArtemisError +from ..utils.views import BaseView if TYPE_CHECKING: - from bot import Artemis + from ..bot import Artemis class Meta(commands.Cog): diff --git a/cogs/mod.py b/artemis/cogs/mod.py similarity index 98% rename from cogs/mod.py rename to artemis/cogs/mod.py index d6c4da9..f25ae74 100644 --- a/cogs/mod.py +++ b/artemis/cogs/mod.py @@ -6,10 +6,10 @@ import discord import pendulum from discord.ext import commands -from utils.common import ArtemisError, parse_short_time +from ..utils.common import ArtemisError, parse_short_time if TYPE_CHECKING: - from bot import Artemis + from ..bot import Artemis class ShortTime(commands.Converter): diff --git a/cogs/music.py b/artemis/cogs/music.py similarity index 98% rename from cogs/music.py rename to artemis/cogs/music.py index bb2f918..810fce8 100644 --- a/cogs/music.py +++ b/artemis/cogs/music.py @@ -10,12 +10,12 @@ from typing import TYPE_CHECKING, Optional import discord from discord.ext import commands -import utils -from cogs.media import DEFAULT_OPTS, run_ytdlp -from utils.views import DropdownView +from .. import utils +from ..utils.views import DropdownView +from .media import DEFAULT_OPTS, run_ytdlp if TYPE_CHECKING: - from bot import Artemis + from ..bot import Artemis async def in_voice_channel(ctx: commands.Context): diff --git a/cogs/ocr.py b/artemis/cogs/ocr.py similarity index 96% rename from cogs/ocr.py rename to artemis/cogs/ocr.py index 4e8a112..834cc54 100644 --- a/cogs/ocr.py +++ b/artemis/cogs/ocr.py @@ -10,14 +10,14 @@ import discord import magic from discord.ext import commands -import utils -from utils.common import ArtemisError -from utils.constants import TESSERACT_LANGUAGES -from utils.flags import Flags, OCRFlags, OCRTranslateFlags -from utils.iso_639 import get_language_name +from .. import utils +from ..utils.common import ArtemisError +from ..utils.constants import TESSERACT_LANGUAGES +from ..utils.flags import Flags, OCRFlags, OCRTranslateFlags +from ..utils.iso_639 import get_language_name if TYPE_CHECKING: - from bot import Artemis + from ..bot import Artemis class OCR(commands.Cog): diff --git a/cogs/owner.py b/artemis/cogs/owner.py similarity index 96% rename from cogs/owner.py rename to artemis/cogs/owner.py index 2841773..f8748e8 100644 --- a/cogs/owner.py +++ b/artemis/cogs/owner.py @@ -13,13 +13,13 @@ from discord.ext import commands from jishaku import codeblocks import pendulum -import utils -from utils.common import ArtemisError -from utils.constants import TEMP_DIR -from utils.views import BaseView +from .. import utils +from ..utils.common import ArtemisError +from ..utils.constants import TEMP_DIR +from ..utils.views import BaseView if TYPE_CHECKING: - from bot import Artemis + from ..bot import Artemis class Owner(commands.Cog, command_attrs={"hidden": True}): diff --git a/cogs/useful.py b/artemis/cogs/useful.py similarity index 96% rename from cogs/useful.py rename to artemis/cogs/useful.py index cc4c5e4..82b4869 100644 --- a/cogs/useful.py +++ b/artemis/cogs/useful.py @@ -19,14 +19,14 @@ from discord.utils import format_dt from humanize import intcomma from PIL import Image -import utils -from utils import enigma2 -from utils.common import ArtemisError -from utils.flags import WikipediaFlags -from utils.views import DropdownView +from .. import utils +from ..utils import enigma2 +from ..utils.common import ArtemisError +from ..utils.flags import WikipediaFlags +from ..utils.views import DropdownView if TYPE_CHECKING: - from bot import Artemis + from ..bot import Artemis class Useful(commands.Cog): diff --git a/utils/__init__.py b/artemis/utils/__init__.py similarity index 100% rename from utils/__init__.py rename to artemis/utils/__init__.py diff --git a/utils/anilist.py b/artemis/utils/anilist.py similarity index 99% rename from utils/anilist.py rename to artemis/utils/anilist.py index 3cdc4bb..29af246 100644 --- a/utils/anilist.py +++ b/artemis/utils/anilist.py @@ -6,7 +6,7 @@ from typing import Any, Optional import discord from anilist.types import Anime, Character, Manga -from utils.common import trim +from .common import trim ANILIST_COLOR = 0x02A9FF FOOTER = "Powered by AniList APIv2" diff --git a/utils/api.py b/artemis/utils/api.py similarity index 97% rename from utils/api.py rename to artemis/utils/api.py index fa3666b..b064d4e 100644 --- a/utils/api.py +++ b/artemis/utils/api.py @@ -4,12 +4,12 @@ import asyncio import io from dataclasses import dataclass from typing import TYPE_CHECKING, Any, Literal -from utils.common import ArtemisError +from .common import ArtemisError import aiohttp if TYPE_CHECKING: - from bot import Artemis + from ..bot import Artemis @dataclass diff --git a/utils/catbox.py b/artemis/utils/catbox.py similarity index 98% rename from utils/catbox.py rename to artemis/utils/catbox.py index 7c2a61e..a0950d6 100644 --- a/utils/catbox.py +++ b/artemis/utils/catbox.py @@ -5,7 +5,7 @@ from typing import Dict, Literal, Optional import aiohttp -from utils.common import is_valid_url +from .common import is_valid_url Expiration = Literal[1, 12, 24, 72] diff --git a/utils/common.py b/artemis/utils/common.py similarity index 99% rename from utils/common.py rename to artemis/utils/common.py index bfcc3fd..3b328cc 100644 --- a/utils/common.py +++ b/artemis/utils/common.py @@ -24,10 +24,10 @@ from discord.ext import commands import feedparser from rapidfuzz import process -import utils +from .. import utils if TYPE_CHECKING: - from bot import Artemis + from ..bot import Artemis # url regex diff --git a/utils/config.py b/artemis/utils/config.py similarity index 95% rename from utils/config.py rename to artemis/utils/config.py index 92f3cca..03bd428 100644 --- a/utils/config.py +++ b/artemis/utils/config.py @@ -1,5 +1,5 @@ import os -from utils.common import read_toml +from .common import read_toml from dataclasses import dataclass diff --git a/utils/constants.py b/artemis/utils/constants.py similarity index 99% rename from utils/constants.py rename to artemis/utils/constants.py index 46c0ae1..11b631d 100644 --- a/utils/constants.py +++ b/artemis/utils/constants.py @@ -1,5 +1,5 @@ from pathlib import Path -from utils.common import read_json +from .common import read_json MAX_DISCORD_SIZE = 25 * 1024**2 MAX_API_SIZE = 200 * 1024**2 diff --git a/utils/enigma2.py b/artemis/utils/enigma2.py similarity index 100% rename from utils/enigma2.py rename to artemis/utils/enigma2.py diff --git a/utils/flags.py b/artemis/utils/flags.py similarity index 100% rename from utils/flags.py rename to artemis/utils/flags.py diff --git a/utils/iso_639.py b/artemis/utils/iso_639.py similarity index 97% rename from utils/iso_639.py rename to artemis/utils/iso_639.py index 7a60d22..b1b80c0 100644 --- a/utils/iso_639.py +++ b/artemis/utils/iso_639.py @@ -6,10 +6,10 @@ from csv import DictReader from io import StringIO from typing import TYPE_CHECKING, Literal, TypedDict -from utils.common import fuzzy_search, read_json +from .common import fuzzy_search, read_json if TYPE_CHECKING: - from bot import Artemis + from ..bot import Artemis class Language(TypedDict): diff --git a/utils/keyv.py b/artemis/utils/keyv.py similarity index 100% rename from utils/keyv.py rename to artemis/utils/keyv.py diff --git a/utils/notifiers.py b/artemis/utils/notifiers.py similarity index 99% rename from utils/notifiers.py rename to artemis/utils/notifiers.py index 6681c05..41b9a24 100644 --- a/utils/notifiers.py +++ b/artemis/utils/notifiers.py @@ -8,7 +8,7 @@ from collections import deque from bs4 import BeautifulSoup if TYPE_CHECKING: - from bot import Artemis + from ..bot import Artemis T = TypeVar("T") diff --git a/utils/reddit.py b/artemis/utils/reddit.py similarity index 99% rename from utils/reddit.py rename to artemis/utils/reddit.py index b4a8a44..d1406e8 100644 --- a/utils/reddit.py +++ b/artemis/utils/reddit.py @@ -12,8 +12,8 @@ from aiohttp import ClientSession from humanize import intcomma from yt_dlp.utils import random_user_agent -import utils -from utils.common import ArtemisError +from . import utils +from .common import ArtemisError class Route: diff --git a/utils/unogs.py b/artemis/utils/unogs.py similarity index 99% rename from utils/unogs.py rename to artemis/utils/unogs.py index b252390..f616ee0 100644 --- a/utils/unogs.py +++ b/artemis/utils/unogs.py @@ -7,7 +7,7 @@ from urllib.parse import quote from aiohttp import ClientSession from yt_dlp.utils import random_user_agent -import utils +from . import utils class uNoGSError(Exception): diff --git a/utils/views.py b/artemis/utils/views.py similarity index 99% rename from utils/views.py rename to artemis/utils/views.py index e2446c8..61728e3 100644 --- a/utils/views.py +++ b/artemis/utils/views.py @@ -3,7 +3,7 @@ from typing import Any, List import discord from discord.ext import commands -from utils.common import trim +from .common import trim class BaseView(discord.ui.View):