black: Reformat without skipping string normalization.
This commit is contained in:
parent
fba21bb00d
commit
6f3f9bf7e4
178 changed files with 5242 additions and 5242 deletions
|
@ -13,12 +13,12 @@ import zephyr
|
|||
import zulip
|
||||
|
||||
parser = optparse.OptionParser()
|
||||
parser.add_option('--verbose', dest='verbose', default=False, action='store_true')
|
||||
parser.add_option('--site', dest='site', default=None, action='store')
|
||||
parser.add_option('--sharded', default=False, action='store_true')
|
||||
parser.add_option("--verbose", dest="verbose", default=False, action="store_true")
|
||||
parser.add_option("--site", dest="site", default=None, action="store")
|
||||
parser.add_option("--sharded", default=False, action="store_true")
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
mit_user = 'tabbott/extra@ATHENA.MIT.EDU'
|
||||
mit_user = "tabbott/extra@ATHENA.MIT.EDU"
|
||||
|
||||
zulip_client = zulip.Client(verbose=True, client="ZulipMonitoring/0.1", site=options.site)
|
||||
|
||||
|
@ -116,11 +116,11 @@ def send_zephyr(zwrite_args: List[str], content: str) -> bool:
|
|||
# Subscribe to Zulip
|
||||
try:
|
||||
res = zulip_client.register(event_types=["message"])
|
||||
if 'error' in res['result']:
|
||||
if "error" in res["result"]:
|
||||
logging.error("Error subscribing to Zulips!")
|
||||
logging.error(res['msg'])
|
||||
logging.error(res["msg"])
|
||||
print_status_and_exit(1)
|
||||
queue_id, last_event_id = (res['queue_id'], res['last_event_id'])
|
||||
queue_id, last_event_id = (res["queue_id"], res["last_event_id"])
|
||||
except Exception:
|
||||
logger.exception("Unexpected error subscribing to Zulips")
|
||||
print_status_and_exit(1)
|
||||
|
@ -129,9 +129,9 @@ except Exception:
|
|||
zephyr_subs_to_add = []
|
||||
for (stream, test) in test_streams:
|
||||
if stream == "message":
|
||||
zephyr_subs_to_add.append((stream, 'personal', mit_user))
|
||||
zephyr_subs_to_add.append((stream, "personal", mit_user))
|
||||
else:
|
||||
zephyr_subs_to_add.append((stream, '*', '*'))
|
||||
zephyr_subs_to_add.append((stream, "*", "*"))
|
||||
|
||||
actually_subscribed = False
|
||||
for tries in range(10):
|
||||
|
@ -263,11 +263,11 @@ logger.info("Starting receiving messages!")
|
|||
|
||||
# receive zulips
|
||||
res = zulip_client.get_events(queue_id=queue_id, last_event_id=last_event_id)
|
||||
if 'error' in res['result']:
|
||||
if "error" in res["result"]:
|
||||
logging.error("Error receiving Zulips!")
|
||||
logging.error(res['msg'])
|
||||
logging.error(res["msg"])
|
||||
print_status_and_exit(1)
|
||||
messages = [event['message'] for event in res['events']]
|
||||
messages = [event["message"] for event in res["events"]]
|
||||
logger.info("Finished receiving Zulip messages!")
|
||||
|
||||
receive_zephyrs()
|
||||
|
@ -296,7 +296,7 @@ def process_keys(content_list: List[str]) -> Tuple[Dict[str, int], Set[str], Set
|
|||
# The h_foo variables are about the messages we _received_ in Zulip
|
||||
# The z_foo variables are about the messages we _received_ in Zephyr
|
||||
h_contents = [message["content"] for message in messages]
|
||||
z_contents = [notice.message.split('\0')[1] for notice in notices]
|
||||
z_contents = [notice.message.split("\0")[1] for notice in notices]
|
||||
(h_key_counts, h_missing_z, h_missing_h, h_duplicates, h_success) = process_keys(h_contents)
|
||||
(z_key_counts, z_missing_z, z_missing_h, z_duplicates, z_success) = process_keys(z_contents)
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ import os
|
|||
import sys
|
||||
import unicodedata
|
||||
|
||||
sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'api'))
|
||||
sys.path.append(os.path.join(os.path.dirname(__file__), "..", "api"))
|
||||
import zulip
|
||||
|
||||
|
||||
|
@ -18,20 +18,20 @@ def write_public_streams() -> None:
|
|||
# normalization and then lower-casing server-side
|
||||
canonical_cls = unicodedata.normalize("NFKC", stream_name).lower()
|
||||
if canonical_cls in [
|
||||
'security',
|
||||
'login',
|
||||
'network',
|
||||
'ops',
|
||||
'user_locate',
|
||||
'mit',
|
||||
'moof',
|
||||
'wsmonitor',
|
||||
'wg_ctl',
|
||||
'winlogger',
|
||||
'hm_ctl',
|
||||
'hm_stat',
|
||||
'zephyr_admin',
|
||||
'zephyr_ctl',
|
||||
"security",
|
||||
"login",
|
||||
"network",
|
||||
"ops",
|
||||
"user_locate",
|
||||
"mit",
|
||||
"moof",
|
||||
"wsmonitor",
|
||||
"wg_ctl",
|
||||
"winlogger",
|
||||
"hm_ctl",
|
||||
"hm_stat",
|
||||
"zephyr_admin",
|
||||
"zephyr_ctl",
|
||||
]:
|
||||
# These zephyr classes cannot be subscribed to by us, due
|
||||
# to MIT's Zephyr access control settings
|
||||
|
|
|
@ -39,8 +39,8 @@ def to_zulip_username(zephyr_username: str) -> str:
|
|||
(user, realm) = (zephyr_username, "ATHENA.MIT.EDU")
|
||||
if realm.upper() == "ATHENA.MIT.EDU":
|
||||
# Hack to make ctl's fake username setup work :)
|
||||
if user.lower() == 'golem':
|
||||
user = 'ctl'
|
||||
if user.lower() == "golem":
|
||||
user = "ctl"
|
||||
return user.lower() + "@mit.edu"
|
||||
return user.lower() + "|" + realm.upper() + "@mit.edu"
|
||||
|
||||
|
@ -49,10 +49,10 @@ def to_zephyr_username(zulip_username: str) -> str:
|
|||
(user, realm) = zulip_username.split("@")
|
||||
if "|" not in user:
|
||||
# Hack to make ctl's fake username setup work :)
|
||||
if user.lower() == 'ctl':
|
||||
user = 'golem'
|
||||
if user.lower() == "ctl":
|
||||
user = "golem"
|
||||
return user.lower() + "@ATHENA.MIT.EDU"
|
||||
match_user = re.match(r'([a-zA-Z0-9_]+)\|(.+)', user)
|
||||
match_user = re.match(r"([a-zA-Z0-9_]+)\|(.+)", user)
|
||||
if not match_user:
|
||||
raise Exception("Could not parse Zephyr realm for cross-realm user %s" % (zulip_username,))
|
||||
return match_user.group(1).lower() + "@" + match_user.group(2).upper()
|
||||
|
@ -85,14 +85,14 @@ def unwrap_lines(body: str) -> str:
|
|||
previous_line = lines[0]
|
||||
for line in lines[1:]:
|
||||
line = line.rstrip()
|
||||
if re.match(r'^\W', line, flags=re.UNICODE) and re.match(
|
||||
r'^\W', previous_line, flags=re.UNICODE
|
||||
if re.match(r"^\W", line, flags=re.UNICODE) and re.match(
|
||||
r"^\W", previous_line, flags=re.UNICODE
|
||||
):
|
||||
result += previous_line + "\n"
|
||||
elif (
|
||||
line == ""
|
||||
or previous_line == ""
|
||||
or re.match(r'^\W', line, flags=re.UNICODE)
|
||||
or re.match(r"^\W", line, flags=re.UNICODE)
|
||||
or different_paragraph(previous_line, line)
|
||||
):
|
||||
# Use 2 newlines to separate sections so that we
|
||||
|
@ -122,31 +122,31 @@ def send_zulip(zeph: ZephyrDict) -> Dict[str, Any]:
|
|||
message = {}
|
||||
if options.forward_class_messages:
|
||||
message["forged"] = "yes"
|
||||
message['type'] = zeph['type']
|
||||
message['time'] = zeph['time']
|
||||
message['sender'] = to_zulip_username(zeph['sender'])
|
||||
message["type"] = zeph["type"]
|
||||
message["time"] = zeph["time"]
|
||||
message["sender"] = to_zulip_username(zeph["sender"])
|
||||
if "subject" in zeph:
|
||||
# Truncate the subject to the current limit in Zulip. No
|
||||
# need to do this for stream names, since we're only
|
||||
# subscribed to valid stream names.
|
||||
message["subject"] = zeph["subject"][:60]
|
||||
if zeph['type'] == 'stream':
|
||||
if zeph["type"] == "stream":
|
||||
# Forward messages sent to -c foo -i bar to stream bar subject "instance"
|
||||
if zeph["stream"] == "message":
|
||||
message['to'] = zeph['subject'].lower()
|
||||
message['subject'] = "instance %s" % (zeph['subject'],)
|
||||
message["to"] = zeph["subject"].lower()
|
||||
message["subject"] = "instance %s" % (zeph["subject"],)
|
||||
elif zeph["stream"] == "tabbott-test5":
|
||||
message['to'] = zeph['subject'].lower()
|
||||
message['subject'] = "test instance %s" % (zeph['subject'],)
|
||||
message["to"] = zeph["subject"].lower()
|
||||
message["subject"] = "test instance %s" % (zeph["subject"],)
|
||||
else:
|
||||
message["to"] = zeph["stream"]
|
||||
else:
|
||||
message["to"] = zeph["recipient"]
|
||||
message['content'] = unwrap_lines(zeph['content'])
|
||||
message["content"] = unwrap_lines(zeph["content"])
|
||||
|
||||
if options.test_mode and options.site == DEFAULT_SITE:
|
||||
logger.debug("Message is: %s" % (str(message),))
|
||||
return {'result': "success"}
|
||||
return {"result": "success"}
|
||||
|
||||
return zulip_client.send_message(message)
|
||||
|
||||
|
@ -311,13 +311,13 @@ def parse_zephyr_body(zephyr_data: str, notice_format: str) -> Tuple[str, str]:
|
|||
try:
|
||||
(zsig, body) = zephyr_data.split("\x00", 1)
|
||||
if (
|
||||
notice_format == 'New transaction [$1] entered in $2\nFrom: $3 ($5)\nSubject: $4'
|
||||
or notice_format == 'New transaction [$1] entered in $2\nFrom: $3\nSubject: $4'
|
||||
notice_format == "New transaction [$1] entered in $2\nFrom: $3 ($5)\nSubject: $4"
|
||||
or notice_format == "New transaction [$1] entered in $2\nFrom: $3\nSubject: $4"
|
||||
):
|
||||
# Logic based off of owl_zephyr_get_message in barnowl
|
||||
fields = body.split('\x00')
|
||||
fields = body.split("\x00")
|
||||
if len(fields) == 5:
|
||||
body = 'New transaction [%s] entered in %s\nFrom: %s (%s)\nSubject: %s' % (
|
||||
body = "New transaction [%s] entered in %s\nFrom: %s (%s)\nSubject: %s" % (
|
||||
fields[0],
|
||||
fields[1],
|
||||
fields[2],
|
||||
|
@ -327,7 +327,7 @@ def parse_zephyr_body(zephyr_data: str, notice_format: str) -> Tuple[str, str]:
|
|||
except ValueError:
|
||||
(zsig, body) = ("", zephyr_data)
|
||||
# Clean body of any null characters, since they're invalid in our protocol.
|
||||
body = body.replace('\x00', '')
|
||||
body = body.replace("\x00", "")
|
||||
return (zsig, body)
|
||||
|
||||
|
||||
|
@ -350,8 +350,8 @@ def parse_crypt_table(zephyr_class: str, instance: str) -> Optional[str]:
|
|||
continue
|
||||
groups = match.groupdict()
|
||||
if (
|
||||
groups['class'].lower() == zephyr_class
|
||||
and 'keypath' in groups
|
||||
groups["class"].lower() == zephyr_class
|
||||
and "keypath" in groups
|
||||
and groups.get("algorithm") == "AES"
|
||||
):
|
||||
return groups["keypath"]
|
||||
|
@ -453,23 +453,23 @@ def process_notice(notice: "zephyr.ZNotice", log: Optional[IO[str]]) -> None:
|
|||
|
||||
zeph: ZephyrDict
|
||||
zeph = {
|
||||
'time': str(notice.time),
|
||||
'sender': notice.sender,
|
||||
'zsig': zsig, # logged here but not used by app
|
||||
'content': body,
|
||||
"time": str(notice.time),
|
||||
"sender": notice.sender,
|
||||
"zsig": zsig, # logged here but not used by app
|
||||
"content": body,
|
||||
}
|
||||
if is_huddle:
|
||||
zeph['type'] = 'private'
|
||||
zeph['recipient'] = huddle_recipients
|
||||
zeph["type"] = "private"
|
||||
zeph["recipient"] = huddle_recipients
|
||||
elif is_personal:
|
||||
assert notice.recipient is not None
|
||||
zeph['type'] = 'private'
|
||||
zeph['recipient'] = to_zulip_username(notice.recipient)
|
||||
zeph["type"] = "private"
|
||||
zeph["recipient"] = to_zulip_username(notice.recipient)
|
||||
else:
|
||||
zeph['type'] = 'stream'
|
||||
zeph['stream'] = zephyr_class
|
||||
zeph["type"] = "stream"
|
||||
zeph["stream"] = zephyr_class
|
||||
if notice.instance.strip() != "":
|
||||
zeph['subject'] = notice.instance
|
||||
zeph["subject"] = notice.instance
|
||||
else:
|
||||
zeph["subject"] = '(instance "%s")' % (notice.instance,)
|
||||
|
||||
|
@ -489,7 +489,7 @@ def process_notice(notice: "zephyr.ZNotice", log: Optional[IO[str]]) -> None:
|
|||
"Received a message on %s/%s from %s..." % (zephyr_class, notice.instance, notice.sender)
|
||||
)
|
||||
if log is not None:
|
||||
log.write(json.dumps(zeph) + '\n')
|
||||
log.write(json.dumps(zeph) + "\n")
|
||||
log.flush()
|
||||
|
||||
if os.fork() == 0:
|
||||
|
@ -593,7 +593,7 @@ def zephyr_to_zulip(options: optparse.Values) -> None:
|
|||
zeph["subject"] = zeph["instance"]
|
||||
logger.info(
|
||||
"sending saved message to %s from %s..."
|
||||
% (zeph.get('stream', zeph.get('recipient')), zeph['sender'])
|
||||
% (zeph.get("stream", zeph.get("recipient")), zeph["sender"])
|
||||
)
|
||||
send_zulip(zeph)
|
||||
except Exception:
|
||||
|
@ -603,7 +603,7 @@ def zephyr_to_zulip(options: optparse.Values) -> None:
|
|||
logger.info("Successfully initialized; Starting receive loop.")
|
||||
|
||||
if options.resend_log_path is not None:
|
||||
with open(options.resend_log_path, 'a') as log:
|
||||
with open(options.resend_log_path, "a") as log:
|
||||
process_loop(log)
|
||||
else:
|
||||
process_loop(None)
|
||||
|
@ -700,10 +700,10 @@ Feedback button or at support@zulip.com."""
|
|||
]
|
||||
|
||||
# Hack to make ctl's fake username setup work :)
|
||||
if message['type'] == "stream" and zulip_account_email == "ctl@mit.edu":
|
||||
if message["type"] == "stream" and zulip_account_email == "ctl@mit.edu":
|
||||
zwrite_args.extend(["-S", "ctl"])
|
||||
|
||||
if message['type'] == "stream":
|
||||
if message["type"] == "stream":
|
||||
zephyr_class = message["display_recipient"]
|
||||
instance = message["subject"]
|
||||
|
||||
|
@ -725,11 +725,11 @@ Feedback button or at support@zulip.com."""
|
|||
zephyr_class = "message"
|
||||
zwrite_args.extend(["-c", zephyr_class, "-i", instance])
|
||||
logger.info("Forwarding message to class %s, instance %s" % (zephyr_class, instance))
|
||||
elif message['type'] == "private":
|
||||
if len(message['display_recipient']) == 1:
|
||||
elif message["type"] == "private":
|
||||
if len(message["display_recipient"]) == 1:
|
||||
recipient = to_zephyr_username(message["display_recipient"][0]["email"])
|
||||
recipients = [recipient]
|
||||
elif len(message['display_recipient']) == 2:
|
||||
elif len(message["display_recipient"]) == 2:
|
||||
recipient = ""
|
||||
for r in message["display_recipient"]:
|
||||
if r["email"].lower() != zulip_account_email.lower():
|
||||
|
@ -1085,62 +1085,62 @@ def configure_logger(logger: logging.Logger, direction_name: Optional[str]) -> N
|
|||
def parse_args() -> Tuple[optparse.Values, List[str]]:
|
||||
parser = optparse.OptionParser()
|
||||
parser.add_option(
|
||||
'--forward-class-messages', default=False, help=optparse.SUPPRESS_HELP, action='store_true'
|
||||
"--forward-class-messages", default=False, help=optparse.SUPPRESS_HELP, action="store_true"
|
||||
)
|
||||
parser.add_option('--shard', help=optparse.SUPPRESS_HELP)
|
||||
parser.add_option('--noshard', default=False, help=optparse.SUPPRESS_HELP, action='store_true')
|
||||
parser.add_option('--resend-log', dest='logs_to_resend', help=optparse.SUPPRESS_HELP)
|
||||
parser.add_option('--enable-resend-log', dest='resend_log_path', help=optparse.SUPPRESS_HELP)
|
||||
parser.add_option('--log-path', dest='log_path', help=optparse.SUPPRESS_HELP)
|
||||
parser.add_option("--shard", help=optparse.SUPPRESS_HELP)
|
||||
parser.add_option("--noshard", default=False, help=optparse.SUPPRESS_HELP, action="store_true")
|
||||
parser.add_option("--resend-log", dest="logs_to_resend", help=optparse.SUPPRESS_HELP)
|
||||
parser.add_option("--enable-resend-log", dest="resend_log_path", help=optparse.SUPPRESS_HELP)
|
||||
parser.add_option("--log-path", dest="log_path", help=optparse.SUPPRESS_HELP)
|
||||
parser.add_option(
|
||||
'--stream-file-path',
|
||||
dest='stream_file_path',
|
||||
"--stream-file-path",
|
||||
dest="stream_file_path",
|
||||
default="/home/zulip/public_streams",
|
||||
help=optparse.SUPPRESS_HELP,
|
||||
)
|
||||
parser.add_option(
|
||||
'--no-forward-personals',
|
||||
dest='forward_personals',
|
||||
"--no-forward-personals",
|
||||
dest="forward_personals",
|
||||
help=optparse.SUPPRESS_HELP,
|
||||
default=True,
|
||||
action='store_false',
|
||||
action="store_false",
|
||||
)
|
||||
parser.add_option(
|
||||
'--forward-mail-zephyrs',
|
||||
dest='forward_mail_zephyrs',
|
||||
"--forward-mail-zephyrs",
|
||||
dest="forward_mail_zephyrs",
|
||||
help=optparse.SUPPRESS_HELP,
|
||||
default=False,
|
||||
action='store_true',
|
||||
action="store_true",
|
||||
)
|
||||
parser.add_option(
|
||||
'--no-forward-from-zulip',
|
||||
"--no-forward-from-zulip",
|
||||
default=True,
|
||||
dest='forward_from_zulip',
|
||||
dest="forward_from_zulip",
|
||||
help=optparse.SUPPRESS_HELP,
|
||||
action='store_false',
|
||||
action="store_false",
|
||||
)
|
||||
parser.add_option('--verbose', default=False, help=optparse.SUPPRESS_HELP, action='store_true')
|
||||
parser.add_option('--sync-subscriptions', default=False, action='store_true')
|
||||
parser.add_option('--ignore-expired-tickets', default=False, action='store_true')
|
||||
parser.add_option('--site', default=DEFAULT_SITE, help=optparse.SUPPRESS_HELP)
|
||||
parser.add_option('--on-startup-command', default=None, help=optparse.SUPPRESS_HELP)
|
||||
parser.add_option('--user', default=os.environ["USER"], help=optparse.SUPPRESS_HELP)
|
||||
parser.add_option("--verbose", default=False, help=optparse.SUPPRESS_HELP, action="store_true")
|
||||
parser.add_option("--sync-subscriptions", default=False, action="store_true")
|
||||
parser.add_option("--ignore-expired-tickets", default=False, action="store_true")
|
||||
parser.add_option("--site", default=DEFAULT_SITE, help=optparse.SUPPRESS_HELP)
|
||||
parser.add_option("--on-startup-command", default=None, help=optparse.SUPPRESS_HELP)
|
||||
parser.add_option("--user", default=os.environ["USER"], help=optparse.SUPPRESS_HELP)
|
||||
parser.add_option(
|
||||
'--stamp-path',
|
||||
"--stamp-path",
|
||||
default="/afs/athena.mit.edu/user/t/a/tabbott/for_friends",
|
||||
help=optparse.SUPPRESS_HELP,
|
||||
)
|
||||
parser.add_option('--session-path', default=None, help=optparse.SUPPRESS_HELP)
|
||||
parser.add_option('--nagios-class', default=None, help=optparse.SUPPRESS_HELP)
|
||||
parser.add_option('--nagios-path', default=None, help=optparse.SUPPRESS_HELP)
|
||||
parser.add_option("--session-path", default=None, help=optparse.SUPPRESS_HELP)
|
||||
parser.add_option("--nagios-class", default=None, help=optparse.SUPPRESS_HELP)
|
||||
parser.add_option("--nagios-path", default=None, help=optparse.SUPPRESS_HELP)
|
||||
parser.add_option(
|
||||
'--use-sessions', default=False, action='store_true', help=optparse.SUPPRESS_HELP
|
||||
"--use-sessions", default=False, action="store_true", help=optparse.SUPPRESS_HELP
|
||||
)
|
||||
parser.add_option(
|
||||
'--test-mode', default=False, help=optparse.SUPPRESS_HELP, action='store_true'
|
||||
"--test-mode", default=False, help=optparse.SUPPRESS_HELP, action="store_true"
|
||||
)
|
||||
parser.add_option(
|
||||
'--api-key-file', default=os.path.join(os.environ["HOME"], "Private", ".humbug-api-key")
|
||||
"--api-key-file", default=os.path.join(os.environ["HOME"], "Private", ".humbug-api-key")
|
||||
)
|
||||
return parser.parse_args()
|
||||
|
||||
|
@ -1235,7 +1235,7 @@ or specify the --api-key-file option."""
|
|||
# Personals mirror on behalf of another user.
|
||||
pgrep_query = "%s.*--user=%s" % (pgrep_query, options.user)
|
||||
proc = subprocess.Popen(
|
||||
['pgrep', '-U', os.environ["USER"], "-f", pgrep_query],
|
||||
["pgrep", "-U", os.environ["USER"], "-f", pgrep_query],
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue