This commit is contained in:
Christian Mantha
2026-03-02 19:10:52 -05:00
commit 2ca0b9ef7c
28907 changed files with 5233713 additions and 0 deletions

View File

@@ -0,0 +1,296 @@
Metadata-Version: 2.4
Name: graphql-core
Version: 3.2.7
Summary: GraphQL implementation for Python, a port of GraphQL.js, the JavaScript reference implementation for GraphQL.
Home-page: https://github.com/graphql-python/graphql-core
Author: Christoph Zwerschke
Author-email: cito@online.de
License: MIT license
Keywords: graphql
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.7,<4
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: typing-extensions<5,>=4.7; python_version < "3.10"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary
# GraphQL-core 3
GraphQL-core 3 is a Python 3.7+ port of [GraphQL.js](https://github.com/graphql/graphql-js),
the JavaScript reference implementation for [GraphQL](https://graphql.org/),
a query language for APIs created by Facebook.
[![PyPI version](https://badge.fury.io/py/graphql-core.svg)](https://badge.fury.io/py/graphql-core)
[![Documentation Status](https://readthedocs.org/projects/graphql-core-3/badge/)](https://graphql-core-3.readthedocs.io)
![Test Status](https://github.com/graphql-python/graphql-core/actions/workflows/test.yml/badge.svg)
![Lint Status](https://github.com/graphql-python/graphql-core/actions/workflows/lint.yml/badge.svg)
[![Code Style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)
The current version 3.2.7 of GraphQL-core is up-to-date with GraphQL.js version 16.9.0.
An extensive test suite with over 2500 unit tests and 100% coverage comprises a
replication of the complete test suite of GraphQL.js, making sure this port is
reliable and compatible with GraphQL.js.
Note that for various reasons, GraphQL-core does not use SemVer like GraphQL.js.
Changes in the major version of GraphQL.js are reflected in the minor version of
GraphQL-core instead. This means there can be breaking changes in the API
when the minor version changes, and only patch releases are fully backward compatible.
Therefore, we recommend using something like `~= 3.2.0` as the version specifier
when including GraphQL-core as a dependency.
## Documentation
A more detailed documentation for GraphQL-core 3 can be found at
[graphql-core-3.readthedocs.io](https://graphql-core-3.readthedocs.io/).
The documentation for GraphQL.js can be found at [graphql.org/graphql-js/](https://graphql.org/graphql-js/).
The documentation for GraphQL itself can be found at [graphql.org](https://graphql.org/).
There will be also [blog articles](https://cito.github.io/tags/graphql/) with more usage
examples.
## Getting started
A general overview of GraphQL is available in the
[README](https://github.com/graphql/graphql-spec/blob/main/README.md) for the
[Specification for GraphQL](https://github.com/graphql/graphql-spec). That overview
describes a simple set of GraphQL examples that exist as [tests](tests) in this
repository. A good way to get started with this repository is to walk through that
README and the corresponding tests in parallel.
## Installation
GraphQL-core 3 can be installed from PyPI using the built-in pip command:
python -m pip install graphql-core
You can also use [poetry](https://github.com/python-poetry/poetry) for installation
in a virtual environment:
poetry install
## Usage
GraphQL-core provides two important capabilities: building a type schema and
serving queries against that type schema.
First, build a GraphQL type schema which maps to your codebase:
```python
from graphql import (
GraphQLSchema, GraphQLObjectType, GraphQLField, GraphQLString)
schema = GraphQLSchema(
query=GraphQLObjectType(
name='RootQueryType',
fields={
'hello': GraphQLField(
GraphQLString,
resolve=lambda obj, info: 'world')
}))
```
This defines a simple schema, with one type and one field, that resolves to a fixed
value. The `resolve` function can return a value, a co-routine object or a list of
these. It takes two positional arguments; the first one provides the root or the
resolved parent field, the second one provides a `GraphQLResolveInfo` object which
contains information about the execution state of the query, including a `context`
attribute holding per-request state such as authentication information or database
session. Any GraphQL arguments are passed to the `resolve` functions as individual
keyword arguments.
Note that the signature of the resolver functions is a bit different in GraphQL.js,
where the context is passed separately and arguments are passed as a single object.
Also note that GraphQL fields must be passed as a `GraphQLField` object explicitly.
Similarly, GraphQL arguments must be passed as `GraphQLArgument` objects.
A more complex example is included in the top-level [tests](tests) directory.
Then, serve the result of a query against that type schema.
```python
from graphql import graphql_sync
source = '{ hello }'
print(graphql_sync(schema, source))
```
This runs a query fetching the one field defined, and then prints the result:
```python
ExecutionResult(data={'hello': 'world'}, errors=None)
```
The `graphql_sync` function will first ensure the query is syntactically and
semantically valid before executing it, reporting errors otherwise.
```python
from graphql import graphql_sync
source = '{ BoyHowdy }'
print(graphql_sync(schema, source))
```
Because we queried a non-existing field, we will get the following result:
```python
ExecutionResult(data=None, errors=[GraphQLError(
"Cannot query field 'BoyHowdy' on type 'RootQueryType'.",
locations=[SourceLocation(line=1, column=3)])])
```
The `graphql_sync` function assumes that all resolvers return values synchronously. By
using coroutines as resolvers, you can also create results in an asynchronous fashion
with the `graphql` function.
```python
import asyncio
from graphql import (
graphql, GraphQLSchema, GraphQLObjectType, GraphQLField, GraphQLString)
async def resolve_hello(obj, info):
await asyncio.sleep(3)
return 'world'
schema = GraphQLSchema(
query=GraphQLObjectType(
name='RootQueryType',
fields={
'hello': GraphQLField(
GraphQLString,
resolve=resolve_hello)
}))
async def main():
query = '{ hello }'
print('Fetching the result...')
result = await graphql(schema, query)
print(result)
asyncio.run(main())
```
## Goals and restrictions
GraphQL-core tries to reproduce the code of the reference implementation GraphQL.js
in Python as closely as possible and to stay up-to-date with the latest development of
GraphQL.js.
GraphQL-core 3 (formerly known as GraphQL-core-next) has been created as a modern
alternative to [GraphQL-core 2](https://github.com/graphql-python/graphql-core-legacy),
a prior work by Syrus Akbary, based on an older version of GraphQL.js and also
targeting older Python versions. Some parts of GraphQL-core 3 have been inspired by
GraphQL-core 2 or directly taken over with only slight modifications, but most of the
code has been re-implemented from scratch, replicating the latest code in GraphQL.js
very closely and adding type hints for Python.
Design goals for the GraphQL-core 3 library were:
* to be a simple, cruft-free, state-of-the-art GraphQL implementation for current
Python versions
* to be very close to the GraphQL.js reference implementation, while still providing
a Pythonic API and code style
* to make extensive use of Python type hints, similar to how GraphQL.js used Flow
(and is now using TypeScript)
* to use [black](https://github.com/ambv/black) to achieve a consistent code style
while saving time and mental energy for more important matters
* to replicate the complete Mocha-based test suite of GraphQL.js
using [pytest](https://docs.pytest.org/)
with [pytest-describe](https://pypi.org/project/pytest-describe/)
Some restrictions (mostly in line with the design goals):
* requires Python 3.7 or newer
* does not support some already deprecated methods and options of GraphQL.js
* supports asynchronous operations only via async.io
(does not support the additional executors in GraphQL-core)
Note that meanwhile we are using the amazing [ruff](https://docs.astral.sh/ruff/) tool
to both format and check the code of GraphQL-core 3,
in addition to using [mypy](https://mypy-lang.org/) as type checker.
## Integration with other libraries and roadmap
* [Graphene](http://graphene-python.org/) is a more high-level framework for building
GraphQL APIs in Python, and there is already a whole ecosystem of libraries, server
integrations and tools built on top of Graphene. Most of this Graphene ecosystem has
also been created by Syrus Akbary, who meanwhile has handed over the maintenance
and future development to members of the GraphQL-Python community.
Graphene 3 is now using Graphql-core 3 as core library for much of the heavy lifting.
* [Ariadne](https://github.com/mirumee/ariadne) is a Python library for implementing
GraphQL servers using schema-first approach created by Mirumee Software.
Ariadne is also using GraphQL-core 3 as its GraphQL implementation.
* [Strawberry](https://github.com/strawberry-graphql/strawberry), created by Patrick
Arminio, is a new GraphQL library for Python 3, inspired by dataclasses,
that is also using GraphQL-core 3 as underpinning.
## Changelog
Changes are tracked as
[GitHub releases](https://github.com/graphql-python/graphql-core/releases).
## Credits and history
The GraphQL-core 3 library
* has been created and is maintained by Christoph Zwerschke
* uses ideas and code from GraphQL-core 2, a prior work by Syrus Akbary
* is a Python port of GraphQL.js which has been developed by Lee Byron and others
at Facebook, Inc. and is now maintained
by the [GraphQL foundation](https://gql.foundation/join/)
Please watch the recording of Lee Byron's short keynote on the
[history of GraphQL](https://www.youtube.com/watch?v=VjHWkBr3tjI)
at the open source leadership summit 2019 to better understand
how and why GraphQL was created at Facebook and then became open sourced
and ported to many different programming languages.
## License
GraphQL-core 3 is
[MIT-licensed](./LICENSE),
just like GraphQL.js.

View File

@@ -0,0 +1,259 @@
graphql/__init__.py,sha256=O7Wajsu_7bVt1EFEumzMMAfKH1-3m8ji_s-e1rDwr1U,20887
graphql/__pycache__/__init__.cpython-39.pyc,,
graphql/__pycache__/graphql.cpython-39.pyc,,
graphql/__pycache__/version.cpython-39.pyc,,
graphql/error/__init__.py,sha256=eKqKqLts48R7GGzN_w7yy_HKphnM5LPe3oVgtQ5T-tA,432
graphql/error/__pycache__/__init__.cpython-39.pyc,,
graphql/error/__pycache__/graphql_error.cpython-39.pyc,,
graphql/error/__pycache__/located_error.cpython-39.pyc,,
graphql/error/__pycache__/syntax_error.cpython-39.pyc,,
graphql/error/graphql_error.py,sha256=wqjJ_Nc3_igKo4iu9qoJc8zHp5FBsVcsIQSFR2pQOFo,9523
graphql/error/located_error.py,sha256=W7XPadgCgunUILPwKCdOkQx4eI42MsK7P9_Y5iervJs,1860
graphql/error/syntax_error.py,sha256=q0u6mHWzjKTs_DEiGwGKK8gMec2_j9oq3bgMm-KPEm8,517
graphql/execution/__init__.py,sha256=S5SNxVZrKTb0sdjavf1ZXdYc2SHtVJEW2hSO2zpbg4g,959
graphql/execution/__pycache__/__init__.cpython-39.pyc,,
graphql/execution/__pycache__/collect_fields.cpython-39.pyc,,
graphql/execution/__pycache__/execute.cpython-39.pyc,,
graphql/execution/__pycache__/map_async_iterator.cpython-39.pyc,,
graphql/execution/__pycache__/middleware.cpython-39.pyc,,
graphql/execution/__pycache__/subscribe.cpython-39.pyc,,
graphql/execution/__pycache__/values.cpython-39.pyc,,
graphql/execution/collect_fields.py,sha256=2sws_nyboHJy8MMf7b3_3NbEG_ZV3ObudKlW_jT5SwU,5715
graphql/execution/execute.py,sha256=F_kBs9LQuLqr9ZPSdx0gAeFL0m_kU-m_noLWgP1r0is,46465
graphql/execution/map_async_iterator.py,sha256=pXzbtG96fheMLTKi5fzZ7LnBvRa39Yy3wtXcXMZZx_c,3781
graphql/execution/middleware.py,sha256=3WYYod5jKRmelaICK2TkGkDXgscbMIWxgKsP1Rp49bg,2467
graphql/execution/subscribe.py,sha256=FbUyjFjBxNt2Ygt6WMjwlAigy6wdTLLiwIj8Pc320Jk,7966
graphql/execution/values.py,sha256=a6pOZvmvXY6tQSzNKVlUIy-Jw1awivdjqjstQkeEs3M,9236
graphql/graphql.py,sha256=bCdF9EOP6vsyk-ZnbxFAaXdhVFq-KOW8c9nl2-neC9c,6818
graphql/language/__init__.py,sha256=9tqO3sV7MuQz7HbqtoZBxcJHr3ov5EA47pGXQbLuyGI,4790
graphql/language/__pycache__/__init__.cpython-39.pyc,,
graphql/language/__pycache__/ast.cpython-39.pyc,,
graphql/language/__pycache__/block_string.cpython-39.pyc,,
graphql/language/__pycache__/character_classes.cpython-39.pyc,,
graphql/language/__pycache__/directive_locations.cpython-39.pyc,,
graphql/language/__pycache__/lexer.cpython-39.pyc,,
graphql/language/__pycache__/location.cpython-39.pyc,,
graphql/language/__pycache__/parser.cpython-39.pyc,,
graphql/language/__pycache__/predicates.cpython-39.pyc,,
graphql/language/__pycache__/print_location.cpython-39.pyc,,
graphql/language/__pycache__/print_string.cpython-39.pyc,,
graphql/language/__pycache__/printer.cpython-39.pyc,,
graphql/language/__pycache__/source.cpython-39.pyc,,
graphql/language/__pycache__/token_kind.cpython-39.pyc,,
graphql/language/__pycache__/visitor.cpython-39.pyc,,
graphql/language/ast.py,sha256=0244tiE0msLOQQ1IZiemB4dn_nIYBReBEVJlu3dLBRA,20807
graphql/language/block_string.py,sha256=I9qMdB9NO8W41-gHfFiXS4nqm5SgVczXZI8i2Le8xpE,4948
graphql/language/character_classes.py,sha256=2qJ3Q3aME-jdGe5Ccr8AoonpYGsEJRS2uaWXuD0wAJM,1980
graphql/language/directive_locations.py,sha256=vJg8zs0Gbo7YNba2MWJcECMunKXjPzOmW_J-siX_KCg,830
graphql/language/lexer.py,sha256=rrgAygLtPEtYy9QKoJsp0dz1wHCTA98UhTt4CVOYtqk,19379
graphql/language/location.py,sha256=TSMQZhqLFoBeasFAKXCJzu3bUiA9-uuYKszCQIQA2dw,1198
graphql/language/parser.py,sha256=TcgVIEAHzsbdeNtRjetKS7KSxmRU-kdT9FICoh8bOYU,44581
graphql/language/predicates.py,sha256=2LLYyF7X8DvvVlkbO6eOldFRUkiPqTr2TBJHHyFMdUA,2553
graphql/language/print_location.py,sha256=b8JlYnr4HtUqZsegrO8052NnXYq8DtOT9hwnFzybANs,2762
graphql/language/print_string.py,sha256=sWIpsz8NM5hNV25hMbqxFnOohFxIGPGnYnQHxUUZUGI,1738
graphql/language/printer.py,sha256=yboU4OqSuIylz4Cg1xynb3vPLPYXFYsLdeH5r1Ts9dg,13155
graphql/language/source.py,sha256=cVK5df4ayj2J_S4V6Swt9fBLuLbxsj-tX-AcAd0pPgU,2338
graphql/language/token_kind.py,sha256=irkHgRVJmMKEfF30ryfYXweIwFAW6x9CC3WfsnxS9pc,541
graphql/language/visitor.py,sha256=X8p9ujaahUHKggfoGA0IFs4xdGiBox8Vue0y3MtkUlw,13366
graphql/py.typed,sha256=RHlPOcmev1sfet1O1JxRLJNzm7rAo9WZwdmtj-XOw0o,66
graphql/pyutils/__init__.py,sha256=XTdieQ5K70QuyuDk0AdWJxzbBr5h9go5LhWodyDc_VU,1780
graphql/pyutils/__pycache__/__init__.cpython-39.pyc,,
graphql/pyutils/__pycache__/awaitable_or_value.cpython-39.pyc,,
graphql/pyutils/__pycache__/cached_property.cpython-39.pyc,,
graphql/pyutils/__pycache__/convert_case.cpython-39.pyc,,
graphql/pyutils/__pycache__/description.cpython-39.pyc,,
graphql/pyutils/__pycache__/did_you_mean.cpython-39.pyc,,
graphql/pyutils/__pycache__/frozen_dict.cpython-39.pyc,,
graphql/pyutils/__pycache__/frozen_error.cpython-39.pyc,,
graphql/pyutils/__pycache__/frozen_list.cpython-39.pyc,,
graphql/pyutils/__pycache__/group_by.cpython-39.pyc,,
graphql/pyutils/__pycache__/identity_func.cpython-39.pyc,,
graphql/pyutils/__pycache__/inspect.cpython-39.pyc,,
graphql/pyutils/__pycache__/is_awaitable.cpython-39.pyc,,
graphql/pyutils/__pycache__/is_iterable.cpython-39.pyc,,
graphql/pyutils/__pycache__/merge_kwargs.cpython-39.pyc,,
graphql/pyutils/__pycache__/natural_compare.cpython-39.pyc,,
graphql/pyutils/__pycache__/path.cpython-39.pyc,,
graphql/pyutils/__pycache__/print_path_list.cpython-39.pyc,,
graphql/pyutils/__pycache__/simple_pub_sub.cpython-39.pyc,,
graphql/pyutils/__pycache__/suggestion_list.cpython-39.pyc,,
graphql/pyutils/__pycache__/undefined.cpython-39.pyc,,
graphql/pyutils/awaitable_or_value.py,sha256=u_cg1aT9gYBRICN9ZIsZ-2EHvgybVbm8OC57EAJOE8o,139
graphql/pyutils/cached_property.py,sha256=wzHlppXgbHtC-qZtFeCDnzDpV5w76MSUe0qUD9343p8,1059
graphql/pyutils/convert_case.py,sha256=kal3RlSrbEurWWhIAkMk-QBEqaIB0BGeYQO0r93krF0,715
graphql/pyutils/description.py,sha256=JG5N_OQl_J1y_o4alR-6Dgi1WHEUBtBzac85Qm822OA,1980
graphql/pyutils/did_you_mean.py,sha256=r53UkwGnzq5nSBIzD5y65HBuX0Sg_RIC40DFeq-BELg,804
graphql/pyutils/frozen_dict.py,sha256=Bw3vwCJUluH3TWQqoB0VIoInbB2905Vsn7qdZwCYapc,1154
graphql/pyutils/frozen_error.py,sha256=m72HrnzqQMTZH2EGPseWSnrtwFLF6sq12zmv8c5_nbo,129
graphql/pyutils/frozen_list.py,sha256=wdJ_6xmJRDGwz9lD8VMnLc6P8riG2VJ0kpo1VO2MTAQ,1525
graphql/pyutils/group_by.py,sha256=os2HK7-Xf6wcVsnLISSzh6KlmkTClQ0OFHys8M20l6g,471
graphql/pyutils/identity_func.py,sha256=szpVmSzZ8c41E_MzP2GlMcGwLtzKRYaYrpTNhN6amQA,247
graphql/pyutils/inspect.py,sha256=Gr_5RbLm5hVtBde9dRnrA0YEH4GpnNY2xt7BSjkzTWM,5857
graphql/pyutils/is_awaitable.py,sha256=ojNU1T73loW2jcM-qx8bapktcFLQoPxGeJPFwUNP9lI,798
graphql/pyutils/is_iterable.py,sha256=z4Ru-VnJca_MmF8EgcUVefw5tdBxykEjHmYElyTeqW4,822
graphql/pyutils/merge_kwargs.py,sha256=1g_IUXD4kd3NhDvG70SXpyA1nKAcR0sgvZ30XdkTNUc,250
graphql/pyutils/natural_compare.py,sha256=gZmbIGLq8lx92dq8_xZJBfTPyLwoChSkxPtnHWk_fJs,478
graphql/pyutils/path.py,sha256=S-TY_JiXGZJGUxXcGZYkH3PE-OZczmB05pCnPr2Tr9o,923
graphql/pyutils/print_path_list.py,sha256=Z5HhjNeG6ii65YcslLhZAT1iiS1hMVpzHYFCUd7Ag2k,234
graphql/pyutils/simple_pub_sub.py,sha256=HWW0NIGafJvyAwgscvjKdZH5ZgF_9T06NAchmD6ZT4M,2539
graphql/pyutils/suggestion_list.py,sha256=D7S2zKTNSjo6AJNTWZLQLHCAyCI1K98HDYnFPTPiEvA,3570
graphql/pyutils/undefined.py,sha256=9evtPDuSzDTsTx7rlXdRp9c448pEYq3jPOznJ2gWHww,1226
graphql/subscription/__init__.py,sha256=hay2Sdc0Obgr5N53o8kQS0sbsDjZQAJCMJXJV75RQPM,733
graphql/subscription/__pycache__/__init__.cpython-39.pyc,,
graphql/type/__init__.py,sha256=Io6AQ9jU2HhxU0vNto3JcoNkN1_Xxl3izz8wdlM18zs,7148
graphql/type/__pycache__/__init__.cpython-39.pyc,,
graphql/type/__pycache__/assert_name.cpython-39.pyc,,
graphql/type/__pycache__/definition.cpython-39.pyc,,
graphql/type/__pycache__/directives.cpython-39.pyc,,
graphql/type/__pycache__/introspection.cpython-39.pyc,,
graphql/type/__pycache__/scalars.cpython-39.pyc,,
graphql/type/__pycache__/schema.cpython-39.pyc,,
graphql/type/__pycache__/validate.cpython-39.pyc,,
graphql/type/assert_name.py,sha256=cOrg0gs9Mh5MszPvoGBZK79-GZrHQU5H4b9LN7j9AxE,1052
graphql/type/definition.py,sha256=puqjXj4PpznL2SQ83HCQ0hDkxtgs4ogivw0tRaawKdM,65909
graphql/type/directives.py,sha256=WIcdaDUOECxNRfA1SYIrwAdxmeVAk35iqmQ4wBiZlgk,8914
graphql/type/introspection.py,sha256=35xQDg1fni_JxazTbiQgACODhgGTAFUYazSIQXjACkY,22877
graphql/type/scalars.py,sha256=wpiBrK7c24g4OvVeR1Nx-TFE3KzX52mgg3FDG3g5BvI,10697
graphql/type/schema.py,sha256=FESdeoT_OZ-34Rr5q2op83tstyz6N9xU9pzQJ-iVryc,19988
graphql/type/validate.py,sha256=O-TYiVPvdrH2pu6XHhmtbwffY7o0mWm-Pgx1wV3C1UQ,24809
graphql/utilities/__init__.py,sha256=1rGq-oCVL2yvrfsgUCfVBp0ibH76MfmQ-6Z2VH5Ohrg,3733
graphql/utilities/__pycache__/__init__.cpython-39.pyc,,
graphql/utilities/__pycache__/assert_valid_name.cpython-39.pyc,,
graphql/utilities/__pycache__/ast_from_value.cpython-39.pyc,,
graphql/utilities/__pycache__/ast_to_dict.cpython-39.pyc,,
graphql/utilities/__pycache__/build_ast_schema.cpython-39.pyc,,
graphql/utilities/__pycache__/build_client_schema.cpython-39.pyc,,
graphql/utilities/__pycache__/coerce_input_value.cpython-39.pyc,,
graphql/utilities/__pycache__/concat_ast.cpython-39.pyc,,
graphql/utilities/__pycache__/extend_schema.cpython-39.pyc,,
graphql/utilities/__pycache__/find_breaking_changes.cpython-39.pyc,,
graphql/utilities/__pycache__/get_introspection_query.cpython-39.pyc,,
graphql/utilities/__pycache__/get_operation_ast.cpython-39.pyc,,
graphql/utilities/__pycache__/get_operation_root_type.cpython-39.pyc,,
graphql/utilities/__pycache__/introspection_from_schema.cpython-39.pyc,,
graphql/utilities/__pycache__/lexicographic_sort_schema.cpython-39.pyc,,
graphql/utilities/__pycache__/print_schema.cpython-39.pyc,,
graphql/utilities/__pycache__/separate_operations.cpython-39.pyc,,
graphql/utilities/__pycache__/sort_value_node.cpython-39.pyc,,
graphql/utilities/__pycache__/strip_ignored_characters.cpython-39.pyc,,
graphql/utilities/__pycache__/type_comparators.cpython-39.pyc,,
graphql/utilities/__pycache__/type_from_ast.cpython-39.pyc,,
graphql/utilities/__pycache__/type_info.cpython-39.pyc,,
graphql/utilities/__pycache__/value_from_ast.cpython-39.pyc,,
graphql/utilities/__pycache__/value_from_ast_untyped.cpython-39.pyc,,
graphql/utilities/assert_valid_name.py,sha256=a4gBk6Meb2DQ597cVB3J4HXsNYYeZpiutdjSD8N7qDo,1026
graphql/utilities/ast_from_value.py,sha256=l-kQqDCY1wx4lpXyMIcT_o1x9i_HxLwwfEPU4J8DoRE,4771
graphql/utilities/ast_to_dict.py,sha256=oU-NKGXbcXsiYj0NFV-SB2YofANAjoiGpP46sa1cqjo,1527
graphql/utilities/build_ast_schema.py,sha256=yUsnPf9bDi3-SO6J1ByQipToR23A2xaTaxBaUg9K6no,3615
graphql/utilities/build_client_schema.py,sha256=1IfbMQ3WXvHGHPN04Qg8aG0l-La5DbWFEcN4J-n_W6Q,17306
graphql/utilities/coerce_input_value.py,sha256=Bqwtr3FolaVRNU0SYCFB9riW5RM3K3xQn-rvKU7n1Lk,6352
graphql/utilities/concat_ast.py,sha256=NLtrWTcYWS56KtnUvSXiL_icMoiqqmwnV1ybZamvD3s,570
graphql/utilities/extend_schema.py,sha256=lO6T3O4bckfUOfzQ4I7FF6VOGQiPsXpLPSKW8-RPtII,29909
graphql/utilities/find_breaking_changes.py,sha256=I_xFXUZ0b1ZcvAqvorg9P6EEz672nqxFLYbtcAqJs1k,20756
graphql/utilities/get_introspection_query.py,sha256=OUG18jn7o7UWeyQIxiEMtWoHjrgGBlAW-N7dcvp2uow,8278
graphql/utilities/get_operation_ast.py,sha256=sbZPoKhQ6vOrzjGGMJwpgrL9q2rHbQ3YcOMJPruyhe0,1087
graphql/utilities/get_operation_root_type.py,sha256=uE-pwyoRpycJ-sZYknDZBrNWRFGPXdK7owHU7HBKnlM,1512
graphql/utilities/introspection_from_schema.py,sha256=LN9W2z4pMPk6dcBxZvO3VpNDL6clplPnoOAjIjILrCA,1666
graphql/utilities/lexicographic_sort_schema.py,sha256=pKHICMo20ptH-WOhCiOhhTsV2r10_KGyuwiNkDwvJVc,6792
graphql/utilities/print_schema.py,sha256=uAXkynXrb82wRnHIMHw9oKj4hC52g94TbcIqy5bKFy4,9224
graphql/utilities/separate_operations.py,sha256=vZQraO37TFZdYbdNdhiIwQUOLvecINFiOXU8c4lq0UU,3406
graphql/utilities/sort_value_node.py,sha256=AHj2IsXXupt3ZtKKQoOAQYBa6KLGyaq6NthaaW_v7vc,1141
graphql/utilities/strip_ignored_characters.py,sha256=mvRBetwV0v7Cc3kzNcZaJV0phgGkI2w2l_Gj-CWbSbg,2945
graphql/utilities/type_comparators.py,sha256=OS2yvGe2_D8lwphzVuUhgT3pvib66qwuVhZMwnkWQUg,4629
graphql/utilities/type_from_ast.py,sha256=9pvdgtqkKhtVJbfdw6u_g3Q-TeDBgGl0FQI5O-O_f1c,1992
graphql/utilities/type_info.py,sha256=Koqnkp6yDmuuofBUklsfVVX2M4QObcO2jCAJpfBpKOA,11300
graphql/utilities/value_from_ast.py,sha256=arZqkMxIK3aARY0OY7t89FYOToRedfBjYNwwVA6hs7s,5965
graphql/utilities/value_from_ast_untyped.py,sha256=JRbTd5rbkZ6BUnhSxtn2IWlUQ_9SB9Yttn7EOj33uYk,3116
graphql/validation/__init__.py,sha256=_RV5kWuq1lPwwSv9S1cbjZPnb-MmoSNa2hLulVRuiKU,5780
graphql/validation/__pycache__/__init__.cpython-39.pyc,,
graphql/validation/__pycache__/specified_rules.cpython-39.pyc,,
graphql/validation/__pycache__/validate.cpython-39.pyc,,
graphql/validation/__pycache__/validation_context.cpython-39.pyc,,
graphql/validation/rules/__init__.py,sha256=7hcLp_zfvgMUSSyP7KqOmwdlL6I35760F8k5vgA0IZU,1080
graphql/validation/rules/__pycache__/__init__.cpython-39.pyc,,
graphql/validation/rules/__pycache__/executable_definitions.cpython-39.pyc,,
graphql/validation/rules/__pycache__/fields_on_correct_type.cpython-39.pyc,,
graphql/validation/rules/__pycache__/fragments_on_composite_types.cpython-39.pyc,,
graphql/validation/rules/__pycache__/known_argument_names.cpython-39.pyc,,
graphql/validation/rules/__pycache__/known_directives.cpython-39.pyc,,
graphql/validation/rules/__pycache__/known_fragment_names.cpython-39.pyc,,
graphql/validation/rules/__pycache__/known_type_names.cpython-39.pyc,,
graphql/validation/rules/__pycache__/lone_anonymous_operation.cpython-39.pyc,,
graphql/validation/rules/__pycache__/lone_schema_definition.cpython-39.pyc,,
graphql/validation/rules/__pycache__/max_introspection_depth_rule.cpython-39.pyc,,
graphql/validation/rules/__pycache__/no_fragment_cycles.cpython-39.pyc,,
graphql/validation/rules/__pycache__/no_undefined_variables.cpython-39.pyc,,
graphql/validation/rules/__pycache__/no_unused_fragments.cpython-39.pyc,,
graphql/validation/rules/__pycache__/no_unused_variables.cpython-39.pyc,,
graphql/validation/rules/__pycache__/overlapping_fields_can_be_merged.cpython-39.pyc,,
graphql/validation/rules/__pycache__/possible_fragment_spreads.cpython-39.pyc,,
graphql/validation/rules/__pycache__/possible_type_extensions.cpython-39.pyc,,
graphql/validation/rules/__pycache__/provided_required_arguments.cpython-39.pyc,,
graphql/validation/rules/__pycache__/scalar_leafs.cpython-39.pyc,,
graphql/validation/rules/__pycache__/single_field_subscriptions.cpython-39.pyc,,
graphql/validation/rules/__pycache__/unique_argument_definition_names.cpython-39.pyc,,
graphql/validation/rules/__pycache__/unique_argument_names.cpython-39.pyc,,
graphql/validation/rules/__pycache__/unique_directive_names.cpython-39.pyc,,
graphql/validation/rules/__pycache__/unique_directives_per_location.cpython-39.pyc,,
graphql/validation/rules/__pycache__/unique_enum_value_names.cpython-39.pyc,,
graphql/validation/rules/__pycache__/unique_field_definition_names.cpython-39.pyc,,
graphql/validation/rules/__pycache__/unique_fragment_names.cpython-39.pyc,,
graphql/validation/rules/__pycache__/unique_input_field_names.cpython-39.pyc,,
graphql/validation/rules/__pycache__/unique_operation_names.cpython-39.pyc,,
graphql/validation/rules/__pycache__/unique_operation_types.cpython-39.pyc,,
graphql/validation/rules/__pycache__/unique_type_names.cpython-39.pyc,,
graphql/validation/rules/__pycache__/unique_variable_names.cpython-39.pyc,,
graphql/validation/rules/__pycache__/values_of_correct_type.cpython-39.pyc,,
graphql/validation/rules/__pycache__/variables_are_input_types.cpython-39.pyc,,
graphql/validation/rules/__pycache__/variables_in_allowed_position.cpython-39.pyc,,
graphql/validation/rules/custom/__init__.py,sha256=h0D1LnBb5oNAEC9ntjavzfYxo7HlcykwEdK-wNxjLJg,46
graphql/validation/rules/custom/__pycache__/__init__.cpython-39.pyc,,
graphql/validation/rules/custom/__pycache__/no_deprecated.cpython-39.pyc,,
graphql/validation/rules/custom/__pycache__/no_schema_introspection.cpython-39.pyc,,
graphql/validation/rules/custom/no_deprecated.py,sha256=OcSpvdRS9Y6wX9uvl-PZtq7pC_Ot-v0jTRNrljvoUHo,4424
graphql/validation/rules/custom/no_schema_introspection.py,sha256=6c9xtx8wiv80UpCDIi_ZT89U6f1rn7Ajsn6jaBOilE0,1139
graphql/validation/rules/executable_definitions.py,sha256=KAI3qKyv_AMlFPsFen0wLvyc9hrFzmZDoxMK_EXCxSc,1528
graphql/validation/rules/fields_on_correct_type.py,sha256=XIyR2VMckgenDzXUlPREKlVtTMTfJ9T54OWCgUsnucU,4827
graphql/validation/rules/fragments_on_composite_types.py,sha256=6C2p-Xen2_WDVmMDaad4MLQmjvRuAqk-NShmzbQmvXk,1866
graphql/validation/rules/known_argument_names.py,sha256=ZuyNpVnqyGmVsLTLQdBwhLuF0B5GclKFmRPKrM3V784,3589
graphql/validation/rules/known_directives.py,sha256=Sp1nOlGzDk9nsQ7MrkvZhRIvtCDAIWbh7VQ_MLZA5Kw,4457
graphql/validation/rules/known_fragment_names.py,sha256=kFpJkyQubAJgm8tL7fpQjWNKZ5YdQMFL-31GcOfHajI,794
graphql/validation/rules/known_type_names.py,sha256=TloP0RW6o6re_HB9-t4ZeC_wcu6Ce_X8GyZ1iiIM2po,2832
graphql/validation/rules/lone_anonymous_operation.py,sha256=jZyXuS9mbSRYf2AOBGJQaA6hUppTjZrhNGfgfMgnj_M,1236
graphql/validation/rules/lone_schema_definition.py,sha256=GhataIieekcbACxEYHxHgOVBxmHrkn4EIxvUGkP4us4,1288
graphql/validation/rules/max_introspection_depth_rule.py,sha256=GAAetBM7YNdmezpzWt7QPmmUNAm_PsrNxyxt66pfu8g,3007
graphql/validation/rules/no_fragment_cycles.py,sha256=tg_6Or4KlIYkkIlBzbZxYDkj89oiog7WcCCGS9tn3Bk,3113
graphql/validation/rules/no_undefined_variables.py,sha256=FjFSRDAyOrZ9axtSnmNG76s5TXbalr9P5cR3GW_6eU0,1803
graphql/validation/rules/no_unused_fragments.py,sha256=oZ9AiSGUiL5DW2i3TO-ShqfI7PfYn_u9M6hukZh4dEU,1767
graphql/validation/rules/no_unused_variables.py,sha256=z1kG6Uq6kEFW5PT5-iu5VCthDrOPhLk9lVu6hzTenps,1871
graphql/validation/rules/overlapping_fields_can_be_merged.py,sha256=xBxS2oHu0ojfT3GwjIxmVHIcNY6FLai7F51icomGmug,28800
graphql/validation/rules/possible_fragment_spreads.py,sha256=0Fc9V0B3jedskBsA7ygApNY8V2TOBj8Bi_wIVeB452M,2464
graphql/validation/rules/possible_type_extensions.py,sha256=-WTHZHziGwH98zBPjEq6Lc90qRUYaV9XGGFJOCJt5Lk,3695
graphql/validation/rules/provided_required_arguments.py,sha256=61BEkKJTLd8WOwFD4IEsTFTTUM3dppqVzTLxeGdtft0,4462
graphql/validation/rules/scalar_leafs.py,sha256=uC1uZ2mmdjfaTXNmYohz-U6THz1P0a5YvpqcMgjG3qE,1433
graphql/validation/rules/single_field_subscriptions.py,sha256=EULPSh3R_ZCEUFl126xlKCo2_gWfi5UsEJ8Y7ilht6c,3204
graphql/validation/rules/unique_argument_definition_names.py,sha256=tDYOXSpPaCHpxxik_OwDyJ6KeZWSCkgP4jJ8op4m2sE,2872
graphql/validation/rules/unique_argument_names.py,sha256=TsyzvnqBv3b_KQFfNE1YtWsbU64slHN7lBQQVbv2rUY,1249
graphql/validation/rules/unique_directive_names.py,sha256=bLXhUJh0al8QzgYh2KP2-0Mf-GxSDYXsR3UoB6_0dA0,1570
graphql/validation/rules/unique_directives_per_location.py,sha256=r9yvrVUqPynC1BJCu2pZ3EMNTwKGcoNKukVZHOTvUJc,3238
graphql/validation/rules/unique_enum_value_names.py,sha256=Q1JWnXln3oPUYjkSAqQX9XU2lWB4BfxCxum1GaKwOr4,2228
graphql/validation/rules/unique_field_definition_names.py,sha256=UFxtkyi3tcvCSgDMOELaC55K3gEAwcg2vBt0gk9acjo,2574
graphql/validation/rules/unique_fragment_names.py,sha256=5OkCaJiQuXAvruGh_nuEtF3cIKlPon1aNjzmq3xohdI,1331
graphql/validation/rules/unique_input_field_names.py,sha256=_vfQriQ3yBBZatptCAEdwgNPBngBvBoBrW7BoDofWvw,1423
graphql/validation/rules/unique_operation_names.py,sha256=-kmKZ1QFWiCGOzmzImRS9kXo50oRb2LAc_wUoN1dVAw,1472
graphql/validation/rules/unique_operation_types.py,sha256=lfmj8mbRL89PBNgqMK-zd1x5fPM9H6XWITLMX1hHMfc,2375
graphql/validation/rules/unique_type_names.py,sha256=HzvhN-BZndndmh26uxn2fDwweb0RziERxqBoMnDwAWc,1723
graphql/validation/rules/unique_variable_names.py,sha256=jl7gmsVoEWw0uh-WAgpt234dWgRslrDlle5Edm-LdrQ,1089
graphql/validation/rules/values_of_correct_type.py,sha256=jdfPj1lxG6ZS98Ew78Z6jD8pvVqxKprLDTkbZI5rvgE,8123
graphql/validation/rules/variables_are_input_types.py,sha256=eOUPe04jGelFK0GJEF4kC6r7yn9EIlvig62JFXYhECo,1188
graphql/validation/rules/variables_in_allowed_position.py,sha256=KOsD7RxTaIbzl8KrL47ou-Cf7fN2R2eH9JOZMGMEylg,3711
graphql/validation/specified_rules.py,sha256=8tRIPPGoBAQSO_ums53n5bM74_j0zyYNleE26U9J5IQ,6144
graphql/validation/validate.py,sha256=oc3RhoHyyVplXjD4fglvomuRcFhqFm1DKL1CUy6xe-Q,4917
graphql/validation/validation_context.py,sha256=ya1O7YhDyv9EBDIYxyp-NN-FwgkOKyOvBTaToKBymz4,8579
graphql/version.py,sha256=mDbuC9A_lnm_0DIaCTG6xD7Mqx2lowJitRRd1HUAalA,1298
graphql_core-3.2.7.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
graphql_core-3.2.7.dist-info/METADATA,sha256=J5TF4NP_bEaVhQnu-fz4A1YQ6ur0kbfZRXis1GFZyrs,11127
graphql_core-3.2.7.dist-info/RECORD,,
graphql_core-3.2.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
graphql_core-3.2.7.dist-info/licenses/LICENSE,sha256=yNZp1W772bkilVXDWtYZ9r6kl0JZFELS42x5CIEVzXQ,1180
graphql_core-3.2.7.dist-info/top_level.txt,sha256=bIRDvzNJta2v00F-WlEvNQVzqDDYxZlbKG7gfkflOH8,8

View File

@@ -0,0 +1,5 @@
Wheel-Version: 1.0
Generator: setuptools (80.9.0)
Root-Is-Purelib: true
Tag: py3-none-any

View File

@@ -0,0 +1,23 @@
MIT License
Copyright (c) GraphQL Contributors (GraphQL.js)
Copyright (c) Syrus Akbary (GraphQL-core 2)
Copyright (c) Christoph Zwerschke (GraphQL-core 3)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.