“懒惰”计算支持。

lz的Python项目详细描述


lz

在接下来的内容中

  • pythonpython3.5或任何更高版本的别名 版本(python3.6等),
  • pypypypy3.5或任何更高版本的别名 版本(pypy3.6等等)。

安装

安装最新的pip&;setuptools软件包版本:

  • CPython
    python -m pip install --upgrade pip setuptools
    
  • PyPy
    pypy -m pip install --upgrade pip setuptools
    

用户

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

  • CPython
    python -m pip install --upgrade lz
    
  • PyPy
    pypy -m pip install --upgrade lz
    

显影剂

GitHub存储库下载最新版本

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

安装依赖项:

  • CPython
    python -m pip install -r requirements.txt
    
  • PyPy
    pypy -m pip install -r requirements.txt
    

安装:

  • CPython
    python setup.py install
    
  • PyPy
    pypy setup.py install
    

用法

lz提供了一系列实用程序,用于处理函数、谓词和iterable,如

  1. function composition

    >>>fromlz.functionalimportcompose>>>sum_of_first_n_natural_numbers=compose(sum,range)>>>sum_of_first_n_natural_numbers(10)45
  2. currying

    >>>fromlz.functionalimportcurry>>>curried_power=curry(pow)>>>two_to_power=curried_power(2)>>>two_to_power(10)1024
  3. 翻转位置参数顺序

    >>>fromlz.functionalimportflip>>>flipped_power=flip(pow)>>>flipped_power(2,4)16
  4. 打包函数的参数

    >>>fromlz.functionalimportpack>>>packed_int=pack(int)>>>packed_int(['10'])10>>>packed_int(['10'],{'base':2})2
  5. partial application

    >>>fromlzimportleft>>>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. partial application

    >>>fromlzimportright>>>square=right.applier(pow,2)>>>square(10)100
  7. negating谓词

    >>>fromlz.logicalimportnegate>>>false_like=negate(bool)>>>false_like([])True>>>false_like([0])False
  8. conjoining谓词

    >>>fromlz.logicalimportconjoin>>>is_valid_constant_identifier=conjoin(str.isupper,str.isidentifier)>>>is_valid_constant_identifier('SECOND_SECTION')True>>>is_valid_constant_identifier('2ND_SECTION')False
  9. disjoining谓词

    >>>fromlz.logicalimportdisjoin>>>alphabetic_or_numeric=disjoin(str.isalpha,str.isnumeric)>>>alphabetic_or_numeric('Hello')True>>>alphabetic_or_numeric('42')True>>>alphabetic_or_numeric('Hello42')False
  10. exclusive disjoining谓词

    >>>fromlz.logicalimportexclusive_disjoin>>>fromkeywordimportiskeyword>>>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. 反转序列和任何字符串流

    >>>fromlz.reversalimportreverse>>>list(reverse(range(10)))[9,8,7,6,5,4,3,2,1,0]>>>importio>>>list(reverse(io.BytesIO(b'Hello\nWorld!')))[b'World!',b'Hello\n']
  12. 可分块

    >>>fromlz.iteratingimportchopper>>>to_triplets=chopper(3)>>>list(map(tuple,to_triplets(range(10))))[(0,1,2),(3,4,5),(6,7,8),(9,)]
  13. 滑过Iterable

    >>>fromlz.iteratingimportslider>>>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. interleaving可伸缩性

    >>>fromlz.iteratingimportinterleave>>>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. 可输入transposition

    >>>fromlz.transpositionimporttranspose>>>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. 可重复性

    >>>fromlz.replicationimportduplicate>>>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)]

以及many more

开发

建筑文档

在可编辑模式下安装项目

  • CPython
    python -m pip install -e .
    
  • PyPy
    pypy -m pip install -e .
    

安装文档要求

  • CPython
    python -m pip install -r docs/requirements.txt
    
  • PyPy
    pypy -m pip install -r docs/requirements.txt
    

生成文档

cd docs
make html

碰撞版本

准备工作

安装 bump2version

预发布

选择要在semver specification之后凹凸的版本号类别。

测试碰撞版本

bump2version --dry-run --verbose $CATEGORY

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

凹凸版本

bump2version --verbose $CATEGORY

这将把version设置为major.minor.patch-alpha

释放

测试碰撞版本

bump2version --dry-run --verbose release

凹凸版本

bump2version --verbose release

这将把version设置为major.minor.patch

运行测试

安装依赖项:

  • CPython
    python -m pip install -r requirements-tests.txt
    
  • PyPy
    pypy -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.ps1cpython
  • PyPy
    .\run-tests.ps1pypy

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

推荐PyPI第三方库


热门话题
java接口中的每个方法都是抽象的,但在抽象类中,我们也只能使用抽象方法   初始化Java中声明的、未初始化的变量会发生什么情况?   java BouncyCastle openPGP将字节[]数组加密为csv文件   在Java中将类A(和所有子类)映射到类B的实例的字典   RSA公钥编码,在Java和Android中,代码相同,结果不同   java在安卓中实现数字检测语音识别   java取消选择复选框   java如何在其他配置中重用Maven配置XML片段   java有没有一种有效的方法来检查HashMap是否包含映射到相同值的键?   spring处理程序调度失败;嵌套的例外是java。lang.NoClassDefFoundError:org/apache/http/client/HttpClient   带有ehcache的java多层缓存   java如何访问chromium(或任何其他浏览器)cookie   java通过将两个集合与spring data mongodb data中的条件合并来获取计数   安卓中R.java的语法错误