跳转到主要内容

None

项目描述

Eff

Eff是一个用于处理代数效果的Python库。

代数效果是代码中所有副作用的总和,例如读取用户输入、在屏幕上写入文本、进行网络请求、读取文件等。Eff允许轻松处理此类效果,使代码更整洁且测试更容易。

特性

  • 易于理解。您无需阅读冗长的科学论文即可了解如何使用库及其功能。
  • 易于集成。如果您决定将日志记录器添加到函数中,更改将最小化,无需在整个调用堆栈中传递日志记录器。
  • 快速。处理代数效果的经典方法是使用协程或异常。此库使用全局共享状态,无需在运行时解包整个调用堆栈。
  • 类型安全。效果处理容器只是一个类。注释效果处理器的类型以使其使用类型安全。

安装

python3 -m pip install --user eff

使用

from io import StringIO
from typing import Callable

import eff

class Eff(eff.ects):
    show: Callable

# Use global effects manager in a function.
def greet(username: str) -> None:
    Eff.show(f'Hello, {username}!')

# Provide actual side-effects handlers
# for the project prod entry point.
def main() -> None:
    with Eff(show=print):
        greet('World')

# Mock side-effects in tests.
def test_greet() -> None:
    stream = StringIO()
    with Eff(show=stream.write):
        greet('World')
    stream.seek(0)
    assert stream.read() == 'Hello, World!'

if __name__ == '__main__':
    main()

进一步阅读

您不必阅读它,但这有助于更好地理解库背后的动机。

项目详情


下载文件

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

源分布

eff-1.0.0.tar.gz (4.0 kB 查看哈希值)

上传时间

构建分布

eff-1.0.0-py3-none-any.whl (4.1 kB 查看哈希值)

上传时间 Python 3

由以下组织支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面