Skip to content

Commit

Permalink
bots: Indicate source of bot (from source/module/registry) upon startup.
Browse files Browse the repository at this point in the history
Amend tests to include new parameter.
  • Loading branch information
neiljp authored and PIG208 committed Jul 20, 2021
1 parent 33d20dc commit 80d6727
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 6 deletions.
11 changes: 8 additions & 3 deletions zulip_bots/zulip_bots/finder.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,22 @@ class DuplicateRegisteredBotName(Exception):
pass


def import_module_from_zulip_bot_registry(name: str) -> Any:
def import_module_from_zulip_bot_registry(name: str) -> Tuple[str, Any]:
registered_bots = entrypoints.get_group_all("zulip_bots.registry")
matching_bots = [bot for bot in registered_bots if bot.name == name]

if len(matching_bots) == 1: # Unique matching entrypoint
return matching_bots[0].load()
bot = matching_bots[0]
if bot.distro is not None:
return "{}: {}".format(bot.distro.name, bot.distro.version), bot.load()
else:
print(bot)
return "editable package: {}".format(bot.module_name), bot.load()

if len(matching_bots) > 1:
raise DuplicateRegisteredBotName(name)

return None # no matches in registry
return "", None # no matches in registry


def resolve_bot_path(name: str) -> Optional[Tuple[Path, str]]:
Expand Down
3 changes: 2 additions & 1 deletion zulip_bots/zulip_bots/lib.py
Original file line number Diff line number Diff line change
Expand Up @@ -443,6 +443,7 @@ def run_message_handler_for_bot(
config_file: str,
bot_config_file: str,
bot_name: str,
bot_source: str,
) -> Any:
"""
lib_module is of type Any, since it can contain any bot's
Expand Down Expand Up @@ -473,7 +474,7 @@ def run_message_handler_for_bot(
message_handler = prepare_message_handler(bot_name, restricted_client, lib_module)

if not quiet:
print("Running {} Bot:".format(bot_details["name"]))
print("Running {} Bot (from {}):".format(bot_details["name"], bot_source))
if bot_details["description"] != "":
print("\n\t{}".format(bot_details["description"]))
if hasattr(message_handler, "usage"):
Expand Down
5 changes: 4 additions & 1 deletion zulip_bots/zulip_bots/run.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,16 +132,18 @@ def main() -> None:
)
print(dep_err_msg.format(bot_name=bot_name, deps_list=deps_list))
sys.exit(1)
bot_source = "source"
else:
lib_module = finder.import_module_by_name(args.bot)
if lib_module:
bot_name = lib_module.__name__
bot_source = "named module"
if args.provision:
print("ERROR: Could not load bot's module for '{}'. Exiting now.")
sys.exit(1)
else:
try:
lib_module = finder.import_module_from_zulip_bot_registry(args.bot)
bot_source, lib_module = finder.import_module_from_zulip_bot_registry(args.bot)
except finder.DuplicateRegisteredBotName:
print(
"ERROR: Found duplicate entries for bot name in zulip bot registry. Exiting now."
Expand Down Expand Up @@ -170,6 +172,7 @@ def main() -> None:
bot_config_file=args.bot_config_file,
quiet=args.quiet,
bot_name=bot_name,
bot_source=bot_source,
)
except NoBotConfigException:
print(
Expand Down
1 change: 1 addition & 0 deletions zulip_bots/zulip_bots/tests/test_lib.py
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,7 @@ def test_message(message, flags):
config_file=None,
bot_config_file=None,
bot_name="testbot",
bot_source="bot code location",
)

def test_upload_file(self):
Expand Down
8 changes: 7 additions & 1 deletion zulip_bots/zulip_bots/tests/test_run.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@ class TestDefaultArguments(TestCase):

our_dir = os.path.dirname(__file__)
path_to_bot = os.path.abspath(os.path.join(our_dir, "../bots/giphy/giphy.py"))
packaged_bot_entrypoint = entrypoints.EntryPoint("packaged_bot", "module_name", None)
packaged_bot_distro = entrypoints.Distribution("packaged-bot-source", "1.0.0")
packaged_bot_entrypoint = entrypoints.EntryPoint(
"packaged_bot", "module_name", None, distro=packaged_bot_distro
)

@patch("sys.argv", ["zulip-run-bot", "giphy", "--config-file", "/foo/bar/baz.conf"])
@patch("zulip_bots.run.run_message_handler_for_bot")
Expand All @@ -32,6 +35,7 @@ def test_argument_parsing_with_bot_name(
config_file="/foo/bar/baz.conf",
bot_config_file=None,
lib_module=mock.ANY,
bot_source="source",
quiet=False,
)

Expand All @@ -48,6 +52,7 @@ def test_argument_parsing_with_bot_path(
config_file="/foo/bar/baz.conf",
bot_config_file=None,
lib_module=mock.ANY,
bot_source="source",
quiet=False,
)

Expand All @@ -69,6 +74,7 @@ def test_argument_parsing_with_zulip_bot_registry(
config_file="/foo/bar/baz.conf",
bot_config_file=None,
lib_module=mock.ANY,
bot_source="packaged-bot-source: 1.0.0",
quiet=False,
)

Expand Down

0 comments on commit 80d6727

Please sign in to comment.