Skip to main content

Python 的综合 GraphQL 实现。

项目描述

py-gql

GitHub 工作流状态 编解码器 派皮 PyPI - Python 版本 车轮 阅读文档(版本)

py-gql 是一个纯 Python GraphQL实现,旨在创建 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 "Hello {}!".format(value)


result = graphql_blocking(schema, '{ hello(value: "World") }')

assert result.response() == {
    "data": {
        "hello": "Hello World!"
    }
}

有关更多使用示例,您可以参考用户指南和示例文件夹中提供的更多相关示例。

测试还应该提供一些人为的例子。

目标和状态

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

最初的主要目标是:

  • 深入了解 GraphQL

  • 提供替代方案graphql-core

    • 跟踪规范的最新版本(graphql-core当时没有)
    • 这样做没有成为 JS 代码的端口,当我们尝试扩展库时会导致一些奇怪的边缘情况
    • 继续支持 Python 2
    • (主观)尝试对我们的用例更有用,理想的结果将介于两者Graphene之间graphql-core
    • 使我们更容易构建/包含一些额外的工具,例如自定义跟踪、自定义验证和基于 SDL 的工具以及构建器基础架构,以支持在现有数据层(例如 ORM)上轻松实现 graphql 层

还不是所有这些点都满足了,有些已经随着时间的推移而改变,但是 py-gql 应该已经准备好用于一般用途了。然而,它仍处于一个相当实验阶段,并反映版本仍在0.x.y.API 仍会随着代码库的不同部分被迭代并越来越多地用于生产代码库而发生变化。

开发设置

确保您使用的是 Python 3.6+(您可以在 3.5 下运行测试,但不保证黑色等其他开发任务可以正常工作)。

在安装开发依赖项之前克​​隆这个 repo 并创建一个 virtualenv:

git clone git@github.com:lirsacc/py-gql.git
python -m venv $WORKON_HOME/py-gql --copies
pip install -U -r requirements-dev.txt
pip install -e .

开发任务可通过调用获得。选中tasks.py或使用inv -l列出所有可用任务并inv --help {TASK}获取特定任务的帮助。使用的大多数工具应该可以直接使用,但任务提供了一些常见的别名和目标。

作为快捷方式,inv check将运行通常在 CI 上运行的所有检查(lint、typecheck 和测试)。

CI 在Github Actions上完成。

分支机构

  • 最后一个标签应该对应于最新的发布版本
  • master包含计划发布的未发布更改
  • dev用于试验和硬性更改,例如变基和强制推送。现在这是我在副项目中使用的分支,也是大部分迭代发生的地方。

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

py_gql-0.6.1.tar.gz (247.9 kB 查看哈希

已上传 source

内置分布

py_gql-0.6.1-py3-none-any.whl (143.2 kB 查看哈希

已上传 py3