Skip to main content

“惰性”计算支持。

项目描述

lz

以下pythonpython3.5orpypy3.5 或任何更高版本(python3.6pypy3.6)的别名。

安装

安装最新pipsetuptools软件包版本

python -m pip install --upgrade pip setuptools

用户

PyPI从存储库下载并安装最新的稳定版本

python -m pip install --upgrade lz

开发商

GitHub从存储库下载最新版本

git clone https://github.com/lycantropos/lz.git
cd lz

安装依赖项

python -m pip install -r requirements.txt

安装

python setup.py install

用法

lz提供了一系列用于处理函数、谓词和可迭代对象的实用程序,例如

  1. 功能组成

    >>> from lz.functional import compose
    >>> sum_of_first_n_natural_numbers = compose(sum, range)
    >>> sum_of_first_n_natural_numbers(10)
    45
    
  2. 咖喱

    >>> from lz.functional import curry 
    >>> curried_power = curry(pow) 
    >>> two_to_power = curried_power(2) 
    >>> two_to_power(10)
    1024
    
  3. 翻转位置参数顺序

    >>> from lz.functional import flip
    >>> flipped_power = flip(pow)
    >>> flipped_power(2, 4)
    16
    
  4. 打包函数的参数

    >>> from lz.functional import pack
    >>> packed_int = pack(int)
    >>> packed_int(['10'])
    10
    >>> packed_int(['10'], {'base': 2})
    2
    
  5. 偏应用

    >>> from lz import left
    >>> count_from_zero_to = left.applier(range, 0)
    >>> list(count_from_zero_to(10))
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
  6. 偏应用

    >>> from lz import right
    >>> square = right.applier(pow, 2)
    >>> square(10)
    100
    
  7. 否定谓词

    >>> from lz.logical import negate
    >>> false_like = negate(bool)
    >>> false_like([])
    True
    >>> false_like([0])
    False
    
  8. 连词_

    >>> from lz.logical import conjoin
    >>> is_valid_constant_identifier = conjoin(str.isupper, str.isidentifier)
    >>> is_valid_constant_identifier('SECOND_SECTION')
    True
    >>> is_valid_constant_identifier('2ND_SECTION')
    False
    
  9. 分离谓词

    >>> from lz.logical import disjoin
    >>> alphabetic_or_numeric = disjoin(str.isalpha, str.isnumeric)
    >>> alphabetic_or_numeric('Hello')
    True
    >>> alphabetic_or_numeric('42')
    True
    >>> alphabetic_or_numeric('Hello42')
    False
    
  10. 排他性分离谓词

    >>> from lz.logical import exclusive_disjoin
    >>> from keyword import iskeyword
    >>> valid_object_name = exclusive_disjoin(str.isidentifier, iskeyword)
    >>> valid_object_name('valid_object_name')
    True
    >>> valid_object_name('_')
    True
    >>> valid_object_name('1')
    False
    >>> valid_object_name('lambda')
    False
    
  11. 反转序列和任何字符串流

    >>> from lz.reversal import reverse
    >>> list(reverse(range(10)))
    [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
    >>> import io
    >>> list(reverse(io.BytesIO(b'Hello\nWorld!')))
    [b'World!', b'Hello\n']
    
  12. 分块可迭代

    >>> from lz.iterating import chopper
    >>> to_triplets = chopper(3)
    >>> list(map(tuple, to_triplets(range(10))))
    [(0, 1, 2), (3, 4, 5), (6, 7, 8), (9,)]
    
  13. 滑过可迭代

    >>> from lz.iterating import slider
    >>> slide_pairwise = slider(2)
    >>> list(slide_pairwise(range(10)))
    [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9)]
    
  14. 交错迭代

    >>> from lz.iterating import interleave
    >>> list(interleave([range(10), range(10, 20)]))
    [0, 10, 1, 11, 2, 12, 3, 13, 4, 14, 5, 15, 6, 16, 7, 17, 8, 18, 9, 19]
    
  15. 可迭代转置

    >>> from lz.transposition import transpose
    >>> list(map(tuple, transpose(zip(range(10), range(10, 20)))))
    [(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), (10, 11, 12, 13, 14, 15, 16, 17, 18, 19)]
    
  16. 可迭代复制

    >>> from lz.replication import duplicate
    >>> list(map(tuple, duplicate(range(10))))
    [(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)]
    

还有更多

发展

构建文档

以可编辑模式安装项目

python -m pip install -e .

安装依赖项

python -m pip install -r docs/requirements.txt

构建文档

cd docs
make html

碰撞版

准备

安装 bump2version

预发布

选择遵循semver 规范的版本号类别。

测试颠簸版本

bump2version --dry-run --verbose $CATEGORY

其中是目标版本号类别名称,可能的$CATEGORY值为patch// minormajor

凹凸版

bump2version --verbose $CATEGORY

这会将版本设置为major.minor.patch-alpha.

发布

测试颠簸版本

bump2version --dry-run --verbose release

凹凸版

bump2version --verbose release

这会将版本设置为major.minor.patch.

运行测试

安装依赖项

python -m pip install -r requirements-tests.txt

清楚的

pytest

内部Docker容器:

  • CPython
    docker-compose --file docker-compose.cpython.yml up
    
  • PyPy
    docker-compose --file docker-compose.pypy.yml up
    

Bash脚本(例如可以在Git钩子中使用):

  • CPython

    ./run-tests.sh
    

    或者

    ./run-tests.sh cpython
    
  • PyPy

    ./run-tests.sh pypy
    

PowerShell脚本(例如可以在Git钩子中使用):

  • CPython
    .\run-tests.ps1
    
    或者
    .\run-tests.ps1 cpython
    
  • PyPy
    .\run-tests.ps1 pypy
    

项目详情


下载文件

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

源分布

lz-0.11.1.tar.gz (17.0 kB 查看哈希

已上传 source

内置分布

lz-0.11.1-py3-none-any.whl (21.8 kB 查看哈希

已上传 py3