Closed
Description
running mypy or dmypy on SQLAlchemy main branch crashes reliably for the new 0.990 release . For the run below, I have SQLAlchemy checked out on the rel_2_0_0b3 branch so that the results should stay the same regardless of when we make new commits to main. Same issue reproduces with mypy git master.
[classic@photon3 tmp]$ virtualenv .venv
created virtual environment CPython3.10.0.final.0-64 in 234ms
[classic@photon3 tmp]$ .venv/bin/pip install mypy
Successfully installed mypy-0.990 mypy-extensions-0.4.3 tomli-2.0.1 typing-extensions-4.4.0
[classic@photon3 tmp]$ git clone https://github.com/sqlalchemy/sqlalchemy
Cloning into 'sqlalchemy'...
[classic@photon3 tmp]$ source .venv/bin/activate
(.venv) [classic@photon3 tmp]$ cd sqlalchemy/
(.venv) [classic@photon3 tmp]$ git checkout rel_2_0_0b3
HEAD is now at 35648a109 - 2.0.0b3
(.venv) [classic@photon3 sqlalchemy:HEAD]$ mypy --show-traceback lib/
lib/sqlalchemy/util/typing.py:371: error: Missing return statement [empty-body]
lib/sqlalchemy/util/typing.py:392: error: Missing return statement [empty-body]
lib/sqlalchemy/util/typing.py:395: error: Implicit return in function which does not return [empty-body]
lib/sqlalchemy/util/typing.py:398: error: Implicit return in function which does not return [empty-body]
lib/sqlalchemy/util/typing.py:414: error: Missing return statement [empty-body]
lib/sqlalchemy/util/langhelpers.py:1451: error: Function "Callable[[type, Union[type, UnionType, Tuple[Union[type, UnionType, Tuple[Any, ...]], ...]]], bool]" could always be true in boolean context [truthy-function]
lib/sqlalchemy/sql/visitors.py:556: error: Function "Callable[..., Any]" could always be true in boolean context [truthy-function]
lib/sqlalchemy/sql/traversals.py:568: error: Function "Callable[..., Any]" could always be true in boolean context [truthy-function]
lib/sqlalchemy/pool/base.py:730: error: Function "Callable[[Optional[DBAPIConnection], Optional[_ConnectionRecord], Pool, Optional[ReferenceType[_ConnectionFairy]], Union[bool, Literal['debug'], None], bool, Optional[_ConnectionFairy]], None]" could always be true in boolean context [truthy-function]
lib/sqlalchemy/sql/compiler.py:1730: error: Function "Callable[[Any, Any], Any]" could always be true in boolean context [truthy-function]
lib/sqlalchemy/engine/interfaces.py:1259: error: Missing return statement [empty-body]
lib/sqlalchemy/engine/base.py:2950: error: Function "Callable[[], bool]" could always be true in boolean context [truthy-function]
lib/sqlalchemy/orm/bulk_persistence.py:889: error: INTERNAL ERROR -- Please try using mypy master on GitHub:
https://mypy.readthedocs.io/en/stable/common_issues.html#using-a-development-mypy-build
Please report a bug at https://github.com/python/mypy/issues
version: 1.0.0+dev.39d35cdee1bd02a6fb071334273e1c1fb0893066
Traceback (most recent call last):
File "/home/classic/tmp/.venv/bin/mypy", line 8, in <module>
sys.exit(console_entry())
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/__main__.py", line 15, in console_entry
main()
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/main.py", line 95, in main
res, messages, blockers = run_build(sources, options, fscache, t0, stdout, stderr)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/main.py", line 174, in run_build
res = build.build(sources, options, None, flush_errors, fscache, stdout, stderr)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/build.py", line 193, in build
result = _build(
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/build.py", line 276, in _build
graph = dispatch(sources, manager, stdout)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/build.py", line 2903, in dispatch
process_graph(graph, manager)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/build.py", line 3287, in process_graph
process_stale_scc(graph, scc, manager)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/build.py", line 3388, in process_stale_scc
graph[id].type_check_first_pass()
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/build.py", line 2309, in type_check_first_pass
self.type_checker().check_first_pass()
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/checker.py", line 465, in check_first_pass
self.accept(d)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/checker.py", line 573, in accept
stmt.accept(self)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/nodes.py", line 1161, in accept
return visitor.visit_class_def(self)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/checker.py", line 2132, in visit_class_def
self.accept(defn.defs)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/checker.py", line 573, in accept
stmt.accept(self)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/nodes.py", line 1242, in accept
return visitor.visit_block(self)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/checker.py", line 2569, in visit_block
self.accept(s)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/checker.py", line 573, in accept
stmt.accept(self)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/nodes.py", line 934, in accept
return visitor.visit_decorator(self)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/checker.py", line 4533, in visit_decorator
self.check_func_item(e.func, name=e.func.name)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/checker.py", line 1011, in check_func_item
self.check_func_def(defn, typ, name, allow_empty)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/checker.py", line 1208, in check_func_def
self.accept(item.body)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/checker.py", line 573, in accept
stmt.accept(self)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/nodes.py", line 1242, in accept
return visitor.visit_block(self)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/checker.py", line 2569, in visit_block
self.accept(s)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/checker.py", line 573, in accept
stmt.accept(self)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/nodes.py", line 1510, in accept
return visitor.visit_if_stmt(self)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/checker.py", line 4185, in visit_if_stmt
self.accept(s.else_body)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/checker.py", line 573, in accept
stmt.accept(self)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/nodes.py", line 1242, in accept
return visitor.visit_block(self)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/checker.py", line 2569, in visit_block
self.accept(s)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/checker.py", line 573, in accept
stmt.accept(self)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/nodes.py", line 834, in accept
return visitor.visit_func_def(self)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/checker.py", line 938, in visit_func_def
self._visit_func_def(defn)
File "/home/classic/tmp/.venv/lib/python3.10/site-packages/mypy/checker.py", line 963, in _visit_func_def
assert orig_type is not None, f"Error checking function redefinition {defn}"
AssertionError: Error checking function redefinition FuncDef:889(
eval_condition
Args(
Var(obj))
Block:889(
ReturnStmt:890(
NameExpr(True [builtins.True]))))
lib/sqlalchemy/orm/bulk_persistence.py:889: : note: use --pdb to drop into pdb