高阶函数和效用函数的集合

ftoolz的Python项目详细描述


自由贸易区

Build StatusCoverage StatusPyPI versionPyPI statusPyPI pyversions

建立在cytoolz之上的高阶函数和实用函数的集合。

模块概述

ftoolz被分成几个通用模块。

ADT包

为各种抽象数据类型(ADT)提供实现的包。

ADTDescription
^{}mutable iterator that can be both consumed and appended to, optionally initialized with init state ^{}

functoolz包

提供通常与函子、applicative和monad相关联的高阶函数的包。

此外,在__init__.py中实现了一般的包级函数。

FunctionDescription
^{}equivalent to ^{} with ^{}
^{}reversed function composition ^{}
^{}decorator that silences (selected/all) errors raised by decorated function
^{}equivalent to ^{} with ^{}
^{}^{} and on exception(s) ^{} fallback to ^{}

包内容按单个类型分类组织为模块:

  1. iter.py对于类Iterablewarn某些函数可能不是纯函数,因为已使用input iterable。
  2. opt.py对于类Optional
  3. seq.py对于类SeqSequece)。方法通常返回tuple实例以保持不变性。

模块功能概述
def / .pyiteroptseq
^{}xxx
^{}-x-
^{}-+-
^{}xxx
^{}xxx
^{}xxx
^{}xxx
^{}-x-
^{}-+-
^{}xxx
^{}x-x
^{}xxx
^{}xxx
^{}x*x
^{}+-+
  • x-实现,静态类型检查
  • +-实现,可能的运行时类型错误
  • *-未实现,本机支持
  • --未实现

遍历包

每个模块都包含可遍历的相关函数,用于可遍历的IterableSeq。 单个模块被命名并保留给包装可遍历序列元素的单个函子。

模块(函子)中当前实现的函数列表:

def / .pyopt
^{}x
^{}x
^{}x
^{}x

不安全包装

unsafe专用于所有impure函数,这些函数倾向于或 会直接使用副作用。

反射

此模块包含类发现、检查和 修改。

目录

FunctionDescription
^{}^{} iff ^{} has abstract methods
^{}discover all non-protected implementations of ^{} under ^{}
^{}recursively import everything under ^{}
^{}^{} iff ^{} defines attribute ^{}
^{}discover all subclasses of ^{} under ^{}

dicttoolz

此模块包含与MapMapping)实例一起工作的函数。

目录

FunctionDescription
^{}apply value transformation ^{} on value in ^{} under ^{}
^{}swap arbitrary values for ^{} and ^{} in given mapping
^{}same as ^{} but preserving concrete value type ^{}

伊托奥尔兹

此模块包含与Iterable实例一起工作的函数。

目录

FunctionDescription
^{}associate elements of iterable to keys selected by ^{}
^{}associate values obtained from iterable by ^{} to keys
selected by ^{}
^{}materialize iterable into a sequence if it's not one already
^{}check if iterable is empty, returns flag and unchanged iterable
^{}same as ^{} but adds index as third part
^{}filter out ^{} elements from iterable
^{}find first element of iterable satisfying predicate
^{}return first element of a sequence or ^{}
^{}fold iterable by applying binary operator ^{} from the right
^{}split iterable into head element and tail iterable
^{}same as ^{} but materialized tail into list
^{}creates iterable of tuples of original element and final flag
^{}return last element of a sequence or ^{}
^{}create string of tokens from iterable selected by ^{} with separator
^{}order ^{} w.r.t. order given by keys sequence ^{} (given key-getter ^{}) and fill in missing values as ^{}
^{}collect positions of non-unique items in original sequence
^{}split elements of iterable by predicate to positives and negatives
^{}take first n elements of an iterable
^{}take first element of an iterable or fail
^{}same as ^{} but returns ^{}
^{}take last element of an iterable or ^{}
^{}return distinct elements of an iterable as ^{}
^{}return distinct elements of an iterable in natural order as ^{}

谓词

此模块包含公共的Predicate,即从泛型或具体的Abool的函数。

目录

PredicateDescription
^{}^{} iff optional is not ^{}
^{}^{} iff optional is ^{}
^{}^{} iff integer is even
^{}^{} iff integer is odd

键入

类型包含有用的类型别名和其他与类型相关的定义。

cytoolz

cytoolz是python库的cython实现,支持称为 toolz

我们强烈建议您阅读api文档并在项目中使用它。

ftoolz不分叉,而是扩展cytoolz并为其api提供类型化存根。 请注意,键入的存根不包括cytoolz的所有功能。

另外,由于python的有限类型功能,可能无法涵盖一些有效的情况。

设置开发环境

强烈建议使用虚拟环境开发和测试ftoolz。为了让事情变得简单 设置两个目标ftoolz

  • make setup创建由pipenv管理的新虚拟环境,同时具有dev和ftoolz依赖项。
  • make installmake setup相同,但仅安装ftoolz依赖项。

要在pipenv环境中运行python控制台,请运行:

pipenv shell

对于运行特定命令:

pipenv run <command>

运行检查和测试

类型检查

类型检查是使用mypy(有关配置,请参见mypy.ini)完成的,可以由执行:

make type-check

代码样式检查

ftoolz使用Flake8来强制执行pep 8和其他代码气味。

make flake8-check

起毛

linting在.pylintrc中配置,可以通过:

运行
make lint

测试

具有覆盖率的单元和文档测试可以由运行

make tests

您还可以通过

make release-check

note:所有这些命令都在python管理的通过pipenv

分布

project使用setuptools进行分发。检查setup.py中的设置。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java无法设置@Async方法   在Java中设置链表   未设置id时遇到java StaleObjectStateException   java如何保存程序的状态并加载它?   java映射类和schemaderived类之间有什么区别?   控制器类中的java全局变量在最新会话打开时被覆盖   java Hystrix和连接池   java Sonar在我不关闭ignite对象时引发拦截器问题   java无法在Junit TestCase中为控制器设置Mockito值   java保证异步传递消息   java如何高亮显示按钮,直到为微调器提供有效值?   java在Android中使用ImageView控件创建错误   JMX垃圾收集和系统之间的java差异。gc()?   java在尝试向标记添加信息窗口时卡住了?   java JavaFX检测与后台的冲突   java将光标放在按钮上时更改按钮的位置   java Maven。如何从paren pom继承配置文件。xml?   带空格的Java填充字符串   java将两个对象设置为相等,并找到其布尔结果