Comments (2)
This is achievable via Protocol
.
@rafalp Let me know if the definitions below would be correct.
class Resolver(Protocol):
def __call__(self, obj: Any, info: GraphQLResolveInfo, **kwargs: Any) -> Any:
pass
class TypeResolver(Protocol):
def __call__(self, obj: Any, *_: Any) -> Optional[str]:
pass
If so, I'd love to make a contribution.
EDIT
There are already some decent type definitions in graphql-core.
# Note: Contrary to the Javascript implementation of GraphQLFieldResolver,
# the context is passed as part of the GraphQLResolveInfo and any arguments
# are passed individually as keyword arguments.
GraphQLFieldResolverWithoutArgs = Callable[[Any, GraphQLResolveInfo], Any]
# Unfortunately there is currently no syntax to indicate optional or keyword
# arguments in Python, so we also allow any other Callable as a workaround:
GraphQLFieldResolver = Callable[..., Any]
# Note: Contrary to the Javascript implementation of GraphQLTypeResolver,
# the context is passed as part of the GraphQLResolveInfo:
GraphQLTypeResolver = Callable[
[Any, GraphQLResolveInfo, "GraphQLAbstractType"],
AwaitableOrValue[Optional[Union["GraphQLObjectType", str]]],
]
However, GraphQLFieldResolver
could also be more accurate.
Should ariadne import types from graphql-core or use its own definitions?
Anyway, the Resolver
type definition could be rewritten to:
class Resolver(Protocol):
def __call__(self, obj: Any, info: GraphQLResolveInfo, **kwargs: Any) -> Any:
pass
from ariadne.
We could use type definitions from graphql-core and and run extra checks on our side at type's definition time.
from ariadne.
Related Issues (20)
- Union as directive argument HOT 4
- No way to send custom error from `on_connect` when using GraphQLTransportWSHandler
- execution_context_class argument for graphql_sync raises an error HOT 4
- Subscription Chat Application full example does not return message data HOT 2
- "str" is incompatible with "GraphQLSchema" HOT 2
- Update GraphQL fixing logic
- Python 3.12 has deprecation warnings
- Starlette integration tests are broken
- Re-tag the source HOT 1
- Ariadne `graphql` and `graphql_sync` will attempt to execute `subscription` operations
- Return data and errors from root resolver callable
- Update GraphiQL version HOT 1
- Interface resolver issues with Pydantic schemas HOT 2
- When performing multiple queries, an error stops any other data being returned HOT 1
- set_alias support for nested attributes
- Camel case arguments HOT 2
- Nested subscriptions not supported HOT 2
- Typing error in extract_data_from_request
- make_federated_schema is unable to parse repeatable directives
- convert_names_case inconsistent with numbers. HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ariadne.