Changelog History
Page 1
-
v1.3.0 Changes
December 08, 2020[1.3.0] - 2020-12-08
โ Added
- Setup a
CodeQL
analysis Github Action - ISSUE-457 - Add a
coerce_list_concurrently
parameter tocreate_engine
,Engine. __init__
&Engine.cook
to control whether or not output list should be coerced concurrently - ISSUE-457 - Add a
concurrently
parameter to both@Resolver
&@Subscription
in order to control whether or not the output list of the decorated field should be coerced concurrently
๐ Fixed
- ๐ Fix link issue on
1.2.0
changelog (thanks @mkniewallner) - ๐ Fix year reference for
1.2.0
changelog (thanks @garyd203) - ๐ Improve documentation (thanks @dkbarn)
- ๐ Fix
README.md
typo (thanks @mazzi) - โ Add clarification on the breaking change on output list coercion introduced with the
1.2.0
version (thanks @garyd203) - 0๏ธโฃ ISSUE-457 - Output list are now coerced concurrently by default (breaking the change made on
1.2.0
)
๐ Changed
- โฌ๏ธ Upgrade
black
from19.10b0
to20.8b1
- โฌ๏ธ Upgrade
isort
from4.3.21
to5.6.4
- โฌ๏ธ Upgrade
lark-parser
from0.8.5
to0.11.1
- โฌ๏ธ Upgrade
pylint
from2.5.2
to2.6.0
- โฌ๏ธ Upgrade
pytest-asyncio
from0.12.0
to0.14.0
- โฌ๏ธ Upgrade
pytest-cov
from2.8.1
to2.10.1
- โฌ๏ธ Upgrade
pytest-xdist
from1.32.0
to2.1.0
- โฌ๏ธ Upgrade
pytest
from5.4.1
to6.1.2
- Setup a
-
v1.2.1 Changes
May 06, 2020[1.2.1] - 2020-05-06
๐ Fixed
- ISSUE-381 - Now
pre_output_coercion
hooks are called whenOBJECT
types are retrieved through anUNION
or anINTERFACE
. FurthermoreUNION/INTERFACE
hooks are also called before theObject
ones are called.
๐ Changed
- โ
pytest
is now in version 2.5.2
- ISSUE-381 - Now
-
v1.2.0 Changes
May 02, 2020[1.2.0] - 2020-04-30
โ Added
- ISSUE-363 - Add an optional
query_cache_decorator
argument at engine initialisation allowing to forward a custom decorator to use to cache query parsing. - ISSUE-362 - Add an optional
json_loader
argument to engine creation APIs so json loader can be customized. - 0๏ธโฃ ISSUE-361 - Add an optional
custom_default_arguments_coercer
argument at engine initialisation to override the callable used to coerce arguments. - ISSUE-361 - Add an optional
arguments_coercer
to@Directive
,@Subscription
&@Resolver
decorator to override the callable used to coerce arguments on the decorated directive/field.
๐ Changed
- ๐ ISSUE-356 - Removed dependencies on
flex
andbison
for installing Tartiflette.cmake
is still necessary. - ๐ ISSUE-361 - Coerce lists (input, literal, output) synchronously to avoid creation of too many
asyncio
tasks. - ISSUE-365 - Forward the
InputValueDefinitionNode
to theon_argument_execution
hook.
โฌ๏ธ > Note: this brings a break changes from previous versions, to upgrade to
this version you'll have to update your
on_argument_execution
methods:@Directive("MyDirective") class MyDirective: async def on\_argument\_execution( self, directive\_args: Dict[str, Any], next\_directive: Callable, parent\_node: Union["FieldNode", "DirectiveNode"],+ argument\_definition\_node: "InputValueDefinitionNode",- argument\_node: "ArgumentNode",+ argument\_node: Optional["ArgumentNode"], value: Any, ctx: Optional[Any], ) -\> Any: # Write your business logic here- return next\_directive(parent\_node, argument\_node, value, ctx)+ return next\_directive(parent\_node, argument\_definition\_node, argument\_node, value, ctx)
๐ Fixed
ISSUE-370 - Fix EnumValue uniqueness in schema definition validation rule. It should now throw the correct error in the correct case.
enum anEnum { A A B}
๐ Will throw a
GraphQLSchemaError
exception atengine
build time. You can't have duplicates values.But now:
type X { afield:String}enum anEnum { Value1 X}
Doesn't throw a
GraphQLSchemaError
for the use ofX
as anEnumValue
. This was a buggy schema error detectionISSUE-372 - Fix SDL Validation, Now
ObjectFollowInterface
validator validate field arguments and allows for field type to becovariant
of the interface defined type.Typing on the documentation related to the
argument_node
argument on theon_argument_execution
directive hook. - ISSUE-363 - Add an optional
-
v1.1.3 Changes
February 19, 2020[1.1.3] - 2020-02-18
๐ Fixed
- Correctly implement comparisons on extension types. Thanks @mkniewallner
- ๐ Fix typo in some private function names. Thanks @mkniewallner
-
v1.1.2 Changes
February 05, 2020[1.1.2] - 2020-02-05
๐ Changed
- โก๏ธ Update pytest to 5.3.5
- โก๏ธ Update lark-parser to 0.8.1
๐ Fixed
- Typo (Varibable -> Variable) in error messages (Thanks @davestone)
- Typo (Exists -> Exist) in error messages (Thanks @garyd203)
- ISSUE-345 - Now support correctly class method for
on_subscription_execution
.
-
v1.1.1 Changes
October 10, 2019[1.1.1] - 2019-10-10
๐ Changed
โก๏ธ Update some Test Framework dependencies:
- โก๏ธ Update pytest to 5.2.1
- โก๏ธ Update pytest-xdist to 1.30.0
- โก๏ธ Update pytest-co to 2.81
โก๏ธ Update dependencies:
- โก๏ธ Update lark-parser to 0.7.7
โก๏ธ Update libgraphqlparser to HEAD of abu/remove_python2 branch.
๐ Fixed
- ISSUE-301 - CtypeGen should not bother you anymore.
-
v1.1.0 Changes
October 07, 2019[1.1.0] - 2019-10-03
โ Added
- ISSUE-134 - Adding two new hooks for directives:
on_schema_execution
which is called for each Query/Mutation executedon_schema_subscription
which is called for each Subscription executed
๐ See documentation for more details
๐ Changed
๐ Fixed
- โก๏ธ Replace
and
operator foror
operator in theMutation.updateRecipe
tutorial resolver condition - ISSUE-298 thrown by @helio-correia - Take into account the value filled in into the
error_coercer
parameter atEngine
initialization - ISSUE-309
- ISSUE-134 - Adding two new hooks for directives:
-
v1.0.0 Changes
September 20, 2019[1.0.0] - 2019-09-20
โ Added
- ๐ ISSUE-122 - Implementation of a new
@TypeResolver
decorator to allow the resolution of the concrete type of a result linked to an abstract type (union or interface) in a generic way (more detail here) - ๐ ISSUE-122 - Implementation of a new
type_resolver
parameter on the@Resolver
decorator to allow the resolution of the concrete type of the field result linked to the resolved field abstract type (union or interface) (more detail here) - 0๏ธโฃ ISSUE-122 - Implementation of a new
custom_default_type_resolver
parameter on thecreate_engine
function and the__init__
andcook
method of theEngine
class. This parameter allow to override the default type resolver provided by Tartiflette to resolve the concrete type of abstract type fields (more detail here) - A new
GraphQLInputField
type has been implemented to more clearly distinguish the difference between an argument and an input field and be closer to the GraphQL specification - ๐ The parsing of the same query and its validation is now cached to improve performance when the same query is played regularly
- ๐ ISSUE-278 - Support for
extend
syntax in SDL
๐ Changed
โฌ๏ธ Bump the
libgraphqlparser
submodule to latest master commits so we can now support triple quoted strings as litteral values for parameters.
Note : It's important to have at leastbison
in version >= 3 on your system before installing tartiflette.โฌ๏ธ Bump the
lark-parser
package to version0.7.3
โก๏ธ ISSUE-121 - The grammar used by the lark parser used in the SDL parsing has been updated to conform to the June 2018 GraphQL specification
๐ ISSUE-121 - Both SDL and query parsing does now focus only on the parsing part and returns an instance of
DocumentNode
that can be treated genericallyBuilt-in Tartiflette SDL parts (introspection types, directives, scalars...) have been modified to add descriptions on the various built-in types in order to make the introspection queries more complete
๐ In order to solve the performance issues related to the execution of introspection requests, we proceeded to a big work of pre-compute of the various fields of introspection at the initialization of the Tartiflette engine in order to answer as quickly as possible to the introspection queries
๐ In order to improve performance and thus reduce the execution time of queries, the majority of coercion algorithms are now pre-computed for each type, scalar, directive, etc. at engine initialization
The values of the variables are now computed before executing the requested operation (as specified in the GraphQL specification). This allows us to execute the requested operation only if variables coercion doesn't return any errors.
Note : it is important to note that the computing of values of the variables includes the entire coercion process as well as the execution of potential directives applied on the scalar or input fields of the variable type:
- directives will only be executed once when calculating the value of each variable and no longer at each occurrence of the variable in the query
- if a directive returns an error at coercion time of a variable, the whole operation will not be executed, when previously, only the field where the variable is used would have been in error
ISSUE-216 - An important work on error handling has been done. Error messages are now more explicit and relevant. In addition, the keys
path
andlocations
in error items should now also be more relevant and accurate than before๐ The
error_coercer
parameter now expects an asynchronous function instead of a synchronous function (see the migration guide for more information)๐ The shape of the
info
parameter accessible in particular in the resolvers and some hooks of directives has been completely changed (see the migration guide for more information)๐ The
@Subscription
decorator no longer has its specific default resolver. This means that the messages returned by@Subscription
will no longer be wrapped with the field name as before (when the field doesn't have a dedicated@Resolver
) (see the migration guide for more information)๐ We now make a strong distinction between non-supplied values and
null
values. This is to avoid passing thenull
value when a value has not been supplied (especially for arguments) (see the migration guide for more information)The signature of the following directives hook methods has been changed to
on_argument_execution
,on_post_input_coercion
andon_pre_output_coercion
(see the migration guide for more information)๐ Scalar definition now requires the implementation of a third
parse_literal
method (see the migration guide for more information or documentation on scalar)๐ Fixed
- ๐ The type of the
__Type.kind
field has been fixed for__ TypeKind!
instead of__TypeKind
in the built-in introspection SDL - The optional argument
includeDeprecated
defined on the__Type.enumValues
and__ Type.fields
introspection fields is now functional and allows to filter the result respectively to the deprecations of enum values or fields - The directives applied to input fields are now calling the
on_post_input_coercion
directive hook instead ofon_argument_execution
- The coercion of the arguments is fully functional and the directives applied to the arguments of another directives are now well triggered and computed
- ๐ In some specific and complex cases, the
@if
and@skip
built-in directives could behave unexpectedly and undesirably, their behaviour has been fixed - ๐ ISSUE-277 - Abstract types are better handled especially the interfaces that are now executed and resolved correctly when using fragment and the
__typename
field - Bakes schema objects after extensions baking - ISSUE-292 thrown by @remorses
- ๐ Code Smells seen by sonarcloud.io
- ๐ ISSUE-122 - Implementation of a new
-
v0.12.5 Changes
August 30, 2019[0.12.5] - 2019-08-30
๐ Changed
- ๐ Documentation has relative links instead of absolute ones.
-
v0.12.4 Changes
August 08, 2019