用于处理数学表达式的计算机代数系统
项目描述
mathy_core: 解析和操作数学表达式
Mathy core是一个Python包(带有类型注解),用于处理数学问题。它有一个将纯文本转换为标记的标记化器,一个将标记转换为表达式树的解析器,一个基于规则的系统来操作树,一个用于可视化树的布局系统,以及一组问题生成函数,可用于生成机器学习训练数据集。
🚀 快速入门
您可以从pip安装mathy_core
pip install mathy_core
📖 文档
请访问https://core.mathy.ai以获取API文档、示例等信息!
示例
考虑几个示例来了解Mathy core的功能。
评估表达式
算术非常简单。
from mathy_core import ExpressionParser
expression = ExpressionParser().parse("4 + 2")
assert expression.evaluate() == 6
使用变量评估
在评估表达式时可以指定变量值。
from mathy_core import ExpressionParser, MathExpression
expression: MathExpression = ExpressionParser().parse("4x + 2y")
assert expression.evaluate({"x": 2, "y": 5}) == 18
转换表达式
可以使用基于数字属性的规则来更改表达式。
from mathy_core import ExpressionParser
from mathy_core.rules import DistributiveFactorOutRule
input = "4x + 2x"
output = "(4 + 2) * x"
parser = ExpressionParser()
input_exp = parser.parse(input)
output_exp = parser.parse(output)
# Verify that the rule transforms the tree as expected
change = DistributiveFactorOutRule().apply_to(input_exp)
assert str(change.result) == output
# Verify that both trees evaluate to the same value
ctx = {"x": 3}
assert input_exp.evaluate(ctx) == output_exp.evaluate(ctx)
开发
在虚拟环境中安装先决条件(需要python3)
sh tools/setup.sh
运行测试套件并查看代码覆盖率统计信息
sh tools/test.sh
测试覆盖了约90%的代码,因此它们是了解如何使用各种API的好参考。
语义版本化
在Mathy Core达到v1.0之前,项目不保证API的一致性,这意味着类型和类可能会移动或被删除。尽管如此,我们在破坏性更改方面尽量做到可预测,因此项目使用语义版本化来帮助用户避免中断。
具体来说,新版本会增加新功能和修复的补丁
semver组件,以及存在重大变更时的次要
组件。如果你不太了解semver字符串,它们通常格式为{主}.{次}.{补丁}
,因此增加补丁
组件意味着递增最后一个数字。
考虑以下示例
从版本 | 到版本 | 变更是否破坏性 |
---|---|---|
0.2.0 | 0.2.1 | 否 |
0.3.2 | 0.3.6 | 否 |
0.3.1 | 0.3.17 | 否 |
0.2.2 | 0.3.0 | 是 |
如果你担心破坏性变更,可以在需求中固定版本,使其不超过当前的semver 次要
组件,例如,如果当前版本是0.1.37
mathy_core>=0.1.37,<0.2.0
贡献者
Mathy Core的存在离不开以下人员的杰出贡献
Justin DuJardin |
JT Stukes |
本项目遵循all-contributors规范。欢迎各种类型的贡献!
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源代码分发
mathy_core-0.9.4.tar.gz (59.6 kB 查看哈希值)
构建分发
mathy_core-0.9.4-py3-none-any.whl (74.1 kB 查看哈希值)
关闭
mathy_core-0.9.4.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 69410412be65ec8f57da7dfa6d3eb5ee29c82820d40dbae81b68a45b33ad2a96 |
|
MD5 | e321a0fdc147fc5389c887fe5fe8cf79 |
|
BLAKE2b-256 | c3373e3700c353516a8f538ee559c8862bd2fcdf93fdc5b679299a4755683f0a |
关闭
mathy_core-0.9.4-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c471f216c55c1c1faf26e9d192d0b4b900b95c0b8ee38bc7d98564d61738400c |
|
MD5 | fc16ac4f2eab80df5cb71bffb3f41858 |
|
BLAKE2b-256 | db0d434ede1bf362f37e9be49a00ddaee6e65c7c71ec1f06eaa838f768e0b1a2 |