未提供项目说明
gamla的Python项目详细描述
גamla是python的一个性能函数编程库,它支持async
。在
安装
pip install gamla
调试匿名合成
gamla.compose(x, y, z)
生成一个没有正确名称的新函数。如果x
引发异常,则有时很难确定发生在哪里。要克服这个问题,请将env变量GAMLA_DEBUG_MODE
(设置为任何值)以获得更有用的异常。这只由flag打开,因为它会产生大量开销,所以事情可能会变慢。在
混合异步和同步代码
这个库中的大多数函数将与async
和常规函数无缝地工作,并允许开发人员将精力集中在逻辑上,而不是决定将await
放在哪里。在
例如:
importasyncioimportgamladefincrement(i):returni+1asyncdefincrement_async(i):asyncio.sleep(1)returni+1asyncdefrun():mixed_composition=gamla.compose_left(increment,increment_async,increment)returnawaitmixed_composition(0)# returns 3!
正在从toolz
迁移
主要问题-toolz
速度慢,不支持async
函数。在
为什么curry函数和组合在toolz
中慢?
这些函数使用昂贵的inspect
调用来查看函数的参数,并在每次运行时都这样做。在
为什么gamla
没有受到这个问题的困扰?
两个原因:
- 它在
map
之类的东西上没有二进制签名,所以它不需要推断任何东西(这些是gamla
中的高阶函数)。在 gamla.curry
函数急切地提前支付签名检查的费用,并记住其结果以备将来运行。在
函数映射和常见问题:
大多数函数都是插入式替换。以下是一些示例:
curried.(filter|map|valmap|itemmap|keymap)
->;gamla.$1
(确保调用是使用单个参数)toolz.identity
->;gamla.identity
toolz.contains
->;gamla.contains
toolz.lt
->;gamla.greater_than
toolz.gt
->;gamla.less_than
toolz.ge
->;gamla.less_equals
toolz.le
->;gamla.greater_equals
toolz.filter(None) -> gamla.filter(gamla.identity)
toolz.excepts(a, b, c)
->;gamla.excepts(a, c, b)
toolz.excepts(a, b)
->;gamla.excepts(a, gamla.just(None), b)
(遵循“最后一次数据”的保存约定)
发布新版本
- 创建一个pypi帐户。在
- 下载twine并提供您的pypi凭证。在
- 从项目所有者处获取项目的pypi权限。在
python setup.py sdist bdist_wheel; twine upload dist/*; rm -rf dist;
库更新后如何更新gamla文档
如果添加了新函数
- 转到
docs/api.rst
并在相关模块下添加函数名,缩进3个空格。 例如:
如果自述文件.md已更新
在gamla目录中时:
- 安装md到rst转换器:
pip install m2r
- 转换自述文件.md到自述文件.rst:
m2r README.md
- 移动自述文件.rst到docs/source文件夹而不是现有文件夹:
mv README.rst docs/source
如果ehan 3>
什么都不做。文档将自行更新。在
- 项目
标签: