summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-aiographql-client.spec445
-rw-r--r--sources1
3 files changed, 447 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..ae28d6b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/aiographql-client-1.0.3.tar.gz
diff --git a/python-aiographql-client.spec b/python-aiographql-client.spec
new file mode 100644
index 0000000..771beaf
--- /dev/null
+++ b/python-aiographql-client.spec
@@ -0,0 +1,445 @@
+%global _empty_manifest_terminate_build 0
+Name: python-aiographql-client
+Version: 1.0.3
+Release: 1
+Summary: An asyncio GraphQL client built on top of aiohttp and graphql-core-next
+License: MIT
+URL: https://github.com/abn/aiographql-client
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/5f/f8/0b07b91a3094c6e47bda833fe25adaabc665b8b8a119b66421c6c1cb45ab/aiographql-client-1.0.3.tar.gz
+BuildArch: noarch
+
+Requires: python3-cafeteria-asyncio
+Requires: python3-aiohttp
+Requires: python3-graphql-core
+Requires: python3-ujson
+
+%description
+# Asynchronous GraphQL Client
+[![PyPI version](https://badge.fury.io/py/aiographql-client.svg)](https://badge.fury.io/py/aiographql-client)
+[![Python Versions](https://img.shields.io/pypi/pyversions/aiographql-client)](https://pypi.org/project/aiographql-client/)
+[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
+[![Documentation Status](https://readthedocs.org/projects/aiographql-client/badge/?version=latest)](https://aiographql-client.readthedocs.io/en/latest/?badge=latest)
+[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
+[![Sonarcloud Status](https://sonarcloud.io/api/project_badges/measure?project=abn_aiographql-client&metric=alert_status)](https://sonarcloud.io/dashboard?id=abn_aiographql-client)
+[![](https://github.com/abn/aiographql-client/workflows/Test%20Suite/badge.svg)](https://github.com/abn/aiographql-client/actions?query=workflow%3A%22Test+Suite%22)
+
+An asynchronous GraphQL client built on top of aiohttp and graphql-core-next. The client by default introspects schemas and validates all queries prior to dispatching to the server.
+
+## Documentation
+
+For the most recent project documentation, you can visit https://aiographql-client.readthedocs.io/.
+
+## Installation
+`pip install aiographql-client`
+
+## Example Usage
+Here are some example usages of this client implementation. For more examples, and advanced scenarios,
+see [Usage Examples](https://aiographql-client.readthedocs.io/en/latest/examples.html) section in
+the documentation.
+
+### Simple Query
+```py
+async def get_logged_in_username(token: str) -> GraphQLResponse:
+ client = GraphQLClient(
+ endpoint="https://api.github.com/graphql",
+ headers={"Authorization": f"Bearer {token}"},
+ )
+ request = GraphQLRequest(
+ query="""
+ query {
+ viewer {
+ login
+ }
+ }
+ """
+ )
+ return await client.query(request=request)
+```
+
+```console
+>>> import asyncio
+>>> response = asyncio.run(get_logged_in_username("<TOKEN FROM GITHUB GRAPHQL API>"))
+>>> response.data
+{'viewer': {'login': 'username'}}
+```
+
+### Query Subscription
+```py
+async def print_city_updates(client: GraphQLClient, city: str) -> None:
+ request = GraphQLRequest(
+ query="""
+ subscription ($city:String!) {
+ city(where: {name: {_eq: $city}}) {
+ description
+ id
+ }
+ }
+ """,
+ variables={"city": city},
+ )
+ # subscribe to data and error events, and print them
+ await client.subscribe(
+ request=request, on_data=print, on_error=print, wait=True
+ )
+```
+
+For custom event specific callback registration, see [Callback Registry Documentation](https://aiographql-client.readthedocs.io/en/latest/examples.html#callback-registry).
+
+### Query Validation Failures
+If your query is invalid, thanks to graphql-core-next, we get a detailed exception in the traceback.
+
+```
+aiographql.client.exceptions.GraphQLClientValidationException: Query validation failed
+
+Cannot query field 'ids' on type 'chatbot'. Did you mean 'id'?
+
+GraphQL request (4:13)
+3: chatbot {
+4: ids, bot_names
+ ^
+5: }
+
+Cannot query field 'bot_names' on type 'chatbot'. Did you mean 'bot_name' or 'bot_language'?
+
+GraphQL request (4:18)
+3: chatbot {
+4: ids, bot_names
+ ^
+5: }
+
+```
+
+### Query Variables & Operations
+Support for multi-operation requests and variables is available via the client. For example,
+the following request contains multiple operations. The instance specifies default values to use.
+
+```py
+request = GraphQLRequest(
+ query="""
+ query get_bot_created($id: Int) {
+ chatbot(where: {id: {_eq: $id}}) {
+ id, created
+ }
+ }
+ query get_bot_name($id: Int) {
+ chatbot(where: {id: {_eq: $id}}) {
+ id, bot_name
+ }
+ }
+ """,
+ variables={"id": 109},
+ operation="get_bot_name"
+)
+```
+
+The default values can be overridden at the time of making the request if required.
+
+```py
+await client.query(request=request, variables={"id": 20}, operation="get_bot_created")
+```
+
+
+%package -n python3-aiographql-client
+Summary: An asyncio GraphQL client built on top of aiohttp and graphql-core-next
+Provides: python-aiographql-client
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-aiographql-client
+# Asynchronous GraphQL Client
+[![PyPI version](https://badge.fury.io/py/aiographql-client.svg)](https://badge.fury.io/py/aiographql-client)
+[![Python Versions](https://img.shields.io/pypi/pyversions/aiographql-client)](https://pypi.org/project/aiographql-client/)
+[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
+[![Documentation Status](https://readthedocs.org/projects/aiographql-client/badge/?version=latest)](https://aiographql-client.readthedocs.io/en/latest/?badge=latest)
+[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
+[![Sonarcloud Status](https://sonarcloud.io/api/project_badges/measure?project=abn_aiographql-client&metric=alert_status)](https://sonarcloud.io/dashboard?id=abn_aiographql-client)
+[![](https://github.com/abn/aiographql-client/workflows/Test%20Suite/badge.svg)](https://github.com/abn/aiographql-client/actions?query=workflow%3A%22Test+Suite%22)
+
+An asynchronous GraphQL client built on top of aiohttp and graphql-core-next. The client by default introspects schemas and validates all queries prior to dispatching to the server.
+
+## Documentation
+
+For the most recent project documentation, you can visit https://aiographql-client.readthedocs.io/.
+
+## Installation
+`pip install aiographql-client`
+
+## Example Usage
+Here are some example usages of this client implementation. For more examples, and advanced scenarios,
+see [Usage Examples](https://aiographql-client.readthedocs.io/en/latest/examples.html) section in
+the documentation.
+
+### Simple Query
+```py
+async def get_logged_in_username(token: str) -> GraphQLResponse:
+ client = GraphQLClient(
+ endpoint="https://api.github.com/graphql",
+ headers={"Authorization": f"Bearer {token}"},
+ )
+ request = GraphQLRequest(
+ query="""
+ query {
+ viewer {
+ login
+ }
+ }
+ """
+ )
+ return await client.query(request=request)
+```
+
+```console
+>>> import asyncio
+>>> response = asyncio.run(get_logged_in_username("<TOKEN FROM GITHUB GRAPHQL API>"))
+>>> response.data
+{'viewer': {'login': 'username'}}
+```
+
+### Query Subscription
+```py
+async def print_city_updates(client: GraphQLClient, city: str) -> None:
+ request = GraphQLRequest(
+ query="""
+ subscription ($city:String!) {
+ city(where: {name: {_eq: $city}}) {
+ description
+ id
+ }
+ }
+ """,
+ variables={"city": city},
+ )
+ # subscribe to data and error events, and print them
+ await client.subscribe(
+ request=request, on_data=print, on_error=print, wait=True
+ )
+```
+
+For custom event specific callback registration, see [Callback Registry Documentation](https://aiographql-client.readthedocs.io/en/latest/examples.html#callback-registry).
+
+### Query Validation Failures
+If your query is invalid, thanks to graphql-core-next, we get a detailed exception in the traceback.
+
+```
+aiographql.client.exceptions.GraphQLClientValidationException: Query validation failed
+
+Cannot query field 'ids' on type 'chatbot'. Did you mean 'id'?
+
+GraphQL request (4:13)
+3: chatbot {
+4: ids, bot_names
+ ^
+5: }
+
+Cannot query field 'bot_names' on type 'chatbot'. Did you mean 'bot_name' or 'bot_language'?
+
+GraphQL request (4:18)
+3: chatbot {
+4: ids, bot_names
+ ^
+5: }
+
+```
+
+### Query Variables & Operations
+Support for multi-operation requests and variables is available via the client. For example,
+the following request contains multiple operations. The instance specifies default values to use.
+
+```py
+request = GraphQLRequest(
+ query="""
+ query get_bot_created($id: Int) {
+ chatbot(where: {id: {_eq: $id}}) {
+ id, created
+ }
+ }
+ query get_bot_name($id: Int) {
+ chatbot(where: {id: {_eq: $id}}) {
+ id, bot_name
+ }
+ }
+ """,
+ variables={"id": 109},
+ operation="get_bot_name"
+)
+```
+
+The default values can be overridden at the time of making the request if required.
+
+```py
+await client.query(request=request, variables={"id": 20}, operation="get_bot_created")
+```
+
+
+%package help
+Summary: Development documents and examples for aiographql-client
+Provides: python3-aiographql-client-doc
+%description help
+# Asynchronous GraphQL Client
+[![PyPI version](https://badge.fury.io/py/aiographql-client.svg)](https://badge.fury.io/py/aiographql-client)
+[![Python Versions](https://img.shields.io/pypi/pyversions/aiographql-client)](https://pypi.org/project/aiographql-client/)
+[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
+[![Documentation Status](https://readthedocs.org/projects/aiographql-client/badge/?version=latest)](https://aiographql-client.readthedocs.io/en/latest/?badge=latest)
+[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
+[![Sonarcloud Status](https://sonarcloud.io/api/project_badges/measure?project=abn_aiographql-client&metric=alert_status)](https://sonarcloud.io/dashboard?id=abn_aiographql-client)
+[![](https://github.com/abn/aiographql-client/workflows/Test%20Suite/badge.svg)](https://github.com/abn/aiographql-client/actions?query=workflow%3A%22Test+Suite%22)
+
+An asynchronous GraphQL client built on top of aiohttp and graphql-core-next. The client by default introspects schemas and validates all queries prior to dispatching to the server.
+
+## Documentation
+
+For the most recent project documentation, you can visit https://aiographql-client.readthedocs.io/.
+
+## Installation
+`pip install aiographql-client`
+
+## Example Usage
+Here are some example usages of this client implementation. For more examples, and advanced scenarios,
+see [Usage Examples](https://aiographql-client.readthedocs.io/en/latest/examples.html) section in
+the documentation.
+
+### Simple Query
+```py
+async def get_logged_in_username(token: str) -> GraphQLResponse:
+ client = GraphQLClient(
+ endpoint="https://api.github.com/graphql",
+ headers={"Authorization": f"Bearer {token}"},
+ )
+ request = GraphQLRequest(
+ query="""
+ query {
+ viewer {
+ login
+ }
+ }
+ """
+ )
+ return await client.query(request=request)
+```
+
+```console
+>>> import asyncio
+>>> response = asyncio.run(get_logged_in_username("<TOKEN FROM GITHUB GRAPHQL API>"))
+>>> response.data
+{'viewer': {'login': 'username'}}
+```
+
+### Query Subscription
+```py
+async def print_city_updates(client: GraphQLClient, city: str) -> None:
+ request = GraphQLRequest(
+ query="""
+ subscription ($city:String!) {
+ city(where: {name: {_eq: $city}}) {
+ description
+ id
+ }
+ }
+ """,
+ variables={"city": city},
+ )
+ # subscribe to data and error events, and print them
+ await client.subscribe(
+ request=request, on_data=print, on_error=print, wait=True
+ )
+```
+
+For custom event specific callback registration, see [Callback Registry Documentation](https://aiographql-client.readthedocs.io/en/latest/examples.html#callback-registry).
+
+### Query Validation Failures
+If your query is invalid, thanks to graphql-core-next, we get a detailed exception in the traceback.
+
+```
+aiographql.client.exceptions.GraphQLClientValidationException: Query validation failed
+
+Cannot query field 'ids' on type 'chatbot'. Did you mean 'id'?
+
+GraphQL request (4:13)
+3: chatbot {
+4: ids, bot_names
+ ^
+5: }
+
+Cannot query field 'bot_names' on type 'chatbot'. Did you mean 'bot_name' or 'bot_language'?
+
+GraphQL request (4:18)
+3: chatbot {
+4: ids, bot_names
+ ^
+5: }
+
+```
+
+### Query Variables & Operations
+Support for multi-operation requests and variables is available via the client. For example,
+the following request contains multiple operations. The instance specifies default values to use.
+
+```py
+request = GraphQLRequest(
+ query="""
+ query get_bot_created($id: Int) {
+ chatbot(where: {id: {_eq: $id}}) {
+ id, created
+ }
+ }
+ query get_bot_name($id: Int) {
+ chatbot(where: {id: {_eq: $id}}) {
+ id, bot_name
+ }
+ }
+ """,
+ variables={"id": 109},
+ operation="get_bot_name"
+)
+```
+
+The default values can be overridden at the time of making the request if required.
+
+```py
+await client.query(request=request, variables={"id": 20}, operation="get_bot_created")
+```
+
+
+%prep
+%autosetup -n aiographql-client-1.0.3
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-aiographql-client -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 1.0.3-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..1158860
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+95a6a78711700ae76c6361cbb66ed39b aiographql-client-1.0.3.tar.gz