-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Improve error messages for missing annotations (return type + arguments) #19125
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
Update fastparse.py
for more information, see https://pre-commit.ci
…e, give missing arg names in err msg
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
@JukkaL can you please review. Please let me know if any changes are needed. thanks. |
This comment has been minimized.
This comment has been minimized.
Diff from mypy_primer, showing the effect of this PR on open source code: antidote (https://github.com/Finistere/antidote)
+ docs/conf.py:223: note: Use "-> None" if function does not return a value
typeshed-stats (https://github.com/AlexWaygood/typeshed-stats): 1.64x slower (58.6s -> 96.3s in single noisy sample)
prefect (https://github.com/PrefectHQ/prefect): 1.08x slower (71.1s -> 76.7s in single noisy sample)
tornado (https://github.com/tornadoweb/tornado)
+ tornado/web.py:1942: error: Unused "type: ignore" comment [unused-ignore]
+ tornado/web.py:2013: error: Unused "type: ignore" comment [unused-ignore]
+ tornado/web.py:2042: error: Unused "type: ignore" comment [unused-ignore]
+ tornado/web.py:3358: error: Unused "type: ignore" comment [unused-ignore]
+ tornado/web.py:3480: error: Unused "type: ignore" comment [unused-ignore]
bokeh (https://github.com/bokeh/bokeh): 1.07x slower (79.4s -> 85.0s in single noisy sample)
kornia (https://github.com/kornia/kornia)
+ kornia/feature/dedode/detector.py:25: error: Unused "type: ignore" comment [unused-ignore]
+ kornia/feature/dedode/descriptor.py:24: error: Unused "type: ignore" comment [unused-ignore]
+ kornia/feature/dedode/decoder.py:27: error: Unused "type: ignore" comment [unused-ignore]
+ kornia/feature/lightglue.py:420: error: Unused "type: ignore" comment [unused-ignore]
+ kornia/augmentation/container/base.py:318: error: Unused "type: ignore" comment [unused-ignore]
pyodide (https://github.com/pyodide/pyodide)
- pyodide-build/pyodide_build/common.py:408: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
+ pyodide-build/pyodide_build/common.py:408: error: Function is missing a type annotation for one or more arguments: "verbose" [no-untyped-def]
- pyodide-build/pyodide_build/common.py:424: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
+ pyodide-build/pyodide_build/common.py:424: error: Function is missing a type annotation for one or more arguments: "verbose" [no-untyped-def]
- pyodide-build/pyodide_build/common.py:439: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
+ pyodide-build/pyodide_build/common.py:439: error: Function is missing a type annotation for one or more arguments: "verbose" [no-untyped-def]
- pyodide-build/pyodide_build/recipe/skeleton.py:237: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
+ pyodide-build/pyodide_build/recipe/skeleton.py:237: error: Function is missing a type annotation for one or more arguments: "yaml" [no-untyped-def]
- pyodide-build/pyodide_build/recipe/skeleton.py:246: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
+ pyodide-build/pyodide_build/recipe/skeleton.py:246: error: Function is missing a type annotation for one or more arguments: "yaml", "yaml_content" [no-untyped-def]
- pyodide-build/pyodide_build/tests/test_cli_xbuildenv.py:29: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
+ pyodide-build/pyodide_build/tests/test_cli_xbuildenv.py:29: error: Function is missing a type annotation for one or more arguments: "json_str" [no-untyped-def]
- pyodide-build/pyodide_build/recipe/builder.py:743: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
+ pyodide-build/pyodide_build/recipe/builder.py:743: error: Function is missing a type annotation for one or more arguments: "modify_rpath" [no-untyped-def]
- pyodide-build/pyodide_build/tests/recipe/test_graph_builder.py:133: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
+ pyodide-build/pyodide_build/tests/recipe/test_graph_builder.py:133: error: Function is missing a type annotation for one or more arguments: "self" [no-untyped-def]
- pyodide-build/pyodide_build/tests/recipe/test_graph_builder.py:161: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
+ pyodide-build/pyodide_build/tests/recipe/test_graph_builder.py:161: error: Function is missing a type annotation for one or more arguments: "self" [no-untyped-def]
- pyodide-build/pyodide_build/tests/test_cli.py:359: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
+ pyodide-build/pyodide_build/tests/test_cli.py:359: error: Function is missing a type annotation for one or more arguments: "isolation", "skip_dependency_check" [no-untyped-def]
artigraph (https://github.com/artigraph/artigraph)
+ src/arti/internal/mappings.py:221: note: Use "-> None" if function does not return a value
- src/arti/internal/models.py:146: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
- src/arti/internal/models.py:150: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
pyppeteer (https://github.com/pyppeteer/pyppeteer)
- pyppeteer/launcher.py:222: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
+ pyppeteer/launcher.py:222: error: Function is missing a type annotation for one or more arguments: "url" [no-untyped-def]
werkzeug (https://github.com/pallets/werkzeug)
+ tests/middleware/test_shared_data.py:14: note: Use "-> None" if function does not return a value
+ tests/test_wsgi.py:60: note: Use "-> None" if function does not return a value
+ tests/test_wsgi.py:317: note: Use "-> None" if function does not return a value
- tests/test_wsgi.py:323: error: Function is missing a type annotation [no-untyped-def]
+ tests/test_wsgi.py:323: error: Function is missing a return type annotation [no-untyped-def]
+ tests/test_wrappers.py:44: note: Use "-> None" if function does not return a value
+ tests/test_wrappers.py:200: note: Use "-> None" if function does not return a value
- tests/test_wrappers.py:285: error: Function is missing a type annotation [no-untyped-def]
+ tests/test_wrappers.py:285: error: Function is missing a return type annotation [no-untyped-def]
+ tests/test_wrappers.py:315: note: Use "-> None" if function does not return a value
+ tests/test_wrappers.py:336: note: Use "-> None" if function does not return a value
+ tests/test_wrappers.py:452: note: Use "-> None" if function does not return a value
+ tests/test_wrappers.py:661: note: Use "-> None" if function does not return a value
+ tests/test_wrappers.py:1165: note: Use "-> None" if function does not return a value
+ tests/test_utils.py:194: note: Use "-> None" if function does not return a value
+ tests/test_utils.py:214: note: Use "-> None" if function does not return a value
+ tests/test_urls.py:82: note: Use "-> None" if function does not return a value
+ tests/test_test.py:175: note: Use "-> None" if function does not return a value
+ tests/test_test.py:557: note: Use "-> None" if function does not return a value
- tests/test_test.py:686: error: Function is missing a type annotation [no-untyped-def]
+ tests/test_test.py:686: error: Function is missing a return type annotation [no-untyped-def]
+ tests/test_test.py:713: note: Use "-> None" if function does not return a value
- tests/test_test.py:716: error: Function is missing a type annotation [no-untyped-def]
+ tests/test_test.py:716: error: Function is missing a return type annotation [no-untyped-def]
- tests/test_test.py:738: error: Function is missing a type annotation [no-untyped-def]
+ tests/test_test.py:738: error: Function is missing a return type annotation [no-untyped-def]
- tests/test_test.py:773: error: Function is missing a type annotation [no-untyped-def]
+ tests/test_test.py:773: error: Function is missing a return type annotation [no-untyped-def]
+ tests/test_test.py:851: note: Use "-> None" if function does not return a value
+ tests/test_send_file.py:21: note: Use "-> None" if function does not return a value
+ tests/test_send_file.py:47: note: Use "-> None" if function does not return a value
+ tests/test_send_file.py:70: note: Use "-> None" if function does not return a value
+ tests/test_send_file.py:78: note: Use "-> None" if function does not return a value
+ tests/test_send_file.py:115: note: Use "-> None" if function does not return a value
+ tests/test_send_file.py:144: note: Use "-> None" if function does not return a value
+ tests/test_send_file.py:167: note: Use "-> None" if function does not return a value
+ tests/test_send_file.py:180: note: Use "-> None" if function does not return a value
+ tests/test_send_file.py:188: note: Use "-> None" if function does not return a value
+ tests/test_send_file.py:193: note: Use "-> None" if function does not return a value
+ tests/test_security.py:58: note: Use "-> None" if function does not return a value
+ tests/test_routing.py:136: note: Use "-> None" if function does not return a value
+ tests/test_routing.py:518: note: Use "-> None" if function does not return a value
+ tests/test_routing.py:766: note: Use "-> None" if function does not return a value
+ tests/test_routing.py:792: note: Use "-> None" if function does not return a value
+ tests/test_routing.py:933: note: Use "-> None" if function does not return a value
+ tests/test_routing.py:955: note: Use "-> None" if function does not return a value
+ tests/test_routing.py:1098: note: Use "-> None" if function does not return a value
+ tests/test_routing.py:1115: note: Use "-> None" if function does not return a value
+ tests/test_routing.py:1288: note: Use "-> None" if function does not return a value
+ tests/test_routing.py:1540: note: Use "-> None" if function does not return a value
+ tests/test_local.py:34: note: Use "-> None" if function does not return a value
+ tests/test_local.py:62: note: Use "-> None" if function does not return a value
- tests/test_local.py:236: error: Function is missing a type annotation [no-untyped-def]
+ tests/test_local.py:236: error: Function is missing a return type annotation [no-untyped-def]
+ tests/test_local.py:284: note: Use "-> None" if function does not return a value
+ tests/test_local.py:292: note: Use "-> None" if function does not return a value
- tests/test_local.py:299: error: Function is missing a type annotation [no-untyped-def]
+ tests/test_local.py:299: error: Function is missing a return type annotation [no-untyped-def]
- tests/test_local.py:302: error: Function is missing a type annotation [no-untyped-def]
+ tests/test_local.py:302: error: Function is missing a return type annotation [no-untyped-def]
- tests/test_local.py:305: error: Function is missing a type annotation [no-untyped-def]
+ tests/test_local.py:305: error: Function is missing a return type annotation [no-untyped-def]
- tests/test_local.py:471: error: Function is missing a type annotation [no-untyped-def]
+ tests/test_local.py:471: error: Function is missing a return type annotation [no-untyped-def]
+ tests/test_local.py:475: note: Use "-> None" if function does not return a value
+ tests/test_local.py:527: note: Use "-> None" if function does not return a value
+ tests/test_local.py:530: note: Use "-> None" if function does not return a value
+ tests/test_local.py:603: note: Use "-> None" if function does not return a value
+ tests/test_http.py:107: note: Use "-> None" if function does not return a value
+ tests/test_http.py:118: note: Use "-> None" if function does not return a value
+ tests/test_http.py:356: note: Use "-> None" if function does not return a value
- tests/test_http.py:395: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
+ tests/test_http.py:395: error: Function is missing a type annotation for one or more arguments: "value", "expect" [no-untyped-def]
+ tests/test_http.py:584: note: Use "-> None" if function does not return a value
+ tests/test_http.py:758: note: Use "-> None" if function does not return a value
+ tests/test_http.py:783: note: Use "-> None" if function does not return a value
+ tests/test_http.py:788: note: Use "-> None" if function does not return a value
+ tests/test_http.py:807: note: Use "-> None" if function does not return a value
+ tests/test_http.py:812: note: Use "-> None" if function does not return a value
+ tests/test_formparser.py:180: note: Use "-> None" if function does not return a value
+ tests/test_exceptions.py:49: note: Use "-> None" if function does not return a value
+ tests/test_exceptions.py:134: note: Use "-> None" if function does not return a value
- tests/test_exceptions.py:147: error: Function is missing a return type annotation [no-untyped-def]
+ tests/test_exceptions.py:147: error: Function is missing a type annotation [no-untyped-def]
- tests/test_exceptions.py:167: error: Function is missing a return type annotation [no-untyped-def]
+ tests/test_exceptions.py:167: error: Function is missing a type annotation [no-untyped-def]
- tests/test_debug.py:114: error: Function is missing a type annotation [no-untyped-def]
+ tests/test_debug.py:114: error: Function is missing a return type annotation [no-untyped-def]
- tests/test_debug.py:155: error: Function is missing a type annotation [no-untyped-def]
+ tests/test_debug.py:155: error: Function is missing a return type annotation [no-untyped-def]
+ tests/test_debug.py:155: note: Use "-> None" if function does not return a value
+ tests/test_debug.py:224: note: Use "-> None" if function does not return a value
+ tests/test_debug.py:249: note: Use "-> None" if function does not return a value
+ tests/test_debug.py:260: note: Use "-> None" if function does not return a value
+ tests/test_datastructures.py:1183: note: Use "-> None" if function does not return a value
+ tests/test_datastructures.py:1207: note: Use "-> None" if function does not return a value
+ tests/test_datastructures.py:1221: note: Use "-> None" if function does not return a value
+ tests/test_datastructures.py:1232: note: Use "-> None" if function does not return a value
+ tests/test_datastructures.py:1247: note: Use "-> None" if function does not return a value
+ tests/test_datastructures.py:1264: note: Use "-> None" if function does not return a value
+ tests/test_datastructures.py:1274: note: Use "-> None" if function does not return a value
+ tests/test_datastructures.py:1283: note: Use "-> None" if function does not return a value
+ tests/middleware/test_lint.py:32: note: Use "-> None" if function does not return a value
+ tests/middleware/test_http_proxy.py:9: note: Use "-> None" if function does not return a value
discord.py (https://github.com/Rapptz/discord.py): 1.11x slower (270.0s -> 299.4s in single noisy sample)
cki-lib (https://gitlab.com/cki-project/cki-lib)
+ cki_lib/psql.py:14: note: Use "-> None" if function does not return a value
- cki_lib/metrics/server.py:8: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
+ cki_lib/metrics/server.py:8: error: Function is missing a type annotation for one or more arguments: "_" [no-untyped-def]
- cki_lib/s3bucket.py:18: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
+ cki_lib/s3bucket.py:18: error: Function is missing a type annotation for one or more arguments: "bucket_spec" [no-untyped-def]
+ cki_lib/s3bucket.py:36: note: Use "-> None" if function does not return a value
+ cki_lib/timer.py:13: note: Use "-> None" if function does not return a value
+ tests/cki_pipeline/mocks.py:12: note: Use "-> None" if function does not return a value
+ tests/cki_pipeline/mocks.py:35: note: Use "-> None" if function does not return a value
+ tests/cki_pipeline/mocks.py:47: note: Use "-> None" if function does not return a value
+ tests/cki_pipeline/mocks.py:62: note: Use "-> None" if function does not return a value
+ cki_lib/misc.py:124: note: Use "-> None" if function does not return a value
+ cki_lib/misc.py:343: note: Use "-> None" if function does not return a value
+ cki_lib/misc.py:354: note: Use "-> None" if function does not return a value
- cki_lib/kcidb/validate.py:49: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
+ cki_lib/kcidb/validate.py:49: error: Function is missing a type annotation for one or more arguments: "data" [no-untyped-def]
+ cki_lib/kcidb/validate.py:78: note: Use "-> None" if function does not return a value
+ cki_lib/kcidb/validate.py:87: note: Use "-> None" if function does not return a value
+ cki_lib/kcidb/validate.py:114: note: Use "-> None" if function does not return a value
+ cki_lib/kcidb/validate.py:127: note: Use "-> None" if function does not return a value
- cki_lib/kcidb/validate.py:137: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
+ cki_lib/kcidb/validate.py:137: error: Function is missing a type annotation for one or more arguments: "kcidb_schema" [no-untyped-def]
+ cki_lib/kcidb/validate.py:166: note: Use "-> None" if function does not return a value
+ cki_lib/kcidb/validate.py:179: note: Use "-> None" if function does not return a value
+ cki_lib/owners.py:22: note: Use "-> None" if function does not return a value
- cki_lib/owners.py:142: error: Function is missing a type annotation [no-untyped-def]
+ cki_lib/owners.py:142: error: Function is missing a return type annotation [no-untyped-def]
+ cki_lib/owners.py:150: note: Use "-> None" if function does not return a value
+ cki_lib/cronjob.py:25: note: Use "-> None" if function does not return a value
+ cki_lib/cronjob.py:31: note: Use "-> None" if function does not return a value
+ cki_lib/cronjob.py:68: note: Use "-> None" if function does not return a value
+ cki_lib/cronjob.py:77: note: Use "-> None" if function does not return a value
+ cki_lib/metrics/__init__.py:13: note: Use "-> None" if function does not return a value
+ cki_lib/metrics/__init__.py:47: note: Use "-> None" if function does not return a value
+ cki_lib/kcidb/file.py:27: note: Use "-> None" if function does not return a value
+ cki_lib/kcidb/file.py:59: note: Use "-> None" if function does not return a value
+ tests/test_session.py:109: note: Use "-> None" if function does not return a value
+ tests/test_session.py:152: note: Use "-> None" if function does not return a value
+ tests/test_session.py:168: note: Use "-> None" if function does not return a value
+ tests/test_s3bucket.py:24: note: Use "-> None" if function does not return a value
+ tests/test_s3bucket.py:37: note: Use "-> None" if function does not return a value
+ tests/test_retrying.py:17: note: Use "-> None" if function does not return a value
+ tests/test_psql.py:35: note: Use "-> None" if function does not return a value
+ tests/test_psql.py:45: note: Use "-> None" if function does not return a value
+ tests/test_psql.py:55: note: Use "-> None" if function does not return a value
+ tests/test_psql.py:66: note: Use "-> None" if function does not return a value
+ tests/test_misc.py:602: note: Use "-> None" if function does not return a value
+ tests/test_metrics.py:89: note: Use "-> None" if function does not return a value
+ tests/test_metrics.py:99: note: Use "-> None" if function does not return a value
+ tests/test_gitlab.py:21: note: Use "-> None" if function does not return a value
+ tests/test_gitlab.py:29: note: Use "-> None" if function does not return a value
+ tests/test_gitlab.py:37: note: Use "-> None" if function does not return a value
+ tests/test_gitlab.py:46: note: Use "-> None" if function does not return a value
+ tests/test_gitlab.py:55: note: Use "-> None" if function does not return a value
+ tests/test_gitlab.py:64: note: Use "-> None" if function does not return a value
+ cki_lib/stomp.py:24: note: Use "-> None" if function does not return a value
+ cki_lib/stomp.py:36: note: Use "-> None" if function does not return a value
+ cki_lib/stomp.py:41: note: Use "-> None" if function does not return a value
+ cki_lib/messagequeue.py:85: note: Use "-> None" if function does not return a value
+ cki_lib/messagequeue.py:128: note: Use "-> None" if function does not return a value
+ cki_lib/messagequeue.py:222: note: Use "-> None" if function does not return a value
- cki_lib/messagequeue.py:254: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
+ cki_lib/messagequeue.py:254: error: Function is missing a type annotation for one or more arguments: "thread_queue", "thread_quit", "thread_dead_channel" [no-untyped-def]
+ cki_lib/messagequeue.py:310: note: Use "-> None" if function does not return a value
+ cki_lib/messagequeue.py:321: note: Use "-> None" if function does not return a value
+ cki_lib/messagequeue.py:331: note: Use "-> None" if function does not return a value
- cki_lib/messagequeue.py:372: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
+ cki_lib/messagequeue.py:372: error: Function is missing a type annotation for one or more arguments: "manual_ack" [no-untyped-def]
+ cki_lib/messagequeue.py:470: note: Use "-> None" if function does not return a value
+ cki_lib/messagequeue.py:498: note: Use "-> None" if function does not return a value
+ cki_lib/krb_ticket_refresher.py:24: note: Use "-> None" if function does not return a value
+ cki_lib/cki_pipeline.py:18: note: Use "-> None" if function does not return a value
+ cki_lib/cki_pipeline.py:36: note: Use "-> None" if function does not return a value
+ cki_lib/cki_pipeline.py:48: note: Use "-> None" if function does not return a value
+ cki_lib/cki_pipeline.py:85: note: Use "-> None" if function does not return a value
+ cki_lib/cki_pipeline.py:100: note: Use "-> None" if function does not return a value
+ cki_lib/cki_pipeline.py:119: note: Use "-> None" if function does not return a value
+ cki_lib/cki_pipeline.py:197: note: Use "-> None" if function does not return a value
+ cki_lib/cki_pipeline.py:371: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:125: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:170: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:209: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:219: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:250: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:261: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:274: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:293: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:344: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:375: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:380: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:386: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:392: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:398: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:404: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:411: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:419: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:426: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:432: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:437: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:444: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:477: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:490: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:516: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:553: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:558: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:563: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:568: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:573: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:579: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:592: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:806: note: Use "-> None" if function does not return a value
+ tests/test_messagequeue.py:926: note: Use "-> None" if function does not return a value
+ tests/test_krb_ticket_refresher.py:17: note: Use "-> None" if function does not return a value
+ tests/test_krb_ticket_refresher.py:51: note: Use "-> None" if function does not return a value
+ tests/test_krb_ticket_refresher.py:61: note: Use "-> None" if function does not return a value
+ tests/test_krb_ticket_refresher.py:84: note: Use "-> None" if function does not return a value
+ tests/kcidb/test_validate.py:219: note: Use "-> None" if function does not return a value
+ tests/kcidb/test_validate.py:228: note: Use "-> None" if function does not return a value
+ tests/kcidb/test_validate.py:239: note: Use "-> None" if function does not return a value
+ tests/kcidb/test_validate.py:248: note: Use "-> None" if function does not return a value
+ tests/kcidb/test_validate.py:360: note: Use "-> None" if function does not return a value
+ tests/cki_pipeline/test_trigger_multiple.py:48: note: Use "-> None" if function does not return a value
+ tests/cki_pipeline/test_trigger_multiple.py:83: note: Use "-> None" if function does not return a value
+ tests/cki_pipeline/test_trigger.py:34: note: Use "-> None" if function does not return a value
+ tests/cki_pipeline/test_trigger.py:48: note: Use "-> None" if function does not return a value
+ tests/cki_pipeline/test_trigger.py:63: note: Use "-> None" if function does not return a value
+ tests/cki_pipeline/test_trigger.py:78: note: Use "-> None" if function does not return a value
+ tests/cki_pipeline/test_trigger.py:93: note: Use "-> None" if function does not return a value
+ tests/cki_pipeline/test_trigger.py:108: note: Use "-> None" if function does not return a value
+ tests/cki_pipeline/test_trigger.py:123: note: Use "-> None" if function does not return a value
+ inttests/test_messagequeue.py:19: note: Use "-> None" if function does not return a value
+ inttests/test_messagequeue.py:29: note: Use "-> None" if function does not return a value
steam.py (https://github.com/Gobot1234/steam.py)
- steam/_const.py:73: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
+ steam/_const.py:73: error: Function is missing a type annotation for one or more arguments: "__isinstance", "__vdf_dict" [no-untyped-def]
- steam/utils.py:167: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
+ steam/utils.py:167: error: Function is missing a type annotation for one or more arguments: "_" [no-untyped-def]
- steam/utils.py:173: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
+ steam/utils.py:173: error: Function is missing a type annotation for one or more arguments: "_" [no-untyped-def]
- steam/utils.py:221: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
+ steam/utils.py:221: error: Function is missing a type annotation for one or more arguments: "_" [no-untyped-def]
- steam/utils.py:227: error: Function is missing a type annotation for one or more arguments [no-untyped-def]
+ steam/utils.py:227: error: Function is missing a type annotation for one or more arguments: "_" [no-untyped-def]
|
@JukkaL can you please review. Please let me know if any changes are needed. thanks. |
@charulatalodha Sorry for the delay, this is now on my list of PRs to review next. I'll try to get back to this soon. |
The |
Thanks for highlighting this, let me take a look at these examples and understand what is the right behavior for args and kwargs.
https://github.com/kornia/kornia/blob/main/kornia/feature/dedode/decoder.py#L27 |
Summary
This PR introduces three key improvements to enhance the clarity and usefulness of Mypy's error messages related to missing type annotations.
Worked on this as part of PyCon US Sprint 2025
1. Suggest
-> None
When a Function Lacks a Return Type AnnotationProblem:
Currently, Mypy inconsistently suggests adding a
-> None
return type for functions that do not return a value.Solution:
This PR ensures that all functions missing return type annotations and returning
None
will include a note suggesting the use of-> None
.Issue Reference:
#15127 (comment)
Example:
Before:
After:
2. Improve
ARGUMENT_TYPE_EXPECTED
Error Message with Argument NamesProblem:
When functions have many parameters, it's difficult to identify which ones are missing type annotations.
Solution:
This PR enhances the error message by listing the names of up to the first five arguments missing annotations. If more than five are missing, the message is truncated with an ellipsis (
...
).Example 1 (Fewer than 5 missing args):
Before:
After:
Example 2 (5 or more missing args):
Before:
After:
3. Refactor
check_for_missing_annotations()
Change:
The check_for_missing_annotations() function has been refactored to separately handle return type annotations and argument annotations.
This separation improves code readability and simplifies future enhancements or debugging efforts.
This structural change also improves code maintainability and clarity.
Notes