This release adds support to use strawberry.Parent
with future annotations.
For example, the following code will now work as intended:
from __future__ import annotations
def get_full_name(user: strawberry.Parent[User]) -> str:
return f"{user.first_name} {user.last_name}"
@strawberry.type
class User:
first_name: str
last_name: str
full_name: str = strawberry.field(resolver=get_full_name)
@strawberry.type
class Query:
@strawberry.field
def user(self) -> User:
return User(first_name="John", last_name="Doe")
schema = strawberry.Schema(query=Query)
Or even when not using future annotations, but delaying the evaluation of User
, like:
# Note the User being delayed by passing it as a string
def get_full_name(user: strawberry.Parent["User"]) -> str:
return f"{user.first_name} {user.last_name}"
@strawberry.type
class User:
first_name: str
last_name: str
full_name: str = strawberry.field(resolver=get_full_name)
@strawberry.type
class Query:
@strawberry.field
def user(self) -> User:
return User(first_name="John", last_name="Doe")
schema = strawberry.Schema(query=Query)
Releases contributed by @bellini666 via #3851