Comments (4)
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.
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.
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.
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)
- Incorrect keyword argument name 'parameters' for AsyncSession.scalars, AsyncEngine.scalars HOT 1
- Improve declarative_mixin stub
- TupleType missing from sqlalchemy/types.pyi
- Make Column and relationship inherit from Mapped HOT 5
- MemoizedHasCacheKey import path is wrong
- Using compiles leads to untyped decorator HOT 1
- Type error when attempting to use a Literal[True] with sa.and_() HOT 1
- Error importing plugin "sqlalchemy.ext.mypy.plugin": cannot import name 'Optional' from 'mypy.plugin' HOT 1
- Invalid base class "Base" when returned by a function HOT 9
- Incomplete typing for Engine.dispose's close parameter HOT 1
- TypeEngine.with_variant should accept TypeEngine for type argument instances as well as Type[TypeEngine] HOT 1
- Cannot access member "add" for type "AsyncSession" (pylance) SQLAlchemy 1.4 HOT 2
- pre-commit config generates 100s of errors HOT 1
- Cannot access "sqlalchemy.orm.mapped_column" HOT 1
- MutableBase.coerce incorrectly returns None HOT 1
- Type checking fails when using `joins_implicitly` with `column_valued()` HOT 1
- [0.0.2a36 regression] `.column_valued()` without a `name` is no longer accepted
- TypeError: format_type() missing 1 required positional argument: 'options' HOT 1
- Pyright: Mapped is considered unhashable
- Incompatible types in assignment when base declaration is in a separate file HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sqlalchemy2-stubs.