Giter Site home page Giter Site logo

Comments (4)

zzzeek avatar zzzeek commented on September 20, 2024 2

Yes I think ideally your function would have to use a generic like that, then I could pick up the "T" part.

however great news! there's a workaround you can use for now, which is the _mypy_mapped_attrs attribute, this passes the SQLAlchemy part of this (the --strict thing above is still separate):

class Foo(Base):
    bar: int = MyColumn(Integer)

    _mypy_mapped_attrs = [bar]



foo = Foo(bar=1)

from sqlalchemy2-stubs.

alxdb avatar alxdb commented on September 20, 2024 1

ah okay, I see the issue now. Would there be a way to annotate the wrapper function with a generic type? something like def MyColumn(col_type: T, *args, **kwargs) -> Column[T]:?

PS: Thanks so much for your work on this great project 💯 this isn't a serious issue for me atm, so I'm happy to wait a while for this to be addressed

from sqlalchemy2-stubs.

zzzeek avatar zzzeek commented on September 20, 2024

hey there -

i can try to improve this and perhaps have your Column considered to be reutrning "Any", but I can't derive that this Column is against Integer because your function doesn't indicate this:

from sqlalchemy import Column, Integer, orm

def MyColumn(*args, **kwargs) -> Column:
    return Column(*args, **kwargs)

x = MyColumn(Integer)
$ mypy test3.py --strict
test3.py:3: error: Function is missing a type annotation for one or more arguments
test3.py:3: error: Missing type parameters for generic type "Column"

I'm pretty backlogged now but will try to get it to work at least as:

class Foo(Base):
    bar: int = MyColumn(Integer)

from sqlalchemy2-stubs.

peteris-zealid avatar peteris-zealid commented on September 20, 2024

Another solution is to do

class MyInteger(Integer):
    pass

class Foo(Base):
    bar: int = Column(MyInteger())

And for isinstance checks you can use isinstance(col.type, MyInteger)

from sqlalchemy2-stubs.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.