Skip to content

Commit

Permalink
feat: support strawberry 0.199.0+ (#326)
Browse files Browse the repository at this point in the history
strawberry 0.199.0 changed the way generic type vars are handled
to support the new generic syntax in Python 3.12.

This release adjusts our usage of generic type vars to match the
new behaviour.

Fix #325
  • Loading branch information
bellini666 committed Aug 2, 2023
1 parent eafbffc commit 89fb6d5
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 17 deletions.
20 changes: 10 additions & 10 deletions poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ classifiers = [
[tool.poetry.dependencies]
python = ">=3.8,<4.0"
Django = ">=3.2"
strawberry-graphql = ">=0.198.0"
strawberry-graphql = ">=0.199.0"
django-debug-toolbar = { version = ">=3.4", optional = true }
django-choices-field = { version = ">=2.2.2", optional = true }

Expand Down
6 changes: 3 additions & 3 deletions strawberry_django/fields/base.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from __future__ import annotations

import functools
from typing import TYPE_CHECKING, Any, Optional, TypeVar, cast
from typing import TYPE_CHECKING, Any, Optional, TypeVar

from strawberry import LazyType, relay
from strawberry.annotation import StrawberryAnnotation
Expand Down Expand Up @@ -72,14 +72,14 @@ def django_type(self) -> type[WithStrawberryDjangoObjectDefinition] | None:
object_definition = get_object_definition(origin)

if object_definition and issubclass(object_definition.origin, relay.Connection):
origin = object_definition.type_var_map.get(cast(TypeVar, relay.NodeType))
origin = object_definition.type_var_map.get(relay.NodeType.__name__)

if origin is None:
specialized_type_var_map = (
object_definition.specialized_type_var_map or {}
)

origin = specialized_type_var_map[cast(TypeVar, relay.NodeType)]
origin = specialized_type_var_map[relay.NodeType.__name__]

if isinstance(origin, LazyType):
origin = origin.resolve_type()
Expand Down
4 changes: 2 additions & 2 deletions strawberry_django/optimizer.py
Original file line number Diff line number Diff line change
Expand Up @@ -324,11 +324,11 @@ def _get_model_hints(
if level > 0:
return None

n_type = object_definition.type_var_map.get(cast(TypeVar, relay.NodeType))
n_type = object_definition.type_var_map.get(relay.NodeType.__name__)
if n_type is None:
specialized_type_var_map = object_definition.specialized_type_var_map or {}

n_type = specialized_type_var_map[cast(TypeVar, relay.NodeType)]
n_type = specialized_type_var_map[relay.NodeType.__name__]
if isinstance(n_type, LazyType):
n_type = n_type.resolve_type()

Expand Down
2 changes: 1 addition & 1 deletion strawberry_django/utils/inspect.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ def get_possible_types(
elif isinstance(gql_type, LazyType):
yield from get_possible_types(gql_type.resolve_type())
elif isinstance(gql_type, StrawberryTypeVar) and object_definition is not None:
resolved = object_definition.type_var_map.get(gql_type.type_var, None)
resolved = object_definition.type_var_map.get(gql_type.type_var.__name__, None)
if resolved is not None:
yield from get_possible_types(resolved)
elif isinstance(gql_type, StrawberryContainer):
Expand Down

0 comments on commit 89fb6d5

Please sign in to comment.