You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Pyright complains when BeanieUserDatabase gets a subclass of both BeanieBaseUser and beanie.Document.
Argument of type "type[User]" cannot be assigned to parameter "user_model" of type "type[UP_BEANIE@BeanieUserDatabase]" in function "__init__"
To Reproduce
from beanie import Document
from fastapi_users.db import BeanieBaseUser
from fastapi_users_db_beanie import BeanieUserDatabase
class User(BeanieBaseUser, Document):
pass
async def get_user_db():
return BeanieUserDatabase(User)
Expected behavior
No type errors.
Configuration
Python version : 3.11.6
FastAPI Users version : 12.1.2
FastAPI Users DB Beanie version : 3.0.0
Additional context
Particularly, I see BeanieBaseUserDocument defined as literally a subclass of both BeanieBaseUser and beanie.Document. But defining a TypeVar bond to BeanieBaseUserDocument does not accept another subclass of the same classes :/
The text was updated successfully, but these errors were encountered:
So, can you narrow the generic TypeVar to a subclass of two classes, as to ensure it has every property in both classes? No. Well, not in Python, at least for now. There's a Stackoverflow Q&A that correctly points the issue to the lack of Type Intersections in Python. There's a mile-long issue about it in the python/typing repo, but TLDR we're going to wait a while for support to land.
As a pragmatic solution to this issue, can we make BeanieBaseUserDocument importable from fastapi_users.db? Would subclassing it have any nefarious side effect?
Describe the bug
Pyright complains when
BeanieUserDatabase
gets a subclass of bothBeanieBaseUser
andbeanie.Document
.To Reproduce
Expected behavior
No type errors.
Configuration
Additional context
Particularly, I see
BeanieBaseUserDocument
defined as literally a subclass of bothBeanieBaseUser
andbeanie.Document
. But defining aTypeVar
bond toBeanieBaseUserDocument
does not accept another subclass of the same classes :/The text was updated successfully, but these errors were encountered: