CHANGELOG
0.258.0 - 2025-01-12
Add the ability to override the âmax resultsâ a relayâs connection can return on a per-field basis.
The default value for this is defined in the schemaâs config, and set to 100
unless modified by the user. Now, that per-field value will take precedence over
it.
For example:
Note that this only affects ListConnection
and subclasses. If you are
implementing your own connection resolver, thereâs an extra keyword named
max_results: int | None
that will be passed to it.
Contributed by Thiago Bellini Ribeiro via PR #3746
0.257.0 - 2025-01-09
The common node: Node
used to resolve relay nodes means we will be relying on
is_type_of to check if the returned object is in fact a subclass of the Node
interface.
However, integrations such as Django, SQLAlchemy and Pydantic will not return the type itself, but instead an alike object that is later resolved to the expected type.
In case there are more than one possible type defined for that model that is
being returned, the first one that replies True to is_type_of
check would be
used in the resolution, meaning that when asking for "PublicUser:123"
,
strawberry could end up returning "User:123"
, which can lead to security
issues (such as data leakage).
In here we are introducing a new strawberry.cast
, which will be used to mark
an object with the already known type by us, and when asking for is_type_of that
mark will be used to check instead, ensuring we will return the correct type.
That cast
is already in place for the relay node resolution and pydantic.
Contributed by Thiago Bellini Ribeiro via PR #3749
0.256.1 - 2024-12-23
This release updates Strawberry internally to no longer pass keywords arguments
to pathlib.PurePath
. Support for supplying keyword arguments to
pathlib.PurePath
is deprecated and scheduled for removal in Python 3.14
Contributed by Jonathan Ehwald via PR #3738
0.256.0 - 2024-12-21
This release drops support for Python 3.8, which reached its end-of-life (EOL) in October 2024. The minimum supported Python version is now 3.9.
We strongly recommend upgrading to Python 3.9 or a newer version, as older versions are no longer maintained and may contain security vulnerabilities.
Contributed by Thiago Bellini Ribeiro via PR #3730
0.255.0 - 2024-12-20
This release adds support for making Relay connection optional, this is useful when you want to add permission classes to the connection and not fail the whole query if the user doesnât have permission to access the connection.
Example:
Contributed by Patrick Arminio via PR #3707
0.254.1 - 2024-12-20
This release updates the Context and RootValue vars to have
a default value of None
, this makes it easier to use the views
without having to pass in a value for these vars.
Contributed by Patrick Arminio via PR #3732
0.254.0 - 2024-12-13
This release adds a new on_ws_connect
method to all HTTP view integrations.
The method is called when a graphql-transport-ws
or graphql-ws
connection is
established and can be used to customize the connection acknowledgment behavior.
This is particularly useful for authentication, authorization, and sending a custom acknowledgment payload to clients when a connection is accepted. For example:
Take a look at our documentation to learn more.
Contributed by Jonathan Ehwald via PR #3720
0.253.1 - 2024-12-03
Description: Fixed a bug in the OpenTelemetryExtension class where the _span_holder dictionary was incorrectly shared across all instances. This was caused by defining _span_holder as a class-level attribute with a mutable default value (dict()).
Contributed by Conglei via PR #3716
0.253.0 - 2024-11-23
In this release, the return types of the get_root_value
and get_context
methods were updated to be consistent across all view integrations. Before this
release, the return types used by the ASGI and Django views were too generic.
Contributed by Jonathan Ehwald via PR #3712
0.252.0 - 2024-11-22
The view classes of all integrations now have a decode_json
method that allows
you to customize the decoding of HTTP JSON requests.
This is useful if you want to use a different JSON decoder, for example, to optimize performance.
Contributed by Jonathan Ehwald via PR #3709
0.251.0 - 2024-11-21
Starting with this release, the same JSON encoder is used to encode HTTP responses and WebSocket messages.
This enables developers to override the encode_json
method on their views to
customize the JSON encoder used by all web protocols.
Contributed by Jonathan Ehwald via PR #3708
0.250.1 - 2024-11-19
This release refactors part of the legacy graphql-ws
protocol implementation, making it easier to read, maintain, and extend.
Contributed by Jonathan Ehwald via PR #3704
0.250.0 - 2024-11-18
In this release, we migrated the graphql-transport-ws
types from data classes to typed dicts.
Using typed dicts enabled us to precisely model null
versus undefined
values, which are common in that protocol.
As a result, we could remove custom conversion methods handling these cases and simplify the codebase.
Contributed by Jonathan Ehwald via PR #3701
0.249.0 - 2024-11-18
After a year-long deprecation period, the SentryTracingExtension
has been
removed in favor of the official Sentry SDK integration.
To migrate, remove the SentryTracingExtension
from your Strawberry schema and
then follow the
official Sentry SDK integration guide.
Contributed by Jonathan Ehwald via PR #3672
0.248.1 - 2024-11-08
This release fixes the following deprecation warning:
This was only trigger in Python 3.13 and above.
Contributed by Patrick Arminio via PR #3692
0.248.0 - 2024-11-07
In this release, all types of the legacy graphql-ws protocol were refactored. The types are now much stricter and precisely model the difference between null and undefined fields. As a result, our protocol implementation and related tests are now more robust and easier to maintain.
Contributed by Jonathan Ehwald via PR #3689
0.247.2 - 2024-11-05
This release fixes the issue that some coroutines in the WebSocket protocol handlers were never awaited if clients disconnected shortly after starting an operation.
Contributed by Jonathan Ehwald via PR #3687
0.247.1 - 2024-11-01
Starting with this release, both websocket-based protocols will handle unexpected socket disconnections more gracefully.
Contributed by Jonathan Ehwald via PR #3685
0.247.0 - 2024-10-21
This release fixes a regression in the legacy GraphQL over WebSocket protocol. Legacy protocol implementations should ignore client message parsing errors. During a recent refactor, Strawberry changed this behavior to match the new protocol, where parsing errors must close the WebSocket connection. The expected behavior is restored and adequately tested in this release.
Contributed by Jonathan Ehwald via PR #3670
0.246.3 - 2024-10-21
This release addresses a bug where directives were being added multiple times when defined in an interface which multiple objects inherits from.
The fix involves deduplicating directives when applying extensions/permissions to a field, ensuring that each directive is only added once.
Contributed by Arthur via PR #3674
0.246.2 - 2024-10-12
This release tweaks the Flask integrationâs render_graphql_ide
method to be stricter typed internally, making type checkers ever so slightly happier.
Contributed by Jonathan Ehwald via PR #3666
0.246.1 - 2024-10-09
This release adds support for using raw Python enum types in your schema
(enums that are not decorated with @strawberry.enum
)
This is useful if you have enum types from other places in your code that you want to use in strawberry. i.e
Contributed by × ×ר via PR #3639
0.246.0 - 2024-10-07
The AIOHTTP, ASGI, and Django test clientsâ asserts_errors
option has been renamed to assert_no_errors
to better reflect its purpose.
This change is backwards-compatible, but the old option name will raise a deprecation warning.
Contributed by Jonathan Ehwald via PR #3661
0.245.0 - 2024-10-07
This release removes the dated subscriptions_enabled
setting from the Django and Channels integrations.
Instead, WebSocket support is now enabled by default in all GraphQL IDEs.
Contributed by Jonathan Ehwald via PR #3660
0.244.1 - 2024-10-06
Fixes an issue where the codegen tool would crash when working with a nullable list of types.
Contributed by Jacob Allen via PR #3653
0.244.0 - 2024-10-05
Starting with this release, WebSocket logic now lives in the base class shared between all HTTP integrations. This makes the behaviour of WebSockets much more consistent between integrations and easier to maintain.
Contributed by Jonathan Ehwald via PR #3638
0.243.1 - 2024-09-26
This releases adds support for Pydantic 2.9.0âs Mypy plugin
Contributed by Krisque via PR #3632
0.243.0 - 2024-09-25
Starting with this release, multipart uploads are disabled by default and Strawberry Django view is no longer implicitly exempted from Djangoâs CSRF protection. Both changes relieve users from implicit security implications inherited from the GraphQL multipart request specification which was enabled in Strawberry by default.
These are breaking changes if you are using multipart uploads OR the Strawberry Django view. Migrations guides including further information are available on the Strawberry website.
Contributed by Jonathan Ehwald via PR #3645
0.242.0 - 2024-09-19
Starting with this release, clients using the legacy graphql-ws subprotocol will receive an error when they try to send binary data frames. Before, binary data frames were silently ignored.
While vaguely defined in the protocol, the legacy graphql-ws subprotocol is generally understood to only support text data frames.
Contributed by Jonathan Ehwald via PR #3633
0.241.0 - 2024-09-16
You can now configure your schemas to provide a custom subclass of
strawberry.types.Info
to your types and queries.
Contributed by Ethan Henderson via PR #3592
0.240.4 - 2024-09-13
This release fixes how we check for multipart subscriptions to be in line with the latest changes in the spec.
Contributed by Patrick Arminio via PR #3627
0.240.3 - 2024-09-12
This release fixes an issue that prevented extensions to receive the result from the execution context when executing operations in async.
Contributed by × ×ר via PR #3629
0.240.2 - 2024-09-11
This release updates how we check for GraphQL coreâs version to remove a
dependency on the packaging
package.
Contributed by Nicholas Bollweg via PR #3622
0.240.1 - 2024-09-11
This release adds support for Python 3.13 (which will be out soon!)
Contributed by Patrick Arminio via PR #3510
0.240.0 - 2024-09-10
This release adds support for schema-extensions in subscriptions.
Hereâs a small example of how to use them (they work the same way as query and mutation extensions):
Contributed by × ×ר via PR #3554
0.239.2 - 2024-09-03
This release fixes a TypeError on Python 3.8 due to us using a
asyncio.Queue[Tuple[bool, Any]](1)
instead of asyncio.Queue(1)
.
Contributed by Daniel Szoke via PR #3615
0.239.1 - 2024-09-02
This release fixes an issue with the http multipart subscription where the
status code would be returned as None
, instead of 200.
We also took the opportunity to update the internals to better support additional protocols in future.
Contributed by Patrick Arminio via PR #3610
0.239.0 - 2024-08-31
This release adds support for multipart subscriptions in almost all1 of our http integrations!
Multipart subcriptions
are a new protocol from Apollo GraphQL, built on the
Incremental Delivery over HTTP spec,
which is also used for @defer
and @stream
.
The main advantage of this protocol is that when using the Apollo Client
libraries you donât need to install any additional dependency, but in future
this feature should make it easier for us to implement @defer
and @stream
Also, this means that you donât need to use Django Channels for subscription, since this protocol is based on HTTP we donât need to use websockets.
Contributed by Patrick Arminio via PR #3076
0.238.1 - 2024-08-30
Fix an issue where StrawberryResolver.is_async
was returning False
for a
function decorated with asgirefâs @sync_to_async
.
The root cause is that in python >= 3.12 coroutine functions are market using
inspect.markcoroutinefunction
, which should be checked with
inspect.iscoroutinefunction
instead of asyncio.iscoroutinefunction
Contributed by Hyun S. Moon via PR #3599
0.238.0 - 2024-08-30
This release removes the integration of Starlite, as it has been deprecated since 11 May 2024.
If you are using Starlite, please consider migrating to Litestar (https://litestar.dev) or another alternative.
Contributed by Patrick Arminio via PR #3609
0.237.3 - 2024-07-31
This release fixes the type of the ASGI request handlerâs scope
argument, making type checkers ever so slightly happier.
Contributed by Jonathan Ehwald via PR #3581
0.237.2 - 2024-07-26
This release makes the ASGI and FastAPI integrations share their HTTP request adapter code, making Strawberry ever so slightly smaller and easier to maintain.
Contributed by Jonathan Ehwald via PR #3582
0.237.1 - 2024-07-24
This release adds support for GraphQL-core v3.3 (which has not yet been released). Note that we continue to support GraphQL-core v3.2 as well.
Contributed by × ×ר via PR #3570
0.237.0 - 2024-07-24
This release ensures using pydantic 2.8.0 doesnât break when using experimental pydantic_type and running mypy.
Contributed by Martin Roy via PR #3562
0.236.2 - 2024-07-23
Update federation entity resolver exception handling to set the result to the original error instead of a GraphQLError
, which obscured the original message and meta-fields.
Contributed by Bradley Oesch via PR #3144
0.236.1 - 2024-07-23
This release fixes an issue where optional lazy types using | None
were
failing to be correctly resolved inside modules using future annotations, e.g.
This should now work as expected.
Contributed by Thiago Bellini Ribeiro via PR #3576
0.236.0 - 2024-07-17
This release changes some of the internals of Strawberry, it shouldnât be affecting most of the users, but since we have changed the structure of the code you might need to update your imports.
Thankfully we also provide a codemod for this, you can run it with:
This release also includes additional documentation to some of the classes, methods and functions, this is in preparation for having the API reference in the documentation â¨
Contributed by Patrick Arminio via PR #3546
0.235.2 - 2024-07-08
This release removes an unnecessary check from our internal GET query parsing logic making it simpler and (insignificantly) faster.
Contributed by Jonathan Ehwald via PR #3558
0.235.1 - 2024-06-26
This release improves the performance when returning a lot of data, especially when using generic inputs (where we got a 7x speedup in our benchmark!).
Contributed by Patrick Arminio via PR #3549
0.235.0 - 2024-06-10
This release adds a new configuration to disable field suggestions in the error response.
Trying to query { nam }
will not suggest to query name
instead.
Contributed by Patrick Arminio via PR #3537
0.234.3 - 2024-06-10
Fixes a bug where pydantic models as the default value for an input did not print the proper schema. See this issue.
Contributed by ppease via PR #3499
0.234.2 - 2024-06-07
This release fixes an issue when trying to retrieve specialized type vars from a generic type that has been aliased to a name, in cases like:
Contributed by Thiago Bellini Ribeiro via PR #3535
0.234.1 - 2024-06-06
Improved error message when supplying GlobalID with invalid or unknown type name component
Contributed by Take Weiland via PR #3533
0.234.0 - 2024-06-01
This release separates the relay.ListConnection
logic that calculates the
slice of the nodes into a separate function.
This allows for easier reuse of that logic for other places/libraries.
The new function lives in the strawberry.relay.utils
and can be used by
calling SliceMetadata.from_arguments
.
This has no implications to end users.
Contributed by Thiago Bellini Ribeiro via PR #3530
0.233.3 - 2024-05-31
This release fixes a typing issue where trying to type a root
argument with
strawberry.Parent
would fail, like in the following example:
This should now work as intended.
Contributed by Thiago Bellini Ribeiro via PR #3529
0.233.2 - 2024-05-31
This release fixes an introspection issue when requesting isOneOf
on built-in
scalars, like String
.
Contributed by Patrick Arminio via PR #3528
0.233.1 - 2024-05-30
This release exposes get_arguments
in the schema_converter module to allow
integrations, such as strawberry-django, to reuse that functionality if needed.
This is an internal change with no impact for end users.
Contributed by Thiago Bellini Ribeiro via PR #3527
0.233.0 - 2024-05-29
This release refactors our Federation integration to create types using Strawberry directly, instead of using low level types from GraphQL-core.
The only user facing change is that now the info
object passed to the
resolve_reference
function is the strawberry.Info
object instead of the one
coming coming from GraphQL-core. This is a breaking change for users that
were using the info
object directly.
If you need to access the original info
object you can do so by accessing the
_raw_info
attribute.
Contributed by Patrick Arminio via PR #3525
0.232.2 - 2024-05-28
This release fixes an issue that would prevent using lazy aliased connections to annotate a connection field.
For example, this should now work correctly:
Contributed by Thiago Bellini Ribeiro via PR #3524
0.232.1 - 2024-05-27
This release fixes an issue where mypy would complain when using a typed async
resolver with strawberry.field(resolver=...)
.
Now the code will type check correctly. We also updated our test suite to make we catch similar issues in the future.
Contributed by Patrick Arminio via PR #3516
0.232.0 - 2024-05-25
This release improves type checking for async resolver functions when used as
strawberry.field(resolver=resolver_func)
.
Now doing this will raise a type error:
Contributed by Bryan Ricker via PR #3241
0.231.1 - 2024-05-25
Fixes an issue where lazy annotations raised an error when used together with a List
Contributed by jeich via PR #3388
0.231.0 - 2024-05-25
When calling the CLI without all the necessary dependencies installed,
a MissingOptionalDependenciesError
will be raised instead of a
ModuleNotFoundError
. This new exception will provide a more helpful
hint regarding how to fix the problem.
Contributed by Ethan Henderson via PR #3511
0.230.0 - 2024-05-22
This release adds support for @oneOf
on input types! đ You can use
one_of=True
on input types to create an input type that should only have one
of the fields set.
Contributed by Patrick Arminio via PR #3429
0.229.2 - 2024-05-22
This release fixes an issue when using Annotated
+ strawberry.lazy
+
deferred annotations such as:
Before this would only work if datetime
was not inside quotes. Now it should
work as expected!
Contributed by Thiago Bellini Ribeiro via PR #3507
0.229.1 - 2024-05-15
This release fixes a regression from 0.229.0 where using a generic interface inside a union would return an error.
Contributed by Patrick Arminio via PR #3502
0.229.0 - 2024-05-12
This release improves our support for generic types, now using the same the same generic multiple times with a list inside an interface or union is supported, for example the following will work:
Contributed by Patrick Arminio via PR #3463
0.228.0 - 2024-05-12
This releases updates the JSON scalar definition to have the updated specifiedBy
URL.
The release is marked as minor because it will change the generated schema if youâre using the JSON scalar.
Contributed by Egor via PR #3478
0.227.7 - 2024-05-12
This releases updates the field-extensions
documentationâs StrawberryField
stability warning to include stable features.
The release is marked as patch because it only changes documentation.
Contributed by Ray Sy via PR #3496
0.227.6 - 2024-05-11
Fix AssertionError
caused by the DatadogTracingExtension
whenever the query is unavailable.
The bug in question was reported by issue #3150.
The datadog extension would throw an AssertionError
whenever there was no query available. This could happen if,
for example, a user POSTed something to /graphql
with a JSON that doesnât contain a query
field as per the
GraphQL spec.
The fix consists of adding query_missing
to the operation_type
tag, and also adding query_missing
to the resource name.
It also makes it easier to look for logs of users making invalid queries by searching for query_missing
in Datadog.
Contributed by Lucas Valente via PR #3483
0.227.5 - 2024-05-11
Deprecations: This release deprecates the Starlite
integration in favour of the LiteStar
integration.
Refer to the LiteStar integration for more information.
LiteStar is a renamed and upgraded version of Starlite.
Before:
After:
Contributed by Egor via PR #3492
0.227.4 - 2024-05-09
This release fixes a bug in release 0.227.3 where FragmentSpread nodes were not resolving edges.
Contributed by Eric Uriostigue via PR #3487
0.227.3 - 2024-05-01
This release adds an optimization to ListConnection
such that only queries with
edges
or pageInfo
in their selected fields triggers resolve_edges
.
This change is particularly useful for the strawberry-django
extensionâs
ListConnectionWithTotalCount
and the only selected field is totalCount
. An
extraneous SQL query is prevented with this optimization.
Contributed by Eric Uriostigue via PR #3480
0.227.2 - 2024-04-21
This release fixes a minor issue where the docstring for the relay util to_base64
described the return type incorrectly.
Contributed by Gavin Bannerman via PR #3467
0.227.1 - 2024-04-20
This release fixes an issue where annotations on @strawberry.type
s were overridden
by our code. With release all annotations should be preserved.
This is useful for libraries that use annotations to introspect Strawberry types.
Contributed by Patrick Arminio via PR #3003
0.227.0 - 2024-04-19
This release improves the schema codegen, making it more robust and easier to use.
It does this by introducing a directed acyclic graph for the schema codegen, which should reduce the amount of edits needed to make the generated code work, since it will be able to generate the code in the correct order (based on the dependencies of each type).
Contributed by Patrick Arminio via PR #3116
0.226.2 - 2024-04-19
This release updates our Mypy plugin to add support for Pydantic >= 2.7.0
Contributed by Patrick Arminio via PR #3462
0.226.1 - 2024-04-19
This releases fixes a bug in the mypy plugin where the from_pydantic
method
was not correctly typed.
Contributed by Corentin-Br via PR #3368
0.226.0 - 2024-04-17
Starting with this release, any error raised from within schema extensions will abort the operation and is returned to the client.
This corresponds to the way we already handle field extension errors and resolver errors.
This is particular useful for schema extensions performing checks early in the request lifecycle, for example:
Contributed by Jonathan Ehwald via PR #3217
0.225.1 - 2024-04-15
This change fixes GET request queries returning a 400 if a content_type header is supplied
Contributed by Nathan John via PR #3452
0.225.0 - 2024-04-14
This release adds support for using FastAPI APIRouter arguments in GraphQLRouter.
Now you have the opportunity to specify parameters such as tags
, route_class
,
deprecated
, include_in_schema
, etc:
Contributed by Nikita Paramonov via PR #3442
0.224.2 - 2024-04-13
This releases fixes a bug where schema extensions where not running a LIFO order.
Contributed by × ×ר via PR #3416
0.224.1 - 2024-03-30
This release fixes a deprecation warning when using the Apollo Tracing Extension.
Contributed by A. Coady via PR #3410
0.224.0 - 2024-03-30
This release adds support for using both Pydantic v1 and v2, when importing from
pydantic.v1
.
This is automatically detected and the correct version is used.
Contributed by Patrick Arminio via PR #3426
0.223.0 - 2024-03-29
This release adds support for Apollo Federation in the schema codegen. Now you can convert a schema like this:
to a Strawberry powered schema like this:
By running the following command:
Contributed by Patrick Arminio via PR #3417
0.222.0 - 2024-03-27
This release adds support for Apollo Federation v2.7 which includes the @authenticated
, @requiresScopes
, @policy
directives, as well as the label
argument for @override
.
As usual, we have first class support for them in the strawberry.federation
namespace, hereâs an example:
Contributed by Tyger Taco via PR #3420
0.221.1 - 2024-03-21
This release properly allows passing one argument to the Info
class.
This is now fully supported:
Contributed by Patrick Arminio via PR #3419
0.221.0 - 2024-03-21
This release improves the Info
type, by adding support for default TypeVars
and by exporting it from the main module. This makes it easier to use Info
in
your own code, without having to import it from strawberry.types.info
.
New export
By exporting Info
from the main module, now you can do the follwing:
Default TypeVars
The Info
type now has default TypeVars, so you can use it without having to
specify the type arguments, like we did in the example above. Make sure to use
the latest version of Mypy or Pyright for this. It also means that you can only
pass one value to it if you only care about the context type:
Contributed by Patrick Arminio via PR #3418
0.220.0 - 2024-03-08
This release adds support to allow passing connection_params
as dictionary to GraphQLWebsocketCommunicator
class when testing channels integration
Example
Contributed by selvarajrajkanna via PR #3403
0.219.2 - 2024-02-06
This releases updates the dependency of python-multipart
to be at least 0.0.7
(which includes a security fix).
It also removes the upper bound for python-multipart
so you can always install the latest version (if compatible) đ
Contributed by Srikanth via PR #3375
0.219.1 - 2024-01-28
- Improved error message when supplying in incorrect before or after argument with using relay and pagination.
- Add extra PR requirement in README.md
Contributed by SD via PR #3361
0.219.0 - 2024-01-24
This release adds support for litestar.
Contributed by Matthieu MN via PR #3213
0.218.1 - 2024-01-23
This release fixes a small issue in the GraphQL Transport websocket where the connection would fail when receiving extra parameters in the payload sent from the client.
This would happen when using Apollo Sandbox.
Contributed by Patrick Arminio via PR #3356
0.218.0 - 2024-01-22
This release adds a new method get_fields
on the Schema
class.
You can use get_fields
to hide certain field based on some conditions,
for example:
The schema here would only have the name
field on the User
type.
Contributed by Patrick Arminio via PR #3274
0.217.1 - 2024-01-04
This hotfix enables permission extensions to be used with AsyncGenerators.
Contributed by Erik Wrede via PR #3318
0.217.0 - 2023-12-18
Permissions classes now use a FieldExtension
. The new preferred way to add permissions
is to use the PermissionsExtension
class:
The old way of adding permissions using permission_classes
is still
supported via the automatic addition of a PermissionExtension
on the field.
â ď¸ Breaking changes
Previously the kwargs
argument keys for the has_permission
method were
using camel casing (depending on your schema configuration), now they will
always follow the python name defined in your resolvers.
Using the new PermissionExtension
API, permissions support even more features:
Silent errors
To return None
or []
instead of raising an error, the fail_silently
keyword
argument on PermissionExtension
can be set to True
.
Custom Error Extensions & classes
Permissions will now automatically add pre-defined error extensions to the error, and
can use a custom GraphQLError
class. This can be configured by modifying
the error_class
and error_extensions
attributes on the BasePermission
class.
Customizable Error Handling
To customize the error handling, the on_unauthorized
method on
the BasePermission
class can be used. Further changes can be implemented by
subclassing the PermissionExtension
class.
Schema Directives
Permissions will automatically be added as schema directives to the schema. This
behavior can be altered by setting the add_directives
to False
on PermissionExtension
, or by setting the _schema_directive
class attribute of the
permission to a custom directive.
Contributed by Erik Wrede via PR #2570
0.216.1 - 2023-12-12
Donât require NodeId
annotation if resolve_id is overwritten on Node
implemented types
Contributed by Alexander via PR #2844
0.216.0 - 2023-12-06
Override encode_json() method in Django BaseView to use DjangoJSONEncoder
Contributed by Noam Stolero via PR #3273
0.215.3 - 2023-12-06
Fixed the base view so it uses parse_json
when loading parameters from the query string instead of json.loads
.
Contributed by Elias Gabriel via PR #3272
0.215.2 - 2023-12-05
This release updates the Apollo Sandbox integration to all you to pass cookies to the GraphQL endpoint by enabling the Include cookes option in the Sandbox settings.
Contributed by Patrick Arminio via PR #3278
0.215.1 - 2023-11-20
Improved error message when supplying GlobalID format that relates to another type than the query itself.
Contributed by SD via PR #3194
0.215.0 - 2023-11-19
Adds an optional extensions
parameter to strawberry.federation.field
, with default value None
. The key is passed through to strawberry.field
, so the functionality is exactly as described here.
Example:
Contributed by Bryan Ricker via PR #3239
0.214.0 - 2023-11-15
This release updates the GraphiQL packages to their latest versions:
graphiql@3.0.9
@graphiql/plugin-explorer@1.0.2
Contributed by Rodrigo Feijao via PR #3227
0.213.0 - 2023-11-08
This release adds support in all all our HTTP integration for choosing between different GraphQL IDEs. For now we support GraphiQL (the default), Apollo Sandbox, and Pathfinder.
Deprecations: This release deprecates the graphiql
option in all HTTP integrations,
in favour of graphql_ide
, this allows us to only have one settings to change GraphQL ide,
or to disable it.
Hereâs a couple of examples of how you can use this:
FastAPI
Django
Contributed by Patrick Arminio via PR #3209
0.212.0 - 2023-11-07
This release changes how we check for generic types. Previously, any type that had a generic typevar would be considered generic for the GraphQL schema, this would generate un-necessary types in some cases. Now, we only consider a type generic if it has a typevar that is used as the type of a field or one of its arguments.
For example the following type:
Will not generate a generic type in the schema, as the typevar T
is not used
as the type of a field or argument.
Contributed by Patrick Arminio via PR #3202
0.211.2 - 2023-11-06
This release removes unused graphiql
submodules for Flask, Quart and Sanic.
Contributed by Pierre Chapuis via PR #3203
0.211.1 - 2023-10-25
This release fixes an issue that prevented the parser_cache
extension to be used in combination with
other extensions such as MaxTokensLimiter
.
The following should work as expected now:
Contributed by David Ĺ anda via PR #3170
0.211.0 - 2023-10-24
This release adds a Quart view.
Contributed by Pierre Chapuis via PR #3162
0.210.0 - 2023-10-24
This release deprecates our SentryTracingExtension
, as it is now incorporated directly into Sentry itself as of version 1.32.0. You can now directly instrument Strawberry with Sentry.
Below is the revised usage example:
Many thanks to @sentrivana for their work on this integration!
0.209.8 - 2023-10-20
Fix strawberry mypy plugin for pydantic v2
Contributed by Corentin-Br via PR #3159
0.209.7 - 2023-10-15
Remove stack_info from error log messages to not clutter error logging with unnecessary information.
Contributed by Malte Finsterwalder via PR #3143
0.209.6 - 2023-10-07
Add text/html content-type to chalice graphiql response
Contributed by Julian Popescu via PR #3137
0.209.5 - 2023-10-03
This release adds a new private hook in our HTTP views, it is called
_handle_errors
and it is meant to be used by Sentry (or other integrations)
to handle errors without having to patch methods that could be overridden
by the users
Contributed by Patrick Arminio via PR #3127
0.209.4 - 2023-10-02
This release changes how we check for conflicting resolver arguments to
exclude self
from those checks, which were introduced on version 0.208.0.
It is a common pattern among integrations, such as the Django one, to
use root: Model
in the resolvers for better typing inference.
Contributed by Thiago Bellini Ribeiro via PR #3131
0.209.3 - 2023-10-02
Mark Djangoâs asyncview as a coroutine using asgiref.sync.markcoroutinefunction
to support using it with Python 3.12.
Contributed by Thiago Bellini Ribeiro via PR #3124
0.209.2 - 2023-09-24
Fix generation of input based on pydantic models using nested Annotated
type annotations:
Contributed by Matthieu MN via PR #3109
0.209.1 - 2023-09-21
This release fixes an issue when trying to generate code from a schema that was using double quotes inside descriptions.
The following schema will now generate code correctly:
Contributed by Patrick Arminio via PR #3112
0.209.0 - 2023-09-19
This release adds support for generating Strawberry types from SDL files. For example, given the following SDL file:
you can run
to generate the following Python code:
Contributed by Patrick Arminio via PR #3096
0.208.3 - 2023-09-19
Adding support for additional pydantic built in types like EmailStr or PostgresDsn.
Contributed by ppease via PR #3101
0.208.2 - 2023-09-18
This release fixes an issue that would prevent using generics with unnamed unions, like in this example:
Contributed by Patrick Arminio via PR #3099
0.208.1 - 2023-09-15
This fixes a bug where codegen would choke trying to find a field in the schema for a generic type.
Contributed by Matt Gilson via PR #3077
0.208.0 - 2023-09-14
Adds new strawberry.Parent type annotation to support resolvers without use of self.
E.g.
Contributed by mattalbr via PR #3017
0.207.1 - 2023-09-14
This fixes a bug where codegen would choke on FragmentSpread nodes in the GraphQL during type collection.
e.g.:
The current version of the code generator is not able to handle the ...PartialBogPost
in this position because it assumes it can only find Field
type nodes even though the spread should be legit.
Contributed by Matt Gilson via PR #3086
0.207.0 - 2023-09-14
This release removes the deprecated ignore
argument from the QueryDepthLimiter
extension.
Contributed by Kai Benevento via PR #3093
0.206.0 - 2023-09-13
strawberry codegen
can now operate on multiple input query files.
The previous behavior of naming the file types.js
and types.py
for the builtin typescript
and python
plugins respectively is
preserved, but only if a single query file is passed. When more
than one query file is passed, the code generator will now use
the stem of the query fileâs name to construct the name of the
output files. e.g. my_query.graphql
-> my_query.js
or
my_query.py
. Creators of custom plugins are responsible
for controlling the name of the output file themselves. To
accomodate this, if the __init__
method of a QueryCodegenPlugin
has a parameter named query
or query_file
, the pathlib.Path
to the query file will be passed to the pluginâs __init__
method.
Finally, the ConsolePlugin
has also recieved two new lifecycle
methods. Unlike other QueryCodegenPlugin
, the same instance of
the ConsolePlugin
is used for each query file processed. This
allows it to keep state around how many total files were processed.
The ConsolePlugin
recieved two new lifecycle hooks: before_any_start
and after_all_finished
that get called at the appropriate times.
Contributed by Matt Gilson via PR #2911
0.205.0 - 2023-08-24
strawberry codegen
previously choked for inputs that used the
strawberry.UNSET
sentinal singleton value as a default. The intent
here is to say that if a variable is not part of the request payload,
then the UNSET
default value will not be modified and the service
code can then treat an unset value differently from a default value,
etc.
For codegen, we treat the UNSET
default value as a GraphQLNullValue
.
The .value
property is the UNSET
object in this case (instead of
the usual None
). In the built-in python code generator, this causes
the client to generate an object with a None
default. Custom client
generators can sniff at this value and update their behavior.
Contributed by Matt Gilson via PR #3050
0.204.0 - 2023-08-15
Adds a new flag to export-schema
command, --output
, which allows the user to specify the output file. If unset (current behavior), the command will continue to print to stdout.
Contributed by Chris Hua via PR #3033
0.203.3 - 2023-08-14
Mark pydantic constrained list test with need_pydantic_v1 since it is removed in pydantic V2
Contributed by tjeerddie via PR #3034
0.203.2 - 2023-08-14
Enhancements:
- Improved pydantic conversion compatibility with specialized list classes.
- Modified
StrawberryAnnotation._is_list
to check if theannotation
extends from thelist
type, enabling it to be considered a list. - in
StrawberryAnnotation
Moved the_is_list
check before the_is_generic
check inresolve
to avoidunsupported
error in_is_generic
before it checked_is_list
.
- Modified
This enhancement enables the usage of constrained lists as class types and allows the creation of specialized lists. The following example demonstrates this feature:
Contributed by tjeerddie via PR #2909
0.203.1 - 2023-08-12
This release updates the built-in GraphiQL to the current latest version (3.0.5), it also updates React to the current latest version (18.2.0) and uses the production distribution instead of development to reduce bundle size.
Contributed by Kien Dang via PR #3031
0.203.0 - 2023-08-10
Add support for extra colons in the GlobalID
string.
Before, the string SomeType:some:value
would produce raise an error saying that
it was expected the string to be splited in 2 parts when doing .split(":")
.
Now we are using .split(":", 1)
, meaning that the example above will consider
SomeType
to be the type name, and some:value
to be the node_id.
Contributed by Thiago Bellini Ribeiro via PR #3025
0.202.1 - 2023-08-09
TypingUnionType import error check is reraised because TypingGenericAlias is checked at the same time which is checked under 3.9 instead of under 3.10
Fix by separating TypingUnionType and TypingGenericAlias imports in their own try-catch
Contributed by tjeerddie via PR #3023
0.202.0 - 2023-08-08
This release updates Strawberryâs codebase to use new features in Python 3.8.
It also removes backports.cached-property
from our dependencies, as we can
now rely on the standard libraryâs functools.cached_property
.
Contributed by Thiago Bellini Ribeiro via PR #2995
0.201.1 - 2023-08-08
Fix strawberry mypy plugin for pydantic v1
Contributed by tjeerddie via PR #3019
0.201.0 - 2023-08-08
Fix import error in strawberry.ext.mypy_plugin
for users who donât use pydantic.
Contributed by David NÄmec via PR #3018
0.200.0 - 2023-08-07
Adds initial support for pydantic V2.
This is extremely experimental for wider initial testing.
We do not encourage using this in production systems yet.
Contributed by James Chua via PR #2972
0.199.3 - 2023-08-06
This release fixes an issue on relay.ListConnection
where async iterables that returns
non async iterable objects after being sliced where producing errors.
This should fix an issue with async strawberry-graphql-django when returning already prefetched QuerySets.
Contributed by Thiago Bellini Ribeiro via PR #3014
0.199.2 - 2023-08-03
This releases improves how we handle Annotated and async types (used in subscriptions). Previously we werenât able to use unions with names inside subscriptions, now thatâs fixed đ
Example:
Contributed by Patrick Arminio via PR #3008
0.199.1 - 2023-08-02
This release fixes an issue in the graphql-ws
implementation
where sending a null
payload would cause the connection
to be closed.
Contributed by Patrick Arminio via PR #3007
0.199.0 - 2023-08-01
This release changes how we handle generic type vars, bringing support to the new generic syntax in Python 3.12 (which will be out in October).
This now works:
Contributed by Patrick Arminio via PR #2993
0.198.0 - 2023-07-31
This release adds support for returning interfaces directly in resolvers:
Contributed by Patrick Arminio via PR #2989
0.197.0 - 2023-07-30
This release removes support for Python 3.7 as its end of life was on 27 Jun 2023.
This will allow us to reduce the number of CI jobs we have, and potentially use newer features of Python. âĄ
Contributed by Alexander via PR #2907
0.196.2 - 2023-07-28
This release fixes an issue when trying to use Annotated[strawberry.auto, ...]
on python 3.10 or older, which got evident after the fix from 0.196.1.
Previously we were throwing the type away, since it usually is Any
, but python
3.10 and older will validate that the first argument passed for Annotated
is callable (3.11+ does not do that anymore), and StrawberryAuto
is not.
This changes it to keep that Any
, which is also what someone would expect
when resolving the annotation using our custom eval_type
function.
Contributed by Thiago Bellini Ribeiro via PR #2990
0.196.1 - 2023-07-26
This release fixes an issue where annotations resolution for auto and lazy fields
using Annotated
where not preserving the remaining arguments because of a
typo in the arguments filtering.
Contributed by Thiago Bellini Ribeiro via PR #2983
0.196.0 - 2023-07-26
This release adds support for union with a single member, they are useful for future proofing your schema in cases you know a field will be part of a union in future.
Contributed by Patrick Arminio via PR #2982
0.195.3 - 2023-07-22
This release no longer requires an upperbound pin for uvicorn, ensuring compatibility with future versions of uvicorn without the need for updating Strawberry.
Contributed by Patrick Arminio via PR #2968
0.195.2 - 2023-07-15
This release introduces a bug fix for relay connection where previously they wouldnât work without padding the first
argument.
Contributed by Alexander via PR #2938
0.195.1 - 2023-07-15
This release fixes a bug where returning a generic type from a field that was returning an interface would throw an error.
Contributed by Patrick Arminio via PR #2955
0.195.0 - 2023-07-14
Improve the time complexity of strawberry.interface
using resolve_type
.
Achieved time complexity is now O(1) with respect to the number of
implementations of an interface. Previously, the use of is_type_of
resulted
in a worst-case performance of O(n).
Before:
After:
Contributed by San Kilkis via PR #1949
0.194.4 - 2023-07-08
This release makes sure that Schema.process_errors()
is called once for every error
which happens with graphql-transport-ws
operations.
Contributed by KristjĂĄn Valur JĂłnsson via PR #2899
0.194.3 - 2023-07-08
Added default argument to the typer Argument function, this adds support for older versions of typer.
Contributed by Jaime Coello de Portugal via PR #2906
0.194.2 - 2023-07-08
This release includes a performance improvement to strawberry.lazy()
to allow relative module imports to be resolved faster.
Contributed by Karim Alibhai via PR #2926
0.194.1 - 2023-07-08
This release adds a setter on StrawberryAnnotation.annotation
, this fixes
an issue on Strawberry Django.
Contributed by Patrick Arminio via PR #2932
0.194.0 - 2023-07-08
Restore evaled type access in StrawberryAnnotation
Prior to Strawberry 192.2 the annotation
attribute of StrawberryAnnotation
would return an evaluated type when possible due reserved argument parsing.
192.2 moved the responsibility of evaluating and caching results to the
evaluate
method of StrawberryAnnotation
. This introduced a regression when
using future annotations for any code implicitely relying on the annotation
attribute being an evaluated type.
To fix this regression and mimick pre-192.2 behavior, this release adds an
annotation
property to StrawberryAnnotation
that internally calls the
evaluate
method. On success the evaluated type is returned. If a NameError
is raised due to an unresolvable annotation, the raw annotation is returned.
Contributed by San Kilkis via PR #2925
0.193.1 - 2023-07-05
This fixes a regression from 0.190.0 where changes to the return type of a field done by Field Extensions would not be taken in consideration by the schema.
Contributed by Thiago Bellini Ribeiro via PR #2922
0.193.0 - 2023-07-04
This release updates the API to listen to Django Channels to avoid race conditions when confirming GraphQL subscriptions.
Deprecations:
This release contains a deprecation for the Channels integration. The channel_listen
method will be replaced with an async context manager that returns an awaitable
AsyncGenerator. This method is called listen_to_channel
.
An example of migrating existing code is given below:
Contributed by Moritz Ulmer via PR #2856
0.192.2 - 2023-07-03
This release fixes an issue related to using typing.Annotated
in resolver
arguments following the declaration of a reserved argument such as
strawberry.types.Info
.
Before this fix, the following would be converted incorrectly:
Resulting in the schema:
After this fix, the schema is converted correctly:
Contributed by San Kilkis via PR #2901
0.192.1 - 2023-07-02
Add specifications in FastAPI doc if query via GET is enabled
Contributed by guillaumeLepape via PR #2913
0.192.0 - 2023-06-28
This release introduces a new command called upgrade
, this command can be used
to run codemods on your codebase to upgrade to the latest version of Strawberry.
At the moment we only support upgrading unions to use the new syntax with annotated, but in future we plan to add more commands to help with upgrading.
Hereâs how you can use the command to upgrade your codebase:
Contributed by Patrick Arminio via PR #2886
0.191.0 - 2023-06-28
This release adds support for declaring union types using typing.Annotated
instead of strawberry.union(name, types=...)
.
Code using the old syntax will continue to work, but it will trigger a
deprecation warning. Using Annotated will improve type checking and IDE support
especially when using pyright
.
Before:
After:
0.190.0 - 2023-06-27
This release refactors the way we resolve field types to to make it more robust, resolving some corner cases.
One case that should be fixed is when using specialized generics with future annotations.
Contributed by Alexander via PR #2868
0.189.3 - 2023-06-27
This release removes some usage of deprecated functions from GraphQL-core.
Contributed by KristjĂĄn Valur JĂłnsson via PR #2894
0.189.2 - 2023-06-27
The graphql-transport-ws
protocol allows for subscriptions to error during execution without terminating
the subscription. Non-fatal errors produced by subscriptions now produce Next
messages containing
an ExecutionResult
with an error
field and donât necessarily terminate the subscription.
This is in accordance to the behaviour of Apollo server.
Contributed by KristjĂĄn Valur JĂłnsson via PR #2876
0.189.1 - 2023-06-25
This release fixes a deprecation warning being triggered by the relay integration.
Contributed by Patrick Arminio via PR #2858
0.189.0 - 2023-06-22
This release updates create_type
to add support for all arguments
that strawberry.type
supports. This includes: description
, extend
,
directives
, is_input
and is_interface
.
Contributed by Patrick Arminio via PR #2880
0.188.0 - 2023-06-22
This release gives codegen clients the ability to inquire about the __typename
of a GraphQLObjectType
. This information can be used to automatically select
the proper type to hydrate when working with a union type in the response.
Contributed by Matt Gilson via PR #2875
0.187.5 - 2023-06-21
This release fixes a regression when comparing a StrawberryAnnotation
instance with anything that is not also a StrawberryAnnotation
instance,
which caused it to raise a NotImplementedError
.
This reverts its behavior back to how it worked before, where it returns
NotImplemented
instead, meaning that the comparison can be delegated to
the type being compared against or return False
in case it doesnât define
an __eq__
method.
Contributed by Thiago Bellini Ribeiro via PR #2879
0.187.4 - 2023-06-21
graphql-transport-ws
handler now uses a single dict to manage active operations.
Contributed by KristjĂĄn Valur JĂłnsson via PR #2699
0.187.3 - 2023-06-21
This release fixes a typing regression on StraberryContainer
subclasses
where type checkers would not allow non WithStrawberryObjectDefinition
types
to be passed for its of_type
argument (e.g. StrawberryOptional(str)
)
Contributed by Thiago Bellini Ribeiro via PR #2878
0.187.2 - 2023-06-21
This release removes get_object_definition_strict
and instead
overloads get_object_definition
to accept an extra strct
keyword.
This is a new feature so it is unlikely to break anything.
Contributed by Thiago Bellini Ribeiro via PR #2877
0.187.1 - 2023-06-21
This release bumps the minimum requirement of
typing-extensions
to 4.5
Contributed by Patrick Arminio via PR #2872
0.187.0 - 2023-06-20
This release renames _type_definition
to __strawberry_definition__
. This doesnât change the public API of Strawberry, but if you were using _type_definition
you can still access it, but it will be removed in future.
Contributed by × ×ר via PR #2836
0.186.3 - 2023-06-20
This release adds resolve_async to NodeExtension to allow it to be used together with other field async extensions/permissions.
Contributed by Thiago Bellini Ribeiro via PR #2863
0.186.2 - 2023-06-19
This release fixes an issue on StrawberryField.copy_with method
not copying its extensions and overwritten _arguments
.
Also make sure that all lists/tuples in those types are copied as new lists/tuples to avoid unexpected behavior.
Contributed by Thiago Bellini Ribeiro via PR #2865
0.186.1 - 2023-06-16
In this release, we pass the default values from the strawberry.Schema through to the codegen plugins. The default python plugin now adds these default values to the objects it generates.
Contributed by Matt Gilson via PR #2860
0.186.0 - 2023-06-15
This release removes more parts of the Mypy plugin, since they are not needed anymore.
Contributed by Patrick Arminio via PR #2852
0.185.2 - 2023-06-15
This release fixes a bug causing a KeyError exception to be thrown during subscription cleanup.
Contributed by rjwills28 via PR #2794
0.185.1 - 2023-06-14
Correct a type-hinting bug with strawberry.directive
.
This may cause some consumers to have to remove a # type: ignore
comment
or unnecessary typing.cast
in order to get mypy
to pass.
Contributed by Matt Gilson via PR #2847
0.185.0 - 2023-06-14
This release removes our custom __dataclass_transform__
decorator and replaces
it with typing-extensionâs one. It also removes parts of the mypy plugin, since
most of it is not needed anymore đ
This update requires typing_extensions>=4.1.0
Contributed by Patrick Arminio via PR #2227
0.184.1 - 2023-06-13
This release migrates our CLI to typer, all commands should work the same as before.
Contributed by Patrick Arminio via PR #2569
0.184.0 - 2023-06-12
This release improves the ďťżrelay.NodeID
annotation check by delaying it until after class initialization. This resolves issues with evaluating type annotations before they are fully defined and enables integrations to inject code for it in the type.
Contributed by Thiago Bellini Ribeiro via PR #2838
0.183.8 - 2023-06-12
This release fixes a bug in the codegen where List
objects are currently emitted
as Optional
objects.
Contributed by Matt Gilson via PR #2843
0.183.7 - 2023-06-12
Refactor ConnectionExtension
to copy arguments instead of extending them.
This should fix some issues with integrations which override arguments
,
like the django one, where the inserted arguments were vanishing.
Contributed by Thiago Bellini Ribeiro via PR #2839
0.183.6 - 2023-06-09
This release fixes a bug where codegen would fail on mutations that have object arguments in the query.
Additionally, it does a topological sort of the types before passing it to the plugins to ensure that dependent types are defined after their dependencies.
Contributed by Matt Gilson via PR #2831
0.183.5 - 2023-06-08
This release fixes an issue where Strawberry would make copies of types that were using specialized generics that were not Strawerry types.
This issue combined with the use of lazy types was resulting in duplicated type errors.
Contributed by Patrick Arminio via PR #2824
0.183.4 - 2023-06-07
This release fixes an issue for parsing lazy types using forward references
when they were enclosed in an Optional[...]
type.
The following now should work properly:
Contributed by Thiago Bellini Ribeiro via PR #2821
0.183.3 - 2023-06-07
This release fixes a codegen bug. Prior to this fix, inline fragments would only include the last field defined within its scope and all fields common with its siblings.
After this fix, all fields will be included in the generated types.
Contributed by Matt Gilson via PR #2819
0.183.2 - 2023-06-07
Fields with generics support directives.
Contributed by A. Coady via PR #2811
0.183.1 - 2023-06-06
This release fixes an issue of the new relay integration adding an id: GlobalID!
argument on all objects that inherit from relay.Node
. That shouldâve only happened
for Query
types.
Strawberry now will not force a relay.Node
or any type that inherits it to be
inject the node extension which adds the argument and a resolver for it, meaning that
this code:
Should now be written as:
Contributed by Thiago Bellini Ribeiro via PR #2814
0.183.0 - 2023-06-06
This release adds a new field extension called InputMutationExtension
, which makes
it easier to create mutations that receive a single input type called input
,
while still being able to define the arguments of that input on the resolver itself.
The following example:
Would generate a schema like this:
Contributed by Thiago Bellini Ribeiro via PR #2580
0.182.0 - 2023-06-06
Initial relay spec implementation. For information on how to use it, check out the docs in here: https://strawberry.rocks/docs/guides/relay
Contributed by Thiago Bellini Ribeiro via PR #2511
0.181.0 - 2023-06-06
This release adds support for properly resolving lazy references when using forward refs.
For example, this code should now work without any issues:
Contributed by Thiago Bellini Ribeiro via PR #2744
0.180.5 - 2023-06-02
This release fixes a bug in fragment codegen to pick up type definitions from the proper place in the schema.
Contributed by Matt Gilson via PR #2805
0.180.4 - 2023-06-02
Custom codegen plugins will fail to write files if the plugin is trying to put the file anywhere other than the root output directory (since the child directories do not yet exist). This change will create the child directory if necessary before attempting to write the file.
Contributed by Matt Gilson via PR #2806
0.180.3 - 2023-06-02
This release updates the built-in GraphiQL to the current latest version 2.4.7 and improves styling for the GraphiQL Explorer Plugin.
Contributed by Kien Dang via PR #2804
0.180.2 - 2023-06-02
In this release codegen no longer chokes on queries that use a fragment.
There is one significant limitation at the present. When a fragment is included via the spread operator in an object, it must be the only field present. Attempts to include more fields will result in a ValueError
.
However, there are some real benefits. When a fragment is included in multiple places in the query, only a single class will be made to represent that fragment:
Might generate the following types
The previous behavior would generate duplicate classes for for the GetPointsCirclePoints
and GetPointsSquarePoints
even though they are really identical classes.
Contributed by Matt Gilson via PR #2802
0.180.1 - 2023-06-01
Make StrawberryAnnotation hashable, to make it compatible to newer versions of dacite.
Contributed by Jaime Coello de Portugal via PR #2790
0.180.0 - 2023-05-31
This release updates the Django Channels integration so that it uses the same base classes used by all other integrations.
New features:
The Django Channels integration supports two new features:
- Setting headers in a response
- File uploads via
multipart/form-data
POST requests
Breaking changes:
This release contains a breaking change for the Channels integration. The context
object is now a dict
and it contains different keys depending on the connection
protocol:
- HTTP:
request
andresponse
. Therequest
object contains the full request (including the body). Previously,request
was theGraphQLHTTPConsumer
instance of the current connection. The consumer is now available viarequest.consumer
. - WebSockets:
request
,ws
andresponse
.request
andws
are the sameGraphQLWSConsumer
instance of the current connection.
If you want to use a dataclass for the context object (like in previous releases),
you can still use them by overriding the get_context
methods. See the Channels
integration documentation for an example.
Contributed by Christian DrĂśge via PR #2775
0.179.0 - 2023-05-31
This PR allows passing metadata to Strawberry arguments.
Example:
Contributed by Jonathan Kim via PR #2755
0.178.3 - 2023-05-31
In this release codegen no longer chokes on queries that have a __typename
in them.
Python generated types will not have the __typename
included in the fields.
Contributed by Matt Gilson via PR #2797
0.178.2 - 2023-05-31
Prevent AssertionError when using strawberry codegen
on a query file that contains a mutation.
Contributed by Matt Gilson via PR #2795
0.178.1 - 2023-05-30
This release fixes a bug in experimental.pydantic whereby Optional
type annotations werenât exactly aligned between strawberry type and pydantic model.
Previously this would have caused the series field to be non-nullable in graphql.
Contributed by Nick Butlin via PR #2782
0.178.0 - 2023-05-22
This release introduces the new should_ignore
argument to the QueryDepthLimiter
extension that provides
a more general and more verbose way of specifying the rules by which a queryâs depth should be limited.
The should_ignore
argument should be a function that accepts a single argument of type IgnoreContext
.
The IgnoreContext
class has the following attributes:
field_name
of typestr
: the name of the field to be compared againstfield_args
of typestrawberry.extensions.query_depth_limiter.FieldArgumentsType
: the arguments of the field to be compared againstquery
of typegraphql.language.Node
: the query stringcontext
of typegraphql.validation.ValidationContext
: the context passed to the query and returnsTrue
if the field should be ignored andFalse
otherwise. This argument is injected, regardless of name, by theQueryDepthLimiter
class and should not be passed by the user.
Instead, the user should write business logic to determine whether a field should be ignored or not by
the attributes of the IgnoreContext
class.
For example, the following query:
can have its depth limited by the following should_ignore
:
so that it effectively becomes:
Contributed by Tommy Smith via PR #2505
0.177.3 - 2023-05-19
This release adds a method on the DatadogTracingExtension class called create_span
that can be overridden to create a custom span or add additional tags to the span.
Contributed by Ronald Williams via PR #2773
0.177.2 - 2023-05-18
This release fixes an issue with optional scalars using the or
notation with forward references on python 3.10.
The following code would previously raise TypeError
on python 3.10:
Contributed by Thiago Bellini Ribeiro via PR #2774
0.177.1 - 2023-05-09
This release adds support for using enum_value
with IntEnum
s, like this:
Contributed by Patrick Arminio via PR #2761
0.177.0 - 2023-05-07
This release adds a SentryTracingExtension that you can use to automatically add tracing information to your GraphQL queries.
Contributed by Patrick Arminio via PR #2495
0.176.4 - 2023-05-07
This release adds support for custom classes inside the OpenTelemetry integration. With this, we shouldnât see errors like this anymore:
Invalid type dict for attribute 'graphql.param.paginator' value. Expected one of ['bool', 'str', 'bytes', 'int', 'float'] or a sequence of those types.
Contributed by Budida Abhinav Ramana via PR #2753
0.176.3 - 2023-05-03
Add get_argument_definition
helper function on the Info object to get
a StrawberryArgument definition by argument name from inside a resolver or
Field Extension.
Example:
Contributed by Jonathan Kim via PR #2732
0.176.2 - 2023-05-02
This release adds more type hints to internal APIs and public APIs.
Contributed by Alex Auritt via PR #2568
0.176.1 - 2023-05-02
This release improves the graphql-transport-ws
implementation by starting the sub-protocol timeout only when the connection handshake is completed.
Contributed by KristjĂĄn Valur JĂłnsson via PR #2703
0.176.0 - 2023-05-01
This release parses the input arguments to a field earlier so that Field Extensions recieve instances of Input types rather than plain dictionaries.
Example:
Contributed by Jonathan Kim via PR #2731
0.175.1 - 2023-04-30
This release adds a missing parameter to get_context
when using subscriptions with ASGI.
Contributed by Patrick Arminio via PR #2739
0.175.0 - 2023-04-29
Do not display graphiql view in fastapi doc if graphiql parameter is deactivated
Contributed by yak-toto via PR #2736
0.174.0 - 2023-04-25
This PR adds a MaxTokensLimiter extension which limits the number of tokens in a GraphQL document.
Usage example:
Contributed by reka via PR #2729
0.173.1 - 2023-04-25
This release bumps the version of typing_extensions to >= 4.0.0
to fix the
error: "cannot import Self from typing_extensions"
.
Contributed by Tien Truong via PR #2704
0.173.0 - 2023-04-25
This releases adds an extension for PyInstrument. It allows to instrument your server and find slow code paths.
You can use it like this:
Contributed by Peyton Duncan via PR #2727
0.172.0 - 2023-04-24
This PR adds a MaxAliasesLimiter extension which limits the number of aliases in a GraphQL document.
Usage example:
Contributed by reka via PR #2726
0.171.3 - 2023-04-21
This release adds missing annotations in class methods, improving our type coverage.
Contributed by Kai Benevento via PR #2721
0.171.2 - 2023-04-21
graphql_transport_ws
: Cancelling a subscription no longer blocks the connection
while any subscription finalizers run.
Contributed by KristjĂĄn Valur JĂłnsson via PR #2718
0.171.1 - 2023-04-07
This release fix the return value of enums when using a custom name converter for them.
Contributed by Patrick Arminio via PR #2696
0.171.0 - 2023-04-06
This release adds support for Mypy 1.2.0
Contributed by Patrick Arminio via PR #2693
0.170.0 - 2023-04-06
This release add support for converting the enum value names
from NameConverter
. It looks like this:
Contributed by Patrick Arminio via PR #2690
0.169.0 - 2023-04-05
This release updates all* the HTTP integration to use the same base class, which makes it easier to maintain and extend them in future releases.
While this doesnât provide any new features (other than settings headers in Chalice and Sanic), it does make it easier to extend the HTTP integrations in the future. So, expect some new features in the next releases!
New features:
Now both Chalice and Sanic integrations support setting headers in the response. Bringing them to the same level as the other HTTP integrations.
Breaking changes:
Unfortunately, this release does contain some breaking changes, but they are minimal and should be quick to fix.
- Flask
get_root_value
andget_context
now receive the request - Sanic
get_root_value
now receives the request and it is async
* The only exception is the channels http integration, which will be updated in a future release.
Contributed by Patrick Arminio via PR #2681
0.168.2 - 2023-04-03
Fixes type hint for StrawberryTypeFromPydantic._pydantic_type to be a Type instead of an instance of the Pydantic model. As it is a private API, we still highly discourage using it, but itâs now typed correctly.
Contributed by James Chua via PR #2683
0.168.1 - 2023-03-26
This releases adds a new extra
group for Starlite, preventing it from being
installed by default.
Contributed by Patrick Arminio via PR #2664
0.168.0 - 2023-03-26
This release adds support for starlite.
Contributed by Matthieu MN via PR #2391
0.167.1 - 2023-03-26
This release fixes and issue where youâd get a warning
about using Apollo Federation directives even when using
strawberry.federation.Schema
.
Contributed by Patrick Arminio via PR #2661
0.167.0 - 2023-03-25
This releases adds more type annotations for public functions and methods.
No new changes have been added to the API.
Contributed by Jad Haddad via PR #2627
0.166.0 - 2023-03-25
This release adds a warning when using @strawberry.federation.type
but not using strawberry.federation.Schema
Contributed by Rubens O LeĂŁo via PR #2572
0.165.1 - 2023-03-21
Updates the MaskErrors
extension to the new extension API, which was missed previously.
Contributed by Nikolai Maas via PR #2655
0.165.0 - 2023-03-18
Add full support for forward references, specially when using
from __future__ import annotations
.
Before the following would fail on python versions older than 3.10:
Also, this would fail in any python versions:
Now both of these cases are supported. Please open an issue if you find any edge cases that are still not supported.
Contributed by Thiago Bellini Ribeiro via PR #2592
0.164.1 - 2023-03-18
Fix interface duplication leading to schema compilation error in multiple inheritance scenarios (i.e. âDiamond Problemâ inheritance)
Thank you @mzhu22 for the thorough bug report!
Contributed by San Kilkis via PR #2647
0.164.0 - 2023-03-14
This release introduces a breaking change to make pydantic default behavior consistent with normal strawberry types. This changes the schema generated for pydantic types, that are required, and have default values. Previously pydantic type with a default, would get converted to a strawberry type that is not required. This is now fixed, and the schema will now correctly show the type as required.
The schema is now
Contributed by James Chua via PR #2623
0.163.2 - 2023-03-14
This release covers an edge case where the following would not give a nice error.
Fixes #2591
Contributed by × ×ר via PR #2593
0.163.1 - 2023-03-14
Provide close reason to ASGI websocket as specified by ASGI 2.3
Contributed by KristjĂĄn Valur JĂłnsson via PR #2639
0.163.0 - 2023-03-13
This release adds support for list arguments in operation directives.
The following is now supported:
Contributed by chenyijian via PR #2632
0.162.0 - 2023-03-10
Adds support for a custom field using the approach specified in issue #2168. Field Extensions may be used to change the way how fields work and what they return. Use cases might include pagination, permissions or other behavior modifications.
Contributed by Erik Wrede via PR #2567
0.161.1 - 2023-03-09
Ensure that no other messages follow a âcompleteâ or âerrorâ message for an operation in the graphql-transport-ws protocol.
Contributed by KristjĂĄn Valur JĂłnsson via PR #2600
0.161.0 - 2023-03-08
Calling ChannelsConsumer.channel_listen
multiple times will now pass
along the messages being listened for to multiple callers, rather than
only one of the callers, which was the old behaviour.
This resolves an issue where creating multiple GraphQL subscriptions using a single websocket connection could result in only one of those subscriptions (in a non-deterministic order) being triggered if they are listening for channel layer messages of the same type.
Contributed by James Thorniley via PR #2525
0.160.0 - 2023-03-08
Rename Extension
to SchemaExtension
to pave the way for FieldExtensions.
Importing Extension
from strawberry.extensions
will now raise a deprecation
warning.
Before:
After:
Contributed by Jonathan Kim via PR #2574
0.159.1 - 2023-03-07
This releases adds support for Mypy 1.1.1
Contributed by Patrick Arminio via PR #2616
0.159.0 - 2023-02-22
This release changes how extension hooks are defined. The new style hooks are more flexible and allow to run code before and after the execution.
The old style hooks are still supported but will be removed in future releases.
Before:
After
Contributed by × ×ר via PR #2428
0.158.2 - 2023-02-21
Add a type annotation to strawberry.fastapi.BaseContext
âs __init__
method so that
it can be used without mypy
raising an error.
Contributed by Martin Winkel via PR #2581
0.158.1 - 2023-02-19
Version 1.5.10 of GraphiQL disabled introspection for deprecated arguments because it wasnât supported by all GraphQL server versions. This PR enables it so that deprecated arguments show up again in GraphiQL.
Contributed by Jonathan Kim via PR #2575
0.158.0 - 2023-02-18
Throw proper exceptions when Unions are created with invalid types
Previously, using Lazy types inside of Unions would raise unexpected, unhelpful errors.
Contributed by ignormies via PR #2540
0.157.0 - 2023-02-18
This releases adds support for Apollo Federation 2.1, 2.2 and 2.3.
This includes support for @composeDirective
and @interfaceObject
,
we expose directives for both, but we also have shortcuts, for example
to use @composeDirective
with a custom schema directive, you can do
the following:
The compose=True
makes so that this directive is included in the supergraph
schema.
For @interfaceObject
we introduced a new @strawberry.federation.interface_object
decorator. This works like @strawberry.federation.type
, but it adds, the appropriate
directive, for example:
generates the following type:
Contributed by Patrick Arminio via PR #2549
0.156.4 - 2023-02-13
This release fixes a regression introduce in version 0.156.2 that would make Mypy throw an error in the following code:
Contributed by Patrick Arminio via PR #2535
0.156.3 - 2023-02-10
This release adds support for Mypy 1.0
Contributed by Patrick Arminio via PR #2516
0.156.2 - 2023-02-09
This release updates the typing for the resolver argument in
strawberry.field
i to support async resolvers.
This means that now you wonât get any type
error from Pyright when using async resolver, like the following example:
Contributed by Patrick Arminio via PR #2528
0.156.1 - 2023-02-09
Add GraphQLWebsocketCommunicator
for testing websockets on channels.
i.e:
Contributed by × ×ר via PR #2458
0.156.0 - 2023-02-08
This release adds support for specialized generic types.
Before, the following code would give an error, saying that T
was not
provided to the generic type:
Also, because the type is already specialized, Int
wonât get inserted to its name,
meaning it will be exported to the schema with a type name of IntFoo
and not
IntIntFoo
.
For example, this query:
Will generate a schema like this:
Contributed by Thiago Bellini Ribeiro via PR #2517
0.155.4 - 2023-02-06
Fix file not found error when exporting schema with lazy types from CLI #2469
Contributed by San Kilkis via PR #2512
0.155.3 - 2023-02-01
Fix missing custom resolve_reference
for using pydantic with federation
i.e:
Contributed by filwaline via PR #2503
0.155.2 - 2023-01-25
This release fixes a bug in subscriptions using the graphql-transport-ws protocol where the conversion of the NextMessage object to a dictionary took an unnecessary amount of time leading to an increase in CPU usage.
Contributed by rjwills28 via PR #2481
0.155.1 - 2023-01-24
A link to the changelog has been added to the package metadata, so it shows up on PyPI.
Contributed by Tom Most via PR #2490
0.155.0 - 2023-01-23
This release adds a new utility function to convert a Strawberry object to a dictionary.
You can use strawberry.asdict(...)
function to convert a Strawberry object to
a dictionary:
Note: This function uses the
dataclasses.asdict
function under the hood, so you can safely replacedataclasses.asdict
withstrawberry.asdict
in your code. This will make it easier to update your code to newer versions of Strawberry if we decide to change the implementation.
Contributed by Haze Lee via PR #2417
0.154.1 - 2023-01-17
Fix DuplicatedTypeName
exception being raised on generics declared using
strawberry.lazy
. Previously the following would raise:
Contributed by pre-commit-ci via PR #2462
0.154.0 - 2023-01-13
Support constrained float field types in Pydantic models.
i.e.
Contributed by Etienne Wodey via PR #2455
0.153.0 - 2023-01-13
This change allows clients to define connectionParams when making Subscription requests similar to the way Apollo-Server does it.
With Apollo-Client (React) as an example, define a Websocket Link:
and the JSON passed to connectionParams
here will appear within Strawberryâs context as the connection_params
attribute when accessing info.context
within a Subscription resolver.
Contributed by Tommy Smith via PR #2380
0.152.0 - 2023-01-10
This release adds support for updating (or adding) the query document inside an
extensionâs on_request_start
method.
This can be useful for implementing persisted queries. The old behavior of returning a 400 error if no query is present in the request is still supported.
Example usage:
Contributed by James Thorniley via PR #2431
0.151.3 - 2023-01-09
This release adds support for FastAPI 0.89.0
Contributed by Patrick Arminio via PR #2440
0.151.2 - 2022-12-23
This release fixes @strawberry.experimental.pydantic.type
and adds support for the metadata attribute on fields.
Example:
Contributed by Huy Z via PR #2415
0.151.1 - 2022-12-20
This release fixes an issue that prevented using generic that had a field of type enum. The following works now:
Contributed by Patrick Arminio via PR #2411
0.151.0 - 2022-12-13
This PR adds a new graphql_type
parameter to strawberry.field that allows you
to explicitly set the field type. This parameter will take preference over the
resolver return type and the class field type.
For example:
Contributed by Jonathan Kim via PR #2313
0.150.1 - 2022-12-13
Fixed field resolvers with nested generic return types
(e.g. list
, Optional
, Union
etc) raising TypeErrors.
This means resolver factory methods can now be correctly type hinted.
For example the below would previously error unless you ommited all the
type hints on resolver_factory
and actual_resolver
functions.
Contributed by Tim OSullivan via PR #1900
0.150.0 - 2022-12-13
This release implements the ability to use custom caching for dataloaders.
It also allows to provide a cache_key_fn
to the dataloader. This function
is used to generate the cache key for the dataloader. This is useful when
you want to use a custom hashing function for the cache key.
Contributed by Aman Choudhary via PR #2394
0.149.2 - 2022-12-09
This release fixes support for generics in arguments, see the following example:
Contributed by A. Coady via PR #2316
0.149.1 - 2022-12-09
This release improves the performance of rich exceptions on custom scalars
by changing how frames are fetched from the call stack.
Before the change, custom scalars were using a CPU intensive call to the
inspect
module to fetch frame info which could lead to serious CPU spikes.
Contributed by Paulo Amaral via PR #2390
0.149.0 - 2022-12-09
This release does some internal refactoring of the HTTP views, hopefully it doesnât affect anyone. It mostly changes the status codes returned in case of errors (e.g. bad JSON, missing queries and so on).
It also improves the testing, and adds an entirely new test suite for the HTTP views, this means in future weâll be able to keep all the HTTP views in sync feature-wise.
Contributed by Patrick Arminio via PR #1840
0.148.0 - 2022-12-08
This release changes the get_context
, get_root_value
and process_result
methods of the Flask async view to be async functions. This allows you to use
async code in these methods.
Contributed by Patrick Arminio via PR #2388
0.147.0 - 2022-12-08
This release introduces a encode_json
method on all the HTTP integrations.
This method allows to customize the encoding of the JSON response. By default we
use json.dumps
but you can override this method to use a different encoder.
It also deprecates json_encoder
and json_dumps_params
in the Django and
Sanic views, encode_json
should be used instead.
Contributed by Patrick Arminio via PR #2272
0.146.0 - 2022-12-05
This release updates the Sanic integration and includes some breaking changes.
You might need to update your code if you are customizing get_context
or
process_result
get_context
get_context
now receives the request as the first argument and the response as
the second argument.
process_result
process_result
is now async and receives the request and the GraphQL execution
result.
This change is needed to align all the HTTP integrations and reduce the amount of code needed to maintain. It also makes the errors consistent with other integrations.
It also brings a new feature and it allows to customize the HTTP status code
by using info.context["response"].status_code = YOUR_CODE
.
It also removes the upper bound on the Sanic version, so you can use the latest version of Sanic with Strawberry.
Contributed by Patrick Arminio via PR #2273
0.145.0 - 2022-12-04
This release introduced improved errors! Now, when you have a syntax error in your code, youâll get a nice error message with a line number and a pointer to the exact location of the error. â¨
This is a huge improvement over the previous behavior, which was providing a stack trace with no clear indication of where the error was. đ
You can enable rich errors by installing Strawberry with the cli
extra:
Contributed by Patrick Arminio via PR #2027
0.144.3 - 2022-12-04
This release fixes an issue with type duplication of generics.
You can now use a lazy type with a generic even if the original type was already used with that generic in the schema.
Example:
Contributed by Dmitry Semenov via PR #2381
0.144.2 - 2022-12-02
Generic types are now allowed in the schemaâs extra types.
Contributed by A. Coady via PR #2294
0.144.1 - 2022-12-02
This release fixes a regression that prevented Generic types from being used multiple types.
Contributed by Patrick Arminio via PR #2378
0.144.0 - 2022-12-02
Added extra validation that types used in a schema are unique.
Strawberry starts to throw an exception DuplicatedTypeName
when two types defined in a schema have the same name.
Contributed by Bartosz Polnik via PR #2356
0.143.0 - 2022-12-01
Added an error to be used when overriding GraphQLError in custom extensions and added a guide on how to use it. Exposing GraphQLError from the strawberry namespace brings a better experience and will be useful in the future (when we move to something else).
Contributed by Niten Nashiki via PR #2360
0.142.3 - 2022-11-29
This release updates GraphiQL to 2.2.0 and fixes an issue with the websocket URL being incorrectly set when navigating to GraphiQL with an URL with a hash.
Contributed by Shen Li via PR #2363
0.142.2 - 2022-11-15
This release changes the dataloader batch resolution to avoid resolving
futures that were canceled, and also from reusing them from the cache.
Trying to resolve a future that was canceled would raise asyncio.InvalidStateError
Contributed by Thiago Bellini Ribeiro via PR #2339
0.142.1 - 2022-11-11
This release fixes a bug where using a custom scalar in a union would result
in an unclear exception. Instead, when using a custom scalar in a union,
the InvalidUnionType
exception is raised with a clear message that you
cannot use that type in a union.
Contributed by Jonathan Kim via PR #2336
0.142.0 - 2022-11-11
This release adds support for typing.Self
and typing_extensions.Self
for types and interfaces.
Contributed by A. Coady via PR #2295
0.141.0 - 2022-11-10
This release adds support for an implicit resolve_reference
method
on Federation type. This method will automatically create a Strawberry
instance for a federation type based on the input data received, for
example, the following:
doesnât need the resolve_reference method anymore.
Contributed by Patrick Arminio via PR #2332
0.140.3 - 2022-11-09
[Internal] Update StrawberryField so that type_annotation
is always an instance of StrawberryAnnotation.
Contributed by Jonathan Kim via PR #2319
0.140.2 - 2022-11-08
This release fixes an issue that prevented using enums that were using strawberry.enum_value, like the following example:
Contributed by Patrick Arminio via PR #2306
0.140.1 - 2022-11-08
This release adds logging back for parsing and validation errors that was accidentally removed in v0.135.0.
Contributed by Jonathan Kim via PR #2323
0.140.0 - 2022-11-07
This release allows to disable operation logging when running the debug server.
Contributed by Patrick Arminio via PR #2310
0.139.0 - 2022-11-04
This release changes the type resolution priority to prefer the field annotation over the resolver return type.
Contributed by Jonathan Kim via PR #2312
0.138.2 - 2022-11-04
Fix Pydantic integration for Python 3.10.0 (which was missing the kw_only
parameter for dataclasses.make_dataclass()
).
Contributed by Jonathan Kim via PR #2309
0.138.1 - 2022-10-31
This release changes an internal implementation for FastAPIâs GraphQL router. This should reduce overhead when using the context, and it shouldnât affect your code.
Contributed by KristjĂĄn Valur JĂłnsson via PR #2278
0.138.0 - 2022-10-31
This release adds support for generic in arguments, see the following example:
Contributed by A. Coady via PR #2293
0.137.1 - 2022-10-24
Allowed CustomScalar | None
syntax for python >= 3.10.
Contributed by Guillaume Andreu Sabater via PR #2279
0.137.0 - 2022-10-21
This release fixes errors when using Union-of-lazy-types
Contributed by Paulo Costa via PR #2271
0.136.0 - 2022-10-21
This release refactors the chalice integration in order to keep it consistent with the other integrations.
Deprecation:
Passing render_graphiql
is now deprecated, please use graphiql
instead.
New features:
- You can now return a custom status by using
info.context["response"].status_code = 418
- You can enabled/disable queries via get using
allow_queries_via_get
(defaults toTrue
)
Changes:
Trying to access /graphql via a browser and with graphiql
set to False
will return a 404.
Contributed by Patrick Arminio via PR #2266
0.135.0 - 2022-10-21
This release adds a new MaskErrors
extension that can be used to hide error
messages from the client to prevent exposing sensitive details. By default it
masks all errors raised in any field resolver.
Contributed by Jonathan Kim via PR #2248
0.134.5 - 2022-10-20
This release improves the error message that you get when trying
to use an enum that hasnât been decorated with @strawberry.enum
inside a typeâs field.
Contributed by Rise Riyo via PR #2267
0.134.4 - 2022-10-20
This release adds support for printing schema directives on an input type object, for example the following schema:
prints the following:
Contributed by Etty via PR #2233
0.134.3 - 2022-10-16
This release fixes an issue that prevented using strawberry.lazy with relative paths.
The following should work now:
Contributed by Paulo Costa via PR #2244
0.134.2 - 2022-10-16
This release adds pyupgrade to our CI and includes some minor changes to keep our codebase modern.
Contributed by Liel Fridman via PR #2255
0.134.1 - 2022-10-14
This release fixes an issue that prevented using lazy types inside generic types.
The following is now allowed:
Contributed by Patrick Arminio via PR #2254
0.134.0 - 2022-10-14
These release allow you to define a different url
in the GraphQLTestClient
, the default is â/graphql/â.
Hereâs an example with Starlette client:
Contributed by Etty via PR #2238
0.133.7 - 2022-10-14
This release fixes a type issue when passing scalar_overrides
to strawberry.Schema
Contributed by Patrick Arminio via PR #2251
0.133.6 - 2022-10-13
Fix support for arguments where arg.type=LazyType["EnumType"]
Contributed by Paulo Costa via PR #2245
0.133.5 - 2022-10-03
Updated unset
import, from strawberry.arguments
to strawberry.unset
in codebase.
This will prevent strawberry from triggering its own warning on deprecated imports.
Contributed by dependabot via PR #2219
0.133.4 - 2022-10-03
This release fixes the type of strawberry.federation.field, this will prevent errors from mypy and pyright when doing the following:
Contributed by Patrick Arminio via PR #2222
0.133.3 - 2022-10-03
This release allows to create a federation schema without having to pass a
Query
type. This is useful when your schema only extends some types without
adding any additional root field.
Contributed by Patrick Arminio via PR #2220
0.133.2 - 2022-09-30
This release fixes an issue with strawberry.federation.field
that
prevented instantiating field when passing a resolver function.
Contributed by Patrick Arminio via PR #2218
0.133.1 - 2022-09-28
This release fixes an issue that prevented using strawberry.field
with
UNSET
as the default value.
Contributed by Patrick Arminio via PR #2128
0.133.0 - 2022-09-27
Reduce the number of required dependencies, by marking Pygments and python-multipart as optional. These dependencies are still necessary for some functionality, and so users of that functionality need to ensure theyâre installed, either explicitly or via an extra:
- Pygments is still necessary when using Strawberry in debug mode, and is included in the
strawberry[debug-server]
extra. - python-multipart is still necessary when using
strawberry.file_uploads.Upload
with FastAPI or Starlette, and is included in thestrawberry[fastapi]
andstrawberry[asgi]
extras, respectively.
There is now also the strawberry[cli]
extra to support commands like strawberry codegen
and strawberry export-schema
.
Contributed by Huon Wilson via PR #2205
0.132.1 - 2022-09-23
Improve resolving performance by avoiding extra calls for basic fields.
This change improves performance of resolving a query by skipping Info
creation and permission checking for fields that donât have a resolver
or permission classes. In local benchmarks it improves performance of large
results by ~14%.
Contributed by Jonathan Kim via PR #2194
0.132.0 - 2022-09-23
Support storing metadata in strawberry fields.
Contributed by Paulo Costa via PR #2190
0.131.5 - 2022-09-22
Fixes false positives with the mypy plugin.
Happened when to_pydantic
was called on a type that was converted
pydantic with all_fields=True.
Also fixes the type signature when to_pydantic
is defined by the user.
Contributed by James Chua via PR #2017
0.131.4 - 2022-09-22
This release updates the mypy plugin and the typing for Pyright to treat all strawberry fields as keyword-only arguments. This reflects a previous change to the Strawberry API.
Contributed by Paulo Costa via PR #2191
0.131.3 - 2022-09-22
Bug fix: Do not force kw-only=False in fields specified with strawberry.field()
Contributed by Paulo Costa via PR #2189
0.131.2 - 2022-09-22
This release fixes a small issue that might happen when uploading files and not passing the operations object.
Contributed by Patrick Arminio via PR #2192
0.131.1 - 2022-09-16
Fix warnings during unit tests for Sanicâs upload.
Otherwise running unit tests results in a bunch of warning like this:
Contributed by Paulo Costa via PR #2178
0.131.0 - 2022-09-15
This release improves the dataloader class with new features:
- Explicitly cache invalidation, prevents old data from being fetched after a mutation
- Importing data into the cache, prevents unnecessary load calls if the data has already been fetched by other means.
Contributed by Paulo Costa via PR #2149
0.130.4 - 2022-09-14
This release adds improved support for Pyright and Pylance, VSCode default language server for Python.
Using strawberry.type
, strawberry.field
, strawberry.input
and
strawberry.enum
will now be correctly recognized by Pyright and Pylance and
wonât show errors.
Contributed by Patrick Arminio via PR #2172
0.130.3 - 2022-09-12
Fix invalid deprecation warning issued on arguments annotated
by a subclassed strawberry.types.Info
.
Thanks to @ThirVondukr for the bug report!
Example:
Contributed by San Kilkis via PR #2137
0.130.2 - 2022-09-12
This release fixes the conversion of generic aliases when using pydantic.
Contributed by Silas Sewell via PR #2152
0.130.1 - 2022-09-12
Fix version parsing issue related to dev builds of Mypy in strawberry.ext.mypy_plugin
Contributed by San Kilkis via PR #2157
0.130.0 - 2022-09-12
Convert Tuple and Sequence types to GraphQL list types.
Example:
Contributed by Jonathan Kim via PR #2164
0.129.0 - 2022-09-11
This release adds strawberry.lazy
which allows you to define the type of the
field and its path. This is useful when you want to define a field with a type
that has a circular dependency.
For example, letâs say we have a User
type that has a list of Post
and a
Post
type that has a User
:
Contributed by Patrick Arminio via PR #2158
0.128.0 - 2022-09-05
This release changes how dataclasses are created to make use of the new
kw_only
argument in Python 3.10 so that fields without a default value can now
follow a field with a default value. This feature is also backported to all other
supported Python versions.
More info: https://docs.python.org/3/library/dataclasses.html#dataclasses.dataclass
For example:
â ď¸ This is a breaking change! Whenever instantiating a Strawberry type make sure that you only pass values are keyword arguments:
Contributed by Jonathan Kim via PR #1187
0.127.4 - 2022-08-31
This release fixes a bug in the subscription clean up when subscribing using the graphql-transport-ws protocol, which could occasionally cause a âfinallyâ statement within the task to not get run, leading to leaked resources.
Contributed by rjwills28 via PR #2141
0.127.3 - 2022-08-30
This release fixes a couple of small styling issues with the GraphiQL explorer
Contributed by Patrick Arminio via PR #2143
0.127.2 - 2022-08-30
This release adds support for passing schema directives to
Schema(..., types=[])
. This can be useful if using a built-inschema directive
thatâs not supported by a gateway.
For example the following:
will print the following SDL:
Contributed by Patrick Arminio via PR #2140
0.127.1 - 2022-08-30
This release fixes an issue with the updated GraphiQL interface.
Contributed by Doctor via PR #2138
0.127.0 - 2022-08-29
This release updates the built-in GraphiQL version to version 2.0, which means you can now enjoy all the new features that come with the latest version!
Contributed by Matt Exact via PR #1889
0.126.2 - 2022-08-23
This release restricts the backports.cached_property
dependency to only be
installed when Python < 3.8. Since version 3.8 cached_property
is included
in the builtin functools
. The code is updated to use the builtin version
when Python >= 3.8.
Contributed by ljnsn via PR #2114
0.126.1 - 2022-08-22
Keep extra discovered types sorted so that each schema printing is always the same.
Contributed by Thiago Bellini Ribeiro via PR #2115
0.126.0 - 2022-08-18
This release adds support for adding descriptions to enum values.
Example
This produces the following schema
Contributed by Felipe Gonzalez via PR #2106
0.125.1 - 2022-08-16
This release hides resolvable: True
in @keys directives
when using Apollo Federation 1, to preserve compatibility
with older Gateways.
Contributed by Patrick Arminio via PR #2099
0.125.0 - 2022-08-12
This release adds an integration with Django Channels. The integration will allow you to use GraphQL subscriptions via Django Channels.
Contributed by Dan Sloan via PR #1407
0.124.0 - 2022-08-08
This release adds full support for Apollo Federation 2.0. To opt-in you need to
pass enable_federation_2=True
to strawberry.federation.Schema
, like in the
following example:
This release also improves type checker support for the federation.
Contributed by Patrick Arminio via PR #2047
0.123.3 - 2022-08-02
This release fixes a regression introduced in version 0.118.2 which was preventing using circular dependencies in Strawberry django and Strawberry django plus.
Contributed by Thiago Bellini Ribeiro via PR #2062
0.123.2 - 2022-08-01
This release adds support for priting custom enums used only on schema directives, for example the following schema:
prints the following:
while previously it would omit the definition of the enum.
Contributed by Patrick Arminio via PR #2059
0.123.1 - 2022-08-01
This release adds support for priting custom scalar used only on schema directives, for example the following schema:
prints the following:
while previously it would omit the definition of the scalar.
Contributed by Patrick Arminio via PR #2058
0.123.0 - 2022-08-01
This PR adds support for adding schema directives to the schema of your GraphQL API. For printing the following schema:
will print the following:
Contributed by Patrick Arminio via PR #2054
0.122.1 - 2022-07-31
This release fixes that the AIOHTTP integration ignored the operationName
of query
operations. This behaviour is a regression introduced in version 0.107.0.
Contributed by Jonathan Ehwald via PR #2055
0.122.0 - 2022-07-29
This release adds support for printing default values for scalars like JSON.
For example the following:
will print the following schema:
Contributed by Patrick Arminio via PR #2048
0.121.1 - 2022-07-27
This release adds a backward compatibility layer with libraries
that specify a custom get_result
.
Contributed by Patrick Arminio via PR #2038
0.121.0 - 2022-07-23
This release adds support for overriding the default resolver for fields.
Currently the default resolver is getattr
, but now you can change it to any
function you like, for example you can allow returning dictionaries:
Contributed by Patrick Arminio via PR #2037
0.120.0 - 2022-07-23
This release add a new DatadogTracingExtension
that can be used to instrument
your application with Datadog.
Contributed by Patrick Arminio via PR #2001
0.119.2 - 2022-07-23
Fixed edge case where Union
types raised an UnallowedReturnTypeForUnion
error when returning the correct type from the resolver. This also improves
performance of StrawberryUnionâs _resolve_union_type
from O(n)
to O(1)
in
the majority of cases where n
is the number of types in the schema.
For
example the below)
would previously raise the error when querying two
as StrawberryUnion
would
incorrectly determine that the resolver returns Container[TypeOne]
.
Contributed by Tim OSullivan via PR #2029
0.119.1 - 2022-07-18
An explanatory custom exception is raised when union of GraphQL input types is attempted.
Contributed by Dhanshree Arora via PR #2019
0.119.0 - 2022-07-14
This release changes when we add the custom directives extension, previously
the extension was always enabled, now it is only enabled if you pass custom
directives to strawberry.Schema
.
Contributed by bomtall via PR #2020
0.118.2 - 2022-07-14
This release adds an initial fix to make strawberry.auto
work when using
from __future__ import annotations
.
Contributed by Patrick Arminio via PR #1994
0.118.1 - 2022-07-14
Fixes issue where users without pydantic were not able to use the mypy plugin.
Contributed by James Chua via PR #2016
0.118.0 - 2022-07-13
You can now pass keyword arguments to to_pydantic
Also if you forget to pass password, mypy will complain
Contributed by James Chua via PR #2012
0.117.1 - 2022-07-07
Allow to add alias to fields generated from pydantic with strawberry.field(name="ageAlias")
.
Contributed by Alex via PR #1986
0.117.0 - 2022-07-06
This release fixes an issue that required installing opentelemetry when trying to use the ApolloTracing extension
Contributed by Patrick Arminio via PR #1977
0.116.4 - 2022-07-04
Fix regression caused by the new resolver argument handling mechanism introduced in v0.115.0. This release restores the ability to use unhashable default values in resolvers such as dict and list. See example below:
Thanks to @coady for the regression report!
Contributed by San Kilkis via PR #1985
0.116.3 - 2022-07-04
This release fixes the following error when trying to use Strawberry with Apollo Federation:
Contributed by Patrick Arminio via PR #1988
0.116.2 - 2022-07-03
Reimplement StrawberryResolver.annotations
property after removal in v0.115.
Library authors who previously relied on the public annotations
property
can continue to do so after this fix.
Contributed by San Kilkis via PR #1990
0.116.1 - 2022-07-03
This release fixes a breaking internal error in mypy plugin for the following case.
- using positional arguments to pass a resolver for
strawberry.field()
orstrawberry.mutation()
now mypy returns an error with "field()" or "mutation()" only takes keyword arguments
message
rather than an internal error.
Contributed by cake-monotone via PR #1987
0.116.0 - 2022-07-03
This release adds a link from generated GraphQLCore types to the Strawberry type that generated them.
From a GraphQLCore type you can now access the Strawberry type by doing:
Contributed by Paulo Costa via PR #1766
0.115.0 - 2022-07-01
This release changes how we declare the info
argument in resolvers and the
value
argument in directives.
Previously weâd use the name of the argument to determine its value. Now we use the type annotation of the argument to determine its value.
Hereâs an example of how the old syntax works:
and hereâs an example of how the new syntax works:
This means that you can now use a different name for the info
argument in your
resolver and the value
argument in your directive.
Hereâs an example that uses a custom name for both the value and the info parameter in directives:
Note: the old way of passing arguments by name is deprecated and will be removed in future releases of Strawberry.
Contributed by San Kilkis via PR #1713
0.114.7 - 2022-07-01
Allow use of implicit Any
in strawberry.Private
annotated Generic types.
For example the following is now supported:
See Issue #1938 for details.
Contributed by San Kilkis via PR #1939
0.114.6 - 2022-06-30
The federation decorator now allows for a list of additional arbitrary schema directives extending the key/shareable directives used for federation.
Example Python:
Resulting GQL Schema:
Contributed by Jeffrey DeFond via PR #1945
0.114.5 - 2022-06-23
This release adds support in Mypy for using strawberry.mutation while passing a resolver, the following now doesnât make Mypy return an error:
Contributed by Etty via PR #1966
0.114.4 - 2022-06-23
This release fixes the type annotation of Response.errors
used in the GraphQLTestClient
to be a List
of GraphQLFormattedError
.
Contributed by Etty via PR #1961
0.114.3 - 2022-06-21
This release fixes the type annotation of Response.errors
used in the GraphQLTestClient
to be a List
of GraphQLError
.
Contributed by Etty via PR #1959
0.114.2 - 2022-06-15
This release fixes an issue in the GraphQLTestClient
when using both variables and files together.
Contributed by Etty via PR #1576
0.114.1 - 2022-06-09
Fix crash in Djangoâs HttpResponse.__repr__
by handling status_code=None
in TemporalHttpResponse.__repr__
.
Contributed by Daniel Hahler via PR #1950
0.114.0 - 2022-05-27
Improve schema directives typing and printing after latest refactor.
- Support for printing schema directives for non-scalars (e.g. types) and null values.
- Also print the schema directive itself and any extra types defined in it
- Fix typing for apis expecting directives (e.g.
strawberry.field
,strawberry.type
, etc) to expect an object instead of aStrawberrySchemaDirective
, which is now an internal type.
Contributed by Thiago Bellini Ribeiro via PR #1723
0.113.0 - 2022-05-19
This release adds support for Starlette 0.18 to 0.20
It also removes upper bound dependencies limit for starlette, allowing you to install the latest version without having to wait for a new release of Strawberry
Contributed by Timothy Pansino via PR #1594
0.112.0 - 2022-05-15
This release adds a new flask view to allow for aysnc dispatching of requests.
This is especially useful when using dataloaders with flask.
Contributed by Scott Weitzner via PR #1907
0.111.2 - 2022-05-09
This release fixes resolvers using functions with generic type variables raising a MissingTypesForGenericError
error.
For example a resolver factory like the below can now be used:
Contributed by Tim OSullivan via PR #1891
0.111.1 - 2022-05-03
Rename internal variable custom_getter
in FastAPI router implementation.
Contributed by Gary Donovan via PR #1875
0.111.0 - 2022-05-02
This release adds support for Apollo Federation 2 directives:
- @shareable
- @tag
- @override
- @inaccessible
This release does not add support for the @link directive.
This release updates the @key directive to align with Apollo Federation 2 updates.
See the below code snippet and/or the newly-added test cases for examples on how to use the new directives. The below snippet demonstrates the @override directive.
should return:
Contributed by Matt Skillman via PR #1874
0.110.0 - 2022-05-02
This release adds support for passing a custom name to schema directives fields,
by using strawberry.directive_field
.
should return:
Contributed by Patrick Arminio via PR #1871
0.109.1 - 2022-04-28
This release adds support for Mypy 0.950
Contributed by dependabot via PR #1855
0.109.0 - 2022-04-23
Changed the location of UNSET
from arguments.py
to unset.py
. UNSET
can now also be imported directly from strawberry
. Deprecated the is_unset
method in favor of the builtin is
operator:
Further more a new subsection to the docs was added explaining this.
Contributed by Dominique Garmier via PR #1813
0.108.3 - 2022-04-22
Fixes a bug when converting pydantic models with NewTypes in a List. This no longers causes an exception.
Contributed by James Chua via PR #1770
0.108.2 - 2022-04-21
Fixes mypy type inference when using @strawberry.experimental.pydantic.input and @strawberry.experimental.pydantic.interface decorators
Contributed by James Chua via PR #1832
0.108.1 - 2022-04-20
Refactoring: Move enum deserialization logic from convert_arguments to CustomGraphQLEnumType
Contributed by Paulo Costa via PR #1765
0.108.0 - 2022-04-19
Added support for deprecating Enum values with deprecation_reason
while using strawberry.enum_value
instead of string definition.
Contributed by Mateusz Sobas via PR #1720
0.107.1 - 2022-04-18
This release fixes an issue in the previous release where requests using query params did not support passing variable values. Variables passed by query params are now parsed from a string to a dictionary.
Contributed by Matt Exact via PR #1820
0.107.0 - 2022-04-18
This release adds support in all our integration for queries via GET requests.
This behavior is enabled by default, but you can disable it by passing
allow_queries_via_get=False
to the constructor of the integration of your
choice.
For security reason only queries are allowed via GET
requests.
Contributed by Matt Exact via PR #1686
0.106.3 - 2022-04-15
Correctly parse Decimal scalar types to avoid floating point errors
Contributed by Marco Acierno via PR #1811
0.106.2 - 2022-04-14
Allow all data types in Schema(types=[...])
Contributed by Paulo Costa via PR #1714
0.106.1 - 2022-04-14
This release fixes a number of problems with single-result-operations over
graphql-transport-ws
protocol
-
operation IDs now share the same namespace as streaming operations meaning that they cannot be reused while the others are in operation
-
single-result-operations now run as tasks meaning that messages related to them can be overlapped with other messages on the websocket.
-
single-result-operations can be cancelled with the
complete
message. -
IDs for single result and streaming result operations are now released once the operation is done, allowing them to be re-used later, as well as freeing up resources related to previous requests.
Contributed by KristjĂĄn Valur JĂłnsson via PR #1792
0.106.0 - 2022-04-14
This release adds an implementation of the GraphQLTestClient
for the aiohttp
integration (in addition to the existing asgi
and Django
support). It hides the HTTP requestâs details and verifies that there are no errors in the response (this behavior can be disabled by passing asserts_errors=False
). This makes it easier to test queries and makes your tests cleaner.
If you are using pytest
you can add a fixture in conftest.py
And use it everywhere in your tests
Contributed by Etty via PR #1604
0.105.1 - 2022-04-12
This release fixes a bug in the codegen that marked optional unions as non optional.
Contributed by Patrick Arminio via PR #1806
0.105.0 - 2022-04-05
This release adds support for passing json_encoder
and json_dumps_params
to Sanicâs view.
Contributed by Patrick Arminio via PR #1797
0.104.4 - 2022-04-05
Allow use of AsyncIterator
and AsyncIterable
generics to annotate return
type of subscription resolvers.
Contributed by San Kilkis via PR #1771
0.104.3 - 2022-04-03
Exeptions from handler functions in graphql_transport_ws are no longer incorrectly caught and classified as message parsing errors.
Contributed by KristjĂĄn Valur JĂłnsson via PR #1761
0.104.2 - 2022-04-02
Drop support for Django < 3.2.
Contributed by Guillaume Andreu Sabater via PR #1787
0.104.1 - 2022-03-28
This release adds support for aliased fields when doing codegen.
Contributed by Patrick Arminio via PR #1772
0.104.0 - 2022-03-28
Add is_auto
utility for checking if a type is strawberry.auto
,
considering the possibility of it being a StrawberryAnnotation
or
even being used inside Annotated
.
Contributed by Thiago Bellini Ribeiro via PR #1721
0.103.9 - 2022-03-23
This release moves the console plugin for the codegen command to be last one, allowing to run code before writing files to disk.
Contributed by Patrick Arminio via PR #1760
0.103.8 - 2022-03-18
This release adds a python_type
to the codegen GraphQLEnum
class
to allow access to the original python enum when generating code
Contributed by Patrick Arminio via PR #1752
0.103.7 - 2022-03-18
Fix an issue where there was no clean way to mark a Pydantic field as deprecated, add permission classes, or add directives. Now you can use the short field syntax to do all three.
Contributed by Matt Allen via PR #1748
0.103.6 - 2022-03-18
This release adds a missing __init__.py
inside cli/commands
Contributed by Patrick Arminio via PR #1751
0.103.5 - 2022-03-18
This release fixes an issue that prevented using generic types with interfaces.
Contributed by Patrick Arminio via PR #1701
0.103.4 - 2022-03-18
This release fixes a couple of more issues with codegen:
- Adds support for boolean values in input fields
- Changes how we unwrap types in order to add full support for LazyTypes, Optionals and Lists
- Improve also how we generate types for unions, now we donât generate a Union type if the selection is for only one type
Contributed by Patrick Arminio via PR #1746
0.103.3 - 2022-03-17
The return type annotation for DataLoader.load
and load_many
no longer
includes any exceptions directly returned by the load_fn
. The ability to
handle errors by returning them as elements from load_fn
is now documented too.
Contributed by Huon Wilson via PR #1737
0.103.2 - 2022-03-17
This release add supports for LazyType
s in the codegen command
Contributed by Patrick Arminio via PR #1745
0.103.1 - 2022-03-15
This release adds support for MyPy 0.941 under Python 3.10
Contributed by dependabot via PR #1728
0.103.0 - 2022-03-14
This release adds an experimental codegen feature for queries. It allows to combine a graphql query and Strawberry schema to generate Python types or TypeScript types.
You can use the following command:
to generate python types that correspond to your GraphQL query.
Contributed by Patrick Arminio via PR #1655
0.102.3 - 2022-03-14
This release makes StrawberryOptional and StrawberryList hashable, allowing to use strawberry types with libraries like dacite and dataclasses_json.
Contributed by Patrick Arminio via PR #1726
0.102.2 - 2022-03-08
Add support for postponed evaluation of annotations
(PEP-563) to strawberry.Private
annotated fields.
Example
This release fixes Issue #1586 using schema-conversion time filtering of
strawberry.Private
fields for PEP-563. This means the following is now
supported:
Forward references are supported as well:
Contributed by San Kilkis via PR #1684
0.102.1 - 2022-03-07
This PR improves the support for scalars when using MyPy.
Contributed by Patrick Arminio via PR #1205
0.102.0 - 2022-03-07
Added the response object to get_context
on the flask
view. This means that in fields, something like this can be used;
0.101.0 - 2022-03-06
This release adds support for graphql-transport-ws
single result operations.
Single result operations allow clients to execute queries and mutations over an existing WebSocket connection.
Contributed by Jonathan Ehwald PR #1698
0.100.0 - 2022-03-05
Change strawberry.auto
to be a type instead of a sentinel.
This not only removes the dependency on sentinel from the project, but also fixes
some related issues, like the fact that only types can be used with Annotated
.
Also, custom scalars will now trick static type checkers into thinking they
returned their wrapped type. This should fix issues with pyright 1.1.224+ where
it doesnât allow non-type objects to be used as annotations for dataclasses and
dataclass-alike classes (which is strawberryâs case). The change to strawberry.auto
also fixes this issue for it.
Contributed by Thiago Bellini Ribeiro PR #1690
0.99.3 - 2022-03-05
This release adds support for flask 2.x and also relaxes the requirements for Django, allowing to install newer version of Django without having to wait for Strawberry to update its supported dependencies list.
Contributed by Guillaume Andreu Sabater PR #1687
0.99.2 - 2022-03-04
This fixes the schema printer to add support for schema directives on input types.
Contributed by Patrick Arminio PR #1697
0.99.1 - 2022-03-02
This release fixed a false positive deprecation warning related to our AIOHTTP class based view.
Contributed by Jonathan Ehwald PR #1691
0.99.0 - 2022-02-28
This release adds the following scalar types:
JSON
Base16
Base32
Base64
they can be used like so:
Contributed by Paulo Costa PR #1647
0.98.2 - 2022-02-24
Adds support for converting pydantic conlist. Note that constraint is not enforced in the graphql type. Thus, we recommend always working on the pydantic type such that the validation is enforced.
The converted graphql type is
Contributed by James Chua PR #1656
0.98.1 - 2022-02-24
This release wasnât published on PyPI
0.98.0 - 2022-02-23
This release updates graphql-core
to 3.2.0
Make sure you take a look at graphql-core
âs release notes
for any potential breaking change that might affect you if youâre importing things
from the graphql
package directly.
Contributed by Patrick Arminio PR #1601
0.97.0 - 2022-02-17
Support âvoidâ functions
It is now possible to have a resolver that returns âNoneâ. Strawberry will automatically assign the new Void
scalar in the schema
and will always send null
in the response
Exampe
results in this schema:
Contributed by Paulo Costa PR #1648
0.96.0 - 2022-02-07
Add better support for custom Pydantic conversion logic and standardize the
behavior when not using strawberry.auto
as the type.
See https://strawberry.rocks/docs/integrations/pydantic#custom-conversion-logic for details and examples.
Note that this release fixes a bug related to Pydantic aliases in schema
generation. If you have a field with the same name as an aliased Pydantic field
but with a different type than strawberry.auto
, the generated field will now
use the alias name. This may cause schema changes on upgrade in these cases, so
care should be taken. The alias behavior can be disabled by setting the
use_pydantic_alias
option of the decorator to false.
Contributed by Matt Allen PR #1629
0.95.5 - 2022-02-07
Adds support for use_pydantic_alias
parameter in pydantic model conversion.
Decides if the all the GraphQL field names for the generated type should use the alias name or not.
If use_pydantic_alias
is False
, the GraphQL type User will use id
for the name of the id
field coming from the Pydantic model.
With use_pydantic_alias
set to True
(the default behaviour) the GraphQL type user will use myAliasName
for the id
field coming from the Pydantic models (since the field has a alias
specified`)
use_pydantic_alias
is set to True
for backwards compatibility.
Contributed by James Chua PR #1546
0.95.4 - 2022-02-06
This release adds compatibility with uvicorn 0.17
Contributed by dependabot PR #1627
0.95.3 - 2022-02-03
This release fixes an issue with FastAPI context dependency injection that causes class-based custom contexts to no longer be permitted.
Contributed by Tommy Smith PR #1564
0.95.2 - 2022-02-02
This release fixes an issue with the name generation for nested generics, the following:
now yields the correct schema:
Contributed by Patrick Arminio PR #1621
0.95.1 - 2022-01-26
Fix bug #1504 in the Pydantic integration, where it was impossible to define both an input and output type based on the same Pydantic base class.
Contributed by Matt Allen PR #1592
0.95.0 - 2022-01-22
Adds to_pydantic
and from_pydantic
type hints for IDE support.
Adds mypy extension support as well.
Mypy will infer the type as âUserPydanticâ. Previously it would be âAnyâ
Contributed by James Chua PR #1544
0.94.0 - 2022-01-18
This release replaces cached_property
with backports.cached_property
to improve
the typing of the library.
Contributed by Rishi Kumar Ray PR #1582
0.93.23 - 2022-01-11
Improve typing of @strawberry.enum()
by:
- Using a
TypeVar
bound onEnumMeta
instead ofEnumMeta
, which allows type-checkers (like pyright) to detect the fields of the enum being decorated. For example, for the following enum:
Prior to this change, pyright would complain if you tried to access
IceCreamFlavour.VANILLA
, since the type information of IceCreamFlavour
was
being erased by the EnumMeta
typing .
- Overloading it so that type-checkers (like pyright) knows in what cases it
returns a decorator (when itâs called with keyword arguments, e.g.
@strawberry.enum(name="IceCreamFlavor")
), versus when it returns the original enum type (without keyword arguments.
Contributed by Tim Joseph Dumol PR #1568
0.93.22 - 2022-01-09
This release adds load_many
to DataLoader
.
Contributed by Silas Sewell PR #1528
0.93.21 - 2022-01-07
This release adds deprecation_reason
support to arguments and mutations.
Contributed by Silas Sewell PR #1527
0.93.20 - 2022-01-07
This release checks for AutoFieldsNotInBaseModelError when converting from pydantic models. It is raised when strawberry.auto is used, but the pydantic model does not have the particular field defined.
Previously no errors would be raised, and the password field would not appear on graphql schema. Such mistakes could be common during refactoring. Now, AutoFieldsNotInBaseModelError is raised.
Contributed by James Chua PR #1551
0.93.19 - 2022-01-06
Fixes TypeError when converting a pydantic BaseModel with NewType field
Contributed by James Chua PR #1547
0.93.18 - 2022-01-05
This release allows setting http headers and custom http status codes with FastAPI GraphQLRouter.
Contributed by David NÄmec PR #1537
0.93.17 - 2022-01-05
Fix compatibility with Sanic 21.12
Contributed by Artjoms Iskovs PR #1520
0.93.16 - 2022-01-04
Add support for piping StrawberryUnion
and None
when annotating types.
For example:
Contributed by Yossi Rozantsev PR #1540
0.93.15 - 2022-01-04
This release fixes the conversion of pydantic models with a default_factory field.
Contributed by James Chua PR #1538
0.93.14 - 2022-01-03
This release allows conversion of pydantic models with mutable default fields into strawberry types. Also fixes bug when converting a pydantic model field with default_factory. Previously it would raise an exception when fields with a default_factory were declared before fields without defaults.
Contributed by James Chua PR #1491
0.93.13 - 2021-12-25
This release updates the Decimal and UUID scalar parsers to exclude the original_error exception and format the error message similar to other builtin scalars.
Contributed by Silas Sewell PR #1507
0.93.12 - 2021-12-24
Fix mypy plugin crushes when _get_type_for_expr is used on var nodes
Contributed by Andrii Kohut PR #1513
0.93.11 - 2021-12-24
This release fixes a bug in the annotation parser that prevents using strict typinh for Optional arguments which have their default set to UNSET.
Contributed by Sarah Henkens PR #1467
0.93.10 - 2021-12-21
This release adds support for mypy 0.920.
Contributed by Yossi Rozantsev PR #1503
0.93.9 - 2021-12-21
This releases fixes a bug with the opentracing extension where the tracer wasnât replacing the field name correctly.
0.93.8 - 2021-12-20
This release modifies the internal utility function await_maybe
towards updating mypy to 0.920.
Contributed by Yossi Rozantsev PR #1505
0.93.7 - 2021-12-18
Change context_getter
in strawberry.fastapi.GraphQLRouter
to merge, rather than overwrite, default and custom getters.
This mean now you can always access the request
instance from info.context
, even when using
a custom context getter.
Contributed by Tommy Smith PR #1494
0.93.6 - 2021-12-18
This release changes when we fetch the event loop in dataloaders to prevent using the wrong event loop in some occasions.
Contributed by Patrick Arminio PR #1498
0.93.5 - 2021-12-16
This release fixes an issue that prevented from lazily importing enum types using LazyType.
Contributed by Patrick Arminio PR #1501
0.93.4 - 2021-12-10
This release allows running strawberry as a script, for example, you can start the debug server with the following command:
Contributed by YogiLiu PR #1481
0.93.3 - 2021-12-08
This release adds support for uvicorn 0.16
Contributed by dependabot PR #1487
0.93.2 - 2021-12-08
This fixes the previous release that introduced a direct dependency on Django.
Contributed by Guillaume Andreu Sabater PR #1489
0.93.1 - 2021-12-08
This release adds support for Django 4.0
Contributed by Guillaume Andreu Sabater PR #1484
0.93.0 - 2021-12-07
This release operation_type
to the ExecutionContext
type that is available
in extensions. It also gets the operation_name
from the query if one isnât
provided by the client.
Contributed by Jonathan Kim PR #1286
0.92.2 - 2021-12-06
This release adds support for passing json_encoder
and json_dumps_params
to Django JsonResponse
via a view.
Contributed by Illia Volochii PR #1472
0.92.1 - 2021-12-04
Fix cross-module type resolving for fields and resolvers
The following two issues are now fixed:
-
A field with a generic (typeless) resolver looks up the type relative to the resolver and not the class the field is defined in. (#1448)
-
When inheriting fields from another class the origin of the fields are set to the inheriting class and not the class the field is defined in.
Both these issues could lead to a rather undescriptive error message:
TypeError: (âŚ) fields cannot be resolved. Unexpected type âNoneâ
Contributed by Michael P. Jung PR #1449
0.92.0 - 2021-12-04
This releases fixes an issue where you were not allowed
to return a non-strawberry type for fields that return
an interface. Now this works as long as each type
implementing the interface implements an is_type_of
classmethod. Previous automatic duck typing on types
that implement an interface now requires explicit
resolution using this classmethod.
0.91.0 - 2021-12-04
This release adds a GraphQLTestClient
. It hides the http requestâs details and asserts that there are no errors in the response (you can always disable this behavior by passing asserts_errors=False
). This makes it easier to test queries and makes your tests cleaner.
If you are using pytest
you can add a fixture in conftest.py
And use it everywere in your test methods
It can be used to test the file uploads as well
0.90.3 - 2021-12-02
This release fixes an issue that prevented using enums as arguments for generic types inside unions.
Contributed by Patrick Arminio PR #1463
0.90.2 - 2021-11-28
This release fixes the message of InvalidFieldArgument
to properly show the fieldâs name in the error message.
0.90.1 - 2021-11-27
This release fixes an issue that prevented using classmethod
s and staticmethod
s as resolvers
Contributed by Illia Volochii PR #1430
0.90.0 - 2021-11-26
This release improves type checking support for strawberry.union
and now allows
to use unions without any type issue, like so:
Contributed by Patrick Arminio PR #1438
0.89.2 - 2021-11-26
Fix init of Strawberry types from pydantic by skipping fields that have resolvers.
0.89.1 - 2021-11-25
This release fixes an issubclass test failing for Literal
s in the experimental pydantic
integration.
0.89.0 - 2021-11-24
This release changes how strawberry.Private
is implemented to
improve support for type checkers.
Contributed by Patrick Arminio PR #1437
0.88.0 - 2021-11-24
This release adds support for AWS Chalice. A framework for deploying serverless applications using AWS.
A view for aws chalice has been added to the strawberry codebase. This view embedded in a chalice app allows anyone to get a GraphQL API working and hosted on AWS in minutes using a serverless architecture.
Contributed by Mark Sheehan PR #923
0.87.3 - 2021-11-23
This release fixes the naming generation of generics when passing a generic type to another generic, like so:
Contributed by Patrick Arminio PR #1436
0.87.2 - 2021-11-19
This releases updates the typing_extension
dependency to latest version.
Contributed by dependabot PR #1417
0.87.1 - 2021-11-15
This release renames an internal exception from NotAnEnum
to ObjectIsNotAnEnumError
.
Contributed by Patrick Arminio PR #1317
0.87.0 - 2021-11-15
This release changes how we handle GraphQL names. It also introduces a new
configuration option called name_converter
. This option allows you to specify
a custom NameConverter
to be used when generating GraphQL names.
This is currently not documented because the API will change slightly in future as we are working on renaming internal types.
This release also fixes an issue when creating concrete types from generic when passing list objects.
Contributed by Patrick Arminio PR #1394
0.86.1 - 2021-11-12
This release fixes our MyPy plugin and re-adds support for typechecking classes created with the apollo federation decorator.
Contributed by Patrick Arminio PR #1414
0.86.0 - 2021-11-12
Add on_executing_*
hooks to extensions to allow you to override the execution phase of a GraphQL operation.
Contributed by Jonathan Kim PR #1400
0.85.1 - 2021-10-26
This release fixes an issue with schema directives not being printed correctly.
Contributed by Patrick Arminio PR #1376
0.85.0 - 2021-10-23
This release introduces initial support for schema directives and updates the federation support to use that.
Full support will be implemented in future releases.
Contributed by Patrick Arminio PR #815
0.84.4 - 2021-10-23
Field definition uses output of default_factory
as the GraphQL default_value
.
Contributed by A. Coady PR #1371
0.84.3 - 2021-10-19
This release fixed the typing support for Pyright.
Contributed by Patrick Arminio PR #1363
0.84.2 - 2021-10-17
This release adds an extra dependency for FastAPI to prevent it being downloaded even when not needed.
To install Strawberry with FastAPI support you can do:
Contributed by Patrick Arminio PR #1366
0.84.1 - 2021-10-17
This release fixes the merge_types
type signature.
Contributed by Guillaume Andreu Sabater PR #1348
0.84.0 - 2021-10-16
This release adds support for FastAPI integration using APIRouter.
Contributed by JiĹĂ BireĹĄ PR #1291
0.83.6 - 2021-10-16
Improve help texts for CLI to work better on ZSH.
Contributed by Magnus Markling PR #1360
0.83.5 - 2021-10-16
Errors encountered in subscriptions will now be logged to the strawberry.execution
logger as errors encountered in Queries and Mutations are. <3
Contributed by Michael Ossareh PR #1316
0.83.4 - 2021-10-13
Add logic to convert arguments of type LazyType.
Contributed by Luke Murray PR #1350
0.83.3 - 2021-10-13
This release fixes a bug where passing scalars in the scalar_overrides
parameter wasnât being applied consistently.
Contributed by Jonathan Kim PR #1212
0.83.2 - 2021-10-13
Pydantic fieldsâ description
are now copied to the GraphQL schema
Contributed by Guillaume Andreu Sabater PR #1332
0.83.1 - 2021-10-12
We now run our tests against Windows during CI!
Contributed by Michael Ossareh PR #1321
0.83.0 - 2021-10-12
Add a shortcut to merge queries, mutations. E.g.:
Contributed by Alexandru MÄrÄČteanu PR #1273
0.82.2 - 2021-10-12
Makes the GraphQLSchema instance accessible from resolvers via the info
parameter.
Contributed by Aryan Iyappan PR #1311
0.82.1 - 2021-10-11
Fix bug where errors thrown in the on_parse_* extension hooks were being swallowed instead of being propagated.
Contributed by Jonathan Kim PR #1324
0.82.0 - 2021-10-11
Adds support for the auto
type annotation described in #1192 to the Pydantic
integration, which allows a user to define the list of fields without having to
re-specify the type themselves. This gives better editor and type checker
support. If you want to expose every field you can instead pass
all_fields=True
to the decorators and leave the body empty.
Contributed by Matt Allen PR #1280
0.81.0 - 2021-10-04
This release adds a safety check on strawberry.type
, strawberry.input
and
strawberry.interface
decorators. When you try to use them with an object that is not a
class, you will get a nice error message:
strawberry.type can only be used with classes
Contributed by dependabot PR #1278
0.80.2 - 2021-10-01
Add Starlette
to the integrations section on the documentation.
Contributed by Marcelo Trylesinski PR #1287
0.80.1 - 2021-10-01
This release add support for the upcoming python 3.10 and it adds support for the new union syntax, allowing to declare unions like this:
Contributed by Patrick Arminio PR #719
0.80.0 - 2021-09-30
This release adds support for the graphql-transport-ws
GraphQL over WebSocket
protocol. Previously Strawberry only supported the legacy graphql-ws
protocol.
Developers can decide which protocols they want to accept. The following example shows how to do so using the ASGI integration. By default, both protocols are accepted. Take a look at our GraphQL subscription documentation to learn more.
Contributed by Jonathan Ehwald PR #1256
0.79.0 - 2021-09-29
Nests the resolver under the correct span; prior to this change your span would have looked something like:
After this change youâll have:
Contributed by Michael Ossareh PR #1281
0.78.2 - 2021-09-27
Enhances strawberry.extensions.tracing.opentelemetry to include spans for the Parsing and Validation phases of request handling. These occur before your resovler is called, so now you can see how much time those phases take up!
Contributed by Michael Ossareh PR #1274
0.78.1 - 2021-09-26
Fix extensions
argument type definition on strawberry.Schema
Contributed by Guillaume Andreu Sabater PR #1276
0.78.0 - 2021-09-22
This release introduces some brand new extensions to help improve the performance of your GraphQL server:
ParserCache
- Cache the parsing of a query in memoryValidationCache
- Cache the validation step of execution
For complicated queries these 2 extensions can improve performance by over 50%!
Example:
This release also removes the validate_queries
and validation_rules
parameters on the schema.execute*
methods in favour of using the
DisableValidation
and AddValidationRule
extensions.
Contributed by Jonathan Kim PR #1196
0.77.12 - 2021-09-20
This release adds support for Sanic v21
Contributed by dependabot PR #1105
0.77.11 - 2021-09-19
Fixes returning â500 Internal Server Errorâ responses to requests with malformed json when running with ASGI integration.
Contributed by Olesia Grydzhuk PR #1260
0.77.10 - 2021-09-16
This release adds python_name
to the Info
type.
Contributed by Joe Freeman PR #1257
0.77.9 - 2021-09-16
Fix the Pydantic conversion method for Enum values, and add a mechanism to specify an interface type when converting from Pydantic. The Pydantic interface is really a base dataclass for the subclasses to extend. When you do the conversion, you have to use strawberry.experimental.pydantic.interface
to let us know that this type is an interface. You also have to use your converted interface type as the base class for the sub types as normal.
Contributed by Matt Allen PR #1241
0.77.8 - 2021-09-14
Fixes a bug with the selected_fields
property on info
when an operation
variable is not defined.
Issue #1248.
Contributed by Jonathan Kim PR #1249
0.77.7 - 2021-09-14
Fix issues (#1158 and #1104) where Generics using LazyTypes and Enums would not be properly resolved
These now function as expected:
Enum
LazyType
another_file.py
this_file.py
Contributed by ignormies PR #1235
0.77.6 - 2021-09-13
This release adds fragment and input variable information to the
selected_fields
attribute on the Info
object.
Contributed by Jonathan Kim PR #1213
0.77.5 - 2021-09-11
Fixes a bug in the Pydantic conversion code around Union
values.
Contributed by Matt Allen PR #1231
0.77.4 - 2021-09-11
Fixes a bug in the export-schema
command around the handling of local modules.
Contributed by Matt Allen PR #1233
0.77.3 - 2021-09-10
Fixes a bug in the Pydantic conversion code around complex Optional
values.
Contributed by Matt Allen PR #1229
0.77.2 - 2021-09-10
This release adds a new exception called InvalidFieldArgument
which is raised when a Union or Interface is used as an argument type.
For example this will raise an exception:
Contributed by Mohammad Hossein Yazdani PR #1222
0.77.1 - 2021-09-10
Fix type resolution when inheriting from types from another module using deferred annotations.
Contributed by Daniel Bowring PR #1010
0.77.0 - 2021-09-10
This release adds support for Pyright and Pylance, improving the integration with Visual Studio Code!
Contributed by Patrick Arminio PR #922
0.76.1 - 2021-09-09
Change the version constraint of opentelemetry-sdk and opentelemetry-api to <2
Contributed by Michael Ossareh PR #1226
0.76.0 - 2021-09-06
This release adds support for enabling subscriptions in GraphiQL
on Django by setting a flag subscriptions_enabled
on the BaseView class.
0.75.1 - 2021-09-03
This release fixes an issue with the MyPy plugin that prevented using
TextChoices from django in strawberry.enum
.
Contributed by Patrick Arminio PR #1202
0.75.0 - 2021-09-01
This release improves how we deal with custom scalars. Instead of being global they are now scoped to the schema. This allows you to have multiple schemas in the same project with different scalars.
Also you can now override the built in scalars with your own custom
implementation. Out of the box Strawberry provides you with custom scalars for
common Python types like datetime
and Decimal
. If you require a custom
implementation of one of these built in scalars you can now pass a map of
overrides to your schema:
Contributed by Jonathan Kim PR #1147
0.74.1 - 2021-08-27
This release allows to install Strawberry along side click
version 8.
Contributed by Patrick Arminio PR #1181
0.74.0 - 2021-08-27
This release add full support for async directives and fixes and issue when using directives and async extensions.
Contributed by Patrick Arminio PR #1179
0.73.9 - 2021-08-26
Fix issue where strawberry.Private
fields on converted Pydantic types were not added to the resulting dataclass.
Contributed by Paul Sud PR #1173
0.73.8 - 2021-08-26
This releases fixes a MyPy issue that prevented from using types created with
create_type
as base classes. This is now allowed and doesnât throw any error:
Contributed by Patrick Arminio PR #1175
0.73.7 - 2021-08-25
This release fixes an import error when trying to import create_type
without having opentelemetry
installed.
Contributed by Patrick Arminio PR #1171
0.73.6 - 2021-08-24
This release adds support for the latest version of the optional opentelemetry dependency.
Contributed by Patrick Arminio PR #1170
0.73.5 - 2021-08-24
This release adds support for the latest version of the optional opentelemetry dependency.
Contributed by Joe Freeman PR #1169
0.73.4 - 2021-08-24
This release allows background tasks to be set with the ASGI integration. Tasks can be set on the response in the context, and will then get run after the query result is returned.
Contributed by Joe Freeman PR #1168
0.73.3 - 2021-08-24
This release caches attributes on the Info
type which arenât delegated to the core info object.
Contributed by A. Coady PR #1167
0.73.2 - 2021-08-23
This releases fixes an issue where you were not allowed to use duck typing and return a different type that the type declared on the field when the type was implementing an interface. Now this works as long as you return a type that has the same shape as the field type.
Contributed by Patrick Arminio PR #1150
0.73.1 - 2021-08-23
This release improves execution performance significantly by lazy loading
attributes on the Info
type đ
Contributed by Jonathan Kim PR #1165
0.73.0 - 2021-08-22
This release adds support for asynchronous hooks to the Strawberry extension-system. All available hooks can now be implemented either synchronously or asynchronously.
Itâs also possible to mix both synchronous and asynchronous hooks within one extension.
Contributed by Jonathan Ehwald PR #1142
0.72.3 - 2021-08-22
This release refactors the reload feature of the built-in debug server. The refactor
made the debug server more responsive and allowed us to remove hupper
from the
dependencies.
Contributed by Jonathan Ehwald PR #1114
0.72.2 - 2021-08-22
This releases pins graphql-core to only accept patch versions in order to prevent breaking changes since graphql-core doesnât properly follow semantic versioning.
Contributed by Jonathan Kim PR #1162
0.72.1 - 2021-08-18
This release improves the default logging format for errors to include more information about the errors. For example it will show were an error was originated in a request:
Contributed by Ivan Gonzalez PR #1152
0.72.0 - 2021-08-18
This release adds support for asynchronous permission classes. The only difference to
their synchronous counterpart is that the has_permission
method is asynchronous.
Contributed by Jonathan Ehwald PR #1125
0.71.3 - 2021-08-11
Get a field resolver correctly when extending from a pydantic model
Contributed by Jonathan Kim PR #1116
0.71.2 - 2021-08-10
This release adds asgi
as an extra dependencies group for Strawberry. Now
you can install the required dependencies needed to use Strawberry with
ASGI by running:
Contributed by A. Coady PR #1036
0.71.1 - 2021-08-09
This releases adds selected_fields
on the info
objects and it
allows to introspect the fields that have been selected in a GraphQL
operation.
This can become useful to run optimisation based on the queried fields.
Contributed by A. Coady PR #874
0.71.0 - 2021-08-08
This release adds a query depth limit validation rule so that you can guard against malicious queries:
Contributed by Jonathan Kim PR #1021
0.70.4 - 2021-08-07
Addition of app.add_websocket_route("/subscriptions", graphql_app)
to FastAPI example docs
Contributed by Anton Melser PR #1103
0.70.3 - 2021-08-06
This release changes how we map Pydantic fields to types to allow using older version of Pydantic.
Contributed by Patrick Arminio PR #1071
0.70.2 - 2021-08-04
This release makes the strawberry server
command inform the user about missing
dependencies required by the builtin debug server.
Also hupper
a package only used by said command has been made optional.
Contributed by Jonathan Ehwald PR #1107
0.70.1 - 2021-08-01
Switch CDN used to load GraphQLi dependencies from jsdelivr.com to unpkg.com
Contributed by Tim Savage PR #1096
0.70.0 - 2021-07-23
This release adds support for disabling auto camel casing. It does so by introducing a new configuration parameter to the schema.
You can use it like so:
Contributed by Patrick Arminio PR #798
0.69.4 - 2021-07-23
Fix for regression when defining inherited types with explicit fields.
Contributed by A. Coady PR #1076
0.69.3 - 2021-07-21
This releases improves the MyPy plugin to be more forgiving of settings like follow_imports = skip which would break the type checking.
This is a continuation of the previous release and fixes for type checking issues.
Contributed by Patrick Arminio PR #1078
0.69.2 - 2021-07-21
This releases improves the MyPy plugin to be more forgiving of
settings like follow_imports = skip
which would break the
type checking.
Contributed by Patrick Arminio PR #1077
0.69.1 - 2021-07-20
This release removes a TypeGuard
import to prevent errors
when using older versions of typing_extensions
.
Contributed by Patrick Arminio PR #1074
0.69.0 - 2021-07-20
Refactor of the libraryâs typing internals. Previously, typing was handled individually by fields, arguments, and objects with a hodgepodge of functions to tie it together. This change creates a unified typing system that the object, fields, and arguments each hook into.
Mainly replaces the attributes that were stored on StrawberryArgument and StrawberryField with a hierarchy of StrawberryTypes.
Introduces StrawberryAnnotation
, as well as StrawberryType
and some subclasses,
including StrawberryList
, StrawberryOptional
, and StrawberryTypeVar
.
This is a breaking change if you were calling the constructor for StrawberryField
,
StrawberryArgument
, etc. and using arguments such as is_optional
or child
.
@strawberry.field
no longer takes an argument called type_
. It instead takes a
StrawberryAnnotation
called type_annotation
.
Contributed by ignormies PR #906
0.68.4 - 2021-07-19
This release fixes an issue with the federation printer that prevented using federation directives with types that were implementing interfaces.
This is now allowed:
Contributed by Patrick Arminio PR #1068
0.68.3 - 2021-07-15
This release changes our graphiql.html
template to use a specific version of js-cookie
to prevent a JavaScript error, see:
https://github.com/js-cookie/js-cookie/issues/698
0.68.2 - 2021-07-07
This release fixes a regression that broke strawberry-graphql-django.
Field.get_results
now always receives the info
argument.
Contributed by Lauri Hintsala PR #1047
0.68.1 - 2021-07-05
This release only changes some internal code to make future improvements easier.
Contributed by Patrick Arminio PR #1044
0.68.0 - 2021-07-03
Matching the behaviour of graphql-core
, passing an incorrect ISO string value for a Time, Date or DateTime scalar now raises a GraphQLError
instead of the original parsing error.
The GraphQLError
will include the error message raised by the string parser, e.g. Value cannot represent a DateTime: "2021-13-01T09:00:00". month must be in 1..12
0.67.1 - 2021-06-22
Fixes #1022 by making starlette an optional dependency.
Contributed by Marcel Wiegand PR #1027
0.67.0 - 2021-06-17
Add ability to specific the graphql name for a resolver argument. E.g.,
Contributed by Daniel Bowring PR #1024
0.66.0 - 2021-06-15
This release fixes a bug that was preventing the use of an enum member as the default value for an argument.
For example:
Contributed by Jonathan Kim PR #1015
0.65.5 - 2021-06-15
This release reverts the changes made in v0.65.4 that caused an issue leading to
circular imports when using the strawberry-graphql-django
extension package.
Contributed by Lauri Hintsala PR #1019
0.65.4 - 2021-06-14
This release fixes the IDE integration where package strawberry.django
could not be find by some editors like vscode.
Contributed by Lauri Hintsala PR #994
0.65.3 - 2021-06-09
This release fixes the ASGI subscription implementation by handling disconnecting clients properly.
Additionally, the ASGI implementation has been internally refactored to match the AIOHTTP implementation.
Contributed by Jonathan Ehwald PR #1002
0.65.2 - 2021-06-06
This release fixes a bug in the subscription implementations that prevented clients from selecting one of multiple subscription operations from a query. Client sent messages like the following one are now handled as expected.
Contributed by Jonathan Ehwald PR #1000
0.65.1 - 2021-06-02
This release fixes the upload of nested file lists. Among other use cases, having an input type like shown below is now working properly.
Contributed by Jonathan Ehwald PR #989
0.65.0 - 2021-06-01
This release extends the file upload support of all integrations to support the upload of file lists.
Here is an example how this would work with the ASGI integration.
Check out the documentation to learn how the same can be done with other integrations.
Contributed by Jonathan Ehwald PR #979
0.64.5 - 2021-05-28
This release fixes that AIOHTTP subscription requests were not properly separated. This could lead to subscriptions terminating each other.
Contributed by Jonathan Ehwald PR #970
0.64.4 - 2021-05-28
- Remove usages of
undefined
in favour ofUNSET
- Change the signature of
StrawberryField
to make it easier to instantiate directly. Also changedefault_value
argument todefault
- Rename
default_value
todefault
inStrawberryArgument
Contributed by Jonathan Kim PR #916
0.64.3 - 2021-05-26
This release integrates the strawberry-graphql-django
package into Strawberry
core so that itâs possible to use the Django extension package directly via the
strawberry.django
namespace.
You still need to install strawberry-graphql-django
if you want to use the
extended Django support.
See: https://github.com/strawberry-graphql/strawberry-graphql-django
Contributed by Lauri Hintsala PR #949
0.64.2 - 2021-05-26
This release fixes that enum values yielded from async generators were not resolved properly.
Contributed by Jonathan Ehwald PR #969
0.64.1 - 2021-05-23
This release fixes a max recursion depth error in the AIOHTTP subscription implementation.
Contributed by Jonathan Ehwald PR #966
0.64.0 - 2021-05-22
This release adds an extensions field to the GraphQLHTTPResponse
type and also exposes it in the viewâs response.
This field gets populated by Strawberry extensions: https://strawberry.rocks/docs/guides/extensions#get-results
0.63.2 - 2021-05-22
Add root_value
to ExecutionContext
type so that it can be accessed in
extensions.
Example:
Contributed by Jonathan Kim PR #959
0.63.1 - 2021-05-20
New deployment process to release new Strawberry releases
0.63.0 - 2021-05-19
This release adds extra values to the ExecutionContext object so that it can be
used by extensions and the Schema.process_errors
function.
The full ExecutionContext object now looks like this:
and can be accessed in any of the extension hooks:
Note: This release also removes the creation of an ExecutionContext object in the web
framework views. If you were relying on overriding the get_execution_context
function then you should change it to get_request_data
and use the
strawberry.http.parse_request_data
function to extract the pieces of data
needed from the incoming request.
0.62.1 - 2021-05-19
This releases fixes an issue with the debug server that prevented the usage of dataloaders, see: https://github.com/strawberry-graphql/strawberry/issues/940
0.62.0 - 2021-05-19
This release adds support for GraphQL subscriptions to the AIOHTTP integration. Subscription support works out of the box and does not require any additional configuration.
Here is an example how to get started with subscriptions in general. Note that by specification GraphQL schemas must always define a query, even if only subscriptions are used.
0.61.3 - 2021-05-13
Fix @requires(fields: ["email"])
and @provides(fields: ["name"])
usage on a Federation field
You can use @requires
to specify which fields you need to resolve a field
@provides
can be used to specify what fields are going to be resolved
by the service itself without having the Gateway to contact the external service
to resolve them.
0.61.2 - 2021-05-08
This release adds support for the info param in resolve_reference:
Note: resolver reference is used when using Federation, similar to Apollo serverâs __resolveReference
0.61.1 - 2021-05-05
This release extends the strawberry server
command to allow the specification
of a schema symbol name within a module:
The schema symbol name defaults to schema
making this change backwards compatible.
0.61.0 - 2021-05-04
This release adds file upload support to the Sanic integration. No additional configuration is required to enable file upload support.
The following example shows how a file upload based mutation could look like:
0.60.0 - 2021-05-04
This release adds an export-schema
command to the Strawberry CLI.
Using the command you can print your schema definition to your console.
Pipes and redirection can be used to store the schema in a file.
Example usage:
0.59.1 - 2021-05-04
This release fixes an issue that prevented using source
as name of an argument
0.59.0 - 2021-05-03
This release adds an aiohttp integration for
Strawberry. The integration provides a GraphQLView
class which can be used to
integrate Strawberry with aiohttp:
0.58.0 - 2021-05-03
This release adds a function called create_type
to create a Strawberry type from a list of fields.
0.57.4 - 2021-04-28
This release fixes an issue when using nested lists, this now works properly:
0.57.3 - 2021-04-27
This release fixes support for generic types so that now we can also use generics for input types:
0.57.2 - 2021-04-19
This release fixes a bug that prevented from extending a generic type when passing a type, like here:
0.57.1 - 2021-04-17
Fix converting pydantic objects to strawberry types using from_pydantic
when having a falsy value like 0 or â.
0.57.0 - 2021-04-14
Add a process_errors
method to strawberry.Schema
which logs all exceptions during execution to a strawberry.execution
logger.
0.56.3 - 2021-04-13
This release fixes the return type value from info argument of resolver.
0.56.2 - 2021-04-07
This release improves Pydantic support to support default values and factories.
0.56.1 - 2021-04-06
This release fixes the pydantic integration where you couldnât convert objects to pydantic instance when they didnât have a default value.
0.56.0 - 2021-04-05
Add âapp-dir CLI option to specify where to find the schema module to load when using the debug server.
For example if you have a schema module in a my_app package under ./src, then you can run the debug server with it using:
0.55.0 - 2021-04-05
Add support for default
and default_factory
arguments in strawberry.field
0.54.0 - 2021-04-03
Internal refactoring.
- Renamed
StrawberryArgument
toStrawberryArgumentAnnotation
- Renamed
ArgumentDefinition
toStrawberryArgument
- Renamed
ArgumentDefinition(type: ...)
argument toStrawberryArgument(type_: ...)
- Renamed
0.53.4 - 2021-04-03
Fixed issue with django multipart/form-data uploads
0.53.3 - 2021-04-02
Fix issue where StrawberryField.graphql_name would always be camelCased
0.53.2 - 2021-04-01
This release fixes an issue with the generated __eq__
and __repr__
methods when defining
fields with resolvers.
This now works properly:
0.53.1 - 2021-03-31
Gracefully handle user-induced subscription errors.
0.53.0 - 2021-03-30
-
FieldDefinition
has been absorbed intoStrawberryField
and now no longer exists. -
FieldDefinition.origin_name
andFieldDefinition.name
have been replaced withStrawberryField.python_name
andStrawberryField.graphql_name
. This should help alleviate some backend confusion about which should be used for certain situations. -
strawberry.types.type_resolver.resolve_type
has been split intoresolve_type_argument
and_resolve_type
(for arguments) untilStrawberryType
is implemented to combine them back together. This was done to reduce the scope of this PR and defer changingArgumentDefinition
(futureStrawberryArgument
) until a different PR.
Note: The constructor signature for
StrawberryField
hastype_
as an argument instead oftype
as was the case forFieldDefinition
. This is done to prevent shadowing of builtins.
Note:
StrawberryField.name
still exists because of the way dataclassField
s work, but is an alias forStrawberryField.python_name
.
0.52.1 - 2021-03-28
Include field_nodes
in Strawberry info object.
0.52.0 - 2021-03-23
Change get_context
to be async for sanic integration
0.51.1 - 2021-03-22
Configures GraphiQL to attach CSRF cookies as request headers sent to the GQL server.
0.51.0 - 2021-03-22
Expose Strawberry Info object instead of GraphQLResolveInfo in resolvers
0.50.3 - 2021-03-22
Django 3.2 support
0.50.2 - 2021-03-22
Raise exception when un-serializable payload is provided to the Django view.
0.50.1 - 2021-03-18
This release fixes a regression with the django sending the wrong content type.
0.50.0 - 2021-03-18
This release updates get_context in the django integration to also receive a temporal response object that can be used to set headers, cookies and status code.
0.49.2 - 2021-03-18
This releases changes how we define resolvers internally, now we have one single resolver for async and sync code.
0.49.1 - 2021-03-14
Fix bug when using arguments inside a type that uses typing.Generics
0.49.0 - 2021-03-12
This releases updates the ASGI class to make it easier to override get_http_response
.
get_http_response
has been now removed from strawberry.asgi.http and been moved to be
a method on the ASGI class.
A new get_graphiql_response
method has been added to make it easier to provide a different GraphiQL interface.
0.48.3 - 2021-03-11
This release updates get_context
in the asgi integration to also
receive a temporal response object that can be used to set headers
and cookies.
0.48.2 - 2021-03-09
This release fixes a bug when using the debug server and upload a file
0.48.1 - 2021-03-03
Fix DataLoader docs typo.
0.48.0 - 2021-03-02
New Features
Added support for sanic webserver.
Changelog
ExecutionResult
was erroneously defined twice in the repository. The entry in strawberry.schema.base
has been removed. If you were using it, switch to using
strawberry.types.ExecutionResult
instead:
0.47.1 - 2021-03-02
Enable using .get for django context as well as for the square brackets notation.
0.47.0 - 2021-02-28
Enable dot notation for django context request
0.46.0 - 2021-02-26
Supporting multipart file uploads on Flask
0.45.4 - 2021-02-16
Expose execution info under strawberry.types.Info
0.45.3 - 2021-02-08
Fixes mypy failing when casting in enum decorator
0.45.2 - 2021-02-08
Suggest installing the debug server on the getting started docs, so examples can work without import errors of uvicorn
0.45.1 - 2021-01-31
Fix Generic name generation to use the custom name specified in Strawberry if available
will result in AnotherNameConnection
, and not EdgeNameConnection
as before.
0.45.0 - 2021-01-27
This release add the ability to disable query validation by setting
validate_queries
to False
0.44.12 - 2021-01-23
This release adds support for MyPy==0.800
0.44.11 - 2021-01-22
Fix for a duplicated input types error.
0.44.10 - 2021-01-22
Internal codebase refactor. Clean up, consolidate, and standardize the conversion layer between Strawberry types and GraphQL Core types; with room for further future abstraction to support other GraphQL backends.
0.44.9 - 2021-01-22
Improves typing when decorating an enum with kwargs like description and name. Adds more mypy tests.
0.44.8 - 2021-01-20
This releases fixes a wrong dependency issue
0.44.7 - 2021-01-13
Supporting multipart uploads as described here: https://github.com/jaydenseric/graphql-multipart-request-spec for ASGI.
0.44.6 - 2021-01-02
Fix Strawberry to handle multiple subscriptions at the same time
0.44.5 - 2020-12-28
Pass execution_context_class
to Schema creation
0.44.4 - 2020-12-27
Add support for converting more pydantic types
- pydantic.EmailStr
- pydantic.AnyUrl
- pydantic.AnyHttpUrl
- pydantic.HttpUrl
- pydantic.PostgresDsn
- pydantic.RedisDsn
0.44.3 - 2020-12-16
This releases fixes an issue where methods marked as field were removed from the class.
0.44.2 - 2020-11-22
Validate the schema when it is created instead of at runtime.
0.44.1 - 2020-11-20
This release adds support for strawberry.federation.field under mypy.
0.44.0 - 2020-11-19
Creation of a [debug-server]
extra, which is required to get going quickly with this project!
Will now install the primary portion of of the framework, allowing you to build your GraphQL schema using the dataclasses pattern.
To get going quickly, you can install [debug-server]
which brings along a server which allows
you to develop your API dynamically, assuming your schema is defined in the app
module:
Typically, in a production environment, youâd want to bring your own server :)
0.43.2 - 2020-11-19
This release fixes an issue when using unions inside generic types, this is now supported:
0.43.1 - 2020-11-18
This releases fixes an issue with Strawberry requiring Pydantic even when not used.
0.43.0 - 2020-11-18
This release adds support for creating types from Pydantic models. Hereâs an example:
0.42.7 - 2020-11-18
Add some checks to make sure the types passed to .union
are valid.
0.42.6 - 2020-11-18
Fix issue preventing reusing the same resolver for multiple fields, like here:
0.42.5 - 2020-11-18
Another small improvement for mypy, this should prevent mypy from crashing when it canât find a type
0.42.4 - 2020-11-18
This release fixes another issue with mypy where it wasnât able to identify strawberry fields. It also now knows that fields with resolvers arenât put in the init method of the class.
0.42.3 - 2020-11-17
This release type improves support for strawberry.field in mypy,
now we donât get Attributes without a default cannot follow attributes with one
when using strawberry.field before a type without a default.
0.42.2 - 2020-11-17
Bugfix to allow the use of UNSET
as a default value for arguments.
SDL:
0.42.1 - 2020-11-17
This release improves mypy support for strawberry.field
0.42.0 - 2020-11-17
- Completely revamped how resolvers are created, stored, and managed by
StrawberryField. Now instead of monkeypatching a
FieldDefinition
object onto the resolver function itself, all resolvers are wrapped inside of aStrawberryResolver
object with the useful properties. arguments.get_arguments_from_resolver
is now theStrawberryResolver.arguments
property- Added a test to cover a situation where a field is added to a StrawberryType
manually using
dataclasses.field
but not annotated. This was previously uncaught.
0.41.1 - 2020-11-14
This release fixes an issue with forward types
0.41.0 - 2020-11-06
This release adds a built-in dataloader. Example:
0.40.2 - 2020-11-05
Allow interfaces to implement other interfaces. This may be useful if you are using the relay pattern or if you want to model base interfaces that can be extended.
Example:
Produces the following SDL:
0.40.1 - 2020-11-05
Fix mypy plugin to handle bug where the types
argument to strawberry.union
is passed in as a keyword argument instead of a position one.
0.40.0 - 2020-11-03
This release adds a new AsyncGraphQLView for django.
0.39.4 - 2020-11-02
Improve typing for field
and StrawberryField
.
0.39.3 - 2020-10-30
This release disable implicit re-export of modules. This fixes Strawberry for you if you were using implicit_reexport = False
in your MyPy config.
0.39.2 - 2020-10-29
This fixes the prettier pre-lint check.
0.39.1 - 2020-10-28
Fix issue when using strawberry.enum(module.EnumClass)
in mypy
0.39.0 - 2020-10-27
This release adds support to mark a field as deprecated via deprecation_reason
0.38.1 - 2020-10-27
Set default value to null in the schema when itâs set to None
0.38.0 - 2020-10-27
Register UUIDâs as a custom scalar type instead of the ID type.
â ď¸ This is a potential breaking change because inputs of type UUID are now parsed as instances of uuid.UUID instead of strings as they were before.
0.37.7 - 2020-10-27
This release fixes a bug when returning list in async resolvers
0.37.6 - 2020-10-23
This release improves how we check for enums
0.37.5 - 2020-10-23
This release improves how we handle enum values when returning lists of enums.
0.37.4 - 2020-10-22
This releases adds a workaround to prevent mypy from crashing in specific occasions
0.37.3 - 2020-10-22
This release fixes an issue preventing to return enums in lists
0.37.2 - 2020-10-21
This release improves support for strawberry.enums when type checking with mypy.
0.37.1 - 2020-10-20
Fix ASGI view to call get_context
during a websocket request
0.37.0 - 2020-10-18
Add support for adding a description to field arguments using the Annotated
type:
which results in the following schema:
Note: if you are not using Python v3.9 or greater you will need to import Annotated
from typing_extensions
0.36.4 - 2020-10-17
This release adds support for using strawberry.enum as a function with MyPy, this is now valid typed code:
0.36.3 - 2020-10-16
Add __str__
to Schema
to allow printing schema sdl with str(schema)
0.36.2 - 2020-10-12
Extend support for parsing isoformat datetimes,
adding a dependency on the dateutil
library.
For example: â2020-10-12T22:00:00.000Zâ
can now be parsed as a datetime with a UTC timezone.
0.36.1 - 2020-10-11
Add schema.introspect()
method to return introspection result of the schema.
This might be useful for tools like apollo codegen
or graphql-voyager
which
expect a full json representation of the schema
0.36.0 - 2020-10-06
This releases adds a new extension for OpenTelemetry.
0.35.5 - 2020-10-05
This release disables tracing for default resolvers and introspection queries
0.35.4 - 2020-10-05
This releases allows UNSET to be used anywhere and prevents mypy to report an error.
0.35.3 - 2020-10-05
This releases adds support for strawberry.union inside mypy.
0.35.2 - 2020-10-04
This release fixes an issue with the extension runner and async resolvers
0.35.1 - 2020-10-02
Fixed bug where you couldnât use the same Union type multiple times in a schema.
0.35.0 - 2020-10-02
Added strawberry.Private
type to mark fields as âprivateâ so they donât show up in the GraphQL schema.
Example:
0.34.2 - 2020-10-01
Fix typo in type_resolver.py
0.34.1 - 2020-09-30
This release fixes an issue with mypy when doing the following:
0.34.0 - 2020-09-30
This release adds support for Apollo Tracing and support for creating Strawberry extensions, hereâs how you can enable Apollo tracing:
And hereâs an example of custom extension:
0.33.1 - 2020-09-25
This release fixes an issue when trying to print a type with a UNSET default value
0.33.0 - 2020-09-24
UnionDefinition
has been renamed toStrawberryUnion
strawberry.union
now returns an instance ofStrawberryUnion
instead of a dynamically generated class instance with a_union_definition
attribute of typeUnionDefinition
.
0.32.4 - 2020-09-22
This release adds the py.typed
file for better mypy support.
0.32.3 - 2020-09-07
This release fixes another issue with extending types.
0.32.2 - 2020-09-07
This releases fixes an issue when extending types, now fields should work as they were working before even when extending an existing type.
0.32.1 - 2020-09-06
Improves tooling by adding flake8-eradicate
to flake8
pre-commit
hook..
0.32.0 - 2020-09-06
Previously, strawberry.field
had redundant arguments for the resolver, one for
when strawberry.field
was used as a decorator, and one for when it was used as
a function. These are now combined into a single argument.
The f
argument of strawberry.field
no longer exists. This is a
backwards-incompatible change, but should not affect many users. The f
argument was the first argument for strawberry.field
and its use was only
documented without the keyword. The fix is very straight-forward: replace any
f=
kwarg with resolver=
.
Other (minor) breaking changes
MissingArgumentsAnnotationsError
âs message now uses the original Python field name instead of the GraphQL field name. The error can only be thrown while instantiating a strawberry.field, so the Python field name should be more helpful.- As a result,
strawberry.arguments.get_arguments_from_resolver()
now only takes one field â theresolver
Callable. MissingFieldAnnotationError
is now thrown when a strawberry.field is not type-annotated but also has no resolver to determine its type
0.31.1 - 2020-08-26
This release fixes the Flask view that was returning 400 when there were errors in the GraphQL results. Now it always returns 200.
0.31.0 - 2020-08-26
Add process_result
to views for Django, Flask and ASGI. They can be overridden
to provide a custom response and also to process results and errors.
It also removes request
from Flask viewâs get_root_value
and get_context
since request in Flask is a global.
Django example:
Flask example:
ASGI example:
0.30.1 - 2020-08-17
This releases fixes the check for unset values.
0.30.0 - 2020-08-16
Add functions get_root_value
and get_context
to views for Django, Flask and
ASGI. They can be overridden to provide custom values per request.
Django example:
Flask example:
ASGI example:
0.29.1 - 2020-08-07
Support for default_value
on inputs.
Usage:
0.29.0 - 2020-08-03
This release adds support for file uploads within Django.
We follow the following spec: https://github.com/jaydenseric/graphql-multipart-request-spec
Example:
0.28.5 - 2020-08-01
Fix issue when reusing an interface
0.28.4 - 2020-07-28
Fix issue when using generic types with federation
0.28.3 - 2020-07-27
Add support for using lazy types inside generics.
0.28.2 - 2020-07-26
This releae add support for UUID as field types. They will be represented as GraphQL ID in the GraphQL schema.
0.28.1 - 2020-07-25
This release fixes support for PEP-563, now you can safely use from __future__ import annotations
,
like the following example:
0.28.0 - 2020-07-24
This releases brings a much needed internal refactor of how we generate GraphQL types from class definitions. Hopefully this will make easier to extend Strawberry in future.
There are some internal breaking changes, so if you encounter any issue let us know and well try to help with the migration.
In addition to the internal refactor we also fixed some bugs and improved
the public api for the schema class. Now you can run queries directly
on the schema by running schema.execute
, schema.execute_sync
and
schema.subscribe
on your schema.
0.27.5 - 2020-07-22
Add websocket object to the subscription context.
0.27.4 - 2020-07-14
This PR fixes a bug when declaring multiple non-named union types
0.27.3 - 2020-07-10
Optimized signature reflection and added benchmarks.
0.27.2 - 2020-06-11
This release fixes an issue when using named union types in generic types, for example using an optional union. This is now properly supported:
0.27.1 - 2020-06-11
Fix typo in Decimal description
0.27.0 - 2020-06-10
This release adds support for decimal type, example:
0.26.3 - 2020-06-10
This release disables subscription in GraphiQL where it is not supported.
0.26.2 - 2020-06-03
Fixes a bug when using unions and lists together
0.26.1 - 2020-05-22
Argument conversion doesnât populate missing args with defaults.
0.26.0 - 2020-05-21
This releases adds experimental support for apollo federation.
Hereâs an example:
0.25.6 - 2020-05-19
Default values make input arguments nullable when the default is None.
0.25.5 - 2020-05-18
Added sentinel value for input parameters that arenât sent by the clients. It checks for when a field is unset.
0.25.4 - 2020-05-18
Support for default_value
on inputs and arguments.
Usage:
0.25.3 - 2020-05-17
Improves tooling by updating pre-commit
hooks and adding pre-commit
to
pyproject.toml
.
0.25.2 - 2020-05-11
Add support for setting root_value
in asgi.
Usage:
0.25.1 - 2020-05-08
Fix error when a subscription accepted input arguments
0.25.0 - 2020-05-05
This release add supports for named unions, now you can create a new union type by writing:
This also improves the support for Union and Generic types, as it was broken before.
0.24.1 - 2020-04-29
This release fixes a bug introduced by 0.24.0
0.24.0 - 2020-04-29
This releases allows to use resolver without having to specify root and info arguments:
This makes it easier to reuse existing functions and makes code cleaner when not using info or root.
0.23.3 - 2020-04-29
This release fixes the dependency of GraphQL-core
0.23.2 - 2020-04-25
This releases updates the debug server to serve the API on â/â as well as â/graphqlâ.
0.23.1 - 2020-04-20
Removes the need for duplicate graphiql template file.
0.23.0 - 2020-04-19
This releases replaces the playground with GraphiQL including the GraphiQL explorer plugin.
0.22.0 - 2020-04-19
This release adds support for generic types, allowing to reuse types, hereâs an example:
0.21.1 - 2020-03-25
Update version of graphql-core to 3.1.0b2
0.21.0 - 2020-02-13
Added a Flask view that allows you to query the schema and interact with it via GraphiQL.
Usage:
0.20.3 - 2020-02-11
Improve datetime, date and time types conversion. Removes aniso dependency and also adds support for python types, so now we can do use python datetimeâs types instead of our custom scalar types.
0.20.2 - 2020-01-22
This version adds support for Django 3.0
0.20.1 - 2020-01-15
Fix directives bugs:
-
Fix autogenerated
return
argument bug -
Fix include and skip failure bug
0.20.0 - 2020-01-02
This release improves support for permissions (it is a breaking change).
Now you will receive the source and the arguments in the has_permission
method,
so you can run more complex permission checks. It also allows to use permissions
on fields, hereâs an example:
0.19.1 - 2019-12-20
This releases removes support for async resolver in django as they causes issues when accessing the databases.
0.19.0 - 2019-12-19
This release improves support for django and asgi integration.
It allows to use async resolvers when using django. It also changes the status code from 400 to 200 even if there are errors this makes it possible to still use other fields even if one raised an error.
We also moved strawberry.contrib.django to strawberry.django, so if youâre using the django view make sure you update the paths.
0.18.3 - 2019-12-09
Fix missing support for booleans when converting arguments
0.18.2 - 2019-12-09
This releases fixes an issue when converting complex input types, now it should support lists of complex types properly.
0.18.1 - 2019-11-03
Set is_type_of
only when the type implements an interface,
this allows to return different (but compatible) types in basic cases.
0.18.0 - 2019-10-31
Refactored CLI folder structure, importing click commands from a subfolder. Follows clickâs complex example.
0.17.0 - 2019-10-30
Add support for custom GraphQL scalars.
0.16.10 - 2019-10-30
Tests are now run on GitHub actions on both python 3.7 and python3.8 đ
0.16.9 - 2019-10-30
Fixed some typos in contributing.md .
0.16.8 - 2019-10-29
Fixed some typos in readme.md and contributing.md.
0.16.7 - 2019-10-28
Minimal support for registering types without fields and abstract interface querying.
0.16.6 - 2019-10-27
Grammar fixes - changed âcorresponding tests, if testsâ to âcorresponding tests. If testsâ and removed extraneous period from âProvide specific examples to demonstrate the steps..â. Also made âEnhancementâ lowercase to stay consistent with its usage in documentation and changed âon the Strawberryâ to âto Strawberryâ.
0.16.5 - 2019-10-16
Added issue template files (bug_report.md, feature_request.md, other_issues.md) and a pull request template file.
0.16.4 - 2019-10-14
Fix execution of async resolvers.
0.16.3 - 2019-10-14
Typo fix - changed the spelling from âfollwingâ to âfollowingâ.
0.16.2 - 2019-10-03
Updated docs to provide reference on how to use Django view.
0.16.1 - 2019-09-29
Removed custom representation for Strawberry types, this should make using types much nicer.
0.16.0 - 2019-09-13
Switched from graphql-core-next
dependency to graphql-core@^3.0.0a0
.
0.15.6 - 2019-09-11
Fixes MYPY plugin
0.15.5 - 2019-09-10
Add the flake8-bugbear linting plugin to catch likely bugs
0.15.4 - 2019-09-06
Fixed conversion of enum when value was falsy.
0.15.3 - 2019-09-06
Fixed issue when trying to convert optional arguments to a type
0.15.2 - 2019-09-06
Fix issue with converting arguments with optional fields.
Thanks to @sciyoshi for the fix!
0.15.1 - 2019-09-05
Added a Django view that allows you to query the schema and interact with it via GraphiQL
Usage:
0.15.0 - 2019-09-04
This release doesnât add any feature or fixes, but it fixes an issue with checking for release files when submitting PRs â¨.
0.14.4 - 2019-09-01
Fixes the conversion of Enums in resolvers, arguments and input types.
0.14.3 - 2019-09-01
Add a mypy plugin that enables typechecking Strawberry types
0.14.2 - 2019-08-31
Fix List types being converted to Optional GraphQL lists.
0.14.1 - 2019-08-25
This release doesnât add any feature or fixes, it only introduces a GitHub Action to let people know how to add a RELEASE.md file when submitting a PR.
0.14.0 - 2019-08-14
Added support for defining query directives, example:
0.13.4 - 2019-08-01
Improve dict_to_type conversion by checking if the field has a different name or case
0.13.3 - 2019-07-23
Fix field initialization not allowed when using strawberry.field
in an input
type
0.13.2 - 2019-07-18
Allow the usage of Union types in the mutations
0.13.1 - 2019-07-17
Fix missing fields when extending a class, now we can do this:
0.13.0 - 2019-07-16
This release adds field support for permissions
0.12.0 - 2019-06-25
This releases adds support for ASGI 3.0
0.11.0 - 2019-06-07
Added support for optional fields with default arguments in the GraphQL schema when default arguments are passed to the resolver.
Example:
0.10.0 - 2019-05-28
Fixed issue that was prevent usage of InitVars. Now you can safely use InitVar to prevent fields from showing up in the schema:
0.9.1 - 2019-05-25
Fixed logo on PyPI
0.9.0 - 2019-05-24
Added support for passing resolver functions
Also we updated some of the dependencies of the project
0.8.0 - 2019-05-09
Added support for renaming fields. Example usage:
0.7.0 - 2019-05-09
Added support for declaring interface by using @strawberry.interface
Example:
0.6.0 - 2019-05-02
This changes field to be lazy by default, allowing to use circular dependencies when declaring types.
0.5.6 - 2019-04-30
Improve listing on pypi.org
Footnotes
-
Flask, Chalice and the sync Django integration donât support this. âŠ