typing: Use TYPE_CHECKING when dealing with cyclic dependencies.

This commit is contained in:
Wyatt Hoodes 2019-07-30 08:58:48 -10:00 committed by Tim Abbott
parent 97c10b35c2
commit 4beec5c6b9
4 changed files with 9 additions and 6 deletions

View File

@ -13,6 +13,8 @@ exclude_lines =
def __str__[(]self[)] -> .*: def __str__[(]self[)] -> .*:
# Don't require coverage for errors about unsupported webhook event types # Don't require coverage for errors about unsupported webhook event types
raise UnexpectedWebhookEventType raise UnexpectedWebhookEventType
# Don't require coverage for blocks only run when type-checking
if TYPE_CHECKING:
[run] [run]
omit = omit =

View File

@ -9,7 +9,8 @@ from django.db.models import Q
from django.core.cache.backends.base import BaseCache from django.core.cache.backends.base import BaseCache
from django.http import HttpRequest from django.http import HttpRequest
from typing import Any, Callable, Dict, Iterable, List, Optional, TypeVar, Tuple from typing import Any, Callable, Dict, Iterable, List, \
Optional, TypeVar, Tuple, TYPE_CHECKING
from zerver.lib.utils import statsd, statsd_key, make_safe_digest from zerver.lib.utils import statsd, statsd_key, make_safe_digest
import time import time
@ -19,7 +20,7 @@ import sys
import os import os
import hashlib import hashlib
if False: if TYPE_CHECKING:
# These modules have to be imported for type annotations but # These modules have to be imported for type annotations but
# they cannot be imported at runtime due to cyclic dependency. # they cannot be imported at runtime due to cyclic dependency.
from zerver.models import UserProfile, Realm, Message from zerver.models import UserProfile, Realm, Message

View File

@ -1,7 +1,7 @@
from contextlib import contextmanager from contextlib import contextmanager
from typing import ( from typing import (
Any, Callable, Dict, Generator, Iterable, Iterator, List, Mapping, Any, Callable, Dict, Generator, Iterable, Iterator, List, Mapping,
Optional, Tuple, Union, IO, TypeVar Optional, Tuple, Union, IO, TypeVar, TYPE_CHECKING
) )
from django.core import signing from django.core import signing
@ -38,7 +38,7 @@ from zerver.models import (
UserProfile, UserProfile,
) )
if False: if TYPE_CHECKING:
# Avoid an import cycle; we only need these for type annotations. # Avoid an import cycle; we only need these for type annotations.
from zerver.lib.test_classes import ZulipTestCase, MigrationsTestCase from zerver.lib.test_classes import ZulipTestCase, MigrationsTestCase

View File

@ -1,6 +1,6 @@
from typing import Dict, Optional from typing import Dict, Optional, TYPE_CHECKING
if False: if TYPE_CHECKING:
from zerver.tornado.event_queue import ClientDescriptor from zerver.tornado.event_queue import ClientDescriptor
descriptors_by_handler_id = {} # type: Dict[int, ClientDescriptor] descriptors_by_handler_id = {} # type: Dict[int, ClientDescriptor]