自动生成repr方法。
reprit的Python项目详细描述
重印
在接下来的内容中
python
是python3.5
或任何更高版本的别名 版本(python3.6
等),pypy
是pypy3.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__
,即:
- 包括实例创建中涉及的参数。 对于简单的情况,应该可以 在某个位置复制字符串和粘贴(例如repl session) 并且尽可能少地使用类似的对象定义。 这在调试会话、日志记录和 在随机生成数据的失败测试用例中,等等。
- 如果签名更改, 对于简单的情况,方法应自动处理此问题。 例如重命名/删除/更改参数顺序。
可以这样做
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