Comments (12)
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.
OK mostly this just builds on 8772041 / #10807 which is very recent . great thanks for the PR
from sqlalchemy.
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.
It seems that one could use __value__
to access what the type alias points to
from sqlalchemy.
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.
Ok, Thanks for finding that. Then I guess this is an unsupported case
from sqlalchemy.
@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.
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.
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.
was there another issue or discussion where we went over this previously?
from sqlalchemy.
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.
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)
- selectin_polymorphic does not work for multiple level joined inheritance HOT 2
- ColumnCollection.get(col, default) types as Optional even with default HOT 2
- bulk_save_objects() w/ return defaults writes incorrect identity key HOT 4
- `sqlalchemy.utils.langhelpers.TypingOnly` too rigidly prevents special dunders from appearing HOT 5
- func.count argument typing issue HOT 1
- Bundle labels are wrong for new style select only (query works ?!) HOT 9
- Use of `raise NotImplementedError` instead of `NotImplemented` HOT 1
- Design a Repository pattern with sqlalchemy HOT 1
- Add `name` to `with_polymorphic ` HOT 2
- _JoinedListener can sneak into a metadata collection if Enum adapts itself, which can happen now, prohibiting serialization HOT 2
- TypeAlias cannot be found in type_annotation_map HOT 2
- Typing: of_type method not properly generic. HOT 1
- Add `insert_default` param to `Column` HOT 2
- many to many loaded relation instances partially missing reverse relation
- Add additional information to the `ReflectedColumn`
- Assign column to None to change to server_default for make_transient HOT 1
- relationship foreign_keys typing not working for declared_attr HOT 2
- Incorrect count value when filter is empty HOT 1
- pass request body to update an instance vs create new instance
- fix in issue 10365 also fixed an ORM select() issue that likely has no test coverage HOT 16
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 sqlalchemy.