Skip to content

Commit 36bc954

Browse files
committed
Fix backlinks on expressions.
1 parent d5db2b6 commit 36bc954

2 files changed

Lines changed: 9 additions & 15 deletions

File tree

gel/_internal/_qbmodel/_abstract/_descriptors.py

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -171,14 +171,11 @@ def get(
171171
return _UNRESOLVED_TYPE
172172
else:
173173
source: _qb.Expr
174-
is_backlink = False
174+
is_backlink = issubclass(owner, AbstractGelObjectBacklinksModel)
175175
if expr is not None:
176176
source = expr.__gel_metadata__
177177
elif _qb.is_expr_compatible(owner):
178178
source = _qb.edgeql_qb_expr(owner)
179-
is_backlink = issubclass(
180-
owner, AbstractGelObjectBacklinksModel
181-
)
182179
else:
183180
return t
184181
try:
@@ -963,16 +960,9 @@ def get(
963960
source: _qb.Expr
964961
if expr is not None:
965962
source = expr.__gel_metadata__
963+
elif _qb.is_expr_compatible(owner):
964+
source = _qb.edgeql_qb_expr(owner)
966965
else:
967966
raise AssertionError("missing source for backlink path")
968967

969-
if (
970-
not isinstance(source, _qb.PathPrefix)
971-
or source.source_link is None
972-
):
973-
raise AttributeError(
974-
"__backlinks__", name="__backlinks__", obj=owner
975-
)
976-
977-
prefix = dataclasses.replace(source, lprop_pivot=True)
978-
return _qb.AnnotatedExpr(owner.__backlinks__, prefix) # pyright: ignore [reportGeneralTypeIssues]
968+
return _qb.AnnotatedExpr(owner.__backlinks__, source) # pyright: ignore [reportGeneralTypeIssues]

gel/_internal/_qbmodel/_pydantic/_models.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1329,7 +1329,11 @@ class GelObjectModel(
13291329
__gel_root_class__=True,
13301330
):
13311331
# Base class for object classes.
1332-
pass
1332+
__gel_proxied_dunders__: ClassVar[frozenset[str]] = frozenset(
1333+
{
1334+
"__backlinks__",
1335+
}
1336+
)
13331337

13341338

13351339
class GelObjectBacklinksModel(

0 commit comments

Comments
 (0)