From b8629c363fd820de1779bff4910cc9ad10022fd8 Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Sun, 15 Dec 2019 15:03:25 +0100 Subject: [PATCH 1/4] Move src/ to bitbot/ --- .travis.yml | 2 +- {src => bitbot}/Cache.py | 2 +- {src => bitbot}/Config.py | 0 {src => bitbot}/Control.py | 2 +- {src => bitbot}/Database.py | 2 +- {src => bitbot}/EventManager.py | 2 +- {src => bitbot}/Exports.py | 0 {src => bitbot}/IRCBot.py | 4 ++-- {src => bitbot}/IRCBuffer.py | 2 +- {src => bitbot}/IRCChannel.py | 4 ++-- {src => bitbot}/IRCChannels.py | 2 +- {src => bitbot}/IRCLine.py | 2 +- {src => bitbot}/IRCObject.py | 0 {src => bitbot}/IRCServer.py | 4 ++-- {src => bitbot}/IRCSocket.py | 2 +- {src => bitbot}/IRCUser.py | 2 +- {src => bitbot}/LockFile.py | 2 +- {src => bitbot}/Logging.py | 2 +- {src => bitbot}/ModuleManager.py | 2 +- {src => bitbot}/PollHook.py | 0 {src => bitbot}/PollSource.py | 0 {src => bitbot}/Socket.py | 0 {src => bitbot}/Timers.py | 2 +- {src => bitbot}/__init__.py | 0 {src => bitbot}/core_modules/admin.py | 2 +- {src => bitbot}/core_modules/aliases.py | 2 +- {src => bitbot}/core_modules/channel_access.py | 2 +- {src => bitbot}/core_modules/channel_blacklist.py | 2 +- {src => bitbot}/core_modules/channel_keys.py | 2 +- {src => bitbot}/core_modules/check_mode.py | 2 +- {src => bitbot}/core_modules/commands/__init__.py | 2 +- {src => bitbot}/core_modules/commands/outs.py | 2 +- {src => bitbot}/core_modules/config.py | 2 +- {src => bitbot}/core_modules/cron.py | 2 +- {src => bitbot}/core_modules/ctcp.py | 2 +- {src => bitbot}/core_modules/deferred_read.py | 2 +- {src => bitbot}/core_modules/fake_echo.py | 2 +- {src => bitbot}/core_modules/format_activity.py | 2 +- {src => bitbot}/core_modules/help.py | 2 +- {src => bitbot}/core_modules/ignore.py | 2 +- {src => bitbot}/core_modules/ircv3_chathistory.py | 2 +- {src => bitbot}/core_modules/ircv3_echo_message.py | 2 +- .../core_modules/ircv3_labeled_responses.py | 2 +- .../core_modules/ircv3_message_tracking.py | 2 +- {src => bitbot}/core_modules/ircv3_metadata.py | 2 +- {src => bitbot}/core_modules/ircv3_msgid.py | 2 +- {src => bitbot}/core_modules/ircv3_sasl/README.md | 0 {src => bitbot}/core_modules/ircv3_sasl/__init__.py | 2 +- {src => bitbot}/core_modules/ircv3_sasl/scram.py | 0 {src => bitbot}/core_modules/ircv3_server_time.py | 2 +- {src => bitbot}/core_modules/ircv3_sts.py | 2 +- .../core_modules/line_handler/__init__.py | 2 +- {src => bitbot}/core_modules/line_handler/channel.py | 2 +- {src => bitbot}/core_modules/line_handler/core.py | 0 {src => bitbot}/core_modules/line_handler/ircv3.py | 2 +- {src => bitbot}/core_modules/line_handler/message.py | 2 +- {src => bitbot}/core_modules/line_handler/user.py | 2 +- {src => bitbot}/core_modules/modules.py | 2 +- {src => bitbot}/core_modules/more.py | 2 +- {src => bitbot}/core_modules/nick_regain.py | 2 +- {src => bitbot}/core_modules/perform.py | 2 +- {src => bitbot}/core_modules/permissions/__init__.py | 2 +- {src => bitbot}/core_modules/print_activity.py | 2 +- {src => bitbot}/core_modules/proxy.py | 2 +- {src => bitbot}/core_modules/signals.py | 2 +- {src => bitbot}/core_modules/silence.py | 2 +- {src => bitbot}/core_modules/strip_color.py | 2 +- {src => bitbot}/core_modules/strip_otr.py | 2 +- {src => bitbot}/core_modules/throttle.py | 2 +- {src => bitbot}/utils/__init__.py | 0 {src => bitbot}/utils/_consts_256_color.py | 0 {src => bitbot}/utils/cli.py | 0 {src => bitbot}/utils/consts.py | 0 {src => bitbot}/utils/datetime.py | 0 {src => bitbot}/utils/decorators.py | 0 {src => bitbot}/utils/errors.py | 0 {src => bitbot}/utils/http.py | 2 +- {src => bitbot}/utils/irc.py | 0 {src => bitbot}/utils/parse.py | 0 {src => bitbot}/utils/security.py | 0 {src => bitbot}/utils/settings.py | 0 bitbotd | 12 +++++++----- modules/accept_invite.py | 2 +- modules/acronym.py | 2 +- modules/badges.py | 2 +- modules/badwords.py | 2 +- modules/birthday.py | 2 +- modules/bitcoin.py | 2 +- modules/bot_channel.py | 2 +- modules/botlist.py | 2 +- modules/channel_log/__init__.py | 2 +- modules/channel_op.py | 2 +- modules/channel_save.py | 2 +- modules/check_certificate.py | 2 +- modules/coins.py | 2 +- modules/command_suggestions.py | 2 +- modules/define.py | 2 +- modules/dice.py | 2 +- modules/dnsbl/__init__.py | 2 +- modules/duckduckgo.py | 2 +- modules/ducks.py | 2 +- modules/echo.py | 2 +- modules/eightball.py | 2 +- modules/eval_lua.py | 2 +- modules/eval_python.py | 2 +- modules/factoids.py | 2 +- modules/fediverse/__init__.py | 2 +- modules/fediverse/ap_actor.py | 2 +- modules/fediverse/ap_server.py | 2 +- modules/fediverse/ap_utils.py | 2 +- modules/git_webhooks/__init__.py | 2 +- modules/git_webhooks/colors.py | 2 +- modules/git_webhooks/gitea.py | 2 +- modules/git_webhooks/github.py | 2 +- modules/git_webhooks/gitlab.py | 2 +- modules/github.py | 2 +- modules/google.py | 2 +- modules/greeting.py | 2 +- modules/hash.py | 2 +- modules/healthcheck.py | 2 +- modules/highlight_spam.py | 2 +- modules/ids.py | 2 +- modules/imdb.py | 2 +- modules/imgur.py | 2 +- modules/in.py | 2 +- modules/info.py | 2 +- modules/ip_addresses.py | 2 +- modules/ircv3.py | 2 +- modules/ircv3_botignore.py | 2 +- modules/ircv3_multiline.py | 2 +- modules/ircv3_resume.py | 2 +- modules/ircv3_typing.py | 2 +- modules/isup.py | 2 +- modules/karma.py | 2 +- modules/{kick-rejoin.py => kick_rejoin.py} | 2 +- modules/lastfm.py | 2 +- modules/location.py | 2 +- modules/markov.py | 2 +- modules/message_filter.py | 2 +- modules/mumble.py | 2 +- modules/nickserv.py | 2 +- modules/nr.py | 2 +- modules/onionoo.py | 2 +- modules/ops.py | 2 +- modules/pong.py | 2 +- modules/pronouns.py | 2 +- modules/quotes.py | 2 +- modules/random_number.py | 2 +- modules/relay.py | 2 +- modules/rest_api.py | 2 +- modules/rot13.py | 2 +- modules/rss.py | 2 +- modules/rust.py | 2 +- modules/scripts/__init__.py | 2 +- modules/sed.py | 2 +- modules/seen.py | 2 +- modules/shorturl.py | 2 +- modules/soundcloud.py | 2 +- modules/spotify.py | 2 +- modules/stats.py | 2 +- modules/tell.py | 2 +- modules/thesaurus.py | 2 +- modules/title.py | 2 +- modules/todo.py | 2 +- modules/trakt.py | 2 +- modules/translate.py | 2 +- modules/tweets/__init__.py | 2 +- modules/tweets/format.py | 2 +- modules/urbandictionary.py | 2 +- modules/user_time.py | 2 +- modules/vote.py | 2 +- modules/weather.py | 2 +- modules/wikipedia.py | 2 +- modules/wolframalpha.py | 2 +- modules/words.py | 2 +- modules/youtube.py | 2 +- 176 files changed, 164 insertions(+), 162 deletions(-) rename {src => bitbot}/Cache.py (98%) rename {src => bitbot}/Config.py (100%) rename {src => bitbot}/Control.py (98%) rename {src => bitbot}/Database.py (99%) rename {src => bitbot}/EventManager.py (99%) rename {src => bitbot}/Exports.py (100%) rename {src => bitbot}/IRCBot.py (99%) rename {src => bitbot}/IRCBuffer.py (98%) rename {src => bitbot}/IRCChannel.py (98%) rename {src => bitbot}/IRCChannels.py (97%) rename {src => bitbot}/IRCLine.py (99%) rename {src => bitbot}/IRCObject.py (100%) rename {src => bitbot}/IRCServer.py (99%) rename {src => bitbot}/IRCSocket.py (99%) rename {src => bitbot}/IRCUser.py (97%) rename {src => bitbot}/LockFile.py (97%) rename {src => bitbot}/Logging.py (99%) rename {src => bitbot}/ModuleManager.py (99%) rename {src => bitbot}/PollHook.py (100%) rename {src => bitbot}/PollSource.py (100%) rename {src => bitbot}/Socket.py (100%) rename {src => bitbot}/Timers.py (98%) rename {src => bitbot}/__init__.py (100%) rename {src => bitbot}/core_modules/admin.py (99%) rename {src => bitbot}/core_modules/aliases.py (98%) rename {src => bitbot}/core_modules/channel_access.py (99%) rename {src => bitbot}/core_modules/channel_blacklist.py (96%) rename {src => bitbot}/core_modules/channel_keys.py (97%) rename {src => bitbot}/core_modules/check_mode.py (97%) rename {src => bitbot}/core_modules/commands/__init__.py (99%) rename {src => bitbot}/core_modules/commands/outs.py (94%) rename {src => bitbot}/core_modules/config.py (99%) rename {src => bitbot}/core_modules/cron.py (97%) rename {src => bitbot}/core_modules/ctcp.py (95%) rename {src => bitbot}/core_modules/deferred_read.py (93%) rename {src => bitbot}/core_modules/fake_echo.py (89%) rename {src => bitbot}/core_modules/format_activity.py (99%) rename {src => bitbot}/core_modules/help.py (98%) rename {src => bitbot}/core_modules/ignore.py (99%) rename {src => bitbot}/core_modules/ircv3_chathistory.py (97%) rename {src => bitbot}/core_modules/ircv3_echo_message.py (93%) rename {src => bitbot}/core_modules/ircv3_labeled_responses.py (98%) rename {src => bitbot}/core_modules/ircv3_message_tracking.py (94%) rename {src => bitbot}/core_modules/ircv3_metadata.py (91%) rename {src => bitbot}/core_modules/ircv3_msgid.py (96%) rename {src => bitbot}/core_modules/ircv3_sasl/README.md (100%) rename {src => bitbot}/core_modules/ircv3_sasl/__init__.py (99%) rename {src => bitbot}/core_modules/ircv3_sasl/scram.py (100%) rename {src => bitbot}/core_modules/ircv3_server_time.py (90%) rename {src => bitbot}/core_modules/ircv3_sts.py (98%) rename {src => bitbot}/core_modules/line_handler/__init__.py (99%) rename {src => bitbot}/core_modules/line_handler/channel.py (99%) rename {src => bitbot}/core_modules/line_handler/core.py (100%) rename {src => bitbot}/core_modules/line_handler/ircv3.py (99%) rename {src => bitbot}/core_modules/line_handler/message.py (99%) rename {src => bitbot}/core_modules/line_handler/user.py (99%) rename {src => bitbot}/core_modules/modules.py (99%) rename {src => bitbot}/core_modules/more.py (93%) rename {src => bitbot}/core_modules/nick_regain.py (97%) rename {src => bitbot}/core_modules/perform.py (97%) rename {src => bitbot}/core_modules/permissions/__init__.py (99%) rename {src => bitbot}/core_modules/print_activity.py (96%) rename {src => bitbot}/core_modules/proxy.py (96%) rename {src => bitbot}/core_modules/signals.py (97%) rename {src => bitbot}/core_modules/silence.py (98%) rename {src => bitbot}/core_modules/strip_color.py (95%) rename {src => bitbot}/core_modules/strip_otr.py (90%) rename {src => bitbot}/core_modules/throttle.py (93%) rename {src => bitbot}/utils/__init__.py (100%) rename {src => bitbot}/utils/_consts_256_color.py (100%) rename {src => bitbot}/utils/cli.py (100%) rename {src => bitbot}/utils/consts.py (100%) rename {src => bitbot}/utils/datetime.py (100%) rename {src => bitbot}/utils/decorators.py (100%) rename {src => bitbot}/utils/errors.py (100%) rename {src => bitbot}/utils/http.py (99%) rename {src => bitbot}/utils/irc.py (100%) rename {src => bitbot}/utils/parse.py (100%) rename {src => bitbot}/utils/security.py (100%) rename {src => bitbot}/utils/settings.py (100%) rename modules/{kick-rejoin.py => kick_rejoin.py} (97%) diff --git a/.travis.yml b/.travis.yml index ec70dc6b..ae87706f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,4 +9,4 @@ python: install: - pip3 install mypy -r requirements.txt script: - - mypy --ignore-missing-imports src ./bitbotd modules/ + - mypy --ignore-missing-imports bitbot/ modules/ ./bitbotd diff --git a/src/Cache.py b/bitbot/Cache.py similarity index 98% rename from src/Cache.py rename to bitbot/Cache.py index 97e09268..7d906d7b 100644 --- a/src/Cache.py +++ b/bitbot/Cache.py @@ -1,5 +1,5 @@ import hashlib, time, typing, uuid -from src import PollHook +from . import PollHook class Cache(PollHook.PollHook): def __init__(self): diff --git a/src/Config.py b/bitbot/Config.py similarity index 100% rename from src/Config.py rename to bitbot/Config.py diff --git a/src/Control.py b/bitbot/Control.py similarity index 98% rename from src/Control.py rename to bitbot/Control.py index ed5a5351..bbc61a2e 100644 --- a/src/Control.py +++ b/bitbot/Control.py @@ -1,5 +1,5 @@ import json, os, socket, typing -from src import IRCBot, Logging, PollSource +from . import IRCBot, Logging, PollSource class ControlClient(object): def __init__(self, sock: socket.socket): diff --git a/src/Database.py b/bitbot/Database.py similarity index 99% rename from src/Database.py rename to bitbot/Database.py index 683de5a6..2a77ef19 100644 --- a/src/Database.py +++ b/bitbot/Database.py @@ -1,5 +1,5 @@ import json, os, sqlite3, threading, time, typing -from src import Logging, utils +from . import Logging, utils sqlite3.register_converter("BOOLEAN", lambda v: bool(int(v))) diff --git a/src/EventManager.py b/bitbot/EventManager.py similarity index 99% rename from src/EventManager.py rename to bitbot/EventManager.py index 02a0e08f..6bd16411 100644 --- a/src/EventManager.py +++ b/bitbot/EventManager.py @@ -1,5 +1,5 @@ import itertools, time, traceback, typing -from src import Logging, utils +from . import Logging, utils PRIORITY_URGENT = 0 PRIORITY_HIGH = 1 diff --git a/src/Exports.py b/bitbot/Exports.py similarity index 100% rename from src/Exports.py rename to bitbot/Exports.py diff --git a/src/IRCBot.py b/bitbot/IRCBot.py similarity index 99% rename from src/IRCBot.py rename to bitbot/IRCBot.py index 89779f98..34057e4b 100644 --- a/src/IRCBot.py +++ b/bitbot/IRCBot.py @@ -6,8 +6,8 @@ import enum, queue, os, queue, select, socket, sys, threading, time, traceback import typing, uuid -from src import EventManager, Exports, IRCServer, Logging, ModuleManager -from src import PollHook, PollSource, Socket, Timers, utils +from . import EventManager, Exports, IRCServer, Logging, ModuleManager +from . import PollHook, PollSource, Socket, Timers, utils class TriggerResult(enum.Enum): Return = 1 diff --git a/src/IRCBuffer.py b/bitbot/IRCBuffer.py similarity index 98% rename from src/IRCBuffer.py rename to bitbot/IRCBuffer.py index 3e8f5aa9..55b7fdfb 100644 --- a/src/IRCBuffer.py +++ b/bitbot/IRCBuffer.py @@ -1,5 +1,5 @@ import collections, dataclasses, re, typing -from src import IRCBot, IRCServer, utils +from . import IRCBot, IRCServer, utils MAX_LINES = 64 diff --git a/src/IRCChannel.py b/bitbot/IRCChannel.py similarity index 98% rename from src/IRCChannel.py rename to bitbot/IRCChannel.py index 0cdfbc32..ff481ccf 100644 --- a/src/IRCChannel.py +++ b/bitbot/IRCChannel.py @@ -1,6 +1,6 @@ import re, typing, uuid -from src import EventManager, IRCBot, IRCBuffer, IRCLine, IRCObject, IRCServer -from src import IRCUser, utils +from . import EventManager, IRCBot, IRCBuffer, IRCLine, IRCObject, IRCServer +from . import IRCUser, utils RE_MODES = re.compile(r"[-+]\w+") SETTING_CACHE_EXPIRATION = 60.0*5.0 # 5 minutes diff --git a/src/IRCChannels.py b/bitbot/IRCChannels.py similarity index 97% rename from src/IRCChannels.py rename to bitbot/IRCChannels.py index 331706fa..de0d562f 100644 --- a/src/IRCChannels.py +++ b/bitbot/IRCChannels.py @@ -1,5 +1,5 @@ import typing -from src import EventManager, IRCBot, IRCChannel, IRCServer, utils +from . import EventManager, IRCBot, IRCChannel, IRCServer, utils class Channels(object): def __init__(self, server: "IRCServer.Server", bot: "IRCBot.Bot", diff --git a/src/IRCLine.py b/bitbot/IRCLine.py similarity index 99% rename from src/IRCLine.py rename to bitbot/IRCLine.py index 62d9e8b7..13692bf7 100644 --- a/src/IRCLine.py +++ b/bitbot/IRCLine.py @@ -1,5 +1,5 @@ import datetime, typing, uuid -from src import EventManager, IRCObject, utils +from . import EventManager, IRCObject, utils # this should be 510 (RFC1459, 512 with \r\n) but a server BitBot uses is broken LINE_MAX = 470 diff --git a/src/IRCObject.py b/bitbot/IRCObject.py similarity index 100% rename from src/IRCObject.py rename to bitbot/IRCObject.py diff --git a/src/IRCServer.py b/bitbot/IRCServer.py similarity index 99% rename from src/IRCServer.py rename to bitbot/IRCServer.py index 92c82350..315b885c 100644 --- a/src/IRCServer.py +++ b/bitbot/IRCServer.py @@ -1,6 +1,6 @@ import collections, datetime, sys, textwrap, time, typing -from src import EventManager, IRCBot, IRCChannel, IRCChannels, IRCLine -from src import IRCObject, IRCSocket, IRCUser, utils +from . import EventManager, IRCBot, IRCChannel, IRCChannels, IRCLine +from . import IRCObject, IRCSocket, IRCUser, utils READ_TIMEOUT_SECONDS = 120 PING_INTERVAL_SECONDS = 30 diff --git a/src/IRCSocket.py b/bitbot/IRCSocket.py similarity index 99% rename from src/IRCSocket.py rename to bitbot/IRCSocket.py index 7fbae39d..f750c394 100644 --- a/src/IRCSocket.py +++ b/bitbot/IRCSocket.py @@ -1,5 +1,5 @@ import datetime, socket, ssl, time, threading, typing -from src import IRCLine, Logging, IRCObject, utils +from . import IRCLine, Logging, IRCObject, utils THROTTLE_LINES = 4 THROTTLE_SECONDS = 1 diff --git a/src/IRCUser.py b/bitbot/IRCUser.py similarity index 97% rename from src/IRCUser.py rename to bitbot/IRCUser.py index 2e141794..214a5342 100644 --- a/src/IRCUser.py +++ b/bitbot/IRCUser.py @@ -1,5 +1,5 @@ import typing, uuid -from src import IRCBot, IRCChannel, IRCBuffer, IRCObject, IRCServer, utils +from . import IRCBot, IRCChannel, IRCBuffer, IRCObject, IRCServer, utils class User(IRCObject.Object): def __init__(self, nickname: str, id: int, server: "IRCServer.Server", diff --git a/src/LockFile.py b/bitbot/LockFile.py similarity index 97% rename from src/LockFile.py rename to bitbot/LockFile.py index 54ff6284..3725df87 100644 --- a/src/LockFile.py +++ b/bitbot/LockFile.py @@ -1,5 +1,5 @@ import datetime, os -from src import PollHook, utils +from . import PollHook, utils EXPIRATION = 60 # 1 minute diff --git a/src/Logging.py b/bitbot/Logging.py similarity index 99% rename from src/Logging.py rename to bitbot/Logging.py index 61b90402..cfc79146 100644 --- a/src/Logging.py +++ b/bitbot/Logging.py @@ -1,5 +1,5 @@ import datetime, logging, logging.handlers, os, queue, sys, time, typing -from src import utils +from . import utils LEVELS = { "trace": logging.DEBUG-1, diff --git a/src/ModuleManager.py b/bitbot/ModuleManager.py similarity index 99% rename from src/ModuleManager.py rename to bitbot/ModuleManager.py index 10e4fb58..61d172e6 100644 --- a/src/ModuleManager.py +++ b/bitbot/ModuleManager.py @@ -1,6 +1,6 @@ import enum, gc, glob, importlib, importlib.util, io, inspect, os, sys import typing, uuid -from src import Config, EventManager, Exports, IRCBot, Logging, Timers, utils +from . import Config, EventManager, Exports, IRCBot, Logging, Timers, utils class ModuleException(Exception): pass diff --git a/src/PollHook.py b/bitbot/PollHook.py similarity index 100% rename from src/PollHook.py rename to bitbot/PollHook.py diff --git a/src/PollSource.py b/bitbot/PollSource.py similarity index 100% rename from src/PollSource.py rename to bitbot/PollSource.py diff --git a/src/Socket.py b/bitbot/Socket.py similarity index 100% rename from src/Socket.py rename to bitbot/Socket.py diff --git a/src/Timers.py b/bitbot/Timers.py similarity index 98% rename from src/Timers.py rename to bitbot/Timers.py index f913b781..5a5b7b64 100644 --- a/src/Timers.py +++ b/bitbot/Timers.py @@ -1,5 +1,5 @@ import time, typing, uuid -from src import Database, EventManager, Logging, PollHook +from . import Database, EventManager, Logging, PollHook T_CALLBACK = typing.Callable[["Timer"], None] diff --git a/src/__init__.py b/bitbot/__init__.py similarity index 100% rename from src/__init__.py rename to bitbot/__init__.py diff --git a/src/core_modules/admin.py b/bitbot/core_modules/admin.py similarity index 99% rename from src/core_modules/admin.py rename to bitbot/core_modules/admin.py index 364380d4..b88c0f51 100644 --- a/src/core_modules/admin.py +++ b/bitbot/core_modules/admin.py @@ -1,7 +1,7 @@ #--depends-on commands #--depends-on permissions -from src import IRCLine, ModuleManager, utils +from bitbot import IRCLine, ModuleManager, utils class Module(ModuleManager.BaseModule): @utils.hook("received.command.nick", min_args=1) diff --git a/src/core_modules/aliases.py b/bitbot/core_modules/aliases.py similarity index 98% rename from src/core_modules/aliases.py rename to bitbot/core_modules/aliases.py index f1648fea..30cd3a9c 100644 --- a/src/core_modules/aliases.py +++ b/bitbot/core_modules/aliases.py @@ -1,6 +1,6 @@ #--depends-on commands import re -from src import EventManager, ModuleManager, utils +from bitbot import EventManager, ModuleManager, utils REGEX_ARG_NUMBER = re.compile(r"\$(?:(\d+)(-?)|(-))") SETTING_PREFIX = "command-alias-" diff --git a/src/core_modules/channel_access.py b/bitbot/core_modules/channel_access.py similarity index 99% rename from src/core_modules/channel_access.py rename to bitbot/core_modules/channel_access.py index 5502db9f..bbf547ac 100644 --- a/src/core_modules/channel_access.py +++ b/bitbot/core_modules/channel_access.py @@ -2,7 +2,7 @@ #--depends-on commands #--depends-on permissions -from src import ModuleManager, utils +from bitbot import ModuleManager, utils class Module(ModuleManager.BaseModule): _name = "ChanAccess" diff --git a/src/core_modules/channel_blacklist.py b/bitbot/core_modules/channel_blacklist.py similarity index 96% rename from src/core_modules/channel_blacklist.py rename to bitbot/core_modules/channel_blacklist.py index d151bad8..3342ab59 100644 --- a/src/core_modules/channel_blacklist.py +++ b/bitbot/core_modules/channel_blacklist.py @@ -1,4 +1,4 @@ -from src import EventManager, ModuleManager, utils +from bitbot import EventManager, ModuleManager, utils @utils.export("channelset", utils.BoolSetting("blacklist", "Refuse to join a given channel")) diff --git a/src/core_modules/channel_keys.py b/bitbot/core_modules/channel_keys.py similarity index 97% rename from src/core_modules/channel_keys.py rename to bitbot/core_modules/channel_keys.py index 01e3c38f..af6dacaa 100644 --- a/src/core_modules/channel_keys.py +++ b/bitbot/core_modules/channel_keys.py @@ -1,4 +1,4 @@ -from src import ModuleManager, utils +from bitbot import ModuleManager, utils @utils.export("channelset", utils.Setting("key", "Channel key (password)", example="hunter2")) diff --git a/src/core_modules/check_mode.py b/bitbot/core_modules/check_mode.py similarity index 97% rename from src/core_modules/check_mode.py rename to bitbot/core_modules/check_mode.py index 9fe3f464..4ea252c9 100644 --- a/src/core_modules/check_mode.py +++ b/bitbot/core_modules/check_mode.py @@ -1,6 +1,6 @@ #--depends-on commands -from src import ModuleManager, utils +from bitbot import ModuleManager, utils LOWHIGH = { "low": "v", diff --git a/src/core_modules/commands/__init__.py b/bitbot/core_modules/commands/__init__.py similarity index 99% rename from src/core_modules/commands/__init__.py rename to bitbot/core_modules/commands/__init__.py index a7b55f2b..426eb0d4 100644 --- a/src/core_modules/commands/__init__.py +++ b/bitbot/core_modules/commands/__init__.py @@ -2,7 +2,7 @@ #--depends-on permissions import enum, re, shlex, string, traceback, typing -from src import EventManager, IRCLine, ModuleManager, utils +from bitbot import EventManager, IRCLine, ModuleManager, utils from . import outs COMMAND_METHOD = "command-method" diff --git a/src/core_modules/commands/outs.py b/bitbot/core_modules/commands/outs.py similarity index 94% rename from src/core_modules/commands/outs.py rename to bitbot/core_modules/commands/outs.py index e82ceefd..b60ed77c 100644 --- a/src/core_modules/commands/outs.py +++ b/bitbot/core_modules/commands/outs.py @@ -1,5 +1,5 @@ import re -from src import IRCLine, utils +from bitbot import IRCLine, utils class StdOut(object): def __init__(self, prefix): diff --git a/src/core_modules/config.py b/bitbot/core_modules/config.py similarity index 99% rename from src/core_modules/config.py rename to bitbot/core_modules/config.py index 710a5dd6..ffdd2a2e 100644 --- a/src/core_modules/config.py +++ b/bitbot/core_modules/config.py @@ -4,7 +4,7 @@ #--depends-on permissions import enum -from src import ModuleManager, utils +from bitbot import ModuleManager, utils class ConfigInvalidValue(Exception): def __init__(self, message: str=None): diff --git a/src/core_modules/cron.py b/bitbot/core_modules/cron.py similarity index 97% rename from src/core_modules/cron.py rename to bitbot/core_modules/cron.py index fa6b15a3..7a33f867 100644 --- a/src/core_modules/cron.py +++ b/bitbot/core_modules/cron.py @@ -1,5 +1,5 @@ import datetime, time -from src import ModuleManager, utils +from bitbot import ModuleManager, utils class Module(ModuleManager.BaseModule): def on_load(self): diff --git a/src/core_modules/ctcp.py b/bitbot/core_modules/ctcp.py similarity index 95% rename from src/core_modules/ctcp.py rename to bitbot/core_modules/ctcp.py index 678cf833..2b0b6716 100644 --- a/src/core_modules/ctcp.py +++ b/bitbot/core_modules/ctcp.py @@ -1,7 +1,7 @@ #--depends-on config import datetime -from src import IRCBot, ModuleManager, utils +from bitbot import IRCBot, ModuleManager, utils @utils.export("serverset", utils.BoolSetting("ctcp-responses", diff --git a/src/core_modules/deferred_read.py b/bitbot/core_modules/deferred_read.py similarity index 93% rename from src/core_modules/deferred_read.py rename to bitbot/core_modules/deferred_read.py index c891e860..694f53f4 100644 --- a/src/core_modules/deferred_read.py +++ b/bitbot/core_modules/deferred_read.py @@ -1,4 +1,4 @@ -from src import EventManager, ModuleManager, utils +from bitbot import EventManager, ModuleManager, utils # postpone parsing SOME lines until after 001 diff --git a/src/core_modules/fake_echo.py b/bitbot/core_modules/fake_echo.py similarity index 89% rename from src/core_modules/fake_echo.py rename to bitbot/core_modules/fake_echo.py index bb7fbf43..b91710c2 100644 --- a/src/core_modules/fake_echo.py +++ b/bitbot/core_modules/fake_echo.py @@ -1,4 +1,4 @@ -from src import EventManager, IRCLine, ModuleManager, utils +from bitbot import EventManager, IRCLine, ModuleManager, utils class Module(ModuleManager.BaseModule): @utils.hook("raw.send.privmsg", priority=EventManager.PRIORITY_MONITOR) diff --git a/src/core_modules/format_activity.py b/bitbot/core_modules/format_activity.py similarity index 99% rename from src/core_modules/format_activity.py rename to bitbot/core_modules/format_activity.py index 1d93eb94..ad2fdac8 100644 --- a/src/core_modules/format_activity.py +++ b/bitbot/core_modules/format_activity.py @@ -1,5 +1,5 @@ import datetime -from src import EventManager, ModuleManager, utils +from bitbot import EventManager, ModuleManager, utils class Module(ModuleManager.BaseModule): def _color(self, nickname): diff --git a/src/core_modules/help.py b/bitbot/core_modules/help.py similarity index 98% rename from src/core_modules/help.py rename to bitbot/core_modules/help.py index 58659d9d..a38e9bbf 100644 --- a/src/core_modules/help.py +++ b/bitbot/core_modules/help.py @@ -1,5 +1,5 @@ #--depends-on commands -from src import IRCBot, ModuleManager, utils +from bitbot import IRCBot, ModuleManager, utils class Module(ModuleManager.BaseModule): def _get_help(self, hook): diff --git a/src/core_modules/ignore.py b/bitbot/core_modules/ignore.py similarity index 99% rename from src/core_modules/ignore.py rename to bitbot/core_modules/ignore.py index 11ad58f3..5605ea8b 100644 --- a/src/core_modules/ignore.py +++ b/bitbot/core_modules/ignore.py @@ -1,7 +1,7 @@ #--depends-on commands #--depends-on permissions -from src import EventManager, ModuleManager, utils +from bitbot import EventManager, ModuleManager, utils class Module(ModuleManager.BaseModule): def _user_ignored(self, user): diff --git a/src/core_modules/ircv3_chathistory.py b/bitbot/core_modules/ircv3_chathistory.py similarity index 97% rename from src/core_modules/ircv3_chathistory.py rename to bitbot/core_modules/ircv3_chathistory.py index e540673a..7aa0f01c 100644 --- a/src/core_modules/ircv3_chathistory.py +++ b/bitbot/core_modules/ircv3_chathistory.py @@ -1,6 +1,6 @@ #--depends-on ircv3_msgid -from src import ModuleManager, utils +from bitbot import ModuleManager, utils TAG = utils.irc.MessageTag("msgid", "draft/msgid") CHATHISTORY_BATCH = utils.irc.BatchType("chathistory") diff --git a/src/core_modules/ircv3_echo_message.py b/bitbot/core_modules/ircv3_echo_message.py similarity index 93% rename from src/core_modules/ircv3_echo_message.py rename to bitbot/core_modules/ircv3_echo_message.py index 276ac554..0632759a 100644 --- a/src/core_modules/ircv3_echo_message.py +++ b/bitbot/core_modules/ircv3_echo_message.py @@ -1,4 +1,4 @@ -from src import EventManager, ModuleManager, utils +from bitbot import EventManager, ModuleManager, utils CAP = utils.irc.Capability("echo-message", depends_on=["labeled-response"]) diff --git a/src/core_modules/ircv3_labeled_responses.py b/bitbot/core_modules/ircv3_labeled_responses.py similarity index 98% rename from src/core_modules/ircv3_labeled_responses.py rename to bitbot/core_modules/ircv3_labeled_responses.py index 7dd04b5c..41501c9d 100644 --- a/src/core_modules/ircv3_labeled_responses.py +++ b/bitbot/core_modules/ircv3_labeled_responses.py @@ -1,5 +1,5 @@ import uuid -from src import ModuleManager, utils +from bitbot import ModuleManager, utils CAP = utils.irc.Capability(None, "draft/labeled-response-0.2", alias="labeled-response", depends_on=["batch"]) diff --git a/src/core_modules/ircv3_message_tracking.py b/bitbot/core_modules/ircv3_message_tracking.py similarity index 94% rename from src/core_modules/ircv3_message_tracking.py rename to bitbot/core_modules/ircv3_message_tracking.py index 3f4ad88c..93277a92 100644 --- a/src/core_modules/ircv3_message_tracking.py +++ b/bitbot/core_modules/ircv3_message_tracking.py @@ -1,4 +1,4 @@ -from src import ModuleManager, utils +from bitbot import ModuleManager, utils MSGID_TAG = "draft/msgid" READ_TAG = "+draft/read" diff --git a/src/core_modules/ircv3_metadata.py b/bitbot/core_modules/ircv3_metadata.py similarity index 91% rename from src/core_modules/ircv3_metadata.py rename to bitbot/core_modules/ircv3_metadata.py index e0e6d387..7707a3e3 100644 --- a/src/core_modules/ircv3_metadata.py +++ b/bitbot/core_modules/ircv3_metadata.py @@ -1,4 +1,4 @@ -from src import IRCBot, ModuleManager, utils +from bitbot import IRCBot, ModuleManager, utils CAP = utils.irc.Capability(None, "draft/metadata", alias="metadata") diff --git a/src/core_modules/ircv3_msgid.py b/bitbot/core_modules/ircv3_msgid.py similarity index 96% rename from src/core_modules/ircv3_msgid.py rename to bitbot/core_modules/ircv3_msgid.py index f95f9fd4..f38eb02b 100644 --- a/src/core_modules/ircv3_msgid.py +++ b/bitbot/core_modules/ircv3_msgid.py @@ -1,4 +1,4 @@ -from src import ModuleManager, utils +from bitbot import ModuleManager, utils TAG = utils.irc.MessageTag("msgid", "draft/msgid") diff --git a/src/core_modules/ircv3_sasl/README.md b/bitbot/core_modules/ircv3_sasl/README.md similarity index 100% rename from src/core_modules/ircv3_sasl/README.md rename to bitbot/core_modules/ircv3_sasl/README.md diff --git a/src/core_modules/ircv3_sasl/__init__.py b/bitbot/core_modules/ircv3_sasl/__init__.py similarity index 99% rename from src/core_modules/ircv3_sasl/__init__.py rename to bitbot/core_modules/ircv3_sasl/__init__.py index 9f7fac5f..7c75ead9 100644 --- a/src/core_modules/ircv3_sasl/__init__.py +++ b/bitbot/core_modules/ircv3_sasl/__init__.py @@ -1,7 +1,7 @@ #--depends-on config import base64, hashlib, hmac, typing, uuid -from src import ModuleManager, utils +from bitbot import ModuleManager, utils from . import scram CAP = utils.irc.Capability("sasl") diff --git a/src/core_modules/ircv3_sasl/scram.py b/bitbot/core_modules/ircv3_sasl/scram.py similarity index 100% rename from src/core_modules/ircv3_sasl/scram.py rename to bitbot/core_modules/ircv3_sasl/scram.py diff --git a/src/core_modules/ircv3_server_time.py b/bitbot/core_modules/ircv3_server_time.py similarity index 90% rename from src/core_modules/ircv3_server_time.py rename to bitbot/core_modules/ircv3_server_time.py index c9790d95..b1ca138b 100644 --- a/src/core_modules/ircv3_server_time.py +++ b/bitbot/core_modules/ircv3_server_time.py @@ -1,4 +1,4 @@ -from src import ModuleManager, utils +from bitbot import ModuleManager, utils CAP = utils.irc.Capability("server-time") TAG = utils.irc.MessageTag("time") diff --git a/src/core_modules/ircv3_sts.py b/bitbot/core_modules/ircv3_sts.py similarity index 98% rename from src/core_modules/ircv3_sts.py rename to bitbot/core_modules/ircv3_sts.py index aeeac1f1..d854af94 100644 --- a/src/core_modules/ircv3_sts.py +++ b/bitbot/core_modules/ircv3_sts.py @@ -1,5 +1,5 @@ import time -from src import ModuleManager, utils +from bitbot import ModuleManager, utils CAP = utils.irc.Capability("sts", "draft/sts") diff --git a/src/core_modules/line_handler/__init__.py b/bitbot/core_modules/line_handler/__init__.py similarity index 99% rename from src/core_modules/line_handler/__init__.py rename to bitbot/core_modules/line_handler/__init__.py index ddea6fdc..9fcef651 100644 --- a/src/core_modules/line_handler/__init__.py +++ b/bitbot/core_modules/line_handler/__init__.py @@ -1,5 +1,5 @@ import enum -from src import EventManager, IRCLine, ModuleManager, utils +from bitbot import EventManager, IRCLine, ModuleManager, utils from . import channel, core, ircv3, message, user class Module(ModuleManager.BaseModule): diff --git a/src/core_modules/line_handler/channel.py b/bitbot/core_modules/line_handler/channel.py similarity index 99% rename from src/core_modules/line_handler/channel.py rename to bitbot/core_modules/line_handler/channel.py index 91150839..b8f7d85f 100644 --- a/src/core_modules/line_handler/channel.py +++ b/bitbot/core_modules/line_handler/channel.py @@ -1,4 +1,4 @@ -from src import IRCLine, utils +from bitbot import IRCLine, utils def handle_332(events, event): channel = event["server"].channels.get(event["line"].args[1]) diff --git a/src/core_modules/line_handler/core.py b/bitbot/core_modules/line_handler/core.py similarity index 100% rename from src/core_modules/line_handler/core.py rename to bitbot/core_modules/line_handler/core.py diff --git a/src/core_modules/line_handler/ircv3.py b/bitbot/core_modules/line_handler/ircv3.py similarity index 99% rename from src/core_modules/line_handler/ircv3.py rename to bitbot/core_modules/line_handler/ircv3.py index a9d740ed..10d1f107 100644 --- a/src/core_modules/line_handler/ircv3.py +++ b/bitbot/core_modules/line_handler/ircv3.py @@ -1,4 +1,4 @@ -from src import utils +from bitbot import utils CAPABILITIES = [ utils.irc.Capability("multi-prefix"), diff --git a/src/core_modules/line_handler/message.py b/bitbot/core_modules/line_handler/message.py similarity index 99% rename from src/core_modules/line_handler/message.py rename to bitbot/core_modules/line_handler/message.py index fa36dbc2..6f8e69eb 100644 --- a/src/core_modules/line_handler/message.py +++ b/bitbot/core_modules/line_handler/message.py @@ -1,4 +1,4 @@ -from src import IRCBuffer, utils +from bitbot import IRCBuffer, utils def _from_self(server, source): if source: diff --git a/src/core_modules/line_handler/user.py b/bitbot/core_modules/line_handler/user.py similarity index 99% rename from src/core_modules/line_handler/user.py rename to bitbot/core_modules/line_handler/user.py index d1592cd7..85663687 100644 --- a/src/core_modules/line_handler/user.py +++ b/bitbot/core_modules/line_handler/user.py @@ -1,4 +1,4 @@ -from src import utils +from bitbot import utils def handle_311(event): nickname = event["line"].args[1] diff --git a/src/core_modules/modules.py b/bitbot/core_modules/modules.py similarity index 99% rename from src/core_modules/modules.py rename to bitbot/core_modules/modules.py index a93afaea..58bb0fa3 100644 --- a/src/core_modules/modules.py +++ b/bitbot/core_modules/modules.py @@ -1,7 +1,7 @@ #--depends-on commands #--depends-on permissions -from src import ModuleManager, utils +from bitbot import ModuleManager, utils class Module(ModuleManager.BaseModule): def _catch(self, name, func): diff --git a/src/core_modules/more.py b/bitbot/core_modules/more.py similarity index 93% rename from src/core_modules/more.py rename to bitbot/core_modules/more.py index 52849938..2bc3f57a 100644 --- a/src/core_modules/more.py +++ b/bitbot/core_modules/more.py @@ -1,4 +1,4 @@ -from src import EventManager, ModuleManager, utils +from bitbot import EventManager, ModuleManager, utils class Module(ModuleManager.BaseModule): @utils.hook("new.user") diff --git a/src/core_modules/nick_regain.py b/bitbot/core_modules/nick_regain.py similarity index 97% rename from src/core_modules/nick_regain.py rename to bitbot/core_modules/nick_regain.py index cf1dfa48..9842696c 100644 --- a/src/core_modules/nick_regain.py +++ b/bitbot/core_modules/nick_regain.py @@ -1,4 +1,4 @@ -from src import ModuleManager, utils +from bitbot import ModuleManager, utils class Module(ModuleManager.BaseModule): def _done_connecting(self, server): diff --git a/src/core_modules/perform.py b/bitbot/core_modules/perform.py similarity index 97% rename from src/core_modules/perform.py rename to bitbot/core_modules/perform.py index 832cab54..6e1891d8 100644 --- a/src/core_modules/perform.py +++ b/bitbot/core_modules/perform.py @@ -1,7 +1,7 @@ #--depends-on commands #--depends-on permissions -from src import EventManager, IRCLine, ModuleManager, utils +from bitbot import EventManager, IRCLine, ModuleManager, utils class Module(ModuleManager.BaseModule): def _execute(self, server, commands, **kwargs): diff --git a/src/core_modules/permissions/__init__.py b/bitbot/core_modules/permissions/__init__.py similarity index 99% rename from src/core_modules/permissions/__init__.py rename to bitbot/core_modules/permissions/__init__.py index 9872831a..281eba07 100644 --- a/src/core_modules/permissions/__init__.py +++ b/bitbot/core_modules/permissions/__init__.py @@ -2,7 +2,7 @@ import base64, binascii, os import scrypt -from src import ModuleManager, utils +from bitbot import ModuleManager, utils HOSTMASKS_SETTING = "hostmask-account" NO_PERMISSION = "You do not have permission to do that" diff --git a/src/core_modules/print_activity.py b/bitbot/core_modules/print_activity.py similarity index 96% rename from src/core_modules/print_activity.py rename to bitbot/core_modules/print_activity.py index e6a34992..5395ba82 100644 --- a/src/core_modules/print_activity.py +++ b/bitbot/core_modules/print_activity.py @@ -2,7 +2,7 @@ #--depends-on format_activity import datetime -from src import EventManager, ModuleManager, utils +from bitbot import EventManager, ModuleManager, utils @utils.export("botset", utils.BoolSetting("print-motd", "Set whether I print /motd")) diff --git a/src/core_modules/proxy.py b/bitbot/core_modules/proxy.py similarity index 96% rename from src/core_modules/proxy.py rename to bitbot/core_modules/proxy.py index 1bcaebd1..dc5cf4a5 100644 --- a/src/core_modules/proxy.py +++ b/bitbot/core_modules/proxy.py @@ -1,6 +1,6 @@ import typing, urllib.parse import socks -from src import ModuleManager, utils +from bitbot import ModuleManager, utils TYPES = { "socks4": socks.SOCKS4, diff --git a/src/core_modules/signals.py b/bitbot/core_modules/signals.py similarity index 97% rename from src/core_modules/signals.py rename to bitbot/core_modules/signals.py index 921b483c..bbc8c66a 100644 --- a/src/core_modules/signals.py +++ b/bitbot/core_modules/signals.py @@ -1,5 +1,5 @@ import signal, sys -from src import Config, IRCLine, ModuleManager, utils +from bitbot import Config, IRCLine, ModuleManager, utils class Module(ModuleManager.BaseModule): def on_load(self): diff --git a/src/core_modules/silence.py b/bitbot/core_modules/silence.py similarity index 98% rename from src/core_modules/silence.py rename to bitbot/core_modules/silence.py index 42990921..648c4ff9 100644 --- a/src/core_modules/silence.py +++ b/bitbot/core_modules/silence.py @@ -2,7 +2,7 @@ #--depends-on permissions import time -from src import EventManager, ModuleManager, utils +from bitbot import EventManager, ModuleManager, utils SILENCE_TIME = 60*5 # 5 minutes diff --git a/src/core_modules/strip_color.py b/bitbot/core_modules/strip_color.py similarity index 95% rename from src/core_modules/strip_color.py rename to bitbot/core_modules/strip_color.py index 736d066e..476b96bd 100644 --- a/src/core_modules/strip_color.py +++ b/bitbot/core_modules/strip_color.py @@ -1,6 +1,6 @@ #--depends-on config -from src import ModuleManager, utils +from bitbot import ModuleManager, utils @utils.export("serverset", utils.BoolSetting("strip-color", "Set whether I strip colors from my messages on this server")) diff --git a/src/core_modules/strip_otr.py b/bitbot/core_modules/strip_otr.py similarity index 90% rename from src/core_modules/strip_otr.py rename to bitbot/core_modules/strip_otr.py index bdb273a5..c8c51d8a 100644 --- a/src/core_modules/strip_otr.py +++ b/bitbot/core_modules/strip_otr.py @@ -1,4 +1,4 @@ -from src import EventManager, ModuleManager, utils +from bitbot import EventManager, ModuleManager, utils # Strip magic whitespace string from the end of messages. # OTR uses this string to advertise, over plaintext, that the sending user diff --git a/src/core_modules/throttle.py b/bitbot/core_modules/throttle.py similarity index 93% rename from src/core_modules/throttle.py rename to bitbot/core_modules/throttle.py index e204cc34..c4e21fae 100644 --- a/src/core_modules/throttle.py +++ b/bitbot/core_modules/throttle.py @@ -1,4 +1,4 @@ -from src import ModuleManager, utils +from bitbot import ModuleManager, utils def _parse(value): lines, _, seconds = value.partition(":") diff --git a/src/utils/__init__.py b/bitbot/utils/__init__.py similarity index 100% rename from src/utils/__init__.py rename to bitbot/utils/__init__.py diff --git a/src/utils/_consts_256_color.py b/bitbot/utils/_consts_256_color.py similarity index 100% rename from src/utils/_consts_256_color.py rename to bitbot/utils/_consts_256_color.py diff --git a/src/utils/cli.py b/bitbot/utils/cli.py similarity index 100% rename from src/utils/cli.py rename to bitbot/utils/cli.py diff --git a/src/utils/consts.py b/bitbot/utils/consts.py similarity index 100% rename from src/utils/consts.py rename to bitbot/utils/consts.py diff --git a/src/utils/datetime.py b/bitbot/utils/datetime.py similarity index 100% rename from src/utils/datetime.py rename to bitbot/utils/datetime.py diff --git a/src/utils/decorators.py b/bitbot/utils/decorators.py similarity index 100% rename from src/utils/decorators.py rename to bitbot/utils/decorators.py diff --git a/src/utils/errors.py b/bitbot/utils/errors.py similarity index 100% rename from src/utils/errors.py rename to bitbot/utils/errors.py diff --git a/src/utils/http.py b/bitbot/utils/http.py similarity index 99% rename from src/utils/http.py rename to bitbot/utils/http.py index 6fe6be53..6fb91602 100644 --- a/src/utils/http.py +++ b/bitbot/utils/http.py @@ -2,7 +2,7 @@ import typing, urllib.error, urllib.parse, uuid import json as _json import bs4, netifaces, requests, tornado.httpclient -from src import IRCBot, utils +from .. import IRCBot, utils REGEX_URL = re.compile("https?://\S+", re.I) diff --git a/src/utils/irc.py b/bitbot/utils/irc.py similarity index 100% rename from src/utils/irc.py rename to bitbot/utils/irc.py diff --git a/src/utils/parse.py b/bitbot/utils/parse.py similarity index 100% rename from src/utils/parse.py rename to bitbot/utils/parse.py diff --git a/src/utils/security.py b/bitbot/utils/security.py similarity index 100% rename from src/utils/security.py rename to bitbot/utils/security.py diff --git a/src/utils/settings.py b/bitbot/utils/settings.py similarity index 100% rename from src/utils/settings.py rename to bitbot/utils/settings.py diff --git a/bitbotd b/bitbotd index dd032983..894371d0 100755 --- a/bitbotd +++ b/bitbotd @@ -1,15 +1,17 @@ #!/usr/bin/env python3 import sys -import src.utils.consts +import bitbot.utils.consts if sys.version_info < (3, 6): sys.stderr.write("BitBot requires python 3.6.0 or later\n") - sys.exit(src.utils.consts.Exit.WRONGVERSION) + sys.exit(bitbot.utils.consts.Exit.WRONGVERSION) import atexit, argparse, faulthandler, os, platform, time, typing -from src import Cache, Config, Control, Database, EventManager, Exports, IRCBot -from src import LockFile, Logging, ModuleManager, Timers, utils +from bitbot import ( + Cache, Config, Control, Database, EventManager, Exports, IRCBot, + LockFile, Logging, ModuleManager, Timers, utils, +) faulthandler.enable() @@ -123,7 +125,7 @@ events = EventManager.EventRoot(log).wrap() exports = Exports.Exports() timers = Timers.Timers(database, events, log) -core_modules = os.path.join(directory, "src", "core_modules") +core_modules = os.path.join(directory, "bitbot", "core_modules") extra_modules = [os.path.join(directory, "modules")] if args.external: extra_modules.append(os.path.abspath(args.external)) diff --git a/modules/accept_invite.py b/modules/accept_invite.py index 877a95f6..d815cc45 100644 --- a/modules/accept_invite.py +++ b/modules/accept_invite.py @@ -1,6 +1,6 @@ #--depends-on config -from src import ModuleManager, utils +from bitbot import ModuleManager, utils @utils.export("serverset", utils.BoolSetting("accept-invites", "Set whether I accept invites on this server")) diff --git a/modules/acronym.py b/modules/acronym.py index 116317a1..e5497e42 100644 --- a/modules/acronym.py +++ b/modules/acronym.py @@ -1,4 +1,4 @@ -from src import ModuleManager, utils +from bitbot import ModuleManager, utils API = "http://acronyms.silmaril.ie/cgi-bin/xaa?%s" diff --git a/modules/badges.py b/modules/badges.py index 5aa16015..70e97227 100644 --- a/modules/badges.py +++ b/modules/badges.py @@ -1,7 +1,7 @@ #--depends-on commands import datetime, re -from src import ModuleManager, utils +from bitbot import ModuleManager, utils RE_HUMAN_FORMAT = re.compile(r"(\d\d\d\d)-(\d?\d)-(\d?\d)") HUMAN_FORMAT_HELP = "year-month-day (e.g. 2018-12-29)" diff --git a/modules/badwords.py b/modules/badwords.py index d23a4137..897ebe20 100644 --- a/modules/badwords.py +++ b/modules/badwords.py @@ -2,7 +2,7 @@ #--depends-on commands import time -from src import ModuleManager, utils +from bitbot import ModuleManager, utils class Module(ModuleManager.BaseModule): @utils.hook("received.command.badwordslist", channel_only=True) diff --git a/modules/birthday.py b/modules/birthday.py index f21026a0..4c6bdac8 100644 --- a/modules/birthday.py +++ b/modules/birthday.py @@ -2,7 +2,7 @@ #--depends-on config import datetime, typing -from src import ModuleManager, utils +from bitbot import ModuleManager, utils DATE_YEAR_FORMAT = "%Y-%m-%d" DATE_FORMAT = "%d-%b" diff --git a/modules/bitcoin.py b/modules/bitcoin.py index c130d20d..37dbe351 100644 --- a/modules/bitcoin.py +++ b/modules/bitcoin.py @@ -1,6 +1,6 @@ #--depends-on commands -from src import ModuleManager, utils +from bitbot import ModuleManager, utils class Module(ModuleManager.BaseModule): _name = "BTC" diff --git a/modules/bot_channel.py b/modules/bot_channel.py index 32f3f1fc..e96f9034 100644 --- a/modules/bot_channel.py +++ b/modules/bot_channel.py @@ -1,6 +1,6 @@ #--depends-on config -from src import ModuleManager, utils +from bitbot import ModuleManager, utils @utils.export("serverset", utils.Setting("bot-channel", "Set main channel", example="#bitbot")) diff --git a/modules/botlist.py b/modules/botlist.py index 39916918..86ff2206 100644 --- a/modules/botlist.py +++ b/modules/botlist.py @@ -1,4 +1,4 @@ -from src import ModuleManager, utils +from bitbot import ModuleManager, utils COMMANDS = ["!botlist", "!rollcall"] MESSAGE = "Hi! I'm BitBot (https://git.io/bitbot) " diff --git a/modules/channel_log/__init__.py b/modules/channel_log/__init__.py index cffa7271..17f8d5d8 100644 --- a/modules/channel_log/__init__.py +++ b/modules/channel_log/__init__.py @@ -2,7 +2,7 @@ #--depends-on format_activity import datetime, os.path -from src import ModuleManager, utils +from bitbot import ModuleManager, utils ROOT_DIRECTORY = os.path.dirname(os.path.realpath(__file__)) LOGS_DIRECTORY = os.path.join(ROOT_DIRECTORY, "logs") diff --git a/modules/channel_op.py b/modules/channel_op.py index 60149f0c..1492e19c 100644 --- a/modules/channel_op.py +++ b/modules/channel_op.py @@ -3,7 +3,7 @@ #--depends-on commands #--depends-on config -from src import ModuleManager, utils +from bitbot import ModuleManager, utils KICK_REASON = "your behavior is not conducive to the desired environment" diff --git a/modules/channel_save.py b/modules/channel_save.py index d5b69638..74e048a4 100644 --- a/modules/channel_save.py +++ b/modules/channel_save.py @@ -1,4 +1,4 @@ -from src import ModuleManager, utils +from bitbot import ModuleManager, utils BATCH_MAX = 10 diff --git a/modules/check_certificate.py b/modules/check_certificate.py index 6695fc22..a3ab3dd2 100644 --- a/modules/check_certificate.py +++ b/modules/check_certificate.py @@ -1,5 +1,5 @@ import datetime -from src import ModuleManager, utils +from bitbot import ModuleManager, utils import cryptography.x509, cryptography.hazmat.backends class Module(ModuleManager.BaseModule): diff --git a/modules/coins.py b/modules/coins.py index 823d77f4..f5007c95 100644 --- a/modules/coins.py +++ b/modules/coins.py @@ -2,7 +2,7 @@ #--depends-on permissions import datetime, decimal, functools, math, random, re, time -from src import ModuleManager, utils +from bitbot import ModuleManager, utils SIDES = {"heads": 0, "tails": 1} DEFAULT_REDEEM_DELAY = 600 # 600 seconds, 10 minutes diff --git a/modules/command_suggestions.py b/modules/command_suggestions.py index 45cf1758..8fb46b16 100644 --- a/modules/command_suggestions.py +++ b/modules/command_suggestions.py @@ -1,7 +1,7 @@ #--depends-on commands import difflib -from src import ModuleManager, utils +from bitbot import ModuleManager, utils SETTING = utils.BoolSetting("command-suggestions", "Disable/enable command suggestions") diff --git a/modules/define.py b/modules/define.py index 4e83c65c..3299eac8 100644 --- a/modules/define.py +++ b/modules/define.py @@ -2,7 +2,7 @@ #--require-config wordnik-api-key import time -from src import ModuleManager, utils +from bitbot import ModuleManager, utils URL_WORDNIK = "https://api.wordnik.com/v4/word.json/%s/definitions" URL_WORDNIK_RANDOM = "https://api.wordnik.com/v4/words.json/randomWord" diff --git a/modules/dice.py b/modules/dice.py index cf4f53a2..5bd60553 100644 --- a/modules/dice.py +++ b/modules/dice.py @@ -1,7 +1,7 @@ #--depends-on commands import random, re -from src import ModuleManager, utils +from bitbot import ModuleManager, utils ERROR_FORMAT = "Incorrect format! Format must be [number]d[number], e.g. 1d20" RE_DICE = re.compile("^([1-9]\d*)?d([1-9]\d*)((?:[-+][1-9]\d{,2})*)$", re.I) diff --git a/modules/dnsbl/__init__.py b/modules/dnsbl/__init__.py index 495cbd8c..223d79de 100644 --- a/modules/dnsbl/__init__.py +++ b/modules/dnsbl/__init__.py @@ -1,5 +1,5 @@ import ipaddress -from src import ModuleManager, utils +from bitbot import ModuleManager, utils import dns.resolver from . import lists as _lists diff --git a/modules/duckduckgo.py b/modules/duckduckgo.py index f43d2376..bc370346 100644 --- a/modules/duckduckgo.py +++ b/modules/duckduckgo.py @@ -1,6 +1,6 @@ #--depends-on commands -from src import ModuleManager, utils +from bitbot import ModuleManager, utils URL_DDG = "https://api.duckduckgo.com" diff --git a/modules/ducks.py b/modules/ducks.py index d64745e2..dc409a24 100644 --- a/modules/ducks.py +++ b/modules/ducks.py @@ -2,7 +2,7 @@ #--depends-on config import random, re, time -from src import EventManager, ModuleManager, utils +from bitbot import EventManager, ModuleManager, utils DUCK = "・゜゜・。。・゜゜\_o< QUACK!" NO_DUCK = "There was no duck!" diff --git a/modules/echo.py b/modules/echo.py index 1cbf7532..a0e9d5ec 100644 --- a/modules/echo.py +++ b/modules/echo.py @@ -1,6 +1,6 @@ #--depends-on commands -from src import ModuleManager, utils +from bitbot import ModuleManager, utils class Module(ModuleManager.BaseModule): @utils.hook("received.command.echo") diff --git a/modules/eightball.py b/modules/eightball.py index dacbc258..65795977 100644 --- a/modules/eightball.py +++ b/modules/eightball.py @@ -1,7 +1,7 @@ #--depends-on commands import random -from src import ModuleManager, utils +from bitbot import ModuleManager, utils CHOICES = [ "Definitely", diff --git a/modules/eval_lua.py b/modules/eval_lua.py index 6b34c7c2..0b4a24c9 100644 --- a/modules/eval_lua.py +++ b/modules/eval_lua.py @@ -1,7 +1,7 @@ #--depends-on commands import socket -from src import ModuleManager, utils +from bitbot import ModuleManager, utils EVAL_URL = "https://www.lua.org/cgi-bin/demo" diff --git a/modules/eval_python.py b/modules/eval_python.py index 5454b7d3..6e2b2baa 100644 --- a/modules/eval_python.py +++ b/modules/eval_python.py @@ -1,7 +1,7 @@ #--depends-on commands import urllib.parse -from src import ModuleManager, utils +from bitbot import ModuleManager, utils EVAL_URL = "http://dotpy3.herokuapp.com/" diff --git a/modules/factoids.py b/modules/factoids.py index 955f7490..d57f61b3 100644 --- a/modules/factoids.py +++ b/modules/factoids.py @@ -1,7 +1,7 @@ #--depends-on commands import re -from src import ModuleManager, utils +from bitbot import ModuleManager, utils REGEX_FACTOID = re.compile("{!factoid ([^}]+)}", re.I) diff --git a/modules/fediverse/__init__.py b/modules/fediverse/__init__.py index f7375b44..8dd2adfb 100644 --- a/modules/fediverse/__init__.py +++ b/modules/fediverse/__init__.py @@ -1,7 +1,7 @@ #--depends-on rest_api import urllib.parse -from src import IRCBot, ModuleManager, utils +from bitbot import IRCBot, ModuleManager, utils from . import ap_actor, ap_security, ap_server, ap_utils def _format_username(username, instance): diff --git a/modules/fediverse/ap_actor.py b/modules/fediverse/ap_actor.py index 9296453c..6ff8d16b 100644 --- a/modules/fediverse/ap_actor.py +++ b/modules/fediverse/ap_actor.py @@ -1,5 +1,5 @@ import email.utils, urllib.parse -from src import utils +from bitbot import utils from . import ap_security, ap_utils class Actor(object): diff --git a/modules/fediverse/ap_server.py b/modules/fediverse/ap_server.py index d9c644b5..662f6533 100644 --- a/modules/fediverse/ap_server.py +++ b/modules/fediverse/ap_server.py @@ -1,5 +1,5 @@ import base64, binascii, json, os, queue, threading, urllib.parse, uuid -from src import ModuleManager, utils +from bitbot import ModuleManager, utils from . import ap_activities, ap_actor, ap_security, ap_utils diff --git a/modules/fediverse/ap_utils.py b/modules/fediverse/ap_utils.py index 016f2ec3..5b6e7741 100644 --- a/modules/fediverse/ap_utils.py +++ b/modules/fediverse/ap_utils.py @@ -1,6 +1,6 @@ import os.path, urllib.parse import bs4 -from src import IRCBot, utils +from bitbot import IRCBot, utils from . import ap_actor LD_TYPE = ("application/ld+json; " diff --git a/modules/git_webhooks/__init__.py b/modules/git_webhooks/__init__.py index 0dc03310..0e599c36 100644 --- a/modules/git_webhooks/__init__.py +++ b/modules/git_webhooks/__init__.py @@ -4,7 +4,7 @@ #--depends-on shorturl import itertools, json, re, urllib.parse -from src import ModuleManager, utils +from bitbot import ModuleManager, utils from . import colors, gitea, github, gitlab FORM_ENCODED = "application/x-www-form-urlencoded" diff --git a/modules/git_webhooks/colors.py b/modules/git_webhooks/colors.py index 90b2072b..5d9e579a 100644 --- a/modules/git_webhooks/colors.py +++ b/modules/git_webhooks/colors.py @@ -1,4 +1,4 @@ -from src import utils +from bitbot import utils COLOR_BRANCH = utils.consts.ORANGE COLOR_REPO = utils.consts.GREY diff --git a/modules/git_webhooks/gitea.py b/modules/git_webhooks/gitea.py index b408290f..614bf816 100644 --- a/modules/git_webhooks/gitea.py +++ b/modules/git_webhooks/gitea.py @@ -1,4 +1,4 @@ -from src import ModuleManager, utils +from bitbot import ModuleManager, utils from . import colors EVENT_CATEGORIES = { diff --git a/modules/git_webhooks/github.py b/modules/git_webhooks/github.py index 20a3fb74..6f39239d 100644 --- a/modules/git_webhooks/github.py +++ b/modules/git_webhooks/github.py @@ -1,4 +1,4 @@ -from src import ModuleManager, utils +from bitbot import ModuleManager, utils from . import colors COMMIT_URL = "https://github.com/%s/commit/%s" diff --git a/modules/git_webhooks/gitlab.py b/modules/git_webhooks/gitlab.py index 9f481384..58f44a5f 100644 --- a/modules/git_webhooks/gitlab.py +++ b/modules/git_webhooks/gitlab.py @@ -1,4 +1,4 @@ -from src import ModuleManager, utils +from bitbot import ModuleManager, utils from . import colors EVENT_CATEGORIES = { diff --git a/modules/github.py b/modules/github.py index b528ad2b..03c31d84 100644 --- a/modules/github.py +++ b/modules/github.py @@ -2,7 +2,7 @@ #--depends-on config import datetime, math, re -from src import EventManager, ModuleManager, utils +from bitbot import EventManager, ModuleManager, utils COLOR_BRANCH = utils.consts.ORANGE COLOR_REPO = utils.consts.GREY diff --git a/modules/google.py b/modules/google.py index 6cddb8a3..466d14aa 100644 --- a/modules/google.py +++ b/modules/google.py @@ -4,7 +4,7 @@ #--require-config google-search-id import json -from src import ModuleManager, utils +from bitbot import ModuleManager, utils URL_GOOGLESEARCH = "https://www.googleapis.com/customsearch/v1" URL_GOOGLESUGGEST = "http://google.com/complete/search" diff --git a/modules/greeting.py b/modules/greeting.py index 9f5b9b78..809494e2 100644 --- a/modules/greeting.py +++ b/modules/greeting.py @@ -1,6 +1,6 @@ #--depends-on config -from src import ModuleManager, utils +from bitbot import ModuleManager, utils @utils.export("channelset", utils.Setting("greeting", "Set a greeting to send to users when they join", diff --git a/modules/hash.py b/modules/hash.py index 2a9d6ce0..9977adb7 100644 --- a/modules/hash.py +++ b/modules/hash.py @@ -1,7 +1,7 @@ #--depends-on commands import hashlib -from src import ModuleManager, utils +from bitbot import ModuleManager, utils class Module(ModuleManager.BaseModule): @utils.hook("received.command.hash", remove_empty=False) diff --git a/modules/healthcheck.py b/modules/healthcheck.py index 0cf2c72b..02ce7b0b 100644 --- a/modules/healthcheck.py +++ b/modules/healthcheck.py @@ -1,6 +1,6 @@ #--require-config healthcheck-url -from src import ModuleManager, utils +from bitbot import ModuleManager, utils # this module was created for use with https://healthchecks.io/ # but it can be used for any similar URL-pinging service. diff --git a/modules/highlight_spam.py b/modules/highlight_spam.py index 35b5b0fe..66f3d82e 100644 --- a/modules/highlight_spam.py +++ b/modules/highlight_spam.py @@ -1,6 +1,6 @@ #--depends-on config -from src import ModuleManager, utils +from bitbot import ModuleManager, utils @utils.export("channelset", utils.IntSetting("highlight-spam-threshold", "Set the number of nicknames in a message that qualifies as spam")) diff --git a/modules/ids.py b/modules/ids.py index 1738c549..ca49a2e8 100644 --- a/modules/ids.py +++ b/modules/ids.py @@ -1,6 +1,6 @@ #--depends-on commands -from src import ModuleManager, utils +from bitbot import ModuleManager, utils class Module(ModuleManager.BaseModule): _name = "IDs" diff --git a/modules/imdb.py b/modules/imdb.py index 9436768e..ebb38588 100644 --- a/modules/imdb.py +++ b/modules/imdb.py @@ -2,7 +2,7 @@ #--require-config omdbapi-api-key import json -from src import ModuleManager, utils +from bitbot import ModuleManager, utils URL_OMDB = "http://www.omdbapi.com/" URL_IMDBTITLE = "http://imdb.com/title/%s" diff --git a/modules/imgur.py b/modules/imgur.py index 35bb6329..8cdaf3c6 100644 --- a/modules/imgur.py +++ b/modules/imgur.py @@ -3,7 +3,7 @@ #--require-config imgur-api-key import re, datetime -from src import ModuleManager, utils, EventManager +from bitbot import ModuleManager, utils, EventManager REGEX_IMAGE = re.compile("https?://(?:i\.)?imgur.com/(\w+)") REGEX_GALLERY = re.compile("https?://imgur.com/gallery/(\w+)") diff --git a/modules/in.py b/modules/in.py index 1ecac93b..099f94c6 100644 --- a/modules/in.py +++ b/modules/in.py @@ -1,6 +1,6 @@ #--depends-on commands import time -from src import ModuleManager, utils +from bitbot import ModuleManager, utils SECONDS_MAX = utils.datetime.SECONDS_WEEKS*8 SECONDS_MAX_DESCRIPTION = "8 weeks" diff --git a/modules/info.py b/modules/info.py index 6674e39f..d1452733 100644 --- a/modules/info.py +++ b/modules/info.py @@ -1,5 +1,5 @@ import os -from src import IRCBot, ModuleManager, utils +from bitbot import IRCBot, ModuleManager, utils class Module(ModuleManager.BaseModule): @utils.hook("received.command.version") diff --git a/modules/ip_addresses.py b/modules/ip_addresses.py index 73ec061f..337c3002 100644 --- a/modules/ip_addresses.py +++ b/modules/ip_addresses.py @@ -1,7 +1,7 @@ #--depends-on commands import re, socket, typing -from src import ModuleManager, utils +from bitbot import ModuleManager, utils import dns.resolver URL_GEOIP = "http://ip-api.com/json/%s" diff --git a/modules/ircv3.py b/modules/ircv3.py index 84da336e..7f2d2817 100644 --- a/modules/ircv3.py +++ b/modules/ircv3.py @@ -1,4 +1,4 @@ -from src import ModuleManager, utils +from bitbot import ModuleManager, utils @utils.export("serverset", utils.BoolSetting("ircv3-stats", "Whether or not to include the current server in IRCv3 statistics")) diff --git a/modules/ircv3_botignore.py b/modules/ircv3_botignore.py index 968e6fb1..28f9afc1 100644 --- a/modules/ircv3_botignore.py +++ b/modules/ircv3_botignore.py @@ -1,4 +1,4 @@ -from src import EventManager, ModuleManager, utils +from bitbot import EventManager, ModuleManager, utils TAG = utils.irc.MessageTag(None, "inspircd.org/bot") diff --git a/modules/ircv3_multiline.py b/modules/ircv3_multiline.py index c03448af..1088b574 100644 --- a/modules/ircv3_multiline.py +++ b/modules/ircv3_multiline.py @@ -1,4 +1,4 @@ -from src import IRCLine, ModuleManager, utils +from bitbot import IRCLine, ModuleManager, utils CAP = utils.irc.Capability(None, "draft/multiline", alias="multiline") BATCH = utils.irc.BatchType(None, "draft/multiline") diff --git a/modules/ircv3_resume.py b/modules/ircv3_resume.py index e6c5ecf6..0c136f3c 100644 --- a/modules/ircv3_resume.py +++ b/modules/ircv3_resume.py @@ -1,6 +1,6 @@ #--depends-on ircv3_server_time -from src import ModuleManager, utils +from bitbot import ModuleManager, utils CAP = utils.irc.Capability(None, "draft/resume-0.5", alias="resume") diff --git a/modules/ircv3_typing.py b/modules/ircv3_typing.py index ca2fce2b..ca51d2a1 100644 --- a/modules/ircv3_typing.py +++ b/modules/ircv3_typing.py @@ -1,4 +1,4 @@ -from src import IRCLine, ModuleManager, utils +from bitbot import IRCLine, ModuleManager, utils CAP = utils.irc.Capability("message-tags", "draft/message-tags-0.2") diff --git a/modules/isup.py b/modules/isup.py index 761853b9..4a62e9bc 100644 --- a/modules/isup.py +++ b/modules/isup.py @@ -1,5 +1,5 @@ import socket -from src import ModuleManager, utils +from bitbot import ModuleManager, utils class Module(ModuleManager.BaseModule): _name = "isup" diff --git a/modules/karma.py b/modules/karma.py index f728e7e1..18004a52 100644 --- a/modules/karma.py +++ b/modules/karma.py @@ -3,7 +3,7 @@ #--depends-on permissions import re, time -from src import EventManager, ModuleManager, utils +from bitbot import EventManager, ModuleManager, utils KARMA_DELAY_SECONDS = 3 diff --git a/modules/kick-rejoin.py b/modules/kick_rejoin.py similarity index 97% rename from modules/kick-rejoin.py rename to modules/kick_rejoin.py index b2d3d234..5714c1d7 100644 --- a/modules/kick-rejoin.py +++ b/modules/kick_rejoin.py @@ -1,6 +1,6 @@ #--depends-on config -from src import ModuleManager, utils +from bitbot import ModuleManager, utils DELAY = 5 diff --git a/modules/lastfm.py b/modules/lastfm.py index 14e9128a..5691608c 100644 --- a/modules/lastfm.py +++ b/modules/lastfm.py @@ -3,7 +3,7 @@ #--require-config lastfm-api-key from datetime import datetime, timezone -from src import ModuleManager, utils +from bitbot import ModuleManager, utils URL_SCROBBLER = "http://ws.audioscrobbler.com/2.0/" diff --git a/modules/location.py b/modules/location.py index dfef9244..ca755685 100644 --- a/modules/location.py +++ b/modules/location.py @@ -2,7 +2,7 @@ #--require-config opencagedata-api-key import typing -from src import ModuleManager, utils +from bitbot import ModuleManager, utils URL_OPENCAGE = "https://api.opencagedata.com/geocode/v1/json" diff --git a/modules/markov.py b/modules/markov.py index 9ba9d31f..05d20461 100644 --- a/modules/markov.py +++ b/modules/markov.py @@ -1,5 +1,5 @@ import random, re, threading -from src import ModuleManager, utils +from bitbot import ModuleManager, utils NO_MARKOV = "Markov chains not enabled in this channel" diff --git a/modules/message_filter.py b/modules/message_filter.py index 75070662..f8bd727e 100644 --- a/modules/message_filter.py +++ b/modules/message_filter.py @@ -1,7 +1,7 @@ #--depends-on commands import re -from src import ModuleManager, utils +from bitbot import ModuleManager, utils class Module(ModuleManager.BaseModule): _name = "Filter" diff --git a/modules/mumble.py b/modules/mumble.py index 29c8f1ef..8e034188 100644 --- a/modules/mumble.py +++ b/modules/mumble.py @@ -1,5 +1,5 @@ import datetime, socket, struct -from src import ModuleManager, utils +from bitbot import ModuleManager, utils DEFAULT_PORT = 64738 diff --git a/modules/nickserv.py b/modules/nickserv.py index 2b099d77..1f650594 100644 --- a/modules/nickserv.py +++ b/modules/nickserv.py @@ -1,7 +1,7 @@ #--depends-on config import base64 -from src import EventManager, ModuleManager, utils +from bitbot import EventManager, ModuleManager, utils @utils.export("serverset", utils.SensitiveSetting("nickserv-password", "Set the nickserv password for this server", example="hunter2")) diff --git a/modules/nr.py b/modules/nr.py index 7c7303d0..6a5a675d 100644 --- a/modules/nr.py +++ b/modules/nr.py @@ -5,7 +5,7 @@ from datetime import datetime, date from collections import Counter -from src import ModuleManager, utils +from bitbot import ModuleManager, utils from suds.client import Client from suds import WebFault diff --git a/modules/onionoo.py b/modules/onionoo.py index bfd882cd..63b444c3 100644 --- a/modules/onionoo.py +++ b/modules/onionoo.py @@ -2,7 +2,7 @@ #--depends-on config import re -from src import EventManager, ModuleManager, utils +from bitbot import EventManager, ModuleManager, utils REGEX_SHA1_HEX = re.compile("[A-Fa-f0-9]{40}") URL_ONIONOO_DETAILS = "https://onionoo.torproject.org/details" diff --git a/modules/ops.py b/modules/ops.py index 0f354526..77124d2a 100644 --- a/modules/ops.py +++ b/modules/ops.py @@ -1,7 +1,7 @@ #--depends-on commands #--depends-on config -from src import ModuleManager, utils +from bitbot import ModuleManager, utils @utils.export("channelset", utils.BoolSetting("op-ping", "Enable/disable command that highlights all online channel ops")) diff --git a/modules/pong.py b/modules/pong.py index c8ffe612..88cb5180 100644 --- a/modules/pong.py +++ b/modules/pong.py @@ -1,6 +1,6 @@ #--depends-on commands -from src import ModuleManager, utils +from bitbot import ModuleManager, utils class Module(ModuleManager.BaseModule): @utils.hook("received.command.ping") diff --git a/modules/pronouns.py b/modules/pronouns.py index f800dad5..4acb319c 100644 --- a/modules/pronouns.py +++ b/modules/pronouns.py @@ -1,7 +1,7 @@ #--depends-on commands #--depends-on config -from src import ModuleManager, utils +from bitbot import ModuleManager, utils @utils.export("set", utils.Setting("pronouns", "Set your pronouns", example="she/her")) diff --git a/modules/quotes.py b/modules/quotes.py index 7a1c0939..0fc2322a 100644 --- a/modules/quotes.py +++ b/modules/quotes.py @@ -1,7 +1,7 @@ #--depends-on commands import random, time -from src import ModuleManager, utils +from bitbot import ModuleManager, utils @utils.export("channelset", utils.BoolSetting("channel-quotes", "Whether or not quotes added from this channel are kept in this channel")) diff --git a/modules/random_number.py b/modules/random_number.py index 5380908c..7ddee0ca 100644 --- a/modules/random_number.py +++ b/modules/random_number.py @@ -1,7 +1,7 @@ #--depends-on commands import random, uuid -from src import ModuleManager, utils +from bitbot import ModuleManager, utils COIN_SIDES = ["heads", "tails"] diff --git a/modules/relay.py b/modules/relay.py index 9e266043..1c363b65 100644 --- a/modules/relay.py +++ b/modules/relay.py @@ -2,7 +2,7 @@ #--depends-on format_activity #--depends-on permissions -from src import EventManager, ModuleManager, utils +from bitbot import EventManager, ModuleManager, utils @utils.export("channelset", utils.BoolSetting("relay-extras", "Whether or not to relay joins/parts/quits/modes/etc")) diff --git a/modules/rest_api.py b/modules/rest_api.py index 0f3a1d2e..172b4104 100644 --- a/modules/rest_api.py +++ b/modules/rest_api.py @@ -3,7 +3,7 @@ #--depends-on permissions import binascii, http.server, json, os, socket, ssl, threading, urllib.parse -from src import ModuleManager, utils +from bitbot import ModuleManager, utils DEFAULT_PORT = 5001 DEFAULT_PUBLIC_PORT = 5000 diff --git a/modules/rot13.py b/modules/rot13.py index 4048597c..db91ba39 100644 --- a/modules/rot13.py +++ b/modules/rot13.py @@ -1,7 +1,7 @@ #--depends-on commands import codecs -from src import ModuleManager, utils +from bitbot import ModuleManager, utils class Module(ModuleManager.BaseModule): @utils.hook("received.command.rot13") diff --git a/modules/rss.py b/modules/rss.py index cb68a304..0a5e1bea 100644 --- a/modules/rss.py +++ b/modules/rss.py @@ -2,7 +2,7 @@ #--depends-on shorturl import difflib, hashlib, time -from src import ModuleManager, utils +from bitbot import ModuleManager, utils import feedparser RSS_INTERVAL = 60 # 1 minute diff --git a/modules/rust.py b/modules/rust.py index 2b4a2061..377a1135 100644 --- a/modules/rust.py +++ b/modules/rust.py @@ -1,7 +1,7 @@ #--depends-on commands import json, socket -from src import ModuleManager, utils +from bitbot import ModuleManager, utils API_CRATE = "https://crates.io/api/v1/crates/%s" URL_CRATE = "https://crates.io/crates/%s" diff --git a/modules/scripts/__init__.py b/modules/scripts/__init__.py index 39a489a0..b652a612 100644 --- a/modules/scripts/__init__.py +++ b/modules/scripts/__init__.py @@ -1,7 +1,7 @@ #--depends-on commands import glob, json, os, subprocess -from src import IRCObject, ModuleManager, utils +from bitbot import IRCObject, ModuleManager, utils class Module(ModuleManager.BaseModule): def on_load(self): diff --git a/modules/sed.py b/modules/sed.py index f3fe4864..e41bff97 100644 --- a/modules/sed.py +++ b/modules/sed.py @@ -2,7 +2,7 @@ #--depends-on config import re, traceback -from src import ModuleManager, utils +from bitbot import ModuleManager, utils REGEX_SPLIT = re.compile("(? Date: Sun, 15 Dec 2019 15:25:25 +0100 Subject: [PATCH 2/4] Move VERSION to bitbot/ --- bitbot/IRCBot.py | 8 +++++--- VERSION => bitbot/VERSION | 0 setup.py | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) rename VERSION => bitbot/VERSION (100%) diff --git a/bitbot/IRCBot.py b/bitbot/IRCBot.py index 34057e4b..30b9d875 100644 --- a/bitbot/IRCBot.py +++ b/bitbot/IRCBot.py @@ -1,11 +1,13 @@ +import enum, queue, os, queue, select, socket, sys, threading, time, traceback +import typing, uuid + +SRC_DIR = os.path.dirname(__file__) VERSION: str = "" -with open("VERSION", "r") as version_file: +with open(os.path.join(SRC_DIR, "VERSION"), "r") as version_file: VERSION = "v%s" % version_file.read().strip() SOURCE: str = "https://git.io/bitbot" URL: str = "https://bitbot.dev" -import enum, queue, os, queue, select, socket, sys, threading, time, traceback -import typing, uuid from . import EventManager, Exports, IRCServer, Logging, ModuleManager from . import PollHook, PollSource, Socket, Timers, utils diff --git a/VERSION b/bitbot/VERSION similarity index 100% rename from VERSION rename to bitbot/VERSION diff --git a/setup.py b/setup.py index 0618805b..940d5522 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ with open("README.md", "r") as readme_file: long_description = readme_file.read() -with open("VERSION", "r") as version_file: +with open("bitbot/VERSION", "r") as version_file: version = version_file.read().strip() setuptools.setup( From 59df55109f0fbaf626dc68ac4fc09d49746b5273 Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Sun, 15 Dec 2019 16:19:00 +0100 Subject: [PATCH 3/4] Add module discovery via pkg_resources EntryPoints. --- bitbot/ModuleManager.py | 62 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 58 insertions(+), 4 deletions(-) diff --git a/bitbot/ModuleManager.py b/bitbot/ModuleManager.py index 61d172e6..476fe488 100644 --- a/bitbot/ModuleManager.py +++ b/bitbot/ModuleManager.py @@ -1,4 +1,6 @@ -import enum, gc, glob, importlib, importlib.util, io, inspect, os, sys +import enum, gc, glob, importlib, importlib.util, itertools, io, inspect, os +import sys +from pkg_resources import iter_entry_points import typing, uuid from . import Config, EventManager, Exports, IRCBot, Logging, Timers, utils @@ -117,8 +119,11 @@ def __init__(self, def _list_modules(self, directory: str ) -> typing.Dict[str, ModuleDefinition]: modules = [] + for file_module in glob.glob(os.path.join(directory, "*.py")): - modules.append(self.define_module(ModuleType.FILE, file_module)) + # Excluse __init__.py, etc. + if not file_module.rsplit(os.path.sep)[-1].startswith('_'): + modules.append(self.define_module(ModuleType.FILE, file_module)) for directory_module in glob.glob(os.path.join( directory, "*", "__init__.py")): @@ -126,10 +131,50 @@ def _list_modules(self, directory: str directory_module)) return {definition.name: definition for definition in modules} + def _list_installed_modules(self, entry_point_group + ) -> typing.Dict[str, ModuleDefinition]: + """Finds modules installed using a pkg_resources EntryPoint. + + They are installed by `setuptools` by using: + + ``` + setup( + # ... + entry_points={ + 'bitbot.extra_modules': [ + 'module_name = your_package_name.your_module_name:Module', + # ... + } + } + ) + ``` + + (replace only `module_name`, `your_package_name`, and + `your_module_name` on the example above) + """ + modules = {} + + for entry_point in iter_entry_points(entry_point_group): + module_class = entry_point.load() + path = sys.modules[module_class.__module__].__file__ + if path.rsplit(os.path.sep, 1)[-1] == '__init__.py': + type = ModuleType.DIRECTORY + else: + type = ModuleType.FILE + modules[entry_point.name] = self.define_module(type, path) + + return modules + def list_modules(self, whitelist: typing.List[str], blacklist: typing.List[str]) -> typing.Dict[str, ModuleDefinition]: - core_modules = self._list_modules(self._core_modules) - extra_modules: typing.Dict[str, ModuleDefinition] = {} + """Discovers modules that are either installed or in one of the + directories listed by `[self._core_modules] + self._extra_modules`.""" + + core_modules = self._list_installed_modules('bitbot.core_modules') + extra_modules = self._list_installed_modules('bitbot.extra_modules') + + for name, module in self._list_modules(self._core_modules).items(): + core_modules[name] = module for directory in self._extra_modules: for name, module in self._list_modules(directory).items(): @@ -179,6 +224,15 @@ def _module_name(self, path: str) -> str: return os.path.basename(path).rsplit(".py", 1)[0].lower() def _module_paths(self, name: str) -> typing.List[str]: paths = [] + + entry_points = itertools.chain( + iter_entry_points('bitbot.core_modules', name), + iter_entry_points('bitbot.extra_modules', name)) + + for entry_point in entry_points: + module_class = entry_point.load() + paths.append(sys.modules[module_class.__module__].__path__) # type: ignore + for directory in [self._core_modules]+self._extra_modules: paths.append(os.path.join(directory, name)) return paths From f5296fc756b1622578f08acb14aacd525d057fef Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Sun, 15 Dec 2019 16:25:18 +0100 Subject: [PATCH 4/4] Make setup.py install and register modules, as well as VERSION. --- bitbot/core_modules/__init__.py | 0 bitbotd | 2 +- modules/__init__.py | 0 setup.py | 47 ++++++++++++++++++++++++++++++++- 4 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 bitbot/core_modules/__init__.py create mode 100644 modules/__init__.py diff --git a/bitbot/core_modules/__init__.py b/bitbot/core_modules/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/bitbotd b/bitbotd index 894371d0..85ee754f 100755 --- a/bitbotd +++ b/bitbotd @@ -15,7 +15,7 @@ from bitbot import ( faulthandler.enable() -directory = os.path.dirname(os.path.realpath(__file__)) +directory = os.getcwd() home = os.path.expanduser("~") default_data = os.path.join(home, ".bitbot") diff --git a/modules/__init__.py b/modules/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/setup.py b/setup.py index 940d5522..a99ec427 100644 --- a/setup.py +++ b/setup.py @@ -1,3 +1,4 @@ +import os import setuptools with open("README.md", "r") as readme_file: @@ -5,6 +6,36 @@ with open("bitbot/VERSION", "r") as version_file: version = version_file.read().strip() +def list_modules(dirname): + for (module_name, ext) in map(os.path.splitext, os.listdir(dirname)): + if ext in ('', '.py') and not module_name.startswith('_'): + yield module_name + +package_dir = { + # Install bitbot's modules as a separate 'bitbot_modules' package + 'bitbot_modules': 'modules', +} + +for module_package in setuptools.find_packages('modules'): + package_dir[f'bitbot_modules.{module_package}'] = \ + f'modules/{module_package}' + +packages = setuptools.find_packages(exclude=['modules', 'modules.*']) + +for package in package_dir: + packages.append(package) + +entry_points = { + 'bitbot.core_modules': [ + f'{module_name} = bitbot.core_modules.{module_name}:Module' + for module_name in list_modules('bitbot/core_modules') + ], + 'bitbot.extra_modules': [ + f'{module_name} = bitbot_modules.{module_name}:Module' + for module_name in list_modules('modules') + ], +} + setuptools.setup( name="bitbot", version=version, @@ -15,7 +46,21 @@ long_description=long_description, long_description_content_type="text/markdown", url="https://github.com/jesopo/bitbot", - packages=setuptools.find_packages(), + + packages=packages, + include_package_data=True, + package_dir=package_dir, + package_data={ + '': ['VERSION'], + }, + + entry_points=entry_points, + + # We need to read hashflags of modules; and currently this is done by + # opening the modules' files. So it doesn't work in a zip, because + # module files are then not available. + zip_safe=False, + classifiers=[ "Environment :: Console", "Environment :: No Input/Output (Daemon)",