Skip to main content

轻流 OpenAPI Python SDK - 基于 httpx 的同步/异步客户端

Project description

轻流 OpenAPI Python SDK

Python Version License: MIT Code Style: Ruff

轻流无代码平台 OpenAPI 的 Python SDK,基于官方 Java SDK 功能对等封装。

✨ 特性

  • 功能完整:覆盖 40+ API 接口,涵盖应用管理、环境管理、通讯录管理
  • Pythonic 设计:类型提示、异步支持、上下文管理
  • 同步/异步双模式:基于 httpx,一套代码同时支持 sync 和 async
  • 自动重试:指数退避重试策略,应对网络波动
  • 分页工具:内置自动翻页功能,轻松获取全量数据
  • 完善异常体系:细粒度异常分类,便于错误处理
  • 生产就绪:连接池管理、超时控制、结构化日志

📦 安装

# 从本地安装
pip install -e .

# 或从 PyPI 安装(待发布)
pip install qingflow-sdk

🚀 快速开始

基础使用

from qingflow import QingflowClient, GetAppDataRequest, QueryCondition

# 初始化客户端
client = QingflowClient(access_token="your-access-token")

# 查询应用数据
request = GetAppDataRequest(
    page_num=1,
    page_size=20,
    queries=[QueryCondition(que_id=1001, search_key="张三")]
)
response = client.app.get_app_data("customer_mgmt", request)

if response.is_success:
    for item in response.result.result:
        print(f"Apply ID: {item.apply_id}")
else:
    print(f"错误:{response.err_msg}")

添加数据

from qingflow import AddAppDataRequest, AnswerDTO, ValueDTO

request = AddAppDataRequest(
    answers=[
        AnswerDTO(
            que_id=1001,
            values=[ValueDTO(value="张三")]
        ),
        AnswerDTO(
            que_id=1002,
            values=[ValueDTO(value="zhangsan@example.com")]
        ),
    ]
)
response = client.app.add_app_data("customer_mgmt", request)
print(f"添加成功,Apply ID: {response.result.apply_id}")

异步使用

import asyncio
from qingflow import QingflowClient

async def main():
    async with QingflowClient(access_token="your-token", client_type="async") as client:
        response = await client.app.async_get_app_data("app_key", request)
        print(response.result)

asyncio.run(main())

自动分页获取全量数据

# 自动翻页获取所有用户
all_users = client.contact.loop_get_all_users(page_size=200)
print(f"共获取 {len(all_users)} 个用户")

# 自动翻页获取所有应用数据
all_data = client.app.loop_get_all_app_data("app_key", page_size=200)

上下文管理

with QingflowClient(access_token="your-token") as client:
    response = client.app.get_app_data("app_key", request)
# 自动关闭连接

临时切换 Token

with client.with_token("temp-token"):
    response = client.app.get_app_data("app_key", request)
# 自动恢复原 token

📚 模块说明

应用管理(App)

# 获取应用数据
client.app.get_app_data(app_key, request)

# 添加数据
client.app.add_app_data(app_key, request)

# 更新数据
client.app.update_app_data(apply_id, request)

# 删除数据
client.app.delete_app_data(app_key, request)

# 插入或更新(根据主键判断)
client.app.insert_or_update_data(app_key, primary_key_que_id, primary_key_value, request)

# 流程审批
client.app.audit(apply_id, user_id, request)

# 获取流程日志
client.app.audit_record(apply_id)

# 获取报表数据
client.app.get_chart_data(chart_key, request)

# 获取应用列表
client.app.get_app_list(request)

环境管理(Env)

注意:以下接口仅限专有云环境使用

# 获取环境级 Token
client.env.get_admin_access_token(environ_id, env_secret)

# 创建用户
client.env.create_qingflow_user(admin_access_token, request)

# 创建工作区
client.env.create_workspace(admin_access_token, request)

# 获取工作区信息
client.env.get_workspace_info_with_ws_id(admin_access_token, ws_id)

通讯录管理(Contact)

# 获取用户列表
client.contact.get_users(page)

# 获取单个用户
client.contact.get_single_user(user_id)

# 创建用户
client.contact.create_user(request)

# 获取部门列表
client.contact.get_departments()

# 获取部门成员
client.contact.get_department_members(dept_id, fetch_child=True)

# 获取角色列表
client.contact.get_roles()

# 根据手机号或邮箱查询用户
client.contact.get_user_by_email_or_mobile(mobile="13800138000")

⚙️ 配置说明

环境变量

# .env 文件
QINGFLOW_ACCESS_TOKEN=your-access-token
QINGFLOW_BASE_DOMAIN=https://api.qingflow.com
QINGFLOW_TIMEOUT=30.0
QINGFLOW_MAX_RETRIES=3
QINGFLOW_LOG_LEVEL=INFO

代码配置

client = QingflowClient(
    access_token="your-token",
    base_domain="https://api.qingflow.com",
    timeout=60.0,
    max_retries=5,
    auto_assert_success=True,
    log_requests=True,
    log_responses=True,
)

🧪 开发测试

# 安装开发依赖
pip install -e ".[dev]"

# 运行测试
pytest

# 代码检查
ruff check .
mypy .

📄 许可证

MIT License - 详见 LICENSE 文件

👤 作者

高文伟

🙏 致谢

本项目基于轻流官方 Java SDK 的功能实现,感谢轻流团队提供的 API 文档和 Java SDK 参考实现。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qingflow_sdk-1.0.3.tar.gz (34.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qingflow_sdk-1.0.3-py3-none-any.whl (37.3 kB view details)

Uploaded Python 3

File details

Details for the file qingflow_sdk-1.0.3.tar.gz.

File metadata

  • Download URL: qingflow_sdk-1.0.3.tar.gz
  • Upload date:
  • Size: 34.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for qingflow_sdk-1.0.3.tar.gz
Algorithm Hash digest
SHA256 2ee59bb825c3187bec850c4c405af971feda8f0f7fd0556e2a851e1f6b9ed8f9
MD5 338d8d4449ff151050b48eb9f01a94a9
BLAKE2b-256 ca0ca526e15fd20a24b05a2e71e47a0629f841f668fd4397cc90b71cb807f7f1

See more details on using hashes here.

File details

Details for the file qingflow_sdk-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: qingflow_sdk-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 37.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for qingflow_sdk-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 87a67421c165829ff3802810d8e1e89fa09d1709607d1de58cac2bf49f29e64d
MD5 d3cd5386ef684d773d0b46b4c95c9dbf
BLAKE2b-256 2ceb52805d975e09dd5f2711837d59ddca7f745bc7ff5c8b7769d53c25602d99

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page