自动生成repr方法。

reprit的Python项目详细描述


重印

在接下来的内容中

  • 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 reprit
    
  • PyPy
    pypy -m pip install --upgrade reprit
    

显影剂

GitHub存储库下载最新版本

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

安装:

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

用法

假设我们正在定义一个类,我们希望有__repr__,即:

  1. 包括实例创建中涉及的参数。 对于简单的情况,应该可以 在某个位置复制字符串和粘贴(例如repl session) 并且尽可能少地使用类似的对象定义。 这在调试会话、日志记录和 在随机生成数据的失败测试用例中,等等。
  2. 如果签名更改, 对于简单的情况,方法应自动处理此问题。 例如重命名/删除/更改参数顺序。

可以这样做

fromreprit.baseimportgenerate_reprclassDummyContainer:def__init__(self,positional,*variadic_positional,keyword_only,**variadic_keyword):self.positional=positionalself.variadic_positional=variadic_positionalself.keyword_only=keyword_onlyself.variadic_keyword=variadic_keyword__repr__=generate_repr(__init__)

之后

>>>DummyContainer(range(10),2,3,keyword_only='some',a={'sample':42},b={1,2})DummyContainer(range(0,10),2,3,keyword_only='some',a={'sample':42},b={1,2})

或者对于避免内置名称冲突的类&private attributes&both

fromrepritimportseekersfromreprit.baseimportgenerate_reprclassState:def__init__(self,id_,name,zip_):self.id=id_self._name=nameself._zip=zip___repr__=generate_repr(__init__,field_seeker=seekers.complex_)

之后

>>>State(1,'Alabama',36016)State(1,'Alabama',36016)

note:此方法不会在运行时自动处理更改 (例如,如果有人删除实例字段 或者替换__init__/__new__方法实现, 在这种情况下,用户还应该更新__repr__方法。

开发

碰撞版本

准备工作

安装 bump2version

预发布

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

测试碰撞版本

bump2version --dry-run --verbose $CATEGORY

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

凹凸版本

bump2version --verbose $CATEGORY

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

释放

测试碰撞版本

bump2version --dry-run --verbose --tag release

凹凸版本

bump2version --verbose --tag release

这将把version设置为major.minor.patch,并添加Git标记。

注释

为了避免分支和拉取请求之间的不一致, bumping版本应该作为单独的pull合并到master分支中 请求。

运行测试

普通:

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

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 RMI客户端访问被拒绝   java让JavaFX事件监听器与我的方法对话   java与xml spring配置相关   java当我在字符串中插入这个XML Soap请求时,为什么Eclipse会给我一个错误?   音频音频合成   java创建了一个Tic-Tac-Toe应用程序,我有一个bug,它每次在同一个正方形上声明一个平局   java为返回的字符串值设置参数   Java中的ClassFormatError   java在启动后更改Spring云配置服务器uri   用Java中的自定义类替换默认字符串类   java junit测试套件:ClassNotFoundException   java自定义对象集包含相同的对象   通过关系查找的java Spring数据CRUDepository   java将数据存储到aerospike中   java使用itextpdf将添加内容的pdf转换为安卓中的位图   java正在遍历队列的concurrentHashMap,以查看是否所有队列都是空的,而其他线程可能会添加到队列中   java Hibernate:未找到本机查询异常   java Mockito准确地验证所有参数   java我可以在它自己的类中声明一个对象吗?