Frappuccino
项目描述
Frappucino
冻结您的API。
Frappucino允许您在开发过程中确保您没有破坏API。通过首先在某个时间点对API进行印痕,然后将其与当前项目状态进行比较。目标是当引入不兼容的更改时警告您,并列出这些更改。
您可以将它集成到您的CI中,以确保您无意中破坏了东西。
示例
# old function
def read(name, *, options=None):
with open(name, 'rb') as f:
return process(data)
# new function
def read(name_or_buffer, *, options=None):
if isinstance(name, str):
with open(name, 'rb') as f:
data = f.read()
else:
data = name_or_buffer.read()
return process(data)
在上面的例子中,API有一个微妙的破坏,因为您可能不记得位置参数可以用关键字参数使用。也就是说,您的客户可能会使用
read(name='dump.csv')
因此,将位置参数的name从name
改为name_or_buffer
是API的更改。有大量类似的细节,您可能会在不经意间破坏API。当在开发分支上工作时,单元测试可能无法捕获所有这些。Frappuccino就在这里帮助。
示例
$ source activate astropy==3.2
$ frappuccino astropy astropy.timeseries --save astropy.json
$ source activate astropy=master
$ frappuccino astropy astropy.timeseries --compare astropy.json
The following signatures differ between versions:
- astropy.time.core.TimeDelta.to(self, *args, **kwargs)
+ astropy.time.core.TimeDelta.to(self, unit, equivalencies='[]')
- astropy.table.table.Table.add_column(self, col, index='None', name='None', rename_duplicate='False', copy='True')
+ astropy.table.table.Table.add_column(self, col, index='None', name='None', rename_duplicate='False', copy='True', default_name='None')
- astropy.table.table.Table.replace_column(self, name, col)
+ astropy.table.table.Table.replace_column(self, name, col, copy='True')
其他示例
cp frappuccino/tests/old.py frappuccino/t.py ; frappuccino frappuccino.t --save t.json; sleep 2; cp frappuccino/tests/new.py frappuccino/t.py; frappuccino frappuccino.t --compare t.json
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
frappuccino-0.0.8.tar.gz (98.5 kB 查看哈希值)
构建分发版
frappuccino-0.0.8-py3-none-any.whl (75.3 kB 查看哈希值)
关闭
frappuccino-0.0.8.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 11ca0d18456312512f7a44a18d5cafc30f1fc9d1dc97facade1c0f7577a777ae |
|
MD5 | 21cffed83a95dff6533df906d0c6431c |
|
BLAKE2b-256 | 599d0a50980af34b54876936afced5c99191aee2231aa2a7790660556709cbf1 |
关闭
frappuccino-0.0.8-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2980b789aa9be97786ff19db0e39425edc41143f520c0c94979f5ee8aae5cef4 |
|
MD5 | d54b3d32cadfd7eb51021c49ffd65847 |
|
BLAKE2b-256 | 2cbbc9c8f1b7bad3004f5a1fd5ce7a69a61f5e24bd6b9f696a45bb6fc0a8636d |