-
Notifications
You must be signed in to change notification settings - Fork 321
Open
Description
Description
SQLMesh fails to start on Python 3.14 due to a type annotation being passed to argparse's type parameter in sqlmesh/magics.py.
Error
File ".../sqlmesh/magics.py", line 629, in SQLMeshMagics
@magic_arguments()
File ".../IPython/core/magic_arguments.py", line 243, in __call__
func.parser = construct_parser(func)
File ".../argparse.py", line 1548, in add_argument
raise TypeError(f'{type_func!r} is not callable')
TypeError: bool | typing.Iterable[str] is not callable
Root Cause
In sqlmesh/magics.py around line 635:
@argument(
"--expand",
type=t.Union[bool, t.Iterable[str]], # <-- type annotation, not a callable
help="...",
)argparse's type parameter expects a callable function to convert string arguments, not a type annotation. Python 3.14 enforces this more strictly.
Environment
- Python: 3.14.2
- SQLMesh: 0.228.1
- IPython: 9.8.0
- OS: macOS
Suggested Fix
Either:
- Remove the
typeparameter (let it be a string) - Use a proper converter function
- Use
nargsand handle the type conversion in the magic function itself
# Option 1: Remove type, handle in function
@argument("--expand", help="...")
# Option 2: Use a converter function
def parse_expand(value):
if value.lower() in ('true', 'false'):
return value.lower() == 'true'
return value.split(',')
@argument("--expand", type=parse_expand, help="...")Metadata
Metadata
Assignees
Labels
No labels