microsoft / pylance-release

Documentation and issues for Pylance
Creative Commons Attribution 4.0 International
1.69k stars 770 forks source link

Wrong "Expected no arguments to <Flask SQL Alchemy> constructor" #6199

Open senese opened 1 month ago

senese commented 1 month ago

Environment data

Code Snippet

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column

class Base(DeclarativeBase):
  pass

db = SQLAlchemy(model_class=Base)

class User(db.Model):
    id: Mapped[int] = mapped_column(primary_key=True)
    username: Mapped[str] = mapped_column(unique=True)
    email: Mapped[str]

user = User(id=1, username='test')

print(user)

Output: <User (transient 139732127139744)>

Expected behavior

No red squiggly lines around User to warn about error "Expected no arguments to "User" constructor". I've seen #507 and for SQL Alchemy models there's no squiggly lines but this isn't true for Flask-SQLAlchemy models, even if following Flask documentation.

Actual behavior

image

Joyte commented 1 month ago

Can reproduce, with base SQLAlchemy.

from sqlalchemy.orm import Session
from sqlalchemy.ext.declarative import DeclarativeMeta, declarative_base
from sqlalchemy import Column, String

Base: DeclarativeMeta = declarative_base()

class Data(Base):
    __tablename__ = "data"
    id = Column(String(30), primary_key=True, index=True)

def test_func(db: Session):
    db.add(Data(id="testid"))

Screenshot_2024-07-27_22-12-55

senese commented 1 month ago

I also want to point it out that when using unpacking syntax it doesn't raise any warnings or errors:

image