python的全面graphql实现。

py-gql的Python项目详细描述


PY GQL

CircleCICodecovPyPIPyPI - Python VersionPyPI - WheelRead the Docs (version)

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 Guideexamples文件夹中提供的一些更相关的示例。

tests还应该提供一些人为的exmaple。

目标和状态

这个项目最初是作为一个实验/学习项目诞生的,我在工作中遇到了一些挫折。

最初的主要目标是:

  • 深入了解graphql

  • 提供替代graphql-core的方法:

    • 跟踪规范的最新版本(但graphql-core没有)
    • 这样做不会成为js代码的端口,当我们试图扩展库时,这会导致一些奇怪的边缘情况
    • 保持对python 2的支持(而graphql-core-next)没有(这不再是focu,0.2版放弃了对python2的支持)。
    • (主观的)为了对我们的用例更加有用,理想的结果应该介于Graphenegraphql-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获取有关特定任务的帮助。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaPax考试:从非标准Maven存储库解析Karaf特性存储库(XML文件)   java Spring启动Bean创建异常   java中将ArrayList转换为数组的方法   Android Studio的java Unity插件。   java在CheckStyle中从方法计数中排除getter和setter   HibernateJava。sql。SQLSyntaxErrorException:表/视图“序列”不存在   与命令行程序Java vs C通信   java WebView膨胀异常   java在O(n)java8流中寻找两个列表的交集   java使用Gradle运行单元测试时,最大堆大小在哪里设置?   ssl加载java应用程序(CXF)内的jks文件   CI:Jenkins Git:Simple Java项目:希望在特定时间在脚本上发送消息   java根据位置更改数字   java按数值排序字符串数组   macos java版本“1.6.0_65”是否与java 6模棱两可?   Cassandra中的java时间戳