diff --git a/redbot/__init__.py b/redbot/__init__.py index 567d88fc9..18b9b35d7 100644 --- a/redbot/__init__.py +++ b/redbot/__init__.py @@ -1,7 +1,3 @@ -import asyncio as _asyncio -import logging as _logging -import os as _os -import re import re as _re import sys as _sys import warnings as _warnings @@ -16,7 +12,6 @@ from typing import ( Union as _Union, ) -from redbot._log import RedTraceLogger MIN_PYTHON_VERSION = (3, 8, 1) @@ -27,7 +22,7 @@ __all__ = [ "VersionInfo", "_update_event_loop_policy", ] -if _sys.version_info < MIN_PYTHON_VERSION and not _os.getenv("READTHEDOCS", False): +if _sys.version_info < MIN_PYTHON_VERSION: print( f"Python {'.'.join(map(str, MIN_PYTHON_VERSION))} is required to run Red, but you have " f"{_sys.version}! Please update Python." @@ -187,11 +182,13 @@ def _update_event_loop_policy(): if _sys.implementation.name == "cpython": # Let's not force this dependency, uvloop is much faster on cpython try: - import uvloop as _uvloop + import uvloop except ImportError: pass else: - _asyncio.set_event_loop_policy(_uvloop.EventLoopPolicy()) + import asyncio + + asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) def _ensure_no_colorama(): @@ -213,13 +210,17 @@ def _ensure_no_colorama(): def _update_logger_class(): - _logging.setLoggerClass(RedTraceLogger) + from red_commons.logging import maybe_update_logger_class + + maybe_update_logger_class() def _early_init(): + # This function replaces logger so we preferrably (though not necessarily) want that to happen + # before importing anything that calls `logging.getLogger()`, i.e. `asyncio`. + _update_logger_class() _update_event_loop_policy() _ensure_no_colorama() - _update_logger_class() __version__ = "3.5.0.dev1" @@ -231,7 +232,7 @@ _warnings.filterwarnings("ignore", module=r"fuzzywuzzy.*") _warnings.filterwarnings("default", category=DeprecationWarning) # TODO: Rearrange cli flags here and use the value instead of this monkeypatch -if not any(re.match("^-(-debug|d+|-verbose|v+)$", i) for i in _sys.argv): +if not any(_re.match("^-(-debug|d+|-verbose|v+)$", i) for i in _sys.argv): # DEP-WARN # Individual warnings - tracked in https://github.com/Cog-Creators/Red-DiscordBot/issues/3529 # DeprecationWarning: an integer is required (got type float). Implicit conversion to integers using __int__ is deprecated, and may be removed in a future version of Python. diff --git a/redbot/__main__.py b/redbot/__main__.py index e32d54bb2..0eb499c90 100644 --- a/redbot/__main__.py +++ b/redbot/__main__.py @@ -1,4 +1,7 @@ -#!/usr/bin/env python +from redbot import _early_init + +# this needs to be called as early as possible +_early_init() import asyncio import functools @@ -20,14 +23,8 @@ from typing import NoReturn import discord import rich -# Set the event loop policies here so any subsequent `new_event_loop()` -# calls, in particular those as a result of the following imports, -# return the correct loop object. -from redbot import _early_init, __version__ - -_early_init() - import redbot.logging +from redbot import __version__ from redbot.core.bot import Red, ExitCodes, _NoOwnerSet from redbot.core.cli import interactive_config, confirm, parse_cli_flags from redbot.setup import get_data_dir, get_name, save_config diff --git a/redbot/_log.py b/redbot/_log.py deleted file mode 100644 index 62afdcce5..000000000 --- a/redbot/_log.py +++ /dev/null @@ -1,22 +0,0 @@ -import logging as _logging - -__ALL__ = ["VERBOSE", "TRACE", "RedTraceLogger"] - -VERBOSE = _logging.DEBUG - 3 -TRACE = _logging.DEBUG - 5 - - -class RedTraceLogger(_logging.getLoggerClass()): - def __init__(self, name, level=_logging.NOTSET): - super().__init__(name, level) - - _logging.addLevelName(VERBOSE, "VERBOSE") - _logging.addLevelName(TRACE, "TRACE") - - def verbose(self, msg, *args, **kwargs): - if self.isEnabledFor(VERBOSE): - self._log(VERBOSE, msg, args, **kwargs) - - def trace(self, msg, *args, **kwargs): - if self.isEnabledFor(TRACE): - self._log(TRACE, msg, args, **kwargs) diff --git a/redbot/cogs/audio/apis/api_utils.py b/redbot/cogs/audio/apis/api_utils.py index db0e2a02f..8c5c44ae5 100644 --- a/redbot/cogs/audio/apis/api_utils.py +++ b/redbot/cogs/audio/apis/api_utils.py @@ -1,6 +1,5 @@ import datetime import json -import logging from collections import namedtuple from dataclasses import dataclass, field from pathlib import Path @@ -8,6 +7,7 @@ from typing import List, MutableMapping, Optional, Union import discord import lavalink +from red_commons.logging import getLogger from redbot.core.bot import Red from redbot.core.i18n import Translator @@ -16,7 +16,7 @@ from redbot.core.utils.chat_formatting import humanize_list from ..errors import InvalidPlaylistScope, MissingAuthor, MissingGuild from ..utils import PlaylistScope -log = logging.getLogger("red.cogs.Audio.api.utils") +log = getLogger("red.cogs.Audio.api.utils") _ = Translator("Audio", Path(__file__)) diff --git a/redbot/cogs/audio/apis/global_db.py b/redbot/cogs/audio/apis/global_db.py index be609664d..4eed83ad9 100644 --- a/redbot/cogs/audio/apis/global_db.py +++ b/redbot/cogs/audio/apis/global_db.py @@ -1,7 +1,6 @@ import asyncio import contextlib import json -import logging from copy import copy from pathlib import Path @@ -9,6 +8,7 @@ from typing import TYPE_CHECKING, Mapping, Optional, Union import aiohttp from lavalink.rest_api import LoadResult +from red_commons.logging import getLogger from redbot.core import Config from redbot.core.bot import Red @@ -22,7 +22,7 @@ if TYPE_CHECKING: _API_URL = "https://api.redbot.app/" _ = Translator("Audio", Path(__file__)) -log = logging.getLogger("red.cogs.Audio.api.GlobalDB") +log = getLogger("red.cogs.Audio.api.GlobalDB") class GlobalCacheWrapper: diff --git a/redbot/cogs/audio/apis/interface.py b/redbot/cogs/audio/apis/interface.py index 1353446d0..318a855e4 100644 --- a/redbot/cogs/audio/apis/interface.py +++ b/redbot/cogs/audio/apis/interface.py @@ -2,7 +2,6 @@ import asyncio import contextlib import datetime import json -import logging import random import time @@ -13,6 +12,7 @@ from typing import TYPE_CHECKING, Callable, List, MutableMapping, Optional, Tupl import aiohttp import discord import lavalink +from red_commons.logging import getLogger from lavalink.rest_api import LoadResult, LoadType from redbot.core import Config, commands @@ -38,7 +38,7 @@ if TYPE_CHECKING: from .. import Audio _ = Translator("Audio", Path(__file__)) -log = logging.getLogger("red.cogs.Audio.api.AudioAPIInterface") +log = getLogger("red.cogs.Audio.api.AudioAPIInterface") _TOP_100_US = "https://www.youtube.com/playlist?list=PL4fGSI1pDJn5rWitrRWFKdm-ulaFiIyoK" # TODO: Get random from global Cache diff --git a/redbot/cogs/audio/apis/local_db.py b/redbot/cogs/audio/apis/local_db.py index 913eb0eaf..8d5ee91e1 100644 --- a/redbot/cogs/audio/apis/local_db.py +++ b/redbot/cogs/audio/apis/local_db.py @@ -1,14 +1,14 @@ import concurrent import contextlib import datetime -import logging import random import time from pathlib import Path - from types import SimpleNamespace from typing import TYPE_CHECKING, Callable, List, MutableMapping, Optional, Tuple, Union +from red_commons.logging import getLogger + from redbot.core import Config from redbot.core.bot import Red from redbot.core.commands import Cog @@ -59,7 +59,7 @@ if TYPE_CHECKING: from .. import Audio -log = logging.getLogger("red.cogs.Audio.api.LocalDB") +log = getLogger("red.cogs.Audio.api.LocalDB") _ = Translator("Audio", Path(__file__)) _SCHEMA_VERSION = 3 diff --git a/redbot/cogs/audio/apis/persist_queue_wrapper.py b/redbot/cogs/audio/apis/persist_queue_wrapper.py index d03ab831a..acd89a55c 100644 --- a/redbot/cogs/audio/apis/persist_queue_wrapper.py +++ b/redbot/cogs/audio/apis/persist_queue_wrapper.py @@ -1,6 +1,5 @@ import concurrent import json -import logging import time from pathlib import Path @@ -8,6 +7,7 @@ from types import SimpleNamespace from typing import TYPE_CHECKING, List, Union import lavalink +from red_commons.logging import getLogger from redbot.core import Config from redbot.core.bot import Red @@ -33,7 +33,7 @@ from ..sql_statements import ( ) from .api_utils import QueueFetchResult -log = logging.getLogger("red.cogs.Audio.api.PersistQueueWrapper") +log = getLogger("red.cogs.Audio.api.PersistQueueWrapper") _ = Translator("Audio", Path(__file__)) if TYPE_CHECKING: diff --git a/redbot/cogs/audio/apis/playlist_interface.py b/redbot/cogs/audio/apis/playlist_interface.py index e33eb93b7..bd0e48364 100644 --- a/redbot/cogs/audio/apis/playlist_interface.py +++ b/redbot/cogs/audio/apis/playlist_interface.py @@ -1,10 +1,10 @@ -import logging from pathlib import Path from typing import List, MutableMapping, Optional, Union import discord import lavalink +from red_commons.logging import getLogger from redbot.core import Config, commands from redbot.core.bot import Red @@ -16,7 +16,7 @@ from ..utils import PlaylistScope from .api_utils import PlaylistFetchResult, prepare_config_scope, standardize_scope from .playlist_wrapper import PlaylistWrapper -log = logging.getLogger("red.cogs.Audio.api.PlaylistsInterface") +log = getLogger("red.cogs.Audio.api.PlaylistsInterface") _ = Translator("Audio", Path(__file__)) diff --git a/redbot/cogs/audio/apis/playlist_wrapper.py b/redbot/cogs/audio/apis/playlist_wrapper.py index 03b042066..162c0ab61 100644 --- a/redbot/cogs/audio/apis/playlist_wrapper.py +++ b/redbot/cogs/audio/apis/playlist_wrapper.py @@ -1,11 +1,12 @@ import concurrent import json -import logging from pathlib import Path from types import SimpleNamespace from typing import List, MutableMapping, Optional +from red_commons.logging import getLogger + from redbot.core import Config from redbot.core.bot import Red from redbot.core.i18n import Translator @@ -33,7 +34,7 @@ from ..sql_statements import ( from ..utils import PlaylistScope from .api_utils import PlaylistFetchResult -log = logging.getLogger("red.cogs.Audio.api.Playlists") +log = getLogger("red.cogs.Audio.api.Playlists") _ = Translator("Audio", Path(__file__)) diff --git a/redbot/cogs/audio/apis/spotify.py b/redbot/cogs/audio/apis/spotify.py index f7fbfd911..9ca48641b 100644 --- a/redbot/cogs/audio/apis/spotify.py +++ b/redbot/cogs/audio/apis/spotify.py @@ -1,13 +1,13 @@ import base64 import contextlib import json -import logging import time from pathlib import Path from typing import TYPE_CHECKING, List, Mapping, MutableMapping, Optional, Tuple, Union import aiohttp +from red_commons.logging import getLogger from redbot.core import Config from redbot.core.bot import Red @@ -22,7 +22,7 @@ if TYPE_CHECKING: _ = Translator("Audio", Path(__file__)) -log = logging.getLogger("red.cogs.Audio.api.Spotify") +log = getLogger("red.cogs.Audio.api.Spotify") CATEGORY_ENDPOINT = "https://api.spotify.com/v1/browse/categories" diff --git a/redbot/cogs/audio/apis/youtube.py b/redbot/cogs/audio/apis/youtube.py index 3bed6d37f..93bb39438 100644 --- a/redbot/cogs/audio/apis/youtube.py +++ b/redbot/cogs/audio/apis/youtube.py @@ -1,10 +1,10 @@ import json -import logging from pathlib import Path from typing import TYPE_CHECKING, Mapping, Optional, Union import aiohttp +from red_commons.logging import getLogger from redbot.core import Config from redbot.core.bot import Red @@ -16,7 +16,7 @@ from ..errors import YouTubeApiError if TYPE_CHECKING: from .. import Audio -log = logging.getLogger("red.cogs.Audio.api.YouTube") +log = getLogger("red.cogs.Audio.api.YouTube") _ = Translator("Audio", Path(__file__)) SEARCH_ENDPOINT = "https://www.googleapis.com/youtube/v3/search" diff --git a/redbot/cogs/audio/audio_dataclasses.py b/redbot/cogs/audio/audio_dataclasses.py index eb721c819..221d97340 100644 --- a/redbot/cogs/audio/audio_dataclasses.py +++ b/redbot/cogs/audio/audio_dataclasses.py @@ -1,6 +1,5 @@ import contextlib import glob -import logging import ntpath import os import posixpath @@ -21,6 +20,7 @@ from typing import ( from urllib.parse import urlparse import lavalink +from red_commons.logging import getLogger from redbot.core.i18n import Translator from redbot.core.utils import AsyncIter @@ -79,7 +79,7 @@ _PARTIALLY_SUPPORTED_VIDEO_EXT: Tuple[str, ...] = ( _PARTIALLY_SUPPORTED_MUSIC_EXT += _PARTIALLY_SUPPORTED_VIDEO_EXT -log = logging.getLogger("red.cogs.Audio.audio_dataclasses") +log = getLogger("red.cogs.Audio.audio_dataclasses") class LocalPath: diff --git a/redbot/cogs/audio/core/commands/audioset.py b/redbot/cogs/audio/core/commands/audioset.py index 35ebdf8ae..63400f5b6 100644 --- a/redbot/cogs/audio/core/commands/audioset.py +++ b/redbot/cogs/audio/core/commands/audioset.py @@ -1,6 +1,5 @@ import asyncio import contextlib -import logging import os import tarfile from pathlib import Path @@ -9,6 +8,7 @@ from typing import Union import discord import lavalink +from red_commons.logging import getLogger from redbot.core import bank, commands from redbot.core.data_manager import cog_data_path @@ -24,7 +24,7 @@ from ...utils import CacheLevel, PlaylistScope, has_internal_server from ..abc import MixinMeta from ..cog_utils import CompositeMetaClass, PlaylistConverter, __version__ -log = logging.getLogger("red.cogs.Audio.cog.Commands.audioset") +log = getLogger("red.cogs.Audio.cog.Commands.audioset") _ = Translator("Audio", Path(__file__)) diff --git a/redbot/cogs/audio/core/commands/controller.py b/redbot/cogs/audio/core/commands/controller.py index 1135625ff..d9d1d2ca1 100644 --- a/redbot/cogs/audio/core/commands/controller.py +++ b/redbot/cogs/audio/core/commands/controller.py @@ -1,6 +1,5 @@ import asyncio import contextlib -import logging import time from pathlib import Path @@ -8,6 +7,7 @@ from typing import Optional, Union import discord import lavalink +from red_commons.logging import getLogger from redbot.core import commands from redbot.core.i18n import Translator @@ -19,7 +19,7 @@ from redbot.core.utils.predicates import ReactionPredicate from ..abc import MixinMeta from ..cog_utils import CompositeMetaClass -log = logging.getLogger("red.cogs.Audio.cog.Commands.player_controller") +log = getLogger("red.cogs.Audio.cog.Commands.player_controller") _ = Translator("Audio", Path(__file__)) diff --git a/redbot/cogs/audio/core/commands/equalizer.py b/redbot/cogs/audio/core/commands/equalizer.py index 0a0eea477..5df772166 100644 --- a/redbot/cogs/audio/core/commands/equalizer.py +++ b/redbot/cogs/audio/core/commands/equalizer.py @@ -1,11 +1,11 @@ import asyncio import contextlib -import logging import re from pathlib import Path import discord import lavalink +from red_commons.logging import getLogger from redbot.core import commands from redbot.core.i18n import Translator @@ -17,7 +17,7 @@ from ...equalizer import Equalizer from ..abc import MixinMeta from ..cog_utils import CompositeMetaClass -log = logging.getLogger("red.cogs.Audio.cog.Commands.equalizer") +log = getLogger("red.cogs.Audio.cog.Commands.equalizer") _ = Translator("Audio", Path(__file__)) diff --git a/redbot/cogs/audio/core/commands/llset.py b/redbot/cogs/audio/core/commands/llset.py index 9a2fb6dcc..aee9bf6f2 100644 --- a/redbot/cogs/audio/core/commands/llset.py +++ b/redbot/cogs/audio/core/commands/llset.py @@ -1,7 +1,7 @@ -import logging from pathlib import Path import discord +from red_commons.logging import getLogger from redbot.core import commands from redbot.core.i18n import Translator @@ -10,7 +10,7 @@ from redbot.core.utils.chat_formatting import box from ..abc import MixinMeta from ..cog_utils import CompositeMetaClass -log = logging.getLogger("red.cogs.Audio.cog.Commands.lavalink_setup") +log = getLogger("red.cogs.Audio.cog.Commands.lavalink_setup") _ = Translator("Audio", Path(__file__)) diff --git a/redbot/cogs/audio/core/commands/localtracks.py b/redbot/cogs/audio/core/commands/localtracks.py index bf632c3bb..e72f3d4c1 100644 --- a/redbot/cogs/audio/core/commands/localtracks.py +++ b/redbot/cogs/audio/core/commands/localtracks.py @@ -1,10 +1,10 @@ import contextlib -import logging import math from pathlib import Path from typing import MutableMapping import discord +from red_commons.logging import getLogger from redbot.core import commands from redbot.core.i18n import Translator @@ -14,7 +14,7 @@ from ...audio_dataclasses import LocalPath, Query from ..abc import MixinMeta from ..cog_utils import CompositeMetaClass -log = logging.getLogger("red.cogs.Audio.cog.Commands.local_track") +log = getLogger("red.cogs.Audio.cog.Commands.local_track") _ = Translator("Audio", Path(__file__)) diff --git a/redbot/cogs/audio/core/commands/miscellaneous.py b/redbot/cogs/audio/core/commands/miscellaneous.py index ff1d3853d..9b55f5059 100644 --- a/redbot/cogs/audio/core/commands/miscellaneous.py +++ b/redbot/cogs/audio/core/commands/miscellaneous.py @@ -1,12 +1,12 @@ import datetime import heapq -import logging import math import random from pathlib import Path import discord import lavalink +from red_commons.logging import getLogger from redbot.core import commands from redbot.core.i18n import Translator @@ -17,7 +17,7 @@ from redbot.core.utils.menus import DEFAULT_CONTROLS, menu from ..abc import MixinMeta from ..cog_utils import CompositeMetaClass -log = logging.getLogger("red.cogs.Audio.cog.Commands.miscellaneous") +log = getLogger("red.cogs.Audio.cog.Commands.miscellaneous") _ = Translator("Audio", Path(__file__)) diff --git a/redbot/cogs/audio/core/commands/player.py b/redbot/cogs/audio/core/commands/player.py index 828392f40..c2fc13d52 100644 --- a/redbot/cogs/audio/core/commands/player.py +++ b/redbot/cogs/audio/core/commands/player.py @@ -1,5 +1,4 @@ import contextlib -import logging import math import time from pathlib import Path @@ -8,6 +7,7 @@ from typing import MutableMapping import discord import lavalink +from red_commons.logging import getLogger from discord.embeds import EmptyEmbed from redbot.core import commands @@ -26,7 +26,7 @@ from ...errors import ( from ..abc import MixinMeta from ..cog_utils import CompositeMetaClass -log = logging.getLogger("red.cogs.Audio.cog.Commands.player") +log = getLogger("red.cogs.Audio.cog.Commands.player") _ = Translator("Audio", Path(__file__)) diff --git a/redbot/cogs/audio/core/commands/playlists.py b/redbot/cogs/audio/core/commands/playlists.py index d5c7e6074..de0dfd5cd 100644 --- a/redbot/cogs/audio/core/commands/playlists.py +++ b/redbot/cogs/audio/core/commands/playlists.py @@ -1,6 +1,5 @@ import asyncio import json -import logging import math import os import tarfile @@ -12,6 +11,7 @@ from typing import cast import discord import lavalink +from red_commons.logging import getLogger from redbot.core import commands from redbot.core.commands import UserInputOptional @@ -31,7 +31,7 @@ from ...utils import PlaylistScope from ..abc import MixinMeta from ..cog_utils import CompositeMetaClass, LazyGreedyConverter, PlaylistConverter -log = logging.getLogger("red.cogs.Audio.cog.Commands.playlist") +log = getLogger("red.cogs.Audio.cog.Commands.playlist") _ = Translator("Audio", Path(__file__)) diff --git a/redbot/cogs/audio/core/commands/queue.py b/redbot/cogs/audio/core/commands/queue.py index 9d3b0e06d..de9ce9b59 100644 --- a/redbot/cogs/audio/core/commands/queue.py +++ b/redbot/cogs/audio/core/commands/queue.py @@ -1,6 +1,5 @@ import asyncio import contextlib -import logging import math from pathlib import Path @@ -8,6 +7,7 @@ from typing import MutableMapping, Optional import discord import lavalink +from red_commons.logging import getLogger from redbot.core import commands from redbot.core.i18n import Translator @@ -25,7 +25,7 @@ from redbot.core.utils.predicates import ReactionPredicate from ..abc import MixinMeta from ..cog_utils import CompositeMetaClass -log = logging.getLogger("red.cogs.Audio.cog.Commands.queue") +log = getLogger("red.cogs.Audio.cog.Commands.queue") _ = Translator("Audio", Path(__file__)) diff --git a/redbot/cogs/audio/core/events/__init__.py b/redbot/cogs/audio/core/events/__init__.py index e502a0d5f..21d56ce2e 100644 --- a/redbot/cogs/audio/core/events/__init__.py +++ b/redbot/cogs/audio/core/events/__init__.py @@ -1,4 +1,4 @@ -import logging +from red_commons.logging import getLogger from ..cog_utils import CompositeMetaClass from .cog import AudioEvents @@ -6,7 +6,7 @@ from .dpy import DpyEvents from .lavalink import LavalinkEvents from .red import RedEvents -log = logging.getLogger("red.cogs.Audio.cog.Events") +log = getLogger("red.cogs.Audio.cog.Events") class Events(AudioEvents, DpyEvents, LavalinkEvents, RedEvents, metaclass=CompositeMetaClass): diff --git a/redbot/cogs/audio/core/events/cog.py b/redbot/cogs/audio/core/events/cog.py index 5b83064f4..1a01cd256 100644 --- a/redbot/cogs/audio/core/events/cog.py +++ b/redbot/cogs/audio/core/events/cog.py @@ -1,6 +1,5 @@ import asyncio import datetime -import logging import time from pathlib import Path @@ -8,6 +7,7 @@ from typing import Optional import discord import lavalink +from red_commons.logging import getLogger from redbot.core import commands from redbot.core.i18n import Translator @@ -17,7 +17,7 @@ from ...utils import PlaylistScope from ..abc import MixinMeta from ..cog_utils import CompositeMetaClass -log = logging.getLogger("red.cogs.Audio.cog.Events.audio") +log = getLogger("red.cogs.Audio.cog.Events.audio") _ = Translator("Audio", Path(__file__)) diff --git a/redbot/cogs/audio/core/events/dpy.py b/redbot/cogs/audio/core/events/dpy.py index e8f73b69a..c4d172c7e 100644 --- a/redbot/cogs/audio/core/events/dpy.py +++ b/redbot/cogs/audio/core/events/dpy.py @@ -1,6 +1,5 @@ import asyncio import contextlib -import logging import re from collections import OrderedDict @@ -9,6 +8,7 @@ from typing import Final, Pattern import discord import lavalink +from red_commons.logging import getLogger from aiohttp import ClientConnectorError from discord.ext.commands import CheckFailure @@ -22,7 +22,7 @@ from ..abc import MixinMeta from ..cog_utils import HUMANIZED_PERM, CompositeMetaClass from ...utils import task_callback_trace -log = logging.getLogger("red.cogs.Audio.cog.Events.dpy") +log = getLogger("red.cogs.Audio.cog.Events.dpy") _ = Translator("Audio", Path(__file__)) RE_CONVERSION: Final[Pattern] = re.compile('Converting to "(.*)" failed for parameter "(.*)".') diff --git a/redbot/cogs/audio/core/events/lavalink.py b/redbot/cogs/audio/core/events/lavalink.py index 99d24e82e..4f3586f4e 100644 --- a/redbot/cogs/audio/core/events/lavalink.py +++ b/redbot/cogs/audio/core/events/lavalink.py @@ -1,7 +1,6 @@ import asyncio import contextlib import datetime -import logging from pathlib import Path from typing import Dict @@ -9,6 +8,7 @@ import discord import lavalink from discord.backoff import ExponentialBackoff from discord.gateway import DiscordWebSocket +from red_commons.logging import getLogger from redbot.core.i18n import Translator, set_contextual_locales_from_guild from ...errors import DatabaseError, TrackEnqueueError @@ -16,8 +16,8 @@ from ..abc import MixinMeta from ..cog_utils import CompositeMetaClass from ...utils import task_callback_trace -log = logging.getLogger("red.cogs.Audio.cog.Events.lavalink") -ws_audio_log = logging.getLogger("red.Audio.WS.Audio") +log = getLogger("red.cogs.Audio.cog.Events.lavalink") +ws_audio_log = getLogger("red.Audio.WS.Audio") _ = Translator("Audio", Path(__file__)) diff --git a/redbot/cogs/audio/core/events/red.py b/redbot/cogs/audio/core/events/red.py index ae373ce29..cb27dcf4d 100644 --- a/redbot/cogs/audio/core/events/red.py +++ b/redbot/cogs/audio/core/events/red.py @@ -1,14 +1,15 @@ import asyncio -import logging from pathlib import Path from typing import Literal, Mapping +from red_commons.logging import getLogger + from redbot.core import commands from redbot.core.i18n import Translator from ..abc import MixinMeta from ..cog_utils import CompositeMetaClass -log = logging.getLogger("red.cogs.Audio.cog.Events.red") +log = getLogger("red.cogs.Audio.cog.Events.red") _ = Translator("Audio", Path(__file__)) diff --git a/redbot/cogs/audio/core/tasks/__init__.py b/redbot/cogs/audio/core/tasks/__init__.py index 64757740a..0f30d6bb6 100644 --- a/redbot/cogs/audio/core/tasks/__init__.py +++ b/redbot/cogs/audio/core/tasks/__init__.py @@ -1,11 +1,11 @@ -import logging +from red_commons.logging import getLogger from ..cog_utils import CompositeMetaClass from .lavalink import LavalinkTasks from .player import PlayerTasks from .startup import StartUpTasks -log = logging.getLogger("red.cogs.Audio.cog.Tasks") +log = getLogger("red.cogs.Audio.cog.Tasks") class Tasks(LavalinkTasks, PlayerTasks, StartUpTasks, metaclass=CompositeMetaClass): diff --git a/redbot/cogs/audio/core/tasks/lavalink.py b/redbot/cogs/audio/core/tasks/lavalink.py index c7e9a75bd..288eb7114 100644 --- a/redbot/cogs/audio/core/tasks/lavalink.py +++ b/redbot/cogs/audio/core/tasks/lavalink.py @@ -1,8 +1,8 @@ import asyncio -import logging from pathlib import Path import lavalink +from red_commons.logging import getLogger from redbot.core import data_manager from redbot.core.i18n import Translator @@ -12,7 +12,7 @@ from ..abc import MixinMeta from ..cog_utils import CompositeMetaClass from ...utils import task_callback_debug -log = logging.getLogger("red.cogs.Audio.cog.Tasks.lavalink") +log = getLogger("red.cogs.Audio.cog.Tasks.lavalink") _ = Translator("Audio", Path(__file__)) diff --git a/redbot/cogs/audio/core/tasks/player.py b/redbot/cogs/audio/core/tasks/player.py index 684b79ab3..f2040171d 100644 --- a/redbot/cogs/audio/core/tasks/player.py +++ b/redbot/cogs/audio/core/tasks/player.py @@ -1,11 +1,11 @@ import asyncio -import logging import time from pathlib import Path from typing import Dict import lavalink +from red_commons.logging import getLogger from redbot.core.i18n import Translator from redbot.core.utils import AsyncIter @@ -13,7 +13,7 @@ from redbot.core.utils import AsyncIter from ..abc import MixinMeta from ..cog_utils import CompositeMetaClass -log = logging.getLogger("red.cogs.Audio.cog.Tasks.player") +log = getLogger("red.cogs.Audio.cog.Tasks.player") _ = Translator("Audio", Path(__file__)) diff --git a/redbot/cogs/audio/core/tasks/startup.py b/redbot/cogs/audio/core/tasks/startup.py index db5991d92..bd54e01da 100644 --- a/redbot/cogs/audio/core/tasks/startup.py +++ b/redbot/cogs/audio/core/tasks/startup.py @@ -1,11 +1,11 @@ import asyncio import itertools -import logging from pathlib import Path from typing import Optional import lavalink +from red_commons.logging import getLogger from redbot.core.data_manager import cog_data_path from redbot.core.i18n import Translator @@ -19,7 +19,7 @@ from ...utils import task_callback_debug from ..abc import MixinMeta from ..cog_utils import _SCHEMA_VERSION, CompositeMetaClass -log = logging.getLogger("red.cogs.Audio.cog.Tasks.startup") +log = getLogger("red.cogs.Audio.cog.Tasks.startup") _ = Translator("Audio", Path(__file__)) diff --git a/redbot/cogs/audio/core/utilities/equalizer.py b/redbot/cogs/audio/core/utilities/equalizer.py index 6c77d2a78..52ad5a2d9 100644 --- a/redbot/cogs/audio/core/utilities/equalizer.py +++ b/redbot/cogs/audio/core/utilities/equalizer.py @@ -1,11 +1,11 @@ import asyncio import contextlib -import logging from typing import List import discord import lavalink +from red_commons.logging import getLogger from redbot.core import commands from redbot.core.utils.chat_formatting import box @@ -14,7 +14,7 @@ from ...equalizer import Equalizer from ..abc import MixinMeta from ..cog_utils import CompositeMetaClass -log = logging.getLogger("red.cogs.Audio.cog.Utilities.equalizer") +log = getLogger("red.cogs.Audio.cog.Utilities.equalizer") class EqualizerUtilities(MixinMeta, metaclass=CompositeMetaClass): diff --git a/redbot/cogs/audio/core/utilities/formatting.py b/redbot/cogs/audio/core/utilities/formatting.py index 3e976197d..72820ff74 100644 --- a/redbot/cogs/audio/core/utilities/formatting.py +++ b/redbot/cogs/audio/core/utilities/formatting.py @@ -1,4 +1,3 @@ -import logging import math import re import time @@ -8,6 +7,7 @@ from typing import List, Optional import discord import lavalink +from red_commons.logging import getLogger from discord.embeds import EmptyEmbed from redbot.core import commands @@ -19,7 +19,7 @@ from ...audio_dataclasses import LocalPath, Query from ..abc import MixinMeta from ..cog_utils import CompositeMetaClass -log = logging.getLogger("red.cogs.Audio.cog.Utilities.formatting") +log = getLogger("red.cogs.Audio.cog.Utilities.formatting") _ = Translator("Audio", Path(__file__)) RE_SQUARE = re.compile(r"[\[\]]") diff --git a/redbot/cogs/audio/core/utilities/local_tracks.py b/redbot/cogs/audio/core/utilities/local_tracks.py index 09cd3688b..51e64f6d6 100644 --- a/redbot/cogs/audio/core/utilities/local_tracks.py +++ b/redbot/cogs/audio/core/utilities/local_tracks.py @@ -1,11 +1,11 @@ import contextlib -import logging from pathlib import Path from typing import List, Union import discord import lavalink +from red_commons.logging import getLogger from fuzzywuzzy import process from redbot.core import commands @@ -17,7 +17,7 @@ from ...errors import TrackEnqueueError from ..abc import MixinMeta from ..cog_utils import CompositeMetaClass -log = logging.getLogger("red.cogs.Audio.cog.Utilities.local_tracks") +log = getLogger("red.cogs.Audio.cog.Utilities.local_tracks") _ = Translator("Audio", Path(__file__)) diff --git a/redbot/cogs/audio/core/utilities/miscellaneous.py b/redbot/cogs/audio/core/utilities/miscellaneous.py index 72bc4a142..39626d608 100644 --- a/redbot/cogs/audio/core/utilities/miscellaneous.py +++ b/redbot/cogs/audio/core/utilities/miscellaneous.py @@ -3,7 +3,6 @@ import contextlib import datetime import functools import json -import logging import re import struct from pathlib import Path @@ -12,6 +11,7 @@ from typing import Any, Final, Mapping, MutableMapping, Pattern, Union, cast import discord import lavalink from discord.embeds import EmptyEmbed +from red_commons.logging import getLogger from redbot.core import bank, commands from redbot.core.commands import Context @@ -24,7 +24,7 @@ from ...utils import PlaylistScope, task_callback_trace from ..abc import MixinMeta from ..cog_utils import CompositeMetaClass, DataReader -log = logging.getLogger("red.cogs.Audio.cog.Utilities.miscellaneous") +log = getLogger("red.cogs.Audio.cog.Utilities.miscellaneous") _ = Translator("Audio", Path(__file__)) _RE_TIME_CONVERTER: Final[Pattern] = re.compile(r"(?:(\d+):)?([0-5]?[0-9]):([0-5][0-9])") _prefer_lyrics_cache = {} diff --git a/redbot/cogs/audio/core/utilities/parsers.py b/redbot/cogs/audio/core/utilities/parsers.py index 0b06bea33..cd94645b3 100644 --- a/redbot/cogs/audio/core/utilities/parsers.py +++ b/redbot/cogs/audio/core/utilities/parsers.py @@ -1,15 +1,15 @@ -import logging import re import struct from typing import Final, Optional import aiohttp +from red_commons.logging import getLogger from ..abc import MixinMeta from ..cog_utils import CompositeMetaClass -log = logging.getLogger("red.cogs.Audio.cog.Utilities.Parsing") +log = getLogger("red.cogs.Audio.cog.Utilities.Parsing") STREAM_TITLE: Final[re.Pattern] = re.compile(br"StreamTitle='([^']*)';") diff --git a/redbot/cogs/audio/core/utilities/player.py b/redbot/cogs/audio/core/utilities/player.py index d905d6988..835a265ed 100644 --- a/redbot/cogs/audio/core/utilities/player.py +++ b/redbot/cogs/audio/core/utilities/player.py @@ -1,4 +1,3 @@ -import logging import time from pathlib import Path @@ -7,6 +6,7 @@ from typing import List, Optional, Tuple, Union import aiohttp import discord import lavalink +from red_commons.logging import getLogger from discord.embeds import EmptyEmbed from redbot.core import commands @@ -20,7 +20,7 @@ from ...utils import Notifier from ..abc import MixinMeta from ..cog_utils import CompositeMetaClass -log = logging.getLogger("red.cogs.Audio.cog.Utilities.player") +log = getLogger("red.cogs.Audio.cog.Utilities.player") _ = Translator("Audio", Path(__file__)) diff --git a/redbot/cogs/audio/core/utilities/playlists.py b/redbot/cogs/audio/core/utilities/playlists.py index a07723dab..12744b2dc 100644 --- a/redbot/cogs/audio/core/utilities/playlists.py +++ b/redbot/cogs/audio/core/utilities/playlists.py @@ -2,7 +2,6 @@ import asyncio import contextlib import datetime import json -import logging import math import random import time @@ -14,6 +13,7 @@ import aiohttp import discord import lavalink from discord.embeds import EmptyEmbed +from red_commons.logging import getLogger from redbot.core import commands from redbot.core.i18n import Translator @@ -29,7 +29,7 @@ from ...utils import Notifier, PlaylistScope from ..abc import MixinMeta from ..cog_utils import CompositeMetaClass -log = logging.getLogger("red.cogs.Audio.cog.Utilities.playlists") +log = getLogger("red.cogs.Audio.cog.Utilities.playlists") _ = Translator("Audio", Path(__file__)) CURRATED_DATA = ( "https://gist.githubusercontent.com/aikaterna/4b5de6c420cd6f12b83cb895ca2de16a/raw/json" diff --git a/redbot/cogs/audio/core/utilities/queue.py b/redbot/cogs/audio/core/utilities/queue.py index 06ae4e0d3..db710931a 100644 --- a/redbot/cogs/audio/core/utilities/queue.py +++ b/redbot/cogs/audio/core/utilities/queue.py @@ -1,4 +1,3 @@ -import logging import math from pathlib import Path @@ -6,6 +5,7 @@ from typing import List, Tuple import discord import lavalink +from red_commons.logging import getLogger from fuzzywuzzy import process from redbot.core import commands @@ -17,7 +17,7 @@ from ...audio_dataclasses import LocalPath, Query from ..abc import MixinMeta from ..cog_utils import CompositeMetaClass -log = logging.getLogger("red.cogs.Audio.cog.Utilities.queue") +log = getLogger("red.cogs.Audio.cog.Utilities.queue") _ = Translator("Audio", Path(__file__)) diff --git a/redbot/cogs/audio/core/utilities/validation.py b/redbot/cogs/audio/core/utilities/validation.py index 47d1c4c3a..c2a1af19d 100644 --- a/redbot/cogs/audio/core/utilities/validation.py +++ b/redbot/cogs/audio/core/utilities/validation.py @@ -1,10 +1,10 @@ -import logging import re from typing import Final, List, Optional, Pattern, Set, Union from urllib.parse import urlparse import discord +from red_commons.logging import getLogger from redbot.core import Config from redbot.core.commands import Context @@ -13,7 +13,7 @@ from ...audio_dataclasses import Query from ..abc import MixinMeta from ..cog_utils import CompositeMetaClass -log = logging.getLogger("red.cogs.Audio.cog.Utilities.validation") +log = getLogger("red.cogs.Audio.cog.Utilities.validation") _RE_YT_LIST_PLAYLIST: Final[Pattern] = re.compile( r"^(https?://)?(www\.)?(youtube\.com|youtu\.?be)(/playlist\?).*(list=)(.*)(&|$)" diff --git a/redbot/cogs/audio/manager.py b/redbot/cogs/audio/manager.py index 9d37efb71..8c01b7bfd 100644 --- a/redbot/cogs/audio/manager.py +++ b/redbot/cogs/audio/manager.py @@ -2,7 +2,6 @@ import asyncio import asyncio.subprocess # disables for # https://github.com/PyCQA/pylint/issues/1469 import itertools import json -import logging import pathlib import platform import re @@ -13,6 +12,7 @@ from typing import ClassVar, Final, List, Optional, Pattern, Tuple import aiohttp import rich.progress +from red_commons.logging import getLogger from redbot.core import data_manager from redbot.core.i18n import Translator @@ -21,7 +21,7 @@ from .errors import LavalinkDownloadFailed from .utils import task_callback_exception _ = Translator("Audio", pathlib.Path(__file__)) -log = logging.getLogger("red.Audio.manager") +log = getLogger("red.Audio.manager") JAR_VERSION: Final[str] = "3.4.0" JAR_BUILD: Final[int] = 1275 LAVALINK_DOWNLOAD_URL: Final[str] = ( diff --git a/redbot/cogs/audio/utils.py b/redbot/cogs/audio/utils.py index 6597109e6..4b9f741b8 100644 --- a/redbot/cogs/audio/utils.py +++ b/redbot/cogs/audio/utils.py @@ -1,6 +1,5 @@ import asyncio import contextlib -import logging import time from enum import Enum, unique @@ -8,11 +7,12 @@ from pathlib import Path from typing import MutableMapping import discord +from red_commons.logging import getLogger from redbot.core import commands from redbot.core.i18n import Translator -log = logging.getLogger("red.cogs.Audio.task.callback") +log = getLogger("red.cogs.Audio.task.callback") _ = Translator("Audio", Path(__file__)) diff --git a/redbot/core/utils/_internal_utils.py b/redbot/core/utils/_internal_utils.py index d23be45a3..d6c1ed381 100644 --- a/redbot/core/utils/_internal_utils.py +++ b/redbot/core/utils/_internal_utils.py @@ -35,8 +35,9 @@ import pkg_resources from fuzzywuzzy import fuzz, process from rich.progress import ProgressColumn from rich.progress_bar import ProgressBar +from red_commons.logging import VERBOSE, TRACE -from redbot import VersionInfo, _log +from redbot import VersionInfo from redbot.core import data_manager from redbot.core.utils.chat_formatting import box @@ -366,7 +367,7 @@ def cli_level_to_log_level(level: int) -> int: elif level == 1: log_level = logging.DEBUG elif level == 2: - log_level = _log.VERBOSE + log_level = VERBOSE else: - log_level = _log.TRACE + log_level = TRACE return log_level diff --git a/redbot/setup.py b/redbot/setup.py index 89b4f2993..7d716fefb 100644 --- a/redbot/setup.py +++ b/redbot/setup.py @@ -1,4 +1,8 @@ -#!/usr/bin/env python3 +from redbot import _early_init + +# this needs to be called as early as possible +_early_init() + import asyncio import json import logging @@ -9,10 +13,6 @@ from copy import deepcopy from pathlib import Path from typing import Dict, Any, Optional, Union -from redbot import _early_init - -_early_init() - import appdirs import click diff --git a/setup.cfg b/setup.cfg index d783283a6..2c4dea355 100644 --- a/setup.cfg +++ b/setup.cfg @@ -66,6 +66,7 @@ install_requires = python-Levenshtein-wheels==0.13.2 pytz==2021.1 PyYAML==5.4.1 + Red-Commons==1.0.0 Red-Lavalink==0.9.0 rich==10.9.0 schema==0.7.4 diff --git a/tools/primary_deps.ini b/tools/primary_deps.ini index 04ccdfe19..f0617fb0c 100644 --- a/tools/primary_deps.ini +++ b/tools/primary_deps.ini @@ -22,6 +22,7 @@ install_requires = python-dateutil python-Levenshtein-wheels PyYAML + Red-Commons Red-Lavalink rich schema