Skip to main content

A safe and extensible expression engine for Python with template rendering capabilities

Project description

QData Expression

安全、可扩展的 Python 表达式引擎

广东轻亿云软件科技有限公司 开发
「轻易云数据集成平台」核心组件

Python 3.11+ License: AGPL v3 PyPI version Downloads CI Coverage Jinja2


🌟 关于轻易云数据集成平台

数据集成,简单看得见

轻易云是一款企业级数据集成平台,专注于帮助企业快速、高效地打通各类业务系统之间的数据通道。

轻易云

✨ 平台亮点

  • 🔌 即插即用:无需复杂开发,配置即连接,支持 500+ 主流应用系统对接
  • 👁️ 全程可视:数据流动、转换过程、执行状态一目了然,如同"物流跟踪"般清晰透明
  • 高性能引擎:基于优化的执行引擎,轻松处理复杂表达式求值
  • 🛡️ 企业级可靠:完善的安全沙箱机制,防止代码注入和恶意操作
  • 🧩 灵活扩展:插件化架构设计,支持自定义函数和过滤器扩展

🎯 适用场景

场景 描述
动态计算 业务规则引擎中的动态表达式求值
模板渲染 配置化的消息模板、报告生成
数据转换 ETL 流程中的字段计算与转换
公式计算 用户自定义公式的安全执行

QData Expression 是轻易云数据集成平台的核心表达式引擎,现已开源,助力开发者构建安全、灵活的动态计算能力。


📖 目录


特性

  • 🛡️ 安全沙箱:内置安全机制,防止代码注入和恶意操作
  • 📝 表达式求值:支持复杂的数学和逻辑表达式
  • 🎨 模板引擎:基于 Jinja2 的强大模板渲染
  • 📦 内置函数:丰富的内置函数库(数学、字符串、日期、逻辑等)
  • 🔧 可扩展:易于注册自定义函数和过滤器
  • 高性能:表达式缓存和优化的执行引擎
  • 🎯 类型安全:完整的类型提示支持

🚀 快速开始

安装

pip install qdata-expression

第一个表达式

from qdata_expr import ExpressionEngine, evaluate, render_template

# 创建表达式引擎
engine = ExpressionEngine()

# 求值表达式
result = engine.evaluate("2 + 3 * 4")
print(result)  # 14

# 使用上下文变量
context = {"price": 100, "quantity": 5}
result = engine.evaluate("price * quantity", context)
print(result)  # 500

# 使用内置函数
result = engine.evaluate("abs(-5) + round(3.14, 1)")
print(result)  # 8.1

# 模板渲染
result = render_template("Hello, {{ name }}!", {"name": "World"})
print(result)  # Hello, World!

核心概念

概念 描述
表达式引擎 (ExpressionEngine) 安全求值数学和逻辑表达式
模板引擎 (TemplateEngine) 基于 Jinja2 的模板渲染
安全沙箱 (Sandbox) 防止不安全操作的保护层
上下文解析器 (ContextResolver) 嵌套路径的变量解析
函数注册表 (FunctionRegistry) 管理内置和自定义函数

📦 安装

# PyPI 安装
pip install qdata-expression

# 源码安装
git clone https://github.com/qeasy/qdata-expression.git
cd qdata-expression
pip install -e .

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

示例与文档


🧪 测试

# 运行所有测试
pytest

# 运行带覆盖率测试
pytest --cov=qdata_expr --cov-report=html

📄 许可与商业政策

🔓 开源协议

本项目采用 GNU Affero General Public License v3.0 (AGPL-3.0) 开源协议。

  • 个人学习/研究:完全免费,无需授权
  • 开源项目:可自由使用,需遵守 AGPL-3.0 条款
  • 修改与分发:允许修改和重新分发,但必须保持开源

重要:如果你修改本软件并提供网络服务(包括内部使用),根据 AGPL-3.0 条款,你必须公开你的修改源代码。

💼 商业用途

任何商业用途必须单独购买商业许可,包括但不限于:

  • ❌ 企业/公司在生产环境中使用
  • ❌ 提供基于本软件的商业服务或 SaaS
  • ❌ 集成到商业产品中销售
  • ❌ 超过 5 个用户的组织使用
  • ❌ 任何以盈利为目的的部署和使用

商业许可咨询:📧 vincent@qeasy.cloud

📋 许可文件

⚠️ 重要提示

未经授权的商业使用将构成版权侵权,我们保留追究法律责任的权利。

详细说明请查看:COMMERCIAL-LICENSE.txt


🏢 关于轻易云数据集成平台

广东轻亿云软件科技有限公司
专注数据集成与处理,提供企业级 ETL/ELT 解决方案
🌐 官网:https://www.qeasy.cloud
📧 开源项目:opensource@qeasy.cloud
📧 商业咨询:vincent@qeasy.cloud


Powered by 广东轻亿云软件科技有限公司

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

qdata_expression-0.1.0.tar.gz (112.8 kB view details)

Uploaded Source

Built Distribution

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

qdata_expression-0.1.0-py3-none-any.whl (56.1 kB view details)

Uploaded Python 3

File details

Details for the file qdata_expression-0.1.0.tar.gz.

File metadata

  • Download URL: qdata_expression-0.1.0.tar.gz
  • Upload date:
  • Size: 112.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for qdata_expression-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b1522f0b1915a84eb88cb760b3e9e6849f0c18670942ac5b584234fa74fcf8e6
MD5 e8aadedf143a40e36e0bc8debf98082f
BLAKE2b-256 1b36cb07598ad96ddc97121d6e5c15f39619ddc8a9700266cedc2ccf7fa8de08

See more details on using hashes here.

Provenance

The following attestation bundles were made for qdata_expression-0.1.0.tar.gz:

Publisher: publish.yml on vincent067/qdata-expression

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file qdata_expression-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for qdata_expression-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8266ae3cdf89fe4aa8cb8a7007ad4f8665351d013ac1d83ce3ef38cb193a9084
MD5 225ca8a1d003bb5165f881a3b2c6ac0f
BLAKE2b-256 89e517d9d82b864decf5b683abc18e6f6d98d3d562d05f49f53226584cf0e042

See more details on using hashes here.

Provenance

The following attestation bundles were made for qdata_expression-0.1.0-py3-none-any.whl:

Publisher: publish.yml on vincent067/qdata-expression

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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