“惰性”计算支持。
项目描述
lz
以下python是python3.5orpypy3.5
或任何更高版本(python3.6等pypy3.6)的别名。
安装
安装最新pip和setuptools软件包版本
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提供了一系列用于处理函数、谓词和可迭代对象的实用程序,例如
-
>>> from lz.functional import compose >>> sum_of_first_n_natural_numbers = compose(sum, range) >>> sum_of_first_n_natural_numbers(10) 45
-
>>> from lz.functional import curry >>> curried_power = curry(pow) >>> two_to_power = curried_power(2) >>> two_to_power(10) 1024
-
翻转位置参数顺序
>>> from lz.functional import flip >>> flipped_power = flip(pow) >>> flipped_power(2, 4) 16
-
打包函数的参数
>>> from lz.functional import pack >>> packed_int = pack(int) >>> packed_int(['10']) 10 >>> packed_int(['10'], {'base': 2}) 2
-
左偏应用
>>> 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]
-
右偏应用
>>> from lz import right >>> square = right.applier(pow, 2) >>> square(10) 100
-
否定谓词
>>> from lz.logical import negate >>> false_like = negate(bool) >>> false_like([]) True >>> false_like([0]) False
-
连词_
>>> 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
-
分离谓词
>>> 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
-
排他性分离谓词
>>> 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
-
反转序列和任何字符串流
>>> 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']
-
分块可迭代
>>> 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,)]
-
滑过可迭代
>>> 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)]
-
交错迭代
>>> 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]
-
可迭代转置
>>> 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)]
-
可迭代复制
>>> 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// minor。major
凹凸版
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容器:
- 和
CPythondocker-compose --file docker-compose.cpython.yml up
- 和
PyPydocker-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
查看哈希)
内置分布
lz-0.11.1-py3-none-any.whl
(21.8 kB
查看哈希)
关
lz- 0.11.1 -py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 7b322bfe30a6d7ba7eabe3ed854873f04312382720744207de80f1e6e1b70910 |
|
| MD5 | 747e04565fa0cf4c4d6972395696e0fd |
|
| 布莱克2-256 | 090f465e3ebd8afe0b2187efa7d0f019d2e13d2aa7a7b2cc074c9967cc2c028b |