Skip to content

Conversation

@AlanBogarin
Copy link
Contributor

Type checker throw partially unknown error when used in strict mode (Pylance)
When I locally edited that line, everything was correct

the Column type needs a type argument, assign it Any to accept all instances of the object

origin: sqlmodel.main.Field
info: Column expected an argument

339 | sa_column: Union[Column, UndefinedType] = Undefined, # type: ignore

proposed change

339 | sa_column: Union[Column[Any], UndefinedType] = Undefined,

If you want to see it yourself (be sure to set the type checker to strict)

import sqlmodel class TestModel(sqlmodel.SQLModel, table=True): value: list[int] = sqlmodel.Field(sa_column=sqlmodel.Column(sqlmodel.JSON))

There is a better change, but it is not possible because Column was defined in sqlalchemy

# sqlalchemy.sql.schema 113 | _T = TypeVar("_T", bound="Any", default="Any") # python >= 3.13
The `Column` annotation of `sa column` was missing an type argument
@svlandeg svlandeg added the bug Something isn't working label Feb 24, 2025
@svlandeg svlandeg changed the title Fix sqlmodel.Field partially unknown 🐛 Fix type annotation in Field constructor Feb 24, 2025
Copy link
Member

@svlandeg svlandeg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the contribution @AlanBogarin!

This looks good to me, but I'll leave the final review & decision up to Tiangolo.

Copy link
Member

@tiangolo tiangolo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense, thank you! ☕

@tiangolo tiangolo merged commit 7a51870 into fastapi:main Feb 28, 2025
26 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

3 participants