python: Unquote some unnecessarily quoted type annotations.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg 2022-06-26 01:03:34 -07:00 committed by Tim Abbott
parent 6fe5cb65a1
commit 3bf8ee2156
9 changed files with 26 additions and 32 deletions

View File

@ -14,10 +14,7 @@ import shutil
import subprocess import subprocess
import sys import sys
import time import time
from typing import TYPE_CHECKING, Optional from typing import NoReturn, Optional
if TYPE_CHECKING:
from typing import NoReturn
os.environ["PYTHONUNBUFFERED"] = "y" os.environ["PYTHONUNBUFFERED"] = "y"
@ -47,7 +44,7 @@ logging.Formatter.converter = time.gmtime
logging.basicConfig(format="%(asctime)s upgrade-zulip-stage-2: %(message)s", level=logging.INFO) logging.basicConfig(format="%(asctime)s upgrade-zulip-stage-2: %(message)s", level=logging.INFO)
def error_desupported_os(vendor: str, os_version: str) -> "NoReturn": def error_desupported_os(vendor: str, os_version: str) -> NoReturn:
# Link to documentation for how to correctly upgrade the OS. # Link to documentation for how to correctly upgrade the OS.
logging.critical("Unsupported platform: %s %s", vendor, os_version) logging.critical("Unsupported platform: %s %s", vendor, os_version)
logging.info( logging.info(

View File

@ -6,13 +6,13 @@ import os
import platform import platform
import subprocess import subprocess
import sys import sys
from typing import List, NoReturn
os.environ["PYTHONUNBUFFERED"] = "y" os.environ["PYTHONUNBUFFERED"] = "y"
ZULIP_PATH = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) ZULIP_PATH = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
sys.path.append(ZULIP_PATH) sys.path.append(ZULIP_PATH)
from typing import TYPE_CHECKING, List
from scripts.lib.node_cache import NODE_MODULES_CACHE_PATH, setup_node_modules from scripts.lib.node_cache import NODE_MODULES_CACHE_PATH, setup_node_modules
from scripts.lib.setup_venv import get_venv_dependencies from scripts.lib.setup_venv import get_venv_dependencies
@ -27,9 +27,6 @@ from scripts.lib.zulip_tools import (
) )
from tools.setup import setup_venvs from tools.setup import setup_venvs
if TYPE_CHECKING:
from typing import NoReturn
VAR_DIR_PATH = os.path.join(ZULIP_PATH, "var") VAR_DIR_PATH = os.path.join(ZULIP_PATH, "var")
CONTINUOUS_INTEGRATION = "GITHUB_ACTIONS" in os.environ CONTINUOUS_INTEGRATION = "GITHUB_ACTIONS" in os.environ
@ -350,7 +347,7 @@ def install_yum_deps(deps_to_install: List[str]) -> None:
) )
def main(options: argparse.Namespace) -> "NoReturn": def main(options: argparse.Namespace) -> NoReturn:
# yarn and management commands expect to be run from the root of the # yarn and management commands expect to be run from the root of the
# project. # project.

View File

@ -58,7 +58,7 @@ class RequestNotes(BaseNotes[HttpRequest, "RequestNotes"]):
realm: Optional[Realm] = None realm: Optional[Realm] = None
has_fetched_realm: bool = False has_fetched_realm: bool = False
set_language: Optional[str] = None set_language: Optional[str] = None
ratelimits_applied: List["rate_limiter.RateLimitResult"] = field(default_factory=lambda: []) ratelimits_applied: List[rate_limiter.RateLimitResult] = field(default_factory=lambda: [])
query: Optional[str] = None query: Optional[str] = None
error_format: Optional[str] = None error_format: Optional[str] = None
placeholder_open_graph_description: Optional[str] = None placeholder_open_graph_description: Optional[str] = None

View File

@ -411,11 +411,11 @@ def access_stream_by_id(
return (stream, sub) return (stream, sub)
def get_public_streams_queryset(realm: Realm) -> "QuerySet[Stream]": def get_public_streams_queryset(realm: Realm) -> QuerySet[Stream]:
return Stream.objects.filter(realm=realm, invite_only=False, history_public_to_subscribers=True) return Stream.objects.filter(realm=realm, invite_only=False, history_public_to_subscribers=True)
def get_web_public_streams_queryset(realm: Realm) -> "QuerySet[Stream]": def get_web_public_streams_queryset(realm: Realm) -> QuerySet[Stream]:
# This should match the include_web_public code path in do_get_streams. # This should match the include_web_public code path in do_get_streams.
return Stream.objects.filter( return Stream.objects.filter(
realm=realm, realm=realm,

View File

@ -70,19 +70,19 @@ DB_TOPIC_NAME = "subject"
MESSAGE__TOPIC = "message__subject" MESSAGE__TOPIC = "message__subject"
def topic_match_sa(topic_name: str) -> "ColumnElement[Boolean]": def topic_match_sa(topic_name: str) -> ColumnElement[Boolean]:
# _sa is short for SQLAlchemy, which we use mostly for # _sa is short for SQLAlchemy, which we use mostly for
# queries that search messages # queries that search messages
topic_cond = func.upper(column("subject", Text)) == func.upper(literal(topic_name)) topic_cond = func.upper(column("subject", Text)) == func.upper(literal(topic_name))
return topic_cond return topic_cond
def get_resolved_topic_condition_sa() -> "ColumnElement[Boolean]": def get_resolved_topic_condition_sa() -> ColumnElement[Boolean]:
resolved_topic_cond = column("subject", Text).startswith(RESOLVED_TOPIC_PREFIX) resolved_topic_cond = column("subject", Text).startswith(RESOLVED_TOPIC_PREFIX)
return resolved_topic_cond return resolved_topic_cond
def topic_column_sa() -> "ColumnElement[Text]": def topic_column_sa() -> ColumnElement[Text]:
return column("subject", Text) return column("subject", Text)

View File

@ -120,7 +120,7 @@ def get_user_group_direct_member_ids(user_group: UserGroup) -> List[int]:
) )
def get_user_group_direct_members(user_group: UserGroup) -> "QuerySet[UserGroup]": def get_user_group_direct_members(user_group: UserGroup) -> QuerySet[UserGroup]:
return user_group.direct_members.all() return user_group.direct_members.all()
@ -141,7 +141,7 @@ def get_direct_memberships_of_users(user_group: UserGroup, members: List[UserPro
# https://code.djangoproject.com/ticket/28919 # https://code.djangoproject.com/ticket/28919
def get_recursive_subgroups(user_group: UserGroup) -> "QuerySet[UserGroup]": def get_recursive_subgroups(user_group: UserGroup) -> QuerySet[UserGroup]:
cte = With.recursive( cte = With.recursive(
lambda cte: UserGroup.objects.filter(id=user_group.id) lambda cte: UserGroup.objects.filter(id=user_group.id)
.values("id") .values("id")
@ -150,11 +150,11 @@ def get_recursive_subgroups(user_group: UserGroup) -> "QuerySet[UserGroup]":
return cte.join(UserGroup, id=cte.col.id).with_cte(cte) return cte.join(UserGroup, id=cte.col.id).with_cte(cte)
def get_recursive_group_members(user_group: UserGroup) -> "QuerySet[UserProfile]": def get_recursive_group_members(user_group: UserGroup) -> QuerySet[UserProfile]:
return UserProfile.objects.filter(direct_groups__in=get_recursive_subgroups(user_group)) return UserProfile.objects.filter(direct_groups__in=get_recursive_subgroups(user_group))
def get_recursive_membership_groups(user_profile: UserProfile) -> "QuerySet[UserGroup]": def get_recursive_membership_groups(user_profile: UserProfile) -> QuerySet[UserGroup]:
cte = With.recursive( cte = With.recursive(
lambda cte: user_profile.direct_groups.values("id").union( lambda cte: user_profile.direct_groups.values("id").union(
cte.join(UserGroup, direct_subgroups=cte.col.id).values("id") cte.join(UserGroup, direct_subgroups=cte.col.id).values("id")

View File

@ -164,7 +164,7 @@ def is_administrator_role(role: int) -> bool:
def bulk_get_users( def bulk_get_users(
emails: List[str], realm: Optional[Realm], base_query: "QuerySet[UserProfile]" = None emails: List[str], realm: Optional[Realm], base_query: QuerySet[UserProfile] = None
) -> Dict[str, UserProfile]: ) -> Dict[str, UserProfile]:
if base_query is None: if base_query is None:
assert realm is not None assert realm is not None

View File

@ -696,7 +696,7 @@ class WildValueDict(WildValue):
return wrap_wild_value(var_name, item) return wrap_wild_value(var_name, item)
def get(self, key: str, default: object = None) -> "WildValue": def get(self, key: str, default: object = None) -> WildValue:
item = self.value.get(key, default) item = self.value.get(key, default)
if isinstance(item, WildValue): if isinstance(item, WildValue):
return item return item
@ -705,11 +705,11 @@ class WildValueDict(WildValue):
def keys(self) -> Iterator[str]: def keys(self) -> Iterator[str]:
yield from self.value.keys() yield from self.value.keys()
def values(self) -> Iterator["WildValue"]: def values(self) -> Iterator[WildValue]:
for key, value in self.value.items(): for key, value in self.value.items():
yield wrap_wild_value(f"{self.var_name}[{key!r}]", value) yield wrap_wild_value(f"{self.var_name}[{key!r}]", value)
def items(self) -> Iterator[Tuple[str, "WildValue"]]: def items(self) -> Iterator[Tuple[str, WildValue]]:
for key, value in self.value.items(): for key, value in self.value.items():
yield key, wrap_wild_value(f"{self.var_name}[{key!r}]", value) yield key, wrap_wild_value(f"{self.var_name}[{key!r}]", value)

View File

@ -105,10 +105,10 @@ TS_STOP = "</ts-match>"
def ts_locs_array( def ts_locs_array(
config: "ColumnElement[Text]", config: ColumnElement[Text],
text: "ColumnElement[Text]", text: ColumnElement[Text],
tsquery: "ColumnElement[Any]", tsquery: ColumnElement[Any],
) -> "ColumnElement[ARRAY[Integer]]": ) -> ColumnElement[ARRAY[Integer]]:
options = f"HighlightAll = TRUE, StartSel = {TS_START}, StopSel = {TS_STOP}" options = f"HighlightAll = TRUE, StartSel = {TS_START}, StopSel = {TS_STOP}"
delimited = func.ts_headline(config, text, tsquery, options, type_=Text) delimited = func.ts_headline(config, text, tsquery, options, type_=Text)
part = func.unnest( part = func.unnest(
@ -149,7 +149,7 @@ class NarrowBuilder:
def __init__( def __init__(
self, self,
user_profile: Optional[UserProfile], user_profile: Optional[UserProfile],
msg_id_column: "ColumnElement[Integer]", msg_id_column: ColumnElement[Integer],
realm: Realm, realm: Realm,
is_web_public_query: bool = False, is_web_public_query: bool = False,
) -> None: ) -> None:
@ -771,7 +771,7 @@ def exclude_muting_conditions(
def get_base_query_for_search( def get_base_query_for_search(
user_profile: Optional[UserProfile], need_message: bool, need_user_message: bool user_profile: Optional[UserProfile], need_message: bool, need_user_message: bool
) -> Tuple[Select, "ColumnElement[Integer]"]: ) -> Tuple[Select, ColumnElement[Integer]]:
# Handle the simple case where user_message isn't involved first. # Handle the simple case where user_message isn't involved first.
if not need_user_message: if not need_user_message:
assert need_message assert need_message
@ -809,7 +809,7 @@ def get_base_query_for_search(
def add_narrow_conditions( def add_narrow_conditions(
user_profile: Optional[UserProfile], user_profile: Optional[UserProfile],
inner_msg_id_col: "ColumnElement[Integer]", inner_msg_id_col: ColumnElement[Integer],
query: Select, query: Select,
narrow: OptionalNarrowListT, narrow: OptionalNarrowListT,
is_web_public_query: bool, is_web_public_query: bool,
@ -1181,7 +1181,7 @@ def limit_query_to_range(
anchor: int, anchor: int,
anchored_to_left: bool, anchored_to_left: bool,
anchored_to_right: bool, anchored_to_right: bool,
id_col: "ColumnElement[Integer]", id_col: ColumnElement[Integer],
first_visible_message_id: int, first_visible_message_id: int,
) -> SelectBase: ) -> SelectBase:
""" """