Skip to content

Commit 331eb4d

Browse files
neilgfosterclaude
andcommitted
style: apply ruff format
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent eacd9fe commit 331eb4d

3 files changed

Lines changed: 63 additions & 26 deletions

File tree

plugin/src/msgraph/client.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -919,7 +919,7 @@ def _humanize_value(value) -> str:
919919
parts = []
920920
for item in value:
921921
if isinstance(item, dict): # recipient: {"emailAddress": {"name", "address"}}
922-
addr = (item.get("emailAddress") or {})
922+
addr = item.get("emailAddress") or {}
923923
parts.append(addr.get("address") or addr.get("name") or json.dumps(item))
924924
else:
925925
parts.append(str(item))
@@ -1023,7 +1023,7 @@ def cmd_rule_create(args) -> int:
10231023
)
10241024
print(
10251025
f'Created rule "{args.name}" (id: {created.get("id", "?")}). For mail whose headers '
1026-
f'contain {args.header_contains}, it {" and ".join(summary)}. '
1026+
f"contain {args.header_contains}, it {' and '.join(summary)}. "
10271027
f"Verified catch-set was {marker.get('count', '?')} message(s). "
10281028
f"Reverse anytime with rule-remove."
10291029
)
@@ -1084,7 +1084,7 @@ def cmd_searchfolder_list(args) -> int:
10841084
n_src = len(f.get("sourceFolderIds") or [])
10851085
print(
10861086
f'- "{f.get("displayName", "(unnamed)")}" (id: {f.get("id", "?")})'
1087-
f'\n filter: {f.get("filterQuery", "(none)")} [{scope} over {n_src} source folder(s)]'
1087+
f"\n filter: {f.get('filterQuery', '(none)')} [{scope} over {n_src} source folder(s)]"
10881088
)
10891089
print(f"{len(folders)} search folder(s). Pass --format detailed for full ids.")
10901090
return 0
@@ -1107,8 +1107,7 @@ def cmd_searchfolder_create(args) -> int:
11071107
# Well-known names (inbox, archive, …) are accepted verbatim by Graph; resolve any others to ids.
11081108
_WELL_KNOWN = {"inbox", "archive", "drafts", "sentitems", "deleteditems", "junkemail", "msgfolderroot"}
11091109
source_ids = [
1110-
n if n.casefold() in _WELL_KNOWN else _resolve_folder_id(tok["access_token"], n)
1111-
for n in source_names
1110+
n if n.casefold() in _WELL_KNOWN else _resolve_folder_id(tok["access_token"], n) for n in source_names
11121111
]
11131112
body = {
11141113
"@odata.type": "microsoft.graph.mailSearchFolder",
@@ -1201,9 +1200,7 @@ def _build_parser() -> argparse.ArgumentParser:
12011200
sfc.add_argument("--name", required=True, help="search folder display name")
12021201
sfc.add_argument("--category", help="build a category filter for this name")
12031202
sfc.add_argument("--filter_query", help="explicit OData filter (overrides --category)")
1204-
sfc.add_argument(
1205-
"--source_folders", nargs="+", metavar="FOLDER", help="folders to mine (default: inbox)"
1206-
)
1203+
sfc.add_argument("--source_folders", nargs="+", metavar="FOLDER", help="folders to mine (default: inbox)")
12071204
sfc.add_argument(
12081205
"--include_nested",
12091206
type=lambda v: str(v).lower() not in ("false", "0", "no"),

tests/test_client.py

Lines changed: 50 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,12 @@ def test_describe_unknown_verb_steers(self):
121121

122122
def test_read_only_verbs_advertise_read_only(self):
123123
read_only = (
124-
"mail-list", "mail-get", "rule-list", "rule-verify", "category-list", "searchfolder-list",
124+
"mail-list",
125+
"mail-get",
126+
"rule-list",
127+
"rule-verify",
128+
"category-list",
129+
"searchfolder-list",
125130
)
126131
for name in read_only:
127132
tool = next(t for t in client.TOOLS if t["name"] == name)
@@ -512,8 +517,12 @@ def responder(method, url, **kw):
512517
client._http = rec
513518
self._capture(
514519
client.cmd_rule_create,
515-
_Args(name="Flag", header_contains=["List-Unsubscribe"], move_to_folder=None,
516-
assign_category=["Needs attention"]),
520+
_Args(
521+
name="Flag",
522+
header_contains=["List-Unsubscribe"],
523+
move_to_folder=None,
524+
assign_category=["Needs attention"],
525+
),
517526
)
518527
rule_post = next(c for c in rec.calls if c[0] == "POST" and c[1].endswith("/messageRules"))
519528
actions = rule_post[3]["actions"]
@@ -540,8 +549,12 @@ def responder(method, url, **kw):
540549
client._http = rec
541550
self._capture(
542551
client.cmd_rule_create,
543-
_Args(name="Both", header_contains=["List-Unsubscribe"], move_to_folder="News",
544-
assign_category=["Needs attention"]),
552+
_Args(
553+
name="Both",
554+
header_contains=["List-Unsubscribe"],
555+
move_to_folder="News",
556+
assign_category=["Needs attention"],
557+
),
545558
)
546559
rule_post = next(c for c in rec.calls if c[0] == "POST" and c[1].endswith("/messageRules"))
547560
actions = rule_post[3]["actions"]
@@ -598,8 +611,13 @@ def test_create_refuses_without_mail_readwrite(self):
598611
self._sign_in(scope)
599612
with self.assertRaises(client.SteerError):
600613
client.cmd_searchfolder_create(
601-
_Args(name="N", category="Needs attention", filter_query=None,
602-
source_folders=None, include_nested=True)
614+
_Args(
615+
name="N",
616+
category="Needs attention",
617+
filter_query=None,
618+
source_folders=None,
619+
include_nested=True,
620+
)
603621
)
604622

605623
def test_create_refuses_without_filter(self):
@@ -616,8 +634,13 @@ def test_create_shapes_body_with_odata_type(self):
616634
client._http = rec
617635
self._capture(
618636
client.cmd_searchfolder_create,
619-
_Args(name="Needs attention", category="Needs attention", filter_query=None,
620-
source_folders=["inbox"], include_nested=True),
637+
_Args(
638+
name="Needs attention",
639+
category="Needs attention",
640+
filter_query=None,
641+
source_folders=["inbox"],
642+
include_nested=True,
643+
),
621644
)
622645
post = next(c for c in rec.calls if c[0] == "POST")
623646
self.assertTrue(post[1].endswith("/me/mailFolders/searchfolders/childFolders"))
@@ -633,8 +656,13 @@ def test_create_explicit_filter_overrides_category(self):
633656
client._http = rec
634657
self._capture(
635658
client.cmd_searchfolder_create,
636-
_Args(name="Big", category="Ignored", filter_query="hasAttachments eq true",
637-
source_folders=None, include_nested=False),
659+
_Args(
660+
name="Big",
661+
category="Ignored",
662+
filter_query="hasAttachments eq true",
663+
source_folders=None,
664+
include_nested=False,
665+
),
638666
)
639667
body = next(c for c in rec.calls if c[0] == "POST")[3]
640668
self.assertEqual(body["filterQuery"], "hasAttachments eq true")
@@ -643,9 +671,17 @@ def test_create_explicit_filter_overrides_category(self):
643671

644672
def test_list_read_scope_only(self):
645673
self._sign_in("Mail.Read MailboxSettings.Read offline_access")
646-
payload = {"value": [{"id": "sf1", "displayName": "Needs attention",
647-
"filterQuery": "categories/any(c:c eq 'Needs attention')",
648-
"includeNestedFolders": True, "sourceFolderIds": ["inbox"]}]}
674+
payload = {
675+
"value": [
676+
{
677+
"id": "sf1",
678+
"displayName": "Needs attention",
679+
"filterQuery": "categories/any(c:c eq 'Needs attention')",
680+
"includeNestedFolders": True,
681+
"sourceFolderIds": ["inbox"],
682+
}
683+
]
684+
}
649685
rec = _HttpRecorder(lambda method, url, **kw: payload)
650686
client._http = rec
651687
out = self._capture(client.cmd_searchfolder_list, _Args(format="concise"))

tests/test_url_construction.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,7 @@ def setUp(self):
8888
"access_token": "fake-access",
8989
"refresh_token": "fake-refresh",
9090
"scope": (
91-
"Mail.Read Mail.ReadWrite MailboxSettings.Read "
92-
"MailboxSettings.ReadWrite offline_access"
91+
"Mail.Read Mail.ReadWrite MailboxSettings.Read MailboxSettings.ReadWrite offline_access"
9392
),
9493
"expires_at": time.time() + 3600,
9594
}
@@ -167,8 +166,13 @@ def test_searchfolder_create_url_with_category_filter_is_valid(self):
167166
# POST path itself must be valid; assert no query/path corruption regardless.
168167
self._run(
169168
client.cmd_searchfolder_create,
170-
_Args(name="Needs attention", category="Needs attention", filter_query=None,
171-
source_folders=["inbox"], include_nested=True),
169+
_Args(
170+
name="Needs attention",
171+
category="Needs attention",
172+
filter_query=None,
173+
source_folders=["inbox"],
174+
include_nested=True,
175+
),
172176
)
173177
self.assertTrue(any(u.endswith("/me/mailFolders/searchfolders/childFolders") for u in self.urls))
174178
for url in self.urls:

0 commit comments

Comments
 (0)