Skip to content

Conversation

@A5rocks
Copy link
Collaborator

@A5rocks A5rocks commented Dec 16, 2025

This is a draft PR because:

  • it doesn't work with dmypy
  • it's a bit slower:
=== Results ===

master                    2.697s (0.0%) | stdev 0.012s
f18e550f23d30c454a0f6fc2c8b41eb9e03b4f29 2.732s (+1.3%) | stdev 0.018s

@A5rocks
Copy link
Collaborator Author

A5rocks commented Dec 16, 2025

Idea for a speedup (so I don't forget): only do this for things that can be skipped unreachable (I.e. stmts in a block, toplevel stmts).

Also note that I haven't cleaned this up, which would involve removing eg the assert False special case and adding a test case for the issue this fixes.

@github-actions

This comment has been minimized.

Note that there are a few places where unreachable code can happen where this still doesn't 
help. I'm not sure what to do about them.
@A5rocks
Copy link
Collaborator Author

A5rocks commented Dec 17, 2025

I made the changes I thought would help but this is still slow:

=== Results ===

master                    2.722s (0.0%) | stdev 0.030s
806266c53875d8891cfeff412e75dafbd33faa30 2.757s (+1.3%) | stdev 0.032s
Total time taken by the whole benchmarking program (including any setup): 4 minutes, 18 seconds

I suppose this is just going to be slow no matter what...

Second run with better stdev (still slower):

=== Results ===

master                    2.700s (0.0%) | stdev 0.015s
806266c53875d8891cfeff412e75dafbd33faa30 2.732s (+1.2%) | stdev 0.020s
Total time taken by the whole benchmarking program (including any setup): 4 minutes, 29 seconds

@github-actions
Copy link
Contributor

Diff from mypy_primer, showing the effect of this PR on open source code:

strawberry (https://github.com/strawberry-graphql/strawberry)
+ strawberry/relay/types.py:846: error: Unused "type: ignore" comment  [unused-ignore]

core (https://github.com/home-assistant/core)
+ homeassistant/setup.py:739: error: Statement is unreachable  [unreachable]

aioredis (https://github.com/aio-libs/aioredis)
+ aioredis/client.py:737: error: Statement is unreachable  [unreachable]

pytest (https://github.com/pytest-dev/pytest)
+ testing/test_recwarn.py:282: error: Statement is unreachable  [unreachable]

comtypes (https://github.com/enthought/comtypes)
- comtypes/test/test_server.py:326: error: Module "comtypes.gen" has no attribute "TestLib"  [attr-defined]

egglog-python (https://github.com/egraphs-good/egglog-python)
+ python/tests/test_unstable_fn.py:177: error: Unused "type: ignore" comment  [unused-ignore]

Expression (https://github.com/cognitedata/Expression)
- README.py:498: error: Name "z" already defined on line 496  [no-redef]
- README.py:572: error: Name "z" already defined on line 570  [no-redef]
- README.py:628: error: Name "xs" already defined on line 211  [no-redef]
- README.py:632: error: Name "mapper" already defined on line 207  [no-redef]
- README.py:633: error: Name "predicate" already defined on line 208  [no-redef]
- README.py:634: error: Name "folder" already defined on line 209  [no-redef]

rotki (https://github.com/rotki/rotki)
+ rotkehlchen/accounting/structures/balance.py:147: error: Statement is unreachable  [unreachable]
+ rotkehlchen/accounting/structures/balance.py:148: error: Statement is unreachable  [unreachable]
+ rotkehlchen/history/events/structures/eth2.py:248: error: Statement is unreachable  [unreachable]
+ rotkehlchen/history/events/structures/eth2.py:265: error: Statement is unreachable  [unreachable]
+ rotkehlchen/history/price.py:366: error: Statement is unreachable  [unreachable]
+ rotkehlchen/db/eth2.py:506: error: Statement is unreachable  [unreachable]
+ rotkehlchen/db/eth2.py:596: error: Statement is unreachable  [unreachable]
+ rotkehlchen/db/eth2.py:634: error: Statement is unreachable  [unreachable]
+ rotkehlchen/api/rest.py:3521: error: Statement is unreachable  [unreachable]
+ rotkehlchen/api/rest.py:5291: error: Statement is unreachable  [unreachable]

AutoSplit (https://github.com/Toufool/AutoSplit)
- src/utils.py:147:12: error: Name "win32ui" is not defined  [name-defined]
- src/utils.py:155:29: error: Name "ctypes" is not defined  [name-defined]
- src/utils.py:156:5: error: Name "ctypes" is not defined  [name-defined]
- src/utils.py:159:9: error: Name "ctypes" is not defined  [name-defined]
- src/utils.py:160:9: error: Name "ctypes" is not defined  [name-defined]
- src/utils.py:163:19: error: Name "win32gui" is not defined  [name-defined]
- src/utils.py:176:20: error: Name "FilterGraph" is not defined  [name-defined]
- src/utils.py:182:12: error: Name "COMError" is not defined  [name-defined]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

unexpected attr-defined error in imports in dead code Platform check is not remembered after return

1 participant