法布奇诺
frappuccino的Python项目详细描述
弗拉普西诺
冻结你的API。
frappucino允许您在开发期间确保没有破坏api。由 首先在某个时间点上留下api的印记,然后将其与 当前项目状态。目标是在不兼容的更改时警告您 已被介绍,并列出论文。
你可以将它集成到你的ci中,以确保你不会无意中中断 东西。
示例:
# old functiondefread(name,*,options=None):withopen(name.'rb')asf:returnprocess(data)# new functiondefread(name_or_buffer,*,options=None):ifisinstance(name,str):withopen(name,'rb')asf:data=f.read()else:data=name_or_buffer.read()returnprocess(data)
上面的api有一个细微的破损,您可能不记得了 位置参数可以使用关键字参数。也就是说,您的一位客户可能会使用:
read(name='dump.csv')
因此,将位置参数的name从name
更改为
name_or_buffer
是api的更改。有很多像这样的细节
在这里,可能会在没有意识到的情况下破坏api。很难追踪
在处理dev分支时,单元测试可能无法捕获所有这些。
弗拉布奇诺是来帮忙的。
示例:
$ 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
- astropy.time.core.TimeDelta.to(self, *args, **kwargs)
+ astropy.time.core.TimeDelta.to(self, unit, equivalencies='[]')
astropy.table.table.Table.add_column
- 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
- astropy.table.table.Table.replace_column(self, name, col)
+ astropy.table.table.Table.replace_column(self, name, col, copy='True')