Ariadne 0.2.0 replaces GraphQL-Core with GraphQL-core-next that offers much better compliance with GraphQL specification, supports async query execution and resolvers, and improves library's API and developer experience.
Changelog
- Removed support for Python 3.5 and added support for 3.7.
- Moved to
GraphQL-core-next
that supportsasync
resolvers, query execution and implements a more recent version of GraphQL spec. If you are updating an existing project, you will need to uninstallgraphql-core
before installinggraphql-core-next
, as both libraries usegraphql
namespace. - Added
gql()
utility that provides GraphQL string validation on declaration time, and enables use of Apollo-GraphQL plugin in Python code. - Added
load_schema_from_path()
utility function that loads GraphQL types from a file or directory containing.graphql
files, also performing syntax validation. - Added
start_simple_server()
shortcut function for quick dev server creation, abstracting away theGraphQLMiddleware.make_server()
from first time users. Boolean
built-in scalar now checks the type of each serialized value. Returning values of type other thanbool
,int
orfloat
from a field resolver will result in aBoolean cannot represent a non boolean value
error.- Redefining type in
type_defs
will now result inTypeError
being raised. This is a breaking change from previous behavior where the old type was simply replaced with a new one. - Returning
None
from scalarparse_literal
andparse_value
function no longer results in GraphQL API producing default error message. Instead,None
will be passed further down to resolver or produce a "value is required" error if its marked as such with!
For old behavior raise eitherValueError
orTypeError
. See documentation for more details. resolvers
argument defined byGraphQLMiddleware.__init__()
,GraphQLMiddleware.make_server()
andstart_simple_server()
is now optional, allowing for quick experiments with schema definitions.dict
has been removed as primitive for mapping python function to fields. Instead,make_executable_schema()
expects object or list of objects with abind_to_schema
method, that is called with aGraphQLSchema
instance and are expected to add resolvers to schema.- Default resolvers are no longer set implicitly by
make_executable_schema()
. Instead you are expected to include eitherariadne.fallback_resolvers
orariadne.snake_case_fallback_resolvers
in the list ofresolvers
for your schema. - Added
snake_case_fallback_resolvers
that populates schema with default resolvers that mapCamelCase
andPascalCase
field names from schema tosnake_case
names in Python. - Added
ResolverMap
object that enables assignment of resolver functions to schema types. - Added
Scalar
object that enables assignment ofserialize
,parse_value
andparse_literal
functions to custom scalars. - Both
ResolverMap
andScalar
are validating if schema defines specified types and/or fields at the moment of creation of executable schema, providing better feedback to the developer.