From 3c66894aff10fc4a4868d755b5ad4ea473ba1563 Mon Sep 17 00:00:00 2001 From: Marco Burstein Date: Sat, 9 Dec 2017 13:55:55 -0800 Subject: [PATCH] incrementor: Clean up type annotation/conversion. This adds mypy annotations, and we also make the type conversions in `handle_message` be a little more clear. (@showell helped clean up this commit a bit) --- tools/run-mypy | 2 ++ .../bots/incrementor/incrementor.py | 20 ++++++++++++------- .../bots/incrementor/test_incrementor.py | 2 +- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/tools/run-mypy b/tools/run-mypy index f5bd5e6..17a6b3a 100755 --- a/tools/run-mypy +++ b/tools/run-mypy @@ -46,6 +46,8 @@ force_include = [ "zulip_bots/zulip_bots/bots/googlesearch/test_googlesearch.py", "zulip_bots/zulip_bots/bots/help/help.py", "zulip_bots/zulip_bots/bots/help/test_help.py", + "zulip_bots/zulip_bots/bots/incrementor/incrementor.py", + "zulip_bots/zulip_bots/bots/incrementor/test_incrementor.py", "zulip_bots/zulip_bots/bots/virtual_fs/virtual_fs.py", "zulip_bots/zulip_bots/bots/virtual_fs/test_virtual_fs.py", "zulip_bots/zulip_bots/bots/weather/test_weather.py", diff --git a/zulip_bots/zulip_bots/bots/incrementor/incrementor.py b/zulip_bots/zulip_bots/bots/incrementor/incrementor.py index dbdcb3d..6a0994e 100644 --- a/zulip_bots/zulip_bots/bots/incrementor/incrementor.py +++ b/zulip_bots/zulip_bots/bots/incrementor/incrementor.py @@ -1,5 +1,6 @@ # See readme.md for instructions on running this code. +from zulip_bots.lib import ExternalBotHandler class IncrementorHandler(object): META = { @@ -7,7 +8,7 @@ class IncrementorHandler(object): 'description': 'Example bot to test the update_message() function.', } - def usage(self): + def usage(self) -> str: return ''' This is a boilerplate bot that makes use of the update_message function. For the first @-mention, it initially @@ -15,23 +16,28 @@ class IncrementorHandler(object): is @-mentioned, this number will be incremented in the same message. ''' - def initialize(self, bot_handler): + def initialize(self, bot_handler: ExternalBotHandler) -> None: storage = bot_handler.storage if not storage.contains('number') or not storage.contains('message_id'): storage.put('number', 0) storage.put('message_id', None) - def handle_message(self, message, bot_handler): + def handle_message(self, message: dict, bot_handler: ExternalBotHandler) -> None: storage = bot_handler.storage num = storage.get('number') - storage.put('number', num + 1) + + # num should already be an int, but we do `int()` to force an + # explicit type check + num = int(num) + 1 + + storage.put('number', num) if storage.get('message_id') is None: - result = bot_handler.send_reply(message, str(storage.get('number'))) + result = bot_handler.send_reply(message, str(num)) storage.put('message_id', result['id']) else: bot_handler.update_message(dict( - message_id = storage.get('message_id'), - content = str(storage.get('number')) + message_id=storage.get('message_id'), + content=str(num) )) diff --git a/zulip_bots/zulip_bots/bots/incrementor/test_incrementor.py b/zulip_bots/zulip_bots/bots/incrementor/test_incrementor.py index 34e85b8..6d34480 100644 --- a/zulip_bots/zulip_bots/bots/incrementor/test_incrementor.py +++ b/zulip_bots/zulip_bots/bots/incrementor/test_incrementor.py @@ -10,7 +10,7 @@ from zulip_bots.test_lib import ( class TestIncrementorBot(StubBotTestCase): bot_name = "incrementor" - def test_bot(self): + def test_bot(self) -> None: bot = get_bot_message_handler(self.bot_name) bot_handler = StubBotHandler()