Commit 9a35360
There are several changes:
1. `add_overloaded_method_to_class` itself. It is very useful for plugin
authors, because right now it is quite easy to add a regular method, but
it is very hard to add a method with `@overload`s. I don't think that
user must face all the chalenges that I've covered in this method.
Moreover, it is quite easy even for experienced developers to forget
some flags / props / etc (I am pretty sure that I might forgot something
in the implementation)
2. `add_overloaded_method_to_class` and `add_method_to_class` now return
added nodes, it is also helpful if you want to do something with this
node in your plugin after it is created
3. I've refactored how `add_method_to_class` works and reused its parts
in the new method as well
4. `tvar_def` in `add_method_to_class` can now accept a list of type
vars, not just one
Notice that `add_method_to_class` is unchanged from the user's POV, it
should continue to work as before.
Tests are also updated to check that our overloads are correct.
Things to do later (in the next PRs / releases):
1. We can possibly add `is_final` param to methods as well
2. We can also support `@property` in a separate method at some point
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent ed18fea commit 9a35360
File tree
5 files changed
+222
-23
lines changed- mypy/plugins
- test-data/unit
- plugins
5 files changed
+222
-23
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
| 3 | + | |
| 4 | + | |
3 | 5 | | |
4 | 6 | | |
5 | 7 | | |
| |||
16 | 18 | | |
17 | 19 | | |
18 | 20 | | |
| 21 | + | |
19 | 22 | | |
20 | 23 | | |
21 | 24 | | |
| 25 | + | |
22 | 26 | | |
23 | 27 | | |
24 | 28 | | |
| |||
209 | 213 | | |
210 | 214 | | |
211 | 215 | | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
212 | 225 | | |
213 | 226 | | |
214 | 227 | | |
215 | 228 | | |
| 229 | + | |
216 | 230 | | |
217 | 231 | | |
218 | 232 | | |
219 | | - | |
| 233 | + | |
220 | 234 | | |
221 | 235 | | |
222 | | - | |
| 236 | + | |
223 | 237 | | |
| 238 | + | |
224 | 239 | | |
225 | | - | |
226 | | - | |
227 | | - | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
228 | 254 | | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
229 | 307 | | |
| 308 | + | |
230 | 309 | | |
231 | 310 | | |
232 | 311 | | |
| |||
235 | 314 | | |
236 | 315 | | |
237 | 316 | | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
238 | 340 | | |
239 | 341 | | |
240 | 342 | | |
| |||
258 | 360 | | |
259 | 361 | | |
260 | 362 | | |
261 | | - | |
262 | | - | |
| 363 | + | |
| 364 | + | |
263 | 365 | | |
264 | 366 | | |
265 | 367 | | |
| |||
269 | 371 | | |
270 | 372 | | |
271 | 373 | | |
272 | | - | |
273 | | - | |
274 | | - | |
275 | | - | |
276 | | - | |
277 | | - | |
278 | | - | |
279 | 374 | | |
280 | 375 | | |
281 | 376 | | |
| |||
286 | 381 | | |
287 | 382 | | |
288 | 383 | | |
289 | | - | |
290 | | - | |
291 | | - | |
292 | | - | |
| 384 | + | |
| 385 | + | |
293 | 386 | | |
294 | | - | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
295 | 390 | | |
296 | 391 | | |
297 | 392 | | |
| |||
304 | 399 | | |
305 | 400 | | |
306 | 401 | | |
307 | | - | |
| 402 | + | |
308 | 403 | | |
309 | 404 | | |
310 | 405 | | |
| |||
335 | 430 | | |
336 | 431 | | |
337 | 432 | | |
| 433 | + | |
338 | 434 | | |
339 | 435 | | |
340 | 436 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1011 | 1011 | | |
1012 | 1012 | | |
1013 | 1013 | | |
1014 | | - | |
1015 | 1014 | | |
1016 | 1015 | | |
| 1016 | + | |
| 1017 | + | |
| 1018 | + | |
| 1019 | + | |
1017 | 1020 | | |
1018 | 1021 | | |
1019 | 1022 | | |
1020 | 1023 | | |
| 1024 | + | |
| 1025 | + | |
| 1026 | + | |
| 1027 | + | |
| 1028 | + | |
| 1029 | + | |
| 1030 | + | |
| 1031 | + | |
| 1032 | + | |
| 1033 | + | |
| 1034 | + | |
| 1035 | + | |
| 1036 | + | |
| 1037 | + | |
| 1038 | + | |
| 1039 | + | |
| 1040 | + | |
| 1041 | + | |
| 1042 | + | |
1021 | 1043 | | |
1022 | 1044 | | |
1023 | 1045 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5935 | 5935 | | |
5936 | 5936 | | |
5937 | 5937 | | |
| 5938 | + | |
| 5939 | + | |
| 5940 | + | |
| 5941 | + | |
| 5942 | + | |
| 5943 | + | |
| 5944 | + | |
| 5945 | + | |
| 5946 | + | |
| 5947 | + | |
| 5948 | + | |
| 5949 | + | |
| 5950 | + | |
| 5951 | + | |
| 5952 | + | |
| 5953 | + | |
| 5954 | + | |
| 5955 | + | |
| 5956 | + | |
| 5957 | + | |
| 5958 | + | |
| 5959 | + | |
| 5960 | + | |
| 5961 | + | |
| 5962 | + | |
| 5963 | + | |
| 5964 | + | |
| 5965 | + | |
| 5966 | + | |
| 5967 | + | |
| 5968 | + | |
| 5969 | + | |
| 5970 | + | |
| 5971 | + | |
| 5972 | + | |
| 5973 | + | |
| 5974 | + | |
| 5975 | + | |
5938 | 5976 | | |
5939 | 5977 | | |
5940 | 5978 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1387 | 1387 | | |
1388 | 1388 | | |
1389 | 1389 | | |
1390 | | - | |
| 1390 | + | |
1391 | 1391 | | |
1392 | 1392 | | |
1393 | 1393 | | |
1394 | 1394 | | |
1395 | 1395 | | |
| 1396 | + | |
1396 | 1397 | | |
1397 | 1398 | | |
1398 | 1399 | | |
| |||
1419 | 1420 | | |
1420 | 1421 | | |
1421 | 1422 | | |
1422 | | - | |
| 1423 | + | |
1423 | 1424 | | |
1424 | 1425 | | |
1425 | 1426 | | |
1426 | 1427 | | |
1427 | 1428 | | |
| 1429 | + | |
1428 | 1430 | | |
1429 | 1431 | | |
1430 | 1432 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
0 commit comments