Coder Social home page Coder Social logo

Comments (12)

CaselIT avatar CaselIT commented on May 26, 2024 1

Also TypeAliasType is not a valid type here, since it's likely that everything defined with type ... becomes one. Indeed:

>>> type x = int
>>> type(x)
<class 'typing.TypeAliasType'>
>>> type y = int | str | float
>>> type(y)
<class 'typing.TypeAliasType'>

from sqlalchemy.

zzzeek avatar zzzeek commented on May 26, 2024 1

OK mostly this just builds on 8772041 / #10807 which is very recent . great thanks for the PR

from sqlalchemy.

CaselIT avatar CaselIT commented on May 26, 2024

Hi,

I fairly sure this has already been reported but I cannot find it.
Sadly python decided that for the typing feature it was the best thing to have a thousand different ways of doing anything, so it's quite difficult to support all the various incantations.

thanks for reporting

from sqlalchemy.

CaselIT avatar CaselIT commented on May 26, 2024

It seems that one could use __value__ to access what the type alias points to

from sqlalchemy.

Alc-Alc avatar Alc-Alc commented on May 26, 2024

I fairly sure this has already been reported but I cannot find it.

I came across #10807 which felt similar but the issue was closed and it seems it was released in 2.0.25

Added preliminary support for Python 3.12 pep-695 type alias structures, when resolving custom type maps for ORM Annotated Declarative mappings.

but I was still running into this so I opened a new one.

from sqlalchemy.

CaselIT avatar CaselIT commented on May 26, 2024

Ok, Thanks for finding that. Then I guess this is an unsupported case

from sqlalchemy.

Alc-Alc avatar Alc-Alc commented on May 26, 2024

@CaselIT I have made an attempt here at fixing this, if you feel this is a good starting point I am happy to raise a PR and apply any relevant suggestions. I added one new test (modified based on an existing test) and it passes.

8fd36a4 shows my attempted changes

from sqlalchemy.

CaselIT avatar CaselIT commented on May 26, 2024

That seems to work but I wonder if it could be easier to just do at the start of _resolve_type

if is_pep695(python_type):
  return _resolve_type(python_type.__value__)

This would handle anything is declared with the new type syntax.
It would also allow for alias of alias (not sure if value in this case is also a typealiastype or if it's resolved)

Feel free to open a PR. It's a good start (if you do can you also add a change log?)

from sqlalchemy.

sqla-tester avatar sqla-tester commented on May 26, 2024

Alc-Alc has proposed a fix for this issue in the main branch:

Enums are not created with pep695 literal https://gerrit.sqlalchemy.org/c/sqlalchemy/sqlalchemy/+/5260

from sqlalchemy.

zzzeek avatar zzzeek commented on May 26, 2024

was there another issue or discussion where we went over this previously?

from sqlalchemy.

sqla-tester avatar sqla-tester commented on May 26, 2024

Alc-Alc has proposed a fix for this issue in the rel_2_0 branch:

improve pep-695 inference including Enum support https://gerrit.sqlalchemy.org/c/sqlalchemy/sqlalchemy/+/5278

from sqlalchemy.

Alc-Alc avatar Alc-Alc commented on May 26, 2024

was there another issue or discussion where we went over this previously?

Yes, I noticed you figured it in the next comment. Just for completion sake, #11305 (comment) states my reasoning behind opening this issue.

from sqlalchemy.

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.