GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||
GeezerVison is showing github.com — Allow hybrid_property, hybrid_method and association_proxy on SQLModel classes by alvinttang · Pull Request #1990 · fastapi/sqlmodel ConversationSummaryDefining a SQLModel class with a SQLAlchemy descriptor ( This is the long-standing #299 (20 reactions / 13 comments). The issue was mass-closed on 2026-05-18 alongside many other un-triaged bugs, but the bug is still present on Root causePydantic v2's Fix
Production diff is 10 net LOC. This is intentionally disjoint and minimal: it stops the crash so users can define these descriptors on SQLModel classes. It does NOT implement DDL/expression generation for hybrid properties (a separate concern that PR #801 attempts in a much larger ~4400-line patch). Most users hitting #299 just want the descriptor to work at the Python level, which this PR enables. Tests
RED proof on main (4/4 fail): GREEN after patch: 4/4 pass; broader sweep Risk notes
Refs #299
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page. All reactions
… v2 crash Defining a `sqlalchemy.ext.hybrid.hybrid_property` (or `hybrid_method`, `association_proxy`) directly on a `SQLModel` class body raises `pydantic.errors.PydanticUserError: A non-annotated attribute was detected` under Pydantic v2 because those SQLAlchemy descriptors carry no Pydantic annotation. Add them to `SQLModel.model_config["ignored_types"]` so Pydantic skips them during model construction, while SQLAlchemy continues to expose them as descriptors at runtime. Python-side hybrid evaluation now works on table models; emitting them as SQL expressions/columns is intentionally still left to user code (the proposed broader feature in PR fastapi#801). Refs fastapi#299 Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Author
All reactions
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page.
All reactions
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page. This branch has not been deployedNo deployments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Reviewers1 more reviewerUh oh!
There was an error while loading. Please reload this page. AssigneesNo one assignedLabels
bug
ProjectsMilestoneNo milestoneDevelopmentSuccessfully merging this pull request may close these issues. Uh oh!
There was an error while loading. Please reload this page. Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later. | ||
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |