Ariadne 0.13.0

Whooosh! ✈️
Ariadne 0.13 is a maintenance release that brings speed improvements and Python 3.9 support of GraphQL core 3.1 to the library!
We've also managed to sneak in some other small improvements to the project.
Updated GraphQL core to 3.1.3
Ariadne is now using GraphQL core version 3.1.3 for GraphQL standard implementation. This release brings much sought performance improvements to the GraphQL query execution engine which are now available to all Ariadne users!
We give our thank you to Nick Harris who contributed this change!
Python 3.9 support
GraphQL core 3.1 is first release to officially support Python 3.9. As such we've added Python 3.9 to the testing matrix and list of officially supported Python versions.
None is now returned for empty entities in federation.
Ariadne used to return {"__typename": typename} when federated resolver returned None, causing compatibility issues with Apollo Federation.
In 0.13 None is returned instead, properly communicating federated service's intention to the upstream server.
Thanks to Delyan who contributed this fix!
Nested variables support in query price validation
It is now possible to define nested variables as multipliers for query cost when using query price validation. This is useful when complexity should be calculated using the value of field belonging to input type, eg:
type Query {
  users(pagination: PaginationInput): UsersListPage!
}
input PaginationInput {
  pageSize: Int!
}
cost_map = {
    "Query": {
        "users": {"complexity": 1, "multipliers": ["pagination.pageSize"]},
    },
}
Thank you T.Kameyama for contributing this!
Improved convert_kwargs_to_snake_case and snake_case_fallback_resolvers.
Ariadne's case conversion mechanic is a hot topic for developers and new release brings improvements to this feature contributed by two users.
Starting with 0.13 release, Ariadne's case conversion utils now recognize both numbers and acronyms:
- testWithUPPERPartis now converted to- test_with_upper_part.
- test134partis now converted to- test_134_part.
Thank you both Ben Motz and nilsdet for contributing those improvements!
CHANGELOG
- Updated graphQL-corerequirement to 3.1.3.
- Added support for Python 3.9.
- Added support for using nested variables as cost multipliers in the query price validator.
- Noneis now correctly returned instead of- {"__typename": typename}within federation.
- Fixed some surprising behaviors in convert_kwargs_to_snake_caseandsnake_case_fallback_resolvers.