mirror of
https://github.com/zulip/zulip.git
synced 2025-11-09 16:37:23 +00:00
typing: Remove now-unnecessary conditional import.
As a result of dropping support for trusty, we can remove our old pattern of putting `if False` before importing the typing module, which was essential for Python 3.4 support, but not required and maybe harmful on newer versions. cron_file_helper check_rabbitmq_consumers hash_reqs check_zephyr_mirror check_personal_zephyr_mirrors check_cron_file zulip_tools check_postgres_replication_lag api_test_helpers purge-old-deployments setup_venv node_cache clean_venv_cache clean_node_cache clean_emoji_cache pg_backup_and_purge restore-backup generate_secrets zulip-ec2-configure-interfaces diagnose check_user_zephyr_mirror_liveness
This commit is contained in:
@@ -95,36 +95,6 @@ an `Any` or `# type: ignore` so you're not blocked waiting for help,
|
||||
add a `# TODO: ` comment so it doesn't get forgotten in code review,
|
||||
and ask for help in chat.zulip.org.
|
||||
|
||||
## mypy in production scripts
|
||||
|
||||
While in most of the Zulip codebase, we can consistently use the
|
||||
`typing` module (Part of the standard library in Python 3.5, but
|
||||
present as an installable module with older Python), in our installer
|
||||
and other production scripts that might run outside a Zulip
|
||||
virtualenv, we cannot rely on the `typing` module being present on the
|
||||
system.
|
||||
|
||||
To solve this problem, we use the following (semi-standard in the mypy
|
||||
community) hack in those scripts:
|
||||
|
||||
```
|
||||
if False:
|
||||
# See https://zulip.readthedocs.io/en/latest/testing/mypy.html#mypy-in-production-scripts
|
||||
from typing import List
|
||||
```
|
||||
|
||||
and then use the Python 2 style type comment syntax for annotating
|
||||
those files. This way, the Python interpreters for Python 2.7 and 3.4
|
||||
will ignore this line, and thus not crash. But we can still get all
|
||||
the benefits of type annotations in that codebase, since the `mypy`
|
||||
type checker ignores the `if False` and thus still is able to
|
||||
type-check the file using those imports.
|
||||
|
||||
The exception to this rule is that any scripts which use
|
||||
`setup_path_on_import` before they import from the `typing` module are
|
||||
safe. These, we generally declare in the relevant exclude line in
|
||||
`tools/linter_lib/custom_check.py`
|
||||
|
||||
## mypy stubs for third-party modules.
|
||||
|
||||
For the Python standard library and some popular third-party modules,
|
||||
|
||||
Reference in New Issue
Block a user