Skip to content

Commit ad692b3

Browse files
adjust code to newer changes
1 parent 10f38d2 commit ad692b3

File tree

221 files changed

+757
-560
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

221 files changed

+757
-560
lines changed

Diff for: ariadne_graphql_modules/bases.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
DefinitionNode,
55
GraphQLSchema,
66
ObjectTypeDefinitionNode,
7-
TypeDefinitionNode,
7+
TypeSystemDefinitionNode,
88
)
99

1010
from .dependencies import Dependencies
@@ -36,7 +36,7 @@ class DefinitionType(BaseType):
3636

3737
graphql_name: str
3838
graphql_type: Type[DefinitionNode]
39-
graphql_def: TypeDefinitionNode
39+
graphql_def: TypeSystemDefinitionNode
4040

4141
@classmethod
4242
def __get_requirements__(cls) -> RequirementsDict:

Diff for: ariadne_graphql_modules/mutation_type.py

+8-6
Original file line numberDiff line numberDiff line change
@@ -35,20 +35,22 @@ def __init_subclass__(cls) -> None:
3535

3636
cls.__abstract__ = False
3737

38-
graphql_def = cls.__validate_schema__(
38+
cls.graphql_def = cls.__validate_schema__(
3939
parse_definition(cls.__name__, cls.__schema__)
4040
)
4141

42-
cls.graphql_name = graphql_def.name.value
43-
cls.graphql_type = type(graphql_def)
42+
cls.graphql_name = cls.graphql_def.name.value
43+
cls.graphql_type = type(cls.graphql_def)
4444

45-
field = cls.__get_field__(graphql_def)
45+
field = cls.__get_field__(cls.graphql_def)
4646
cls.mutation_name = field.name.value
4747

4848
requirements = cls.__get_requirements__()
49-
cls.__validate_requirements_contain_extended_type__(graphql_def, requirements)
49+
cls.__validate_requirements_contain_extended_type__(
50+
cls.graphql_def, requirements
51+
)
5052

51-
dependencies = cls.__get_dependencies__(graphql_def)
53+
dependencies = cls.__get_dependencies__(cls.graphql_def)
5254
cls.__validate_requirements__(requirements, dependencies)
5355

5456
if callable(cls.__args__):

Diff for: ariadne_graphql_modules/next/compatibility_layer.py

+44-42
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,18 @@
1-
from typing import List, Type
1+
from enum import Enum
2+
from inspect import isclass
3+
from typing import Any, Dict, List, Type, Union, cast
24

35
from graphql import (
46
EnumTypeDefinitionNode,
57
InputObjectTypeDefinitionNode,
68
InterfaceTypeDefinitionNode,
7-
NameNode,
89
ObjectTypeDefinitionNode,
910
ScalarTypeDefinitionNode,
11+
TypeExtensionNode,
1012
UnionTypeDefinitionNode,
1113
)
1214

13-
from ariadne_graphql_modules.executable_schema import get_all_types
14-
from ariadne_graphql_modules.next.inputtype import GraphQLInputModel
15-
from ariadne_graphql_modules.next.interfacetype import (
16-
GraphQLInterfaceModel,
17-
)
18-
from ariadne_graphql_modules.next.scalartype import GraphQLScalarModel
19-
from ariadne_graphql_modules.next.subscriptiontype import GraphQLSubscriptionModel
20-
from ariadne_graphql_modules.next.uniontype import GraphQLUnionModel
15+
from ..executable_schema import get_all_types
2116

2217
from ..directive_type import DirectiveType
2318
from ..enum_type import EnumType
@@ -30,10 +25,17 @@
3025

3126
from ..object_type import ObjectType
3227

33-
from .description import get_description_node
3428
from ..bases import BindableType
3529
from .base import GraphQLModel, GraphQLType
36-
from . import GraphQLObjectModel, GraphQLEnumModel
30+
from . import (
31+
GraphQLObjectModel,
32+
GraphQLEnumModel,
33+
GraphQLInputModel,
34+
GraphQLScalarModel,
35+
GraphQLInterfaceModel,
36+
GraphQLSubscriptionModel,
37+
GraphQLUnionModel,
38+
)
3739

3840

3941
def wrap_legacy_types(
@@ -53,6 +55,8 @@ class LegacyGraphQLType(GraphQLType):
5355

5456
@classmethod
5557
def __get_graphql_model__(cls, *_) -> GraphQLModel:
58+
if issubclass(cls.__base_type__.graphql_type, TypeExtensionNode):
59+
pass
5660
if issubclass(cls.__base_type__, ObjectType):
5761
return cls.construct_object_model(cls.__base_type__)
5862
if issubclass(cls.__base_type__, EnumType):
@@ -69,51 +73,50 @@ def __get_graphql_model__(cls, *_) -> GraphQLModel:
6973
return cls.construct_subscription_model(cls.__base_type__)
7074
if issubclass(cls.__base_type__, UnionType):
7175
return cls.construct_union_model(cls.__base_type__)
72-
else:
73-
raise ValueError(f"Unsupported base_type {cls.__base_type__}")
76+
raise ValueError(f"Unsupported base_type {cls.__base_type__}")
7477

7578
@classmethod
7679
def construct_object_model(
77-
cls, base_type: Type[ObjectType]
78-
) -> "GraphQLObjectModel":
79-
name = base_type.graphql_name
80-
description = base_type.__doc__
81-
80+
cls, base_type: Type[Union[ObjectType, MutationType]]
81+
) -> GraphQLObjectModel:
8282
return GraphQLObjectModel(
83-
name=name,
83+
name=base_type.graphql_name,
8484
ast_type=ObjectTypeDefinitionNode,
85-
ast=ObjectTypeDefinitionNode(
86-
name=NameNode(value=name),
87-
description=get_description_node(description),
88-
fields=tuple(base_type.graphql_fields.values()),
89-
interfaces=base_type.interfaces,
90-
),
91-
resolvers=base_type.resolvers,
92-
aliases=base_type.__aliases__ or {},
93-
out_names=base_type.__fields_args__ or {},
85+
ast=cast(ObjectTypeDefinitionNode, base_type.graphql_def),
86+
resolvers=base_type.resolvers, # type: ignore
87+
aliases=base_type.__aliases__ or {}, # type: ignore
88+
out_names={},
9489
)
9590

9691
@classmethod
9792
def construct_enum_model(cls, base_type: Type[EnumType]) -> GraphQLEnumModel:
93+
members = base_type.__enum__ or {}
94+
members_values: Dict[str, Any] = {}
95+
96+
if isinstance(members, dict):
97+
members_values = dict(members.items())
98+
elif isclass(members) and issubclass(members, Enum):
99+
members_values = {member.name: member for member in members}
100+
98101
return GraphQLEnumModel(
99102
name=base_type.graphql_name,
100-
members=base_type.__enum__ or {},
103+
members=members_values,
101104
ast_type=EnumTypeDefinitionNode,
102-
ast=base_type.graphql_def,
105+
ast=cast(EnumTypeDefinitionNode, base_type.graphql_def),
103106
)
104107

105108
@classmethod
106-
def construct_directive_model(cls, base_type: Type[DirectiveType]) -> GraphQLModel:
109+
def construct_directive_model(cls, base_type: Type[DirectiveType]):
107110
"""TODO: https://github.com/mirumee/ariadne-graphql-modules/issues/29"""
108111

109112
@classmethod
110113
def construct_input_model(cls, base_type: Type[InputType]) -> GraphQLInputModel:
111114
return GraphQLInputModel(
112115
name=base_type.graphql_name,
113116
ast_type=InputObjectTypeDefinitionNode,
114-
ast=base_type.graphql_def, # type: ignore
117+
ast=cast(InputObjectTypeDefinitionNode, base_type.graphql_def),
115118
out_type=base_type.graphql_type,
116-
out_names=base_type.graphql_fields or {}, # type: ignore
119+
out_names={},
117120
)
118121

119122
@classmethod
@@ -123,19 +126,19 @@ def construct_interface_model(
123126
return GraphQLInterfaceModel(
124127
name=base_type.graphql_name,
125128
ast_type=InterfaceTypeDefinitionNode,
126-
ast=base_type.graphql_def,
129+
ast=cast(InterfaceTypeDefinitionNode, base_type.graphql_def),
127130
resolve_type=base_type.resolve_type,
128131
resolvers=base_type.resolvers,
129132
out_names={},
130-
aliases=base_type.__aliases__ or {},
133+
aliases=base_type.__aliases__ or {}, # type: ignore
131134
)
132135

133136
@classmethod
134137
def construct_scalar_model(cls, base_type: Type[ScalarType]) -> GraphQLScalarModel:
135138
return GraphQLScalarModel(
136139
name=base_type.graphql_name,
137140
ast_type=ScalarTypeDefinitionNode,
138-
ast=base_type.graphql_def,
141+
ast=cast(ScalarTypeDefinitionNode, base_type.graphql_def),
139142
serialize=base_type.serialize,
140143
parse_value=base_type.parse_value,
141144
parse_literal=base_type.parse_literal,
@@ -148,11 +151,10 @@ def construct_subscription_model(
148151
return GraphQLSubscriptionModel(
149152
name=base_type.graphql_name,
150153
ast_type=ObjectTypeDefinitionNode,
151-
ast=base_type.graphql_def,
152-
resolve_type=None,
154+
ast=cast(ObjectTypeDefinitionNode, base_type.graphql_def),
153155
resolvers=base_type.resolvers,
154-
aliases=base_type.__aliases__ or {},
155-
out_names=base_type.__fields_args__ or {},
156+
aliases=base_type.__aliases__ or {}, # type: ignore
157+
out_names={},
156158
subscribers=base_type.subscribers,
157159
)
158160

@@ -161,6 +163,6 @@ def construct_union_model(cls, base_type: Type[UnionType]) -> GraphQLUnionModel:
161163
return GraphQLUnionModel(
162164
name=base_type.graphql_name,
163165
ast_type=UnionTypeDefinitionNode,
164-
ast=base_type.graphql_def,
166+
ast=cast(UnionTypeDefinitionNode, base_type.graphql_def),
165167
resolve_type=base_type.resolve_type,
166168
)

Diff for: ariadne_graphql_modules/next/graphql_interface/interface_model.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
from dataclasses import dataclass
2-
from typing import Any, Callable, Dict, cast
2+
from typing import Dict, cast
33

44
from ariadne import InterfaceType
55
from ariadne.types import Resolver
6-
from graphql import GraphQLField, GraphQLObjectType, GraphQLSchema
6+
from graphql import GraphQLField, GraphQLObjectType, GraphQLSchema, GraphQLTypeResolver
77

88
from ..base import GraphQLModel
99

1010

1111
@dataclass(frozen=True)
1212
class GraphQLInterfaceModel(GraphQLModel):
1313
resolvers: Dict[str, Resolver]
14-
resolve_type: Callable[[Any], Any]
14+
resolve_type: GraphQLTypeResolver
1515
out_names: Dict[str, Dict[str, str]]
1616
aliases: Dict[str, str]
1717

Diff for: ariadne_graphql_modules/next/graphql_interface/interface_type.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ def __get_graphql_model_without_schema__(
167167

168168
@staticmethod
169169
def resolve_type(obj: Any, *_) -> str:
170-
if isinstance(obj, GraphQLInterface):
170+
if isinstance(obj, GraphQLObject):
171171
return obj.__get_graphql_name__()
172172

173173
raise ValueError(

Diff for: ariadne_graphql_modules/next/graphql_scalar/scalar_model.py

+10-5
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
from dataclasses import dataclass
2-
from typing import Any, Callable, Dict, Optional
2+
from typing import Optional
33

4-
from graphql import GraphQLSchema, ValueNode
4+
from graphql import (
5+
GraphQLScalarLiteralParser,
6+
GraphQLScalarSerializer,
7+
GraphQLScalarValueParser,
8+
GraphQLSchema,
9+
)
510
from ariadne import ScalarType as ScalarTypeBindable
611
from ..base import GraphQLModel
712

813

914
@dataclass(frozen=True)
1015
class GraphQLScalarModel(GraphQLModel):
11-
serialize: Callable[[Any], Any]
12-
parse_value: Callable[[Any], Any]
13-
parse_literal: Callable[[ValueNode, Optional[Dict[str, Any]]], Any]
16+
serialize: Optional[GraphQLScalarSerializer]
17+
parse_value: Optional[GraphQLScalarValueParser]
18+
parse_literal: Optional[GraphQLScalarLiteralParser]
1419

1520
def bind_to_schema(self, schema: GraphQLSchema):
1621
bindable = ScalarTypeBindable(

Diff for: ariadne_graphql_modules/next/graphql_subscription/subscription_model.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from dataclasses import dataclass
2-
from typing import Any, Callable, Dict, cast
2+
from typing import Dict, cast
33

44
from ariadne import SubscriptionType
55
from ariadne.types import Resolver, Subscriber
@@ -11,7 +11,6 @@
1111
@dataclass(frozen=True)
1212
class GraphQLSubscriptionModel(GraphQLModel):
1313
resolvers: Dict[str, Resolver]
14-
resolve_type: Callable[[Any], Any]
1514
out_names: Dict[str, Dict[str, str]]
1615
aliases: Dict[str, str]
1716
subscribers: Dict[str, Subscriber]

Diff for: ariadne_graphql_modules/next/graphql_subscription/subscription_type.py

-11
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,6 @@ def __get_graphql_model_with_schema__(cls) -> "GraphQLModel":
145145
fields=tuple(fields),
146146
interfaces=definition.interfaces,
147147
),
148-
resolve_type=cls.resolve_type,
149148
resolvers=resolvers,
150149
subscribers=subscribers,
151150
aliases=getattr(cls, "__aliases__", {}),
@@ -196,22 +195,12 @@ def __get_graphql_model_without_schema__(
196195
fields=tuple(fields_ast),
197196
interfaces=tuple(interfaces_ast),
198197
),
199-
resolve_type=cls.resolve_type,
200198
resolvers=resolvers,
201199
aliases=aliases,
202200
out_names=out_names,
203201
subscribers=subscribers,
204202
)
205203

206-
@staticmethod
207-
def resolve_type(obj: Any, *_) -> str:
208-
if isinstance(obj, GraphQLSubscription):
209-
return obj.__get_graphql_name__()
210-
211-
raise ValueError(
212-
f"Cannot resolve GraphQL type {obj} for object of type '{type(obj).__name__}'."
213-
)
214-
215204
@staticmethod
216205
def source(
217206
field: str,

Diff for: ariadne_graphql_modules/next/graphql_union/union_model.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
from dataclasses import dataclass
2-
from typing import Any, Callable
32

43
from ariadne import UnionType
5-
from graphql import GraphQLSchema
4+
from graphql import GraphQLSchema, GraphQLTypeResolver
65

76
from ..base import GraphQLModel
87

98

109
@dataclass(frozen=True)
1110
class GraphQLUnionModel(GraphQLModel):
12-
resolve_type: Callable[[Any], Any]
11+
resolve_type: GraphQLTypeResolver
1312

1413
def bind_to_schema(self, schema: GraphQLSchema):
1514
bindable = UnionType(self.name, self.resolve_type)

Diff for: ariadne_graphql_modules/object_type.py

+8-7
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,20 @@ def __init_subclass__(cls) -> None:
3232

3333
cls.__abstract__ = False
3434

35-
graphql_def = cls.__validate_schema__(
35+
cls.graphql_def = cls.__validate_schema__(
3636
parse_definition(cls.__name__, cls.__schema__)
3737
)
3838

39-
cls.graphql_name = graphql_def.name.value
40-
cls.graphql_type = type(graphql_def)
41-
cls.graphql_fields = cls.__get_fields__(graphql_def)
42-
cls.interfaces = graphql_def.interfaces
39+
cls.graphql_name = cls.graphql_def.name.value
40+
cls.graphql_type = type(cls.graphql_def)
41+
cls.graphql_fields = cls.__get_fields__(cls.graphql_def)
4342

4443
requirements = cls.__get_requirements__()
45-
cls.__validate_requirements_contain_extended_type__(graphql_def, requirements)
44+
cls.__validate_requirements_contain_extended_type__(
45+
cls.graphql_def, requirements
46+
)
4647

47-
dependencies = cls.__get_dependencies__(graphql_def)
48+
dependencies = cls.__get_dependencies__(cls.graphql_def)
4849
cls.__validate_requirements__(requirements, dependencies)
4950

5051
if callable(cls.__fields_args__):

Diff for: ariadne_graphql_modules/union_type.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def __init_subclass__(cls) -> None:
3636
)
3737

3838
cls.graphql_name = cls.graphql_def.name.value
39-
cls.graphql_type = type(cls.graphql_def)
39+
cls.graphql_type = type(cls.graphql_def) # type: ignore
4040

4141
requirements = cls.__get_requirements__()
4242
cls.__validate_requirements_contain_extended_type__(

Diff for: tests/conftest.py

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from pathlib import Path
2+
import pytest
3+
4+
5+
@pytest.fixture(scope="session")
6+
def datadir() -> Path:
7+
return Path(__file__).parent / "snapshots"
8+
9+
10+
@pytest.fixture(scope="session")
11+
def original_datadir() -> Path:
12+
return Path(__file__).parent / "snapshots"

Diff for: tests/snapshots/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)