mirror of https://github.com/zulip/zulip.git
ruff: Fix PLR1714 Consider merging multiple comparisons.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
parent
3b09197fdf
commit
2ae285af7c
|
@ -60,7 +60,7 @@ def raw_user_activity_table(records: QuerySet[UserActivity]) -> str:
|
||||||
def user_activity_summary_table(user_summary: Dict[str, Dict[str, Any]]) -> str:
|
def user_activity_summary_table(user_summary: Dict[str, Dict[str, Any]]) -> str:
|
||||||
rows = []
|
rows = []
|
||||||
for k, v in user_summary.items():
|
for k, v in user_summary.items():
|
||||||
if k == "name" or k == "user_profile_id":
|
if k in ("name", "user_profile_id"):
|
||||||
continue
|
continue
|
||||||
client = k
|
client = k
|
||||||
count = v["count"]
|
count = v["count"]
|
||||||
|
|
|
@ -101,7 +101,7 @@ if not args.noop and not args.force:
|
||||||
sys.stdout.write("Apply changes? [y/N] ")
|
sys.stdout.write("Apply changes? [y/N] ")
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
do_apply = sys.stdin.readline().strip().lower()
|
do_apply = sys.stdin.readline().strip().lower()
|
||||||
if do_apply == "" or do_apply == "n":
|
if do_apply in ("", "n"):
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
if args.noop and args.force:
|
if args.noop and args.force:
|
||||||
|
@ -115,5 +115,5 @@ ret = subprocess.call([*puppet_cmd, "--detailed-exitcodes"], env=puppet_env)
|
||||||
# ret = 2 => changes, no errors
|
# ret = 2 => changes, no errors
|
||||||
# ret = 4 => no changes, yes errors
|
# ret = 4 => no changes, yes errors
|
||||||
# ret = 6 => changes, yes errors
|
# ret = 6 => changes, yes errors
|
||||||
if ret != 0 and ret != 2:
|
if ret not in (0, 2):
|
||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
|
|
|
@ -14,7 +14,7 @@ def check_venv(filename: str) -> None:
|
||||||
"to enter the development environment."
|
"to enter the development environment."
|
||||||
)
|
)
|
||||||
|
|
||||||
if user_name != "vagrant" and user_name != "zulipdev":
|
if user_name not in ("vagrant", "zulipdev"):
|
||||||
print()
|
print()
|
||||||
print("If you are using Vagrant, first run `vagrant ssh` to enter the Vagrant guest.")
|
print("If you are using Vagrant, first run `vagrant ssh` to enter the Vagrant guest.")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
|
@ -328,7 +328,7 @@ def main() -> None:
|
||||||
if suite.startswith("test"):
|
if suite.startswith("test"):
|
||||||
for root, dirs, files_names in os.walk(zerver_test_dir):
|
for root, dirs, files_names in os.walk(zerver_test_dir):
|
||||||
for file_name in files_names:
|
for file_name in files_names:
|
||||||
if file_name == suite or file_name == suite + ".py":
|
if file_name in (suite, f"{suite}.py"):
|
||||||
new_suite = os.path.join(root, file_name)
|
new_suite = os.path.join(root, file_name)
|
||||||
args[i] = new_suite
|
args[i] = new_suite
|
||||||
break
|
break
|
||||||
|
|
|
@ -98,9 +98,9 @@ def set_realm_permissions_based_on_org_type(realm: Realm) -> None:
|
||||||
# Custom configuration for educational organizations. The present
|
# Custom configuration for educational organizations. The present
|
||||||
# defaults are designed for a single class, not a department or
|
# defaults are designed for a single class, not a department or
|
||||||
# larger institution, since those are more common.
|
# larger institution, since those are more common.
|
||||||
if (
|
if realm.org_type in (
|
||||||
realm.org_type == Realm.ORG_TYPES["education_nonprofit"]["id"]
|
Realm.ORG_TYPES["education_nonprofit"]["id"],
|
||||||
or realm.org_type == Realm.ORG_TYPES["education"]["id"]
|
Realm.ORG_TYPES["education"]["id"],
|
||||||
):
|
):
|
||||||
# Limit user creation to administrators.
|
# Limit user creation to administrators.
|
||||||
realm.invite_to_realm_policy = Realm.POLICY_ADMINS_ONLY
|
realm.invite_to_realm_policy = Realm.POLICY_ADMINS_ONLY
|
||||||
|
@ -216,9 +216,9 @@ def do_create_realm(
|
||||||
)
|
)
|
||||||
|
|
||||||
realm_default_email_address_visibility = RealmUserDefault.EMAIL_ADDRESS_VISIBILITY_EVERYONE
|
realm_default_email_address_visibility = RealmUserDefault.EMAIL_ADDRESS_VISIBILITY_EVERYONE
|
||||||
if (
|
if realm.org_type in (
|
||||||
realm.org_type == Realm.ORG_TYPES["education_nonprofit"]["id"]
|
Realm.ORG_TYPES["education_nonprofit"]["id"],
|
||||||
or realm.org_type == Realm.ORG_TYPES["education"]["id"]
|
Realm.ORG_TYPES["education"]["id"],
|
||||||
):
|
):
|
||||||
# Email address of users should be initially visible to admins only.
|
# Email address of users should be initially visible to admins only.
|
||||||
realm_default_email_address_visibility = (
|
realm_default_email_address_visibility = (
|
||||||
|
|
|
@ -61,9 +61,9 @@ def try_add_realm_custom_profile_field(
|
||||||
display_in_profile_summary=display_in_profile_summary,
|
display_in_profile_summary=display_in_profile_summary,
|
||||||
)
|
)
|
||||||
custom_profile_field.hint = hint
|
custom_profile_field.hint = hint
|
||||||
if (
|
if custom_profile_field.field_type in (
|
||||||
custom_profile_field.field_type == CustomProfileField.SELECT
|
CustomProfileField.SELECT,
|
||||||
or custom_profile_field.field_type == CustomProfileField.EXTERNAL_ACCOUNT
|
CustomProfileField.EXTERNAL_ACCOUNT,
|
||||||
):
|
):
|
||||||
custom_profile_field.field_data = orjson.dumps(field_data or {}).decode()
|
custom_profile_field.field_data = orjson.dumps(field_data or {}).decode()
|
||||||
|
|
||||||
|
@ -109,10 +109,7 @@ def try_update_realm_custom_profile_field(
|
||||||
field.name = name
|
field.name = name
|
||||||
field.hint = hint
|
field.hint = hint
|
||||||
field.display_in_profile_summary = display_in_profile_summary
|
field.display_in_profile_summary = display_in_profile_summary
|
||||||
if (
|
if field.field_type in (CustomProfileField.SELECT, CustomProfileField.EXTERNAL_ACCOUNT):
|
||||||
field.field_type == CustomProfileField.SELECT
|
|
||||||
or field.field_type == CustomProfileField.EXTERNAL_ACCOUNT
|
|
||||||
):
|
|
||||||
if field.field_type == CustomProfileField.SELECT:
|
if field.field_type == CustomProfileField.SELECT:
|
||||||
assert field_data is not None
|
assert field_data is not None
|
||||||
remove_custom_profile_field_value_if_required(field, field_data)
|
remove_custom_profile_field_value_if_required(field, field_data)
|
||||||
|
|
|
@ -147,7 +147,7 @@ def find_log_origin(record: logging.LogRecord) -> str:
|
||||||
|
|
||||||
if settings.LOGGING_SHOW_MODULE:
|
if settings.LOGGING_SHOW_MODULE:
|
||||||
module_name = find_log_caller_module(record)
|
module_name = find_log_caller_module(record)
|
||||||
if module_name == logger_name or module_name == record.name:
|
if module_name in (logger_name, record.name):
|
||||||
# Abbreviate a bit.
|
# Abbreviate a bit.
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -41,12 +41,10 @@ def create_if_missing_realm_internal_bots() -> None:
|
||||||
|
|
||||||
def send_initial_direct_message(user: UserProfile) -> None:
|
def send_initial_direct_message(user: UserProfile) -> None:
|
||||||
# We adjust the initial Welcome Bot direct message for education organizations.
|
# We adjust the initial Welcome Bot direct message for education organizations.
|
||||||
education_organization = False
|
education_organization = user.realm.org_type in (
|
||||||
if (
|
Realm.ORG_TYPES["education_nonprofit"]["id"],
|
||||||
user.realm.org_type == Realm.ORG_TYPES["education_nonprofit"]["id"]
|
Realm.ORG_TYPES["education"]["id"],
|
||||||
or user.realm.org_type == Realm.ORG_TYPES["education"]["id"]
|
)
|
||||||
):
|
|
||||||
education_organization = True
|
|
||||||
|
|
||||||
# We need to override the language in this code path, because it's
|
# We need to override the language in this code path, because it's
|
||||||
# called from account registration, which is a pre-account API
|
# called from account registration, which is a pre-account API
|
||||||
|
|
|
@ -116,7 +116,7 @@ def do_bulk_backfill_extra_data(
|
||||||
)
|
)
|
||||||
continue
|
continue
|
||||||
new_value = ast.literal_eval(audit_log_entry.extra_data) # type: ignore[attr-defined] # Explained above.
|
new_value = ast.literal_eval(audit_log_entry.extra_data) # type: ignore[attr-defined] # Explained above.
|
||||||
if old_value != {} and old_value != new_value:
|
if old_value not in ({}, new_value):
|
||||||
inconsistent_extra_data_json.append((audit_log_entry.id, audit_log_entry.extra_data, old_value, new_value)) # type: ignore[attr-defined] # Explained above.
|
inconsistent_extra_data_json.append((audit_log_entry.id, audit_log_entry.extra_data, old_value, new_value)) # type: ignore[attr-defined] # Explained above.
|
||||||
audit_log_entry.extra_data_json = new_value # type: ignore[attr-defined] # Explained above.
|
audit_log_entry.extra_data_json = new_value # type: ignore[attr-defined] # Explained above.
|
||||||
audit_log_model.objects.bulk_update(python_valued_audit_log_entries, fields=["extra_data_json"])
|
audit_log_model.objects.bulk_update(python_valued_audit_log_entries, fields=["extra_data_json"])
|
||||||
|
|
|
@ -2011,10 +2011,7 @@ class UserProfile(AbstractBaseUser, PermissionsMixin, UserBaseSettings): # type
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_realm_admin(self) -> bool:
|
def is_realm_admin(self) -> bool:
|
||||||
return (
|
return self.role in (UserProfile.ROLE_REALM_ADMINISTRATOR, UserProfile.ROLE_REALM_OWNER)
|
||||||
self.role == UserProfile.ROLE_REALM_ADMINISTRATOR
|
|
||||||
or self.role == UserProfile.ROLE_REALM_OWNER
|
|
||||||
)
|
|
||||||
|
|
||||||
@is_realm_admin.setter
|
@is_realm_admin.setter
|
||||||
def is_realm_admin(self, value: bool) -> None:
|
def is_realm_admin(self, value: bool) -> None:
|
||||||
|
|
|
@ -80,7 +80,7 @@ def validate_display_in_profile_summary_field(
|
||||||
# The LONG_TEXT field type doesn't make sense visually for profile
|
# The LONG_TEXT field type doesn't make sense visually for profile
|
||||||
# field summaries. The USER field type will require some further
|
# field summaries. The USER field type will require some further
|
||||||
# client support.
|
# client support.
|
||||||
if field_type == CustomProfileField.LONG_TEXT or field_type == CustomProfileField.USER:
|
if field_type in (CustomProfileField.LONG_TEXT, CustomProfileField.USER):
|
||||||
raise JsonableError(_("Field type not supported for display in profile summary."))
|
raise JsonableError(_("Field type not supported for display in profile summary."))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -400,7 +400,7 @@ def get_story_create_github_entity_body(payload: WildValue, action: WildValue, e
|
||||||
app_url=action["app_url"].tame(check_string),
|
app_url=action["app_url"].tame(check_string),
|
||||||
),
|
),
|
||||||
"name": pull_request_action["number"].tame(check_int)
|
"name": pull_request_action["number"].tame(check_int)
|
||||||
if entity == "pull-request" or entity == "pull-request-comment"
|
if entity in ("pull-request", "pull-request-comment")
|
||||||
else pull_request_action["name"].tame(check_string),
|
else pull_request_action["name"].tame(check_string),
|
||||||
"url": pull_request_action["url"].tame(check_string),
|
"url": pull_request_action["url"].tame(check_string),
|
||||||
"workflow_state_template": "",
|
"workflow_state_template": "",
|
||||||
|
|
|
@ -77,7 +77,7 @@ def get_opened_or_update_pull_request_body(helper: Helper) -> str:
|
||||||
description = pull_request["body"].tame(check_none_or(check_string))
|
description = pull_request["body"].tame(check_none_or(check_string))
|
||||||
target_branch = None
|
target_branch = None
|
||||||
base_branch = None
|
base_branch = None
|
||||||
if action == "opened" or action == "merged":
|
if action in ("opened", "merged"):
|
||||||
target_branch = pull_request["head"]["label"].tame(check_string)
|
target_branch = pull_request["head"]["label"].tame(check_string)
|
||||||
base_branch = pull_request["base"]["label"].tame(check_string)
|
base_branch = pull_request["base"]["label"].tame(check_string)
|
||||||
|
|
||||||
|
|
|
@ -450,7 +450,7 @@ def get_body_based_on_event(event: str) -> EventFunction:
|
||||||
def get_topic_based_on_event(event: str, payload: WildValue, use_merge_request_title: bool) -> str:
|
def get_topic_based_on_event(event: str, payload: WildValue, use_merge_request_title: bool) -> str:
|
||||||
if event == "Push Hook":
|
if event == "Push Hook":
|
||||||
return f"{get_repo_name(payload)} / {get_branch_name(payload)}"
|
return f"{get_repo_name(payload)} / {get_branch_name(payload)}"
|
||||||
elif event == "Job Hook" or event == "Build Hook":
|
elif event in ("Job Hook", "Build Hook"):
|
||||||
return "{} / {}".format(
|
return "{} / {}".format(
|
||||||
payload["repository"]["name"].tame(check_string), get_branch_name(payload)
|
payload["repository"]["name"].tame(check_string), get_branch_name(payload)
|
||||||
)
|
)
|
||||||
|
@ -475,7 +475,7 @@ def get_topic_based_on_event(event: str, payload: WildValue, use_merge_request_t
|
||||||
id=payload["object_attributes"]["iid"].tame(check_int),
|
id=payload["object_attributes"]["iid"].tame(check_int),
|
||||||
title=payload["object_attributes"]["title"].tame(check_string),
|
title=payload["object_attributes"]["title"].tame(check_string),
|
||||||
)
|
)
|
||||||
elif event == "Note Hook Issue" or event == "Confidential Note Hook Issue":
|
elif event in ("Note Hook Issue", "Confidential Note Hook Issue"):
|
||||||
return TOPIC_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format(
|
return TOPIC_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format(
|
||||||
repo=get_repo_name(payload),
|
repo=get_repo_name(payload),
|
||||||
type="issue",
|
type="issue",
|
||||||
|
|
|
@ -213,15 +213,12 @@ def send_formatted_pagerduty(
|
||||||
"incident.unacknowledged",
|
"incident.unacknowledged",
|
||||||
):
|
):
|
||||||
template = INCIDENT_WITH_SERVICE_AND_ASSIGNEE
|
template = INCIDENT_WITH_SERVICE_AND_ASSIGNEE
|
||||||
elif (
|
elif message_type in ("incident.resolve", "incident.resolved"):
|
||||||
message_type == "incident.resolve" or message_type == "incident.resolved"
|
if "agent_info" in format_dict:
|
||||||
) and format_dict.get("agent_info") is not None:
|
template = INCIDENT_RESOLVED_WITH_AGENT
|
||||||
template = INCIDENT_RESOLVED_WITH_AGENT
|
else:
|
||||||
elif (
|
template = INCIDENT_RESOLVED
|
||||||
message_type == "incident.resolve" or message_type == "incident.resolved"
|
elif message_type in ("incident.assign", "incident.reassigned"):
|
||||||
) and format_dict.get("agent_info") is None:
|
|
||||||
template = INCIDENT_RESOLVED
|
|
||||||
elif message_type == "incident.assign" or message_type == "incident.reassigned":
|
|
||||||
template = INCIDENT_ASSIGNED
|
template = INCIDENT_ASSIGNED
|
||||||
else:
|
else:
|
||||||
template = INCIDENT_WITH_ASSIGNEE
|
template = INCIDENT_WITH_ASSIGNEE
|
||||||
|
|
|
@ -227,7 +227,7 @@ def compose_notification_message(payload: WildValue) -> str:
|
||||||
# We now split this main function again into two functions. One is for
|
# We now split this main function again into two functions. One is for
|
||||||
# "NewErrorOccurred" and "ErrorReoccurred", and one is for the rest. Both
|
# "NewErrorOccurred" and "ErrorReoccurred", and one is for the rest. Both
|
||||||
# functions will return a text message that is formatted for the chat.
|
# functions will return a text message that is formatted for the chat.
|
||||||
if event_type == "NewErrorOccurred" or event_type == "ErrorReoccurred":
|
if event_type in ("NewErrorOccurred", "ErrorReoccurred"):
|
||||||
return notification_message_error_occurred(payload)
|
return notification_message_error_occurred(payload)
|
||||||
elif "FollowUp" in event_type:
|
elif "FollowUp" in event_type:
|
||||||
return notification_message_follow_up(payload)
|
return notification_message_follow_up(payload)
|
||||||
|
@ -285,11 +285,7 @@ def compose_activity_message(payload: WildValue) -> str:
|
||||||
# But, they all are almost identical and the only differences between them
|
# But, they all are almost identical and the only differences between them
|
||||||
# are the keys at line 9 (check fixtures). So there's no need to split
|
# are the keys at line 9 (check fixtures). So there's no need to split
|
||||||
# the function like the notification one.
|
# the function like the notification one.
|
||||||
if (
|
if event_type in ("StatusChanged", "AssignedToUser", "CommentAdded"):
|
||||||
event_type == "StatusChanged"
|
|
||||||
or event_type == "AssignedToUser"
|
|
||||||
or event_type == "CommentAdded"
|
|
||||||
):
|
|
||||||
return activity_message(payload)
|
return activity_message(payload)
|
||||||
else:
|
else:
|
||||||
raise UnsupportedWebhookEventTypeError(event_type)
|
raise UnsupportedWebhookEventTypeError(event_type)
|
||||||
|
|
|
@ -56,14 +56,14 @@ def api_sonarr_webhook(
|
||||||
|
|
||||||
def get_topic_for_http_request(payload: WildValue) -> str:
|
def get_topic_for_http_request(payload: WildValue) -> str:
|
||||||
event_type = payload["eventType"].tame(check_string)
|
event_type = payload["eventType"].tame(check_string)
|
||||||
if event_type != "Test" and event_type != "Health":
|
if event_type == "Test":
|
||||||
topic = SONARR_TOPIC_TEMPLATE.format(
|
|
||||||
series_title=payload["series"]["title"].tame(check_string)
|
|
||||||
)
|
|
||||||
elif event_type == "Test":
|
|
||||||
topic = SONARR_TOPIC_TEMPLATE_TEST
|
topic = SONARR_TOPIC_TEMPLATE_TEST
|
||||||
elif event_type == "Health":
|
elif event_type == "Health":
|
||||||
topic = SONARR_TOPIC_TEMPLATE_HEALTH_CHECK.format(level=payload["level"].tame(check_string))
|
topic = SONARR_TOPIC_TEMPLATE_HEALTH_CHECK.format(level=payload["level"].tame(check_string))
|
||||||
|
else:
|
||||||
|
topic = SONARR_TOPIC_TEMPLATE.format(
|
||||||
|
series_title=payload["series"]["title"].tame(check_string)
|
||||||
|
)
|
||||||
|
|
||||||
return topic
|
return topic
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ def api_wordpress_webhook(
|
||||||
# remove trailing whitespace (issue for some test fixtures)
|
# remove trailing whitespace (issue for some test fixtures)
|
||||||
hook = hook.rstrip()
|
hook = hook.rstrip()
|
||||||
|
|
||||||
if hook == "publish_post" or hook == "publish_page":
|
if hook in ("publish_post", "publish_page"):
|
||||||
data = PUBLISH_POST_OR_PAGE_TEMPLATE.format(type=post_type, title=post_title, url=post_url)
|
data = PUBLISH_POST_OR_PAGE_TEMPLATE.format(type=post_type, title=post_title, url=post_url)
|
||||||
|
|
||||||
elif hook == "user_register":
|
elif hook == "user_register":
|
||||||
|
|
|
@ -71,7 +71,7 @@ def do_bulk_backfill_extra_data(
|
||||||
# are converted back with ast.literal_eval for safety and efficiency.
|
# are converted back with ast.literal_eval for safety and efficiency.
|
||||||
old_value = audit_log_entry.extra_data_json # type: ignore[attr-defined] # The migration cannot depend on zerver.models, which contains the real type of the RealmAuditLog model, so it cannot be properly typed.
|
old_value = audit_log_entry.extra_data_json # type: ignore[attr-defined] # The migration cannot depend on zerver.models, which contains the real type of the RealmAuditLog model, so it cannot be properly typed.
|
||||||
new_value = ast.literal_eval(audit_log_entry.extra_data) # type: ignore[attr-defined] # Explained above.
|
new_value = ast.literal_eval(audit_log_entry.extra_data) # type: ignore[attr-defined] # Explained above.
|
||||||
if old_value != {} and old_value != new_value:
|
if old_value not in ({}, new_value):
|
||||||
inconsistent_extra_data_json.append((audit_log_entry.id, audit_log_entry.extra_data, old_value, new_value)) # type: ignore[attr-defined] # Explained above.
|
inconsistent_extra_data_json.append((audit_log_entry.id, audit_log_entry.extra_data, old_value, new_value)) # type: ignore[attr-defined] # Explained above.
|
||||||
audit_log_entry.extra_data_json = new_value # type: ignore[attr-defined] # Explained above.
|
audit_log_entry.extra_data_json = new_value # type: ignore[attr-defined] # Explained above.
|
||||||
audit_log_model.objects.bulk_update(python_valued_audit_log_entries, fields=["extra_data_json"])
|
audit_log_model.objects.bulk_update(python_valued_audit_log_entries, fields=["extra_data_json"])
|
||||||
|
|
Loading…
Reference in New Issue