mypy: Prohibit unreachable code.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg 2021-03-04 15:17:09 -08:00
parent 30f241a126
commit 717a549f4b
9 changed files with 15 additions and 11 deletions

View file

@ -11,3 +11,4 @@ show_traceback = True
warn_no_return = True warn_no_return = True
warn_redundant_casts = True warn_redundant_casts = True
warn_unused_ignores = True warn_unused_ignores = True
warn_unreachable = True

View file

@ -1,3 +1,5 @@
from typing import Optional
# Change these values to configure authentication for your codebase account # Change these values to configure authentication for your codebase account
# Note that this is the Codebase API Username, found in the Settings page # Note that this is the Codebase API Username, found in the Settings page
# for your account # for your account
@ -23,14 +25,14 @@ ZULIP_TICKETS_STREAM_NAME = "tickets"
# If properly installed, the Zulip API should be in your import # If properly installed, the Zulip API should be in your import
# path, but if not, set a custom path below # path, but if not, set a custom path below
ZULIP_API_PATH = None ZULIP_API_PATH: Optional[str] = None
# Set this to your Zulip API server URI # Set this to your Zulip API server URI
ZULIP_SITE = "https://zulip.example.com" ZULIP_SITE = "https://zulip.example.com"
# If you wish to log to a file rather than stdout/stderr, # If you wish to log to a file rather than stdout/stderr,
# please fill this out your desired path # please fill this out your desired path
LOG_FILE = None LOG_FILE: Optional[str] = None
# This file is used to resume this mirror in case the script shuts down. # This file is used to resume this mirror in case the script shuts down.
# It is required and needs to be writeable. # It is required and needs to be writeable.

View file

@ -293,8 +293,7 @@ def check_permissions() -> None:
sys.stderr.write(str(e)) sys.stderr.write(str(e))
if __name__ == "__main__": if __name__ == "__main__":
if not isinstance(config.RESUME_FILE, str): assert isinstance(config.RESUME_FILE, str), "RESUME_FILE path not given; refusing to continue"
sys.stderr.write("RESUME_FILE path not given; refusing to continue")
check_permissions() check_permissions()
if config.LOG_FILE: if config.LOG_FILE:
logging.basicConfig(filename=config.LOG_FILE, level=logging.WARNING) logging.basicConfig(filename=config.LOG_FILE, level=logging.WARNING)

View file

@ -41,7 +41,7 @@ def format_commit_message(author: Text, subject: Text, commit_id: Text) -> Text:
## If properly installed, the Zulip API should be in your import ## If properly installed, the Zulip API should be in your import
## path, but if not, set a custom path below ## path, but if not, set a custom path below
ZULIP_API_PATH = None ZULIP_API_PATH: Optional[str] = None
# Set this to your Zulip server's API URI # Set this to your Zulip server's API URI
ZULIP_SITE = "https://zulip.example.com" ZULIP_SITE = "https://zulip.example.com"

View file

@ -12,7 +12,7 @@ ZULIP_IGNORE_MISSING_STREAM = False
# Set this to point at a p4web installation to get changelist IDs as links # Set this to point at a p4web installation to get changelist IDs as links
# P4_WEB = "https://p4web.example.com" # P4_WEB = "https://p4web.example.com"
P4_WEB = None P4_WEB: Optional[str] = None
# commit_notice_destination() lets you customize where commit notices # commit_notice_destination() lets you customize where commit notices
# are sent to with the full power of a Python function. # are sent to with the full power of a Python function.
@ -45,4 +45,4 @@ def commit_notice_destination(path: Text, changelist: int) -> Optional[Dict[Text
## If properly installed, the Zulip API should be in your import ## If properly installed, the Zulip API should be in your import
## path, but if not, set a custom path below ## path, but if not, set a custom path below
ZULIP_API_PATH = None ZULIP_API_PATH: Optional[str] = None

View file

@ -29,7 +29,7 @@ def commit_notice_destination(path: Text, commit: Text) -> Optional[Dict[Text, T
## If properly installed, the Zulip API should be in your import ## If properly installed, the Zulip API should be in your import
## path, but if not, set a custom path below ## path, but if not, set a custom path below
ZULIP_API_PATH = None ZULIP_API_PATH: Optional[str] = None
# Set this to your Zulip server's API URI # Set this to your Zulip server's API URI
ZULIP_SITE = "https://zulip.example.com" ZULIP_SITE = "https://zulip.example.com"

View file

@ -1,5 +1,7 @@
# See zulip_trac.py for installation and configuration instructions # See zulip_trac.py for installation and configuration instructions
from typing import Optional
# Change these constants to configure the plugin: # Change these constants to configure the plugin:
ZULIP_USER = "trac-bot@example.com" ZULIP_USER = "trac-bot@example.com"
ZULIP_API_KEY = "0123456789abcdef0123456789abcdef" ZULIP_API_KEY = "0123456789abcdef0123456789abcdef"
@ -23,7 +25,7 @@ TRAC_NOTIFY_FIELDS = ["description", "summary", "resolution", "comment", "owner"
## If properly installed, the Zulip API should be in your import ## If properly installed, the Zulip API should be in your import
## path, but if not, set a custom path below ## path, but if not, set a custom path below
ZULIP_API_PATH = None ZULIP_API_PATH: Optional[str] = None
# Set this to your Zulip API server URI # Set this to your Zulip API server URI
ZULIP_SITE = "https://zulip.example.com" ZULIP_SITE = "https://zulip.example.com"

View file

@ -15,7 +15,7 @@ class VirtualFsHandler:
def usage(self) -> str: def usage(self) -> str:
return get_help() return get_help()
def handle_message(self, message: Dict[str, str], bot_handler: BotHandler) -> None: def handle_message(self, message: Dict[str, Any], bot_handler: BotHandler) -> None:
command = message['content'] command = message['content']
if command == "": if command == "":
command = "help" command = "help"

View file

@ -83,7 +83,7 @@ def exit_gracefully_if_zulip_config_is_missing(config_file: Optional[str]) -> No
sys.exit(1) sys.exit(1)
def exit_gracefully_if_bot_config_file_does_not_exist(bot_config_file: str) -> None: def exit_gracefully_if_bot_config_file_does_not_exist(bot_config_file: Optional[str]) -> None:
if bot_config_file is None: if bot_config_file is None:
# This is a common case, just so succeed quietly. (Some # This is a common case, just so succeed quietly. (Some
# bots don't have third party configuration.) # bots don't have third party configuration.)