is this with the SQLAlchemy Mypy plugin?   current status is for 2.0 we are 
looking to move away from the plugin model and pretty much change how these 
things work.    Otherwise  if this is with the plugin, you would use "id: 
Mapped[uuid.UUID] = ..."

On Wed, Jan 12, 2022, at 9:35 PM, jens.t...@gmail.com wrote:
> Hello,
> 
> For a PostgreSQL 14 db, I defined a User mapping and helper function like so:
> 
> from sqlalchemy.dialects.postgresql import UUID
> 
> class User(Base):
>     id = Column(UUID(as_uuid=True), primary_key=True, 
> server_default=func.gen_random_uuid())
>     name = Column(Unicode(128))
> 
>     @staticmethod
>     def create(dbsession: Session, name: str, id_: uuid.UUID = None):
>         user = User(name=name, id=id_)
>         dbsession.add(user)
>         return user
> 
> Notice that the helper function’s id_ has a different UUID type than the 
> User’s mapped property. And that, in return causes this mypy 
> <https://mypy.readthedocs.io/> error:
> 
> error: Argument "id_" to "create" of "User" has incompatible type 
> "uuid.UUID"; expected "Optional[sqlalchemy.dialects.postgresql.base.UUID]"  
> [arg-type]
> 
> I looked into the implementation of the dialect’s UUID 
> <https://github.com/sqlalchemy/sqlalchemy/blob/main/lib/sqlalchemy/dialects/postgresql/base.py#L1695-L1752>
>  whether it implements a constructor which takes a Python UUID, but no luck. 
> Given that PostgreSQL supports UUIDs natively 
> <https://www.postgresql.org/docs/14/datatype-uuid.html>, I didn’t want to use 
> UUIDType 
> <https://sqlalchemy-utils.readthedocs.io/en/latest/data_types.html#module-sqlalchemy_utils.types.uuid>
>  either. So, Other that cast() 
> <https://docs.python.org/3/library/typing.html#typing.cast> I’m not sure how 
> to work with this error…
> 
> Thanks!
> Jens
> 
> 
> -- 
> SQLAlchemy - 
> The Python SQL Toolkit and Object Relational Mapper
>  
> http://www.sqlalchemy.org/
>  
> To post example code, please provide an MCVE: Minimal, Complete, and 
> Verifiable Example. See http://stackoverflow.com/help/mcve for a full 
> description.
> --- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to sqlalchemy+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sqlalchemy/54c50972-85be-4a86-b9bf-4daa435d939an%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/sqlalchemy/54c50972-85be-4a86-b9bf-4daa435d939an%40googlegroups.com?utm_medium=email&utm_source=footer>.

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy/64f9b3d4-fe0d-4e2c-b630-d73df113ba96%40www.fastmail.com.

Reply via email to