Commit 43c2cf0
committed
chore(types): reduce pyrefly errors from 213 → 130 (38% drop)
Tackles the largest clusters of real type issues without resorting to
`# type: ignore`:
**Protocol conformance (lock_scope)** — all 8 adapters typed `lock_scope`
as `str | None` instead of `LockScope | None` (`Literal['channel',
'thread'] | None`), so every adapter failed the `Adapter` protocol,
cascading through every `adapter=self` call site (ActionEvent,
ReactionEvent, etc.). Fixed at the source + propagated to internal
`_lock_scope` fields on stateful adapters.
**Protocol conformance (parameter names)** — protocols compare parameter
names, not just types. Several adapters named params `_thread_id` /
`_status` / `_emoji` to signal "unused", which broke structural typing
against `Adapter`. Renamed to match the protocol.
**Optional dep submodule imports** — `replace-imports-with-any` only
matched top-level (`slack_sdk`, `nacl`, `redis`), so submodule imports
(`slack_sdk.web.async_client`, `nacl.signing`, `redis.asyncio`) still
flagged. Added `.*` wildcards for each optional dep.
**TypedDict keys that are Python keywords** — `WhatsAppInboundMessage`
had `from_` but the runtime JSON key is `"from"`, so every
`message["from"]` access flagged bad-typed-dict-key. Converted to
functional-form TypedDict so the Python source can spell `"from"` as
a string key.
**TypedDict union duck-typing** — GitHub adapter's init detects auth
mode via `config.get("token")` / `.get("app_id")`, but the public
config type is a union of 4 auth-specific TypedDicts where no single
variant has all keys. Added an internal superset TypedDict
(`_GitHubAdapterConfigInternal`) cast at the init boundary so the
duck-typing stays type-safe without fragmenting the public API.
**Event types accepting None** — `ReactionEvent.thread` and
`SlashCommandEvent.channel` were typed as required, but adapters
legitimately don't always have a Thread/Channel at dispatch time (e.g.
Slack reactions on channel-root messages, Discord DM slash commands).
Relaxed to `Thread | None` / `Channel | None` with a docstring note
for consumers.
Baseline regenerated (`uv run pyrefly check --baseline ...
--update-baseline`) — reduced from 213 → 130 entries, all remaining
entries are now on the local repo paths (previous baseline had
`/home/user/...` artifacts from the cloud agent env that never
matched locally).
Validation:
- `uv run pyrefly check --baseline=.pyrefly-baseline.json` → 0 new
- `uv run ruff check src/ tests/ scripts/` → clean
- `uv run pytest tests/` → 3359 passed, 11 skipped1 parent 6292436 commit 43c2cf0
13 files changed
Lines changed: 296 additions & 1240 deletions
File tree
- src/chat_sdk
- adapters
- discord
- github
- google_chat
- linear
- slack
- teams
- telegram
- whatsapp
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
99 | 99 | | |
100 | 100 | | |
101 | 101 | | |
102 | | - | |
| 102 | + | |
103 | 103 | | |
104 | | - | |
| 104 | + | |
| 105 | + | |
105 | 106 | | |
106 | | - | |
| 107 | + | |
| 108 | + | |
107 | 109 | | |
| 110 | + | |
108 | 111 | | |
109 | 112 | | |
| 113 | + | |
110 | 114 | | |
| 115 | + | |
111 | 116 | | |
112 | 117 | | |
| 118 | + | |
113 | 119 | | |
114 | 120 | | |
| 121 | + | |
115 | 122 | | |
116 | 123 | | |
117 | 124 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
| 55 | + | |
55 | 56 | | |
56 | 57 | | |
57 | 58 | | |
| |||
160 | 161 | | |
161 | 162 | | |
162 | 163 | | |
163 | | - | |
| 164 | + | |
164 | 165 | | |
165 | 166 | | |
166 | 167 | | |
| |||
953 | 954 | | |
954 | 955 | | |
955 | 956 | | |
956 | | - | |
| 957 | + | |
957 | 958 | | |
958 | 959 | | |
959 | 960 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
20 | | - | |
| 20 | + | |
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
| 34 | + | |
34 | 35 | | |
35 | 36 | | |
36 | 37 | | |
| |||
47 | 48 | | |
48 | 49 | | |
49 | 50 | | |
| 51 | + | |
50 | 52 | | |
51 | 53 | | |
52 | 54 | | |
| |||
89 | 91 | | |
90 | 92 | | |
91 | 93 | | |
92 | | - | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
93 | 98 | | |
94 | 99 | | |
95 | 100 | | |
| |||
177 | 182 | | |
178 | 183 | | |
179 | 184 | | |
180 | | - | |
| 185 | + | |
181 | 186 | | |
182 | 187 | | |
183 | 188 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
80 | 80 | | |
81 | 81 | | |
82 | 82 | | |
83 | | - | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
84 | 100 | | |
85 | 101 | | |
86 | 102 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
69 | 69 | | |
70 | 70 | | |
71 | 71 | | |
| 72 | + | |
72 | 73 | | |
73 | 74 | | |
74 | 75 | | |
| |||
130 | 131 | | |
131 | 132 | | |
132 | 133 | | |
133 | | - | |
| 134 | + | |
134 | 135 | | |
135 | 136 | | |
136 | 137 | | |
| |||
211 | 212 | | |
212 | 213 | | |
213 | 214 | | |
214 | | - | |
| 215 | + | |
215 | 216 | | |
216 | 217 | | |
217 | 218 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
| 50 | + | |
50 | 51 | | |
51 | 52 | | |
52 | 53 | | |
| |||
169 | 170 | | |
170 | 171 | | |
171 | 172 | | |
172 | | - | |
| 173 | + | |
173 | 174 | | |
174 | 175 | | |
175 | 176 | | |
| |||
537 | 538 | | |
538 | 539 | | |
539 | 540 | | |
540 | | - | |
| 541 | + | |
541 | 542 | | |
542 | 543 | | |
543 | 544 | | |
| |||
554 | 555 | | |
555 | 556 | | |
556 | 557 | | |
557 | | - | |
| 558 | + | |
558 | 559 | | |
559 | 560 | | |
560 | 561 | | |
| |||
575 | 576 | | |
576 | 577 | | |
577 | 578 | | |
578 | | - | |
579 | | - | |
580 | | - | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
581 | 582 | | |
582 | 583 | | |
583 | 584 | | |
584 | 585 | | |
585 | | - | |
| 586 | + | |
586 | 587 | | |
587 | 588 | | |
588 | 589 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
| 76 | + | |
76 | 77 | | |
77 | 78 | | |
78 | 79 | | |
| |||
203 | 204 | | |
204 | 205 | | |
205 | 206 | | |
206 | | - | |
| 207 | + | |
207 | 208 | | |
208 | 209 | | |
209 | 210 | | |
| |||
245 | 246 | | |
246 | 247 | | |
247 | 248 | | |
248 | | - | |
| 249 | + | |
249 | 250 | | |
250 | 251 | | |
251 | 252 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
| 48 | + | |
48 | 49 | | |
49 | 50 | | |
50 | 51 | | |
| |||
195 | 196 | | |
196 | 197 | | |
197 | 198 | | |
198 | | - | |
| 199 | + | |
199 | 200 | | |
200 | 201 | | |
201 | 202 | | |
| |||
767 | 768 | | |
768 | 769 | | |
769 | 770 | | |
770 | | - | |
771 | | - | |
772 | | - | |
| 771 | + | |
| 772 | + | |
| 773 | + | |
773 | 774 | | |
774 | 775 | | |
775 | 776 | | |
776 | 777 | | |
777 | 778 | | |
778 | 779 | | |
779 | | - | |
780 | | - | |
781 | | - | |
| 780 | + | |
| 781 | + | |
| 782 | + | |
782 | 783 | | |
783 | 784 | | |
784 | 785 | | |
785 | 786 | | |
786 | | - | |
| 787 | + | |
787 | 788 | | |
788 | 789 | | |
789 | 790 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
68 | 68 | | |
69 | 69 | | |
70 | 70 | | |
| 71 | + | |
71 | 72 | | |
72 | 73 | | |
73 | 74 | | |
| |||
257 | 258 | | |
258 | 259 | | |
259 | 260 | | |
260 | | - | |
| 261 | + | |
261 | 262 | | |
262 | 263 | | |
263 | 264 | | |
| |||
300 | 301 | | |
301 | 302 | | |
302 | 303 | | |
303 | | - | |
| 304 | + | |
304 | 305 | | |
305 | 306 | | |
306 | 307 | | |
| |||
1018 | 1019 | | |
1019 | 1020 | | |
1020 | 1021 | | |
1021 | | - | |
| 1022 | + | |
1022 | 1023 | | |
1023 | 1024 | | |
1024 | 1025 | | |
| |||
0 commit comments