graphql-api 1.6.10__tar.gz → 1.7.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {graphql_api-1.6.10 → graphql_api-1.7.0}/.github/workflows/python-package.yml +1 -1
- {graphql_api-1.6.10 → graphql_api-1.7.0}/PKG-INFO +8 -3
- graphql_api-1.7.0/VERSION +1 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/remote.py +8 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api.egg-info/PKG-INFO +8 -3
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api.egg-info/requires.txt +1 -1
- {graphql_api-1.6.10 → graphql_api-1.7.0}/pyproject.toml +7 -2
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_remote.py +12 -0
- graphql_api-1.7.0/uv.lock +1506 -0
- graphql_api-1.6.10/VERSION +0 -1
- graphql_api-1.6.10/uv.lock +0 -952
- {graphql_api-1.6.10 → graphql_api-1.7.0}/.github/workflows/pages.yml +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/.gitignore +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/.vscode/settings.json +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/AGENTS.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/CLAUDE.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/LICENSE +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/README.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/README.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/_index.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/_index.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/advanced-features/_index.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/advanced-features/directives.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/advanced-features/performance.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/advanced-features/schema-filtering.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/building-applications/_index.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/building-applications/documentation.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/building-applications/error-handling.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/distributed-systems/_index.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/distributed-systems/federation.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/distributed-systems/pagination-relay.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/distributed-systems/remote-graphql.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/fundamentals/_index.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/fundamentals/async-and-subscriptions.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/fundamentals/defining-schemas.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/fundamentals/enums-interfaces.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/fundamentals/field-types.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/fundamentals/getting-started.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/fundamentals/mutations.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/fundamentals/object-types.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/fundamentals/pydantic-and-dataclasses.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/production/_index.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/production/context-metadata.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/production/middleware.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/reference/_index.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/reference/api-reference.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/reference/contributing.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/content/docs/reference/examples.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/hugo.toml +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/docs/index.md +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/__init__.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/api.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/context.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/dataclass_mapping.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/decorators.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/directives.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/error.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/exception.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/executor.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/federation/__init__.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/federation/directives.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/federation/federation.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/federation/types.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/mapper.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/middleware.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/mutation_schema.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/pydantic.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/pydantic_utils.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/reduce.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/relay.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/schema.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/schema_filter.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/type_utils.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/types.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api/utils.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api.egg-info/SOURCES.txt +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api.egg-info/dependency_links.txt +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/graphql_api.egg-info/top_level.txt +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/setup.cfg +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/__init__.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_async.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_calculator.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_custom_suffixes.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_custom_types.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_dataclass.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_dataclass_relationships.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_decorator_patterns.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_directives.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_docs_advanced.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_docs_async_subscriptions.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_docs_defining_schemas.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_docs_field_types.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_docs_getting_started.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_docs_relay.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_docstrings.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_error.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_executor_signature.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_federation.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_federation_example.graphql +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_federation_example.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_filtering.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_graphql.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_middleware.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_performance.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_plain_functions.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_pydantic.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_relay.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_schema.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_subscriptions.py +0 -0
- {graphql_api-1.6.10 → graphql_api-1.7.0}/tests/test_unified_vs_explicit_schema.py +0 -0
|
@@ -17,7 +17,7 @@ jobs:
|
|
|
17
17
|
strategy:
|
|
18
18
|
fail-fast: false
|
|
19
19
|
matrix:
|
|
20
|
-
python-version: ["3.11", "3.12"] # graphql-api requires Python 3.11+
|
|
20
|
+
python-version: ["3.11", "3.12", "3.13", "3.14", "3.15"] # graphql-api requires Python 3.11+
|
|
21
21
|
|
|
22
22
|
steps:
|
|
23
23
|
- name: Checkout repository
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: graphql-api
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.7.0
|
|
4
4
|
Summary: A framework for building Python GraphQL APIs.
|
|
5
5
|
Author-email: Robert Parker <rob@parob.com>
|
|
6
6
|
License: MIT
|
|
@@ -10,12 +10,17 @@ Keywords: GraphQL,GraphQL-API,GraphQLAPI,Server
|
|
|
10
10
|
Classifier: Development Status :: 3 - Alpha
|
|
11
11
|
Classifier: Intended Audience :: Developers
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
13
18
|
Classifier: License :: OSI Approved :: MIT License
|
|
14
19
|
Classifier: Operating System :: OS Independent
|
|
15
|
-
Requires-Python:
|
|
20
|
+
Requires-Python: >=3.11
|
|
16
21
|
Description-Content-Type: text/markdown
|
|
17
22
|
License-File: LICENSE
|
|
18
|
-
Requires-Dist: graphql-core
|
|
23
|
+
Requires-Dist: graphql-core<3.3
|
|
19
24
|
Requires-Dist: requests
|
|
20
25
|
Requires-Dist: typing-inspect
|
|
21
26
|
Requires-Dist: aiohttp
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.7.0
|
|
@@ -157,6 +157,14 @@ class GraphQLRemoteExecutor(GraphQLBaseExecutor, GraphQLObjectType):
|
|
|
157
157
|
A GraphQL executor that forwards all operations to a remote GraphQL service.
|
|
158
158
|
"""
|
|
159
159
|
|
|
160
|
+
def __new__(cls, url, name="Remote", *args, **kwargs):
|
|
161
|
+
# graphql-core >= 3.2.7 gives GraphQLNamedType a __new__(cls, name, ...)
|
|
162
|
+
# that checks for reserved type names. Our first argument is the URL, so
|
|
163
|
+
# pass the type name explicitly (older versions have no such __new__).
|
|
164
|
+
if GraphQLNamedType.__new__ is object.__new__:
|
|
165
|
+
return super().__new__(cls)
|
|
166
|
+
return super().__new__(cls, name)
|
|
167
|
+
|
|
160
168
|
def __init__(
|
|
161
169
|
self,
|
|
162
170
|
url,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: graphql-api
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.7.0
|
|
4
4
|
Summary: A framework for building Python GraphQL APIs.
|
|
5
5
|
Author-email: Robert Parker <rob@parob.com>
|
|
6
6
|
License: MIT
|
|
@@ -10,12 +10,17 @@ Keywords: GraphQL,GraphQL-API,GraphQLAPI,Server
|
|
|
10
10
|
Classifier: Development Status :: 3 - Alpha
|
|
11
11
|
Classifier: Intended Audience :: Developers
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
13
18
|
Classifier: License :: OSI Approved :: MIT License
|
|
14
19
|
Classifier: Operating System :: OS Independent
|
|
15
|
-
Requires-Python:
|
|
20
|
+
Requires-Python: >=3.11
|
|
16
21
|
Description-Content-Type: text/markdown
|
|
17
22
|
License-File: LICENSE
|
|
18
|
-
Requires-Dist: graphql-core
|
|
23
|
+
Requires-Dist: graphql-core<3.3
|
|
19
24
|
Requires-Dist: requests
|
|
20
25
|
Requires-Dist: typing-inspect
|
|
21
26
|
Requires-Dist: aiohttp
|
|
@@ -4,7 +4,7 @@ dynamic = ["version"]
|
|
|
4
4
|
description = "A framework for building Python GraphQL APIs."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = {text = "MIT"}
|
|
7
|
-
requires-python = ">=3.11
|
|
7
|
+
requires-python = ">=3.11"
|
|
8
8
|
authors = [
|
|
9
9
|
{name = "Robert Parker", email = "rob@parob.com"}
|
|
10
10
|
]
|
|
@@ -13,11 +13,16 @@ classifiers = [
|
|
|
13
13
|
"Development Status :: 3 - Alpha",
|
|
14
14
|
"Intended Audience :: Developers",
|
|
15
15
|
"Programming Language :: Python :: 3",
|
|
16
|
+
"Programming Language :: Python :: 3.11",
|
|
17
|
+
"Programming Language :: Python :: 3.12",
|
|
18
|
+
"Programming Language :: Python :: 3.13",
|
|
19
|
+
"Programming Language :: Python :: 3.14",
|
|
20
|
+
"Programming Language :: Python :: 3.15",
|
|
16
21
|
"License :: OSI Approved :: MIT License",
|
|
17
22
|
"Operating System :: OS Independent",
|
|
18
23
|
]
|
|
19
24
|
dependencies = [
|
|
20
|
-
"graphql-core",
|
|
25
|
+
"graphql-core<3.3",
|
|
21
26
|
"requests",
|
|
22
27
|
"typing-inspect",
|
|
23
28
|
"aiohttp",
|
|
@@ -1098,3 +1098,15 @@ class TestGraphQLRemote:
|
|
|
1098
1098
|
roll.fetch() # type: ignore[reportIncompatibleMethodOverride]
|
|
1099
1099
|
|
|
1100
1100
|
assert roll.students() == ["alice", "bob"]
|
|
1101
|
+
|
|
1102
|
+
def test_remote_executor_construction(self) -> None:
|
|
1103
|
+
# graphql-core >= 3.2.7 routes the first constructor argument to
|
|
1104
|
+
# GraphQLNamedType.__new__ as the type name; the URL must not end up
|
|
1105
|
+
# there, and keyword-only construction must work. Fields are resolved
|
|
1106
|
+
# lazily, so no request is made here.
|
|
1107
|
+
by_keyword = GraphQLRemoteExecutor(url="http://localhost:1/graphql")
|
|
1108
|
+
positional = GraphQLRemoteExecutor("http://localhost:1/graphql", "Upstream")
|
|
1109
|
+
|
|
1110
|
+
assert by_keyword.name == "Remote"
|
|
1111
|
+
assert positional.name == "Upstream"
|
|
1112
|
+
assert positional.url == "http://localhost:1/graphql"
|