python的全面graphql实现。
py-gql的Python项目详细描述
PY GQL
py gql是一个纯pythonGraphQL实现,旨在创建graphql服务器。
它支持:
- 分析graphql查询语言和模式定义语言。
- 以编程方式并从模式定义文件(包括对模式指令的支持)构建graphql类型的模式。
- 针对类型架构验证和执行GraphQL请求。
快速链接
安装
pip install py-gql
有关详细信息,请参见install.rst。
用法和示例
你好世界
from py_gql import build_schema, graphql_blocking schema = build_schema( """ type Query { hello(value: String = "world"): String! } """ ) @schema.resolver("Query.hello") def resolve_hello(*_, value): return f"Hello {value}!" result = graphql_blocking(schema, '{ hello(value: "Foo") }') assert result.response() == { "data": { "hello": "Hello Foo!" } }
有关更多用法示例,可以参考User Guide和examples文件夹中提供的一些更相关的示例。
tests还应该提供一些人为的exmaple。
目标和状态
这个项目最初是作为一个实验/学习项目诞生的,我在工作中遇到了一些挫折。
最初的主要目标是:
深入了解graphql
提供替代
graphql-core
的方法:- 跟踪规范的最新版本(但
graphql-core
没有) - 这样做不会成为js代码的端口,当我们试图扩展库时,这会导致一些奇怪的边缘情况
- 保持对python 2的支持(而
graphql-core-next
)没有(这不再是focu,0.2版放弃了对python2的支持)。 - (主观的)为了对我们的用例更加有用,理想的结果应该介于
Graphene
和graphql-core
- 使我们更容易构建/包含一些额外的工具,如自定义跟踪、自定义验证和基于SDL的工具以及Builder基础结构,以支持在现有数据层(如ORM)上容易地实现Gracql层。
- 跟踪规范的最新版本(但
并不是所有这些点都满足,但py-gql应该准备好供一般使用。然而,它仍然处于一个相当实验的阶段,并反映出版本仍然处于0.x.y
阶段。随着代码库的不同部分被迭代,并且越来越多地用于生产代码库,api仍然会发生变化。
开发设置
确保使用的是Python3.6+。
在安装开发依赖项之前克隆此repo并创建一个virtualenv:
git clone git@github.com:lirsacc/py-gql.git python -m venv $WORKON_HOME/py-gql --copies pip install -U -r dev-requirements.txt
在那里,大多数开发任务都可以通过invoke获得。
使用inv -l
列出所有可用任务,并使用inv {TASKS} --help
获取有关特定任务的帮助。