From c55f7ec5bbc2221ce0ca2571b8884446ce08f3cc Mon Sep 17 00:00:00 2001 From: chengyongru Date: Tue, 23 Jun 2026 10:06:23 +0800 Subject: [PATCH] style: trim pairing sender-id comments maintainer edit: remove redundant explanatory comments from the focused sender-id normalization tests and store change without changing behavior. --- nanobot/pairing/store.py | 8 +------- tests/pairing/test_store.py | 12 ------------ 2 files changed, 1 insertion(+), 19 deletions(-) diff --git a/nanobot/pairing/store.py b/nanobot/pairing/store.py index af248913..1dff873a 100644 --- a/nanobot/pairing/store.py +++ b/nanobot/pairing/store.py @@ -44,10 +44,7 @@ def _load() -> dict[str, Any]: logger.warning("Corrupted pairing store, resetting") return {"approved": {}, "pending": {}} - # Convert approved lists to sets for O(1) lookup. Sender IDs are normalized - # to str so lookups match is_approved()/revoke(), which coerce with str(): - # IDs may be numeric (e.g. Telegram/QQ) in code or in a hand-edited - # pairing.json, and an int entry would never match the str() lookup. + # Convert approved lists to str sets for O(1) lookup. for channel, users in data.get("approved", {}).items(): data["approved"][channel] = {str(u) for u in users} return data @@ -113,9 +110,6 @@ def approve_code(code: str) -> tuple[str, str] | None: if info is None: return None channel = info["channel"] - # Coerce to str: a hand-edited pending entry may carry a numeric - # sender_id, which would otherwise add an int to the (str-normalized) - # approved set and break _save()'s sorted() on the mixed-type set. sender_id = str(info["sender_id"]) data.setdefault("approved", {}).setdefault(channel, set()).add(sender_id) _save(data) diff --git a/tests/pairing/test_store.py b/tests/pairing/test_store.py index 565d4558..d25ada71 100644 --- a/tests/pairing/test_store.py +++ b/tests/pairing/test_store.py @@ -175,25 +175,16 @@ class TestHandlePairingCommand: class TestNonStringSenderId: - """Sender IDs may be numeric (e.g. Telegram/QQ). The store normalizes them - to str so writes/reads/removals stay consistent with is_approved().""" - def test_numeric_sender_id_round_trip(self) -> None: code = store.generate_code("telegram", 12345) assert store.approve_code(code) == ("telegram", "12345") - # Approved regardless of whether the caller passes int or str. assert store.is_approved("telegram", 12345) is True assert store.is_approved("telegram", "12345") is True assert store.get_approved("telegram") == ["12345"] - # Revoke also works with a numeric id. assert store.revoke("telegram", 12345) is True assert store.is_approved("telegram", "12345") is False def test_hand_edited_numeric_pending_does_not_corrupt_approved_set(self) -> None: - # A hand-edited *pending* entry may carry a numeric sender_id. Approving - # it must coerce to str so the approved set stays homogeneously str — - # otherwise the next _save()'s sorted() on a mixed int/str set raises - # TypeError (in fact approve_code()'s own _save() would already raise). store._store_path().write_text( '{"approved": {"telegram": ["111"]}, ' '"pending": {"ABCD-EFGH": {"channel": "telegram", "sender_id": 222, ' @@ -202,13 +193,10 @@ class TestNonStringSenderId: ) assert store.approve_code("ABCD-EFGH") == ("telegram", "222") assert store.is_approved("telegram", 222) is True - # A subsequent write must not raise on a mixed-type set. store.generate_code("telegram", 333) assert store.get_approved("telegram") == ["111", "222"] def test_numeric_id_in_hand_edited_store(self) -> None: - # Operators may edit pairing.json directly; a numeric entry must still - # match the str() lookup that is_approved() performs. store._store_path().write_text( '{"approved": {"telegram": [12345]}, "pending": {}}', encoding="utf-8",